blob: 19221023e6e1e5bae20a3e7315d26d582a0da8f0 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
#ifndef SC_CONTENT_HXX
#define SC_CONTENT_HXX
#include <svtools/svtreebx.hxx>
#include "global.hxx"
#include "address.hxx"
#include <tools/solar.h>
class ScNavigatorDlg;
class ScNavigatorSettings;
class ScDocument;
class ScDocShell;
class ScAreaLink;
class SdrPage;
#define SC_CONTENT_ROOT 0
#define SC_CONTENT_TABLE 1
#define SC_CONTENT_RANGENAME 2
#define SC_CONTENT_DBAREA 3
#define SC_CONTENT_GRAPHIC 4
#define SC_CONTENT_OLEOBJECT 5
#define SC_CONTENT_NOTE 6
#define SC_CONTENT_AREALINK 7
#define SC_CONTENT_DRAWING 8
#define SC_CONTENT_COUNT 9
const sal_uLong SC_CONTENT_NOCHILD = ~0UL;
//
// TreeListBox fuer Inhalte
//
class ScContentTree : public SvTreeListBox
{
ScNavigatorDlg* pParentWindow;
ImageList aEntryImages;
ImageList aHCEntryImages;
SvLBoxEntry* pRootNodes[SC_CONTENT_COUNT];
sal_uInt16 nRootType; // als Root eingestellt
String aManualDoc; // im Navigator umgeschaltet (Title)
sal_Bool bHiddenDoc; // verstecktes aktiv?
String aHiddenName; // URL zum Laden
String aHiddenTitle; // fuer Anzeige
ScDocument* pHiddenDocument; // temporaer
sal_Bool bisInNavigatoeDlg;
String sKeyString;
sal_uInt16 pPosList[SC_CONTENT_COUNT]; // fuer die Reihenfolge
static sal_Bool bIsInDrag; // static, falls der Navigator im ExecuteDrag geloescht wird
ScDocShell* GetManualOrCurrent();
void InitRoot(sal_uInt16 nType);
void ClearType(sal_uInt16 nType);
void ClearAll();
void InsertContent( sal_uInt16 nType, const String& rValue );
void GetDrawNames( sal_uInt16 nType );
void GetTableNames();
void GetAreaNames();
void GetDbNames();
void GetLinkNames();
void GetGraphicNames();
void GetOleNames();
void GetDrawingNames();
void GetNoteStrings();
static bool IsPartOfType( sal_uInt16 nContentType, sal_uInt16 nObjIdentifier );
sal_Bool DrawNamesChanged( sal_uInt16 nType );
sal_Bool NoteStringsChanged();
ScAddress GetNotePos( sal_uLong nIndex );
const ScAreaLink* GetLink( sal_uLong nIndex );
/** Returns the indexes of the specified listbox entry.
@param rnRootIndex Root index of specified entry is returned.
@param rnChildIndex Index of the entry inside its root is returned (or SC_CONTENT_NOCHILD if entry is root).
@param pEntry The entry to examine. */
void GetEntryIndexes( sal_uInt16& rnRootIndex, sal_uLong& rnChildIndex, SvLBoxEntry* pEntry ) const;
/** Returns the child index of the specified listbox entry.
@param pEntry The entry to examine or NULL for the selected entry.
@return Index of the entry inside its root or SC_CONTENT_NOCHILD if entry is root. */
sal_uLong GetChildIndex( SvLBoxEntry* pEntry ) const;
void DoDrag();
//UNUSED2008-05 void AdjustTitle();
ScDocument* GetSourceDocument();
DECL_LINK( ContentDoubleClickHdl, ScContentTree* );
DECL_STATIC_LINK( ScContentTree, ExecDragHdl, void* );
public:
SvLBoxEntry* pTmpEntry;
bool m_bFirstPaint;
protected:
// virtual sal_Bool Drop( const DropEvent& rEvt );
// virtual sal_Bool QueryDrop( DropEvent& rEvt );
using SvTreeListBox::ExecuteDrop;
virtual sal_Int8 AcceptDrop( const AcceptDropEvent& rEvt );
virtual sal_Int8 ExecuteDrop( const ExecuteDropEvent& rEvt );
virtual void StartDrag( sal_Int8 nAction, const Point& rPosPixel );
virtual void DragFinished( sal_Int8 nAction );
virtual void Command( const CommandEvent& rCEvt );
virtual void RequestHelp( const HelpEvent& rHEvt );
virtual void InitEntry(SvLBoxEntry*,const XubString&,const Image&,const Image&, SvLBoxButtonKind);
public:
ScContentTree( Window* pParent, const ResId& rResId );
~ScContentTree();
String getAltLongDescText( SvLBoxEntry* pEntry , sal_Bool isAltText) const;
String GetEntryAltText( SvLBoxEntry* pEntry ) const;
String GetEntryLongDescription( SvLBoxEntry* pEntry ) const;
void ObjectFresh( sal_uInt16 nType,SvLBoxEntry* pEntry = NULL);
sal_Bool SetNavigatorDlgFlag(sal_Bool isInNavigatoeDlg){ return bisInNavigatoeDlg=isInNavigatoeDlg;};
virtual void MouseButtonDown( const MouseEvent& rMEvt );
virtual void KeyInput( const KeyEvent& rKEvt );
void InitWindowBits( sal_Bool bButtons );
void Refresh( sal_uInt16 nType = 0 );
void ToggleRoot();
void SetRootType( sal_uInt16 nNew );
sal_uInt16 GetRootType() const { return nRootType; }
void ActiveDocChanged();
void ResetManualDoc();
void SetManualDoc(const String& rName);
sal_Bool LoadFile(const String& rUrl);
void SelectDoc(const String& rName);
const String& GetHiddenTitle() const { return aHiddenTitle; }
/** Applies the navigator settings to the listbox. */
void ApplySettings();
/** Stores the current listbox state in the navigator settings. */
void StoreSettings() const;
static sal_Bool IsInDrag() { return bIsInDrag; }
};
#endif // SC_NAVIPI_HXX