diff options
-rw-r--r-- | svtools/inc/roadmap.hxx | 82 | ||||
-rw-r--r-- | svtools/inc/svtools/hyperlabel.hxx | 11 | ||||
-rw-r--r-- | svtools/inc/svtools/solar.hrc | 15 | ||||
-rw-r--r-- | svtools/source/control/hyperlabel.cxx | 43 | ||||
-rw-r--r-- | svtools/source/control/roadmap.cxx | 687 | ||||
-rw-r--r-- | toolkit/inc/toolkit/awt/vclxtopwindow.hxx | 37 | ||||
-rw-r--r-- | toolkit/inc/toolkit/awt/vclxwindows.hxx | 5 | ||||
-rw-r--r-- | toolkit/source/awt/vclxdialog.cxx | 1 | ||||
-rw-r--r-- | toolkit/source/awt/vclxtopwindow.cxx | 166 | ||||
-rw-r--r-- | toolkit/source/awt/vclxwindows.cxx | 3 | ||||
-rw-r--r-- | toolkit/source/controls/unocontrol.cxx | 8 | ||||
-rw-r--r-- | vcl/inc/vcl/wrkwin.hxx | 2 | ||||
-rw-r--r-- | vcl/source/window/wrkwin.cxx | 2 |
13 files changed, 547 insertions, 515 deletions
diff --git a/svtools/inc/roadmap.hxx b/svtools/inc/roadmap.hxx index 8a6f75eb1428..14ed6abceed6 100644 --- a/svtools/inc/roadmap.hxx +++ b/svtools/inc/roadmap.hxx @@ -54,64 +54,8 @@ namespace svt typedef sal_Int32 ItemIndex; }; - class RoadmapImpl; - - - class ORoadmapIDHyperLabel : public FixedText - { - public: - ORoadmapIDHyperLabel( Window* _pParent, const ResId& _rId ); - ORoadmapIDHyperLabel( Window* _pParent, WinBits _nWinStyle = 0 ); - ~ORoadmapIDHyperLabel( ); - virtual void DataChanged( const DataChangedEvent& rDCEvt ); - }; - - class ORoadmapHyperLabel : public RoadmapTypes - { - private: - ORoadmapIDHyperLabel* mpIDLabel; - HyperLabel* mpDescHyperLabel; - - - public: - - ORoadmapHyperLabel( Window* _pParent, const ResId& _rId ); - ORoadmapHyperLabel( Window* _pParent, WinBits _nWinStyle = 0 ); - ~ORoadmapHyperLabel( ); - - void SetID( sal_Int16 _ID ); - sal_Int16 GetID() const; - - void SetIndex( sal_Int32 _Index ); - sal_Int32 GetIndex() const; - - void SetLabel( ::rtl::OUString _rText ); - ::rtl::OUString GetLabel( ); - - void SetLabelAndSize( ItemIndex _RMIndex, ::rtl::OUString _rText, const Size& rNewSize); - - void SetPosition( ORoadmapHyperLabel* OldHyperLabel ); - Point GetLogicalPosition(); - - void ToggleBackgroundColor( const Color& _rGBColor ); - void SetInteractive( sal_Bool _bInteractive ); - - void SetClickHdl( const Link& rLink ); - const Link& GetClickHdl() const; - void SetZOrder( ORoadmapHyperLabel* pRefRoadmapHyperLabel, USHORT nFlags ); - void Enable( BOOL bEnable = TRUE); - BOOL IsEnabled() const; - void GrabFocus(); - - void SetIDLabel(ORoadmapIDHyperLabel* _pIDLabel){mpIDLabel = _pIDLabel;}; - ORoadmapIDHyperLabel* GetIDLabel() const { return mpIDLabel;}; - - HyperLabel* GetDescriptionHyperLabel() const { return mpDescHyperLabel;}; - void SetDescriptionHyperLabel(HyperLabel* _pDescriptionHyperLabel){mpDescHyperLabel = _pDescriptionHyperLabel;}; - }; - - + class RoadmapItem; //===================================================================== //= Roadmap @@ -135,7 +79,7 @@ namespace svt void EnableRoadmapItem( ItemId _nItemId, sal_Bool _bEnable, ItemIndex _nStartIndex = 0 ); sal_Bool IsRoadmapItemEnabled( ItemId _nItemId, ItemIndex _nStartIndex = 0 ) const; - void ChangeRoadmapItemLabel( ItemId _nID, ::rtl::OUString sLabel, ItemIndex _nStartIndex = 0 ); + void ChangeRoadmapItemLabel( ItemId _nID, const ::rtl::OUString& sLabel, ItemIndex _nStartIndex = 0 ); ::rtl::OUString GetRoadmapItemLabel( ItemId _nID, ItemIndex _nStartIndex = 0 ); void ChangeRoadmapItemID( ItemId _nID, ItemId _NewID, ItemIndex _nStartIndex = 0 ); @@ -149,8 +93,8 @@ namespace svt ItemId GetItemID( ItemIndex _nIndex ) const; ItemIndex GetItemIndex( ItemId _nID ) const; - void InsertRoadmapItem( ItemIndex _Index, ::rtl::OUString _RoadmapItem, ItemId _nUniqueId, sal_Bool _bEnabled = sal_True ); - void ReplaceRoadmapItem( ItemIndex _Index, ::rtl::OUString _RoadmapItem, ItemId _nUniqueId, sal_Bool _bEnabled ); + void InsertRoadmapItem( ItemIndex _Index, const ::rtl::OUString& _RoadmapItem, ItemId _nUniqueId, sal_Bool _bEnabled = sal_True ); + void ReplaceRoadmapItem( ItemIndex _Index, const ::rtl::OUString& _RoadmapItem, ItemId _nUniqueId, sal_Bool _bEnabled ); void DeleteRoadmapItem( ItemIndex _nIndex ); ItemId GetCurrentRoadmapItemID() const; @@ -172,22 +116,20 @@ namespace svt private: DECL_LINK(ImplClickHdl, HyperLabel*); - ORoadmapHyperLabel* GetByIndex( ItemIndex _nItemIndex ); - const ORoadmapHyperLabel* GetByIndex( ItemIndex _nItemIndex ) const; + RoadmapItem* GetByIndex( ItemIndex _nItemIndex ); + const RoadmapItem* GetByIndex( ItemIndex _nItemIndex ) const; - ORoadmapHyperLabel* GetByID( ItemId _nID, ItemIndex _nStartIndex = 0 ); - const ORoadmapHyperLabel* GetByID( ItemId _nID, ItemIndex _nStartIndex = 0 ) const; - ORoadmapHyperLabel* GetPreviousHyperLabel( ItemIndex _Index); + RoadmapItem* GetByID( ItemId _nID, ItemIndex _nStartIndex = 0 ); + const RoadmapItem* GetByID( ItemId _nID, ItemIndex _nStartIndex = 0 ) const; + RoadmapItem* GetPreviousHyperLabel( ItemIndex _Index); void DrawHeadline(); void DeselectOldRoadmapItems(); ItemId GetNextAvailableItemId( ItemIndex _NewIndex ); ItemId GetPreviousAvailableItemId( ItemIndex _NewIndex ); - ORoadmapHyperLabel* GetByPointer(Window* pWindow); - void InitializeHyperLabelSize(); - ORoadmapHyperLabel* InsertHyperLabel( ItemIndex _Index, ::rtl::OUString _aStr, ItemId _RMID, sal_Bool _bEnabled = sal_True ); - void UpdatefollowingHyperLabels( ItemIndex _Index, sal_Int16 _nadd = 1); - void SetRoadmapLabel(ORoadmapHyperLabel* CurHyperLabel, sal_Int32 _nPrefix, String _sDescription); + RoadmapItem* GetByPointer(Window* pWindow); + RoadmapItem* InsertHyperLabel( ItemIndex _Index, const ::rtl::OUString& _aStr, ItemId _RMID, sal_Bool _bEnabled = sal_True ); + void UpdatefollowingHyperLabels( ItemIndex _Index ); }; //......................................................................... diff --git a/svtools/inc/svtools/hyperlabel.hxx b/svtools/inc/svtools/hyperlabel.hxx index c11568816158..939b1799c0de 100644 --- a/svtools/inc/svtools/hyperlabel.hxx +++ b/svtools/inc/svtools/hyperlabel.hxx @@ -75,26 +75,25 @@ namespace svt void SetIndex( sal_Int32 _Index ); sal_Int32 GetIndex() const; - void SetLabelAndSize( ::rtl::OUString _rText, const Size& rNewSize); - void SetLabel( ::rtl::OUString _rText ); + void SetLabel( const ::rtl::OUString& _rText ); sal_Int32 GetLogicWidth(); ::rtl::OUString GetLabel( ); - void SetHyperLabelPosition(sal_uInt16 XPos, sal_uInt16 YPos); - Point GetLogicalPosition(); - void ToggleBackgroundColor( const Color& _rGBColor ); void SetInteractive( sal_Bool _bInteractive ); void SetClickHdl( const Link& rLink ) { maClickHdl = rLink; } const Link& GetClickHdl() const { return maClickHdl; } + Size CalcMinimumSize( long nMaxWidth = 0 ) const; + private: DECL_LINK(ImplClickHdl, HyperLabel*); - sal_Bool ImplCalcMinimumSize(const Size& _rCompSize ); + private: + using FixedText::CalcMinimumSize; }; } diff --git a/svtools/inc/svtools/solar.hrc b/svtools/inc/svtools/solar.hrc index 348422ef6477..00211573f876 100644 --- a/svtools/inc/svtools/solar.hrc +++ b/svtools/inc/svtools/solar.hrc @@ -132,6 +132,8 @@ #define RID_FILTER_START (RID_LIB_START+10200) #define RID_FILTER_END (RID_LIB_START+10299) +// do *NOT* add more ranges here, RID_LIB_END is (RID_LIB_START + 10000) + #define RID_APP_START 20000 #define RID_APP_END 31999 @@ -144,12 +146,6 @@ #define RID_SD_START (27000) #define RID_SD_END (27999) -#define RID_Sa_START (28000) -#define RID_Sa_END (28999) - -#define RID_Sb_START (29000) -#define RID_Sb_END (29999) - #define RID_OBJ_START (30000) #define RID_OBJ_END (32767) @@ -191,8 +187,7 @@ #define HID_WIZARD_END (HID_LIB_START+999) //please note: There is also HID_WIZARD2 below -#define HID_EXTENSIONS_START (HID_LIB_START+1000) -#define HID_EXTENSIONS_END (HID_LIB_START+1099) +// FREE #define HID_SO2_START (HID_LIB_START+1100) #define HID_SO2_END (HID_LIB_START+1149) @@ -308,5 +303,9 @@ #define HID_FORMULA_START (HID_OBJ_START+2081) #define HID_FORMULA_END (HID_OBJ_START+2280) +#define HID_EXTENSIONS_START (HID_OBJ_START+2281) +#define HID_EXTENSIONS_END (HID_OBJ_START+2800) + + #endif diff --git a/svtools/source/control/hyperlabel.cxx b/svtools/source/control/hyperlabel.cxx index ec8387ecb662..7d7477130e0d 100644 --- a/svtools/source/control/hyperlabel.cxx +++ b/svtools/source/control/hyperlabel.cxx @@ -107,35 +107,16 @@ namespace svt } - void HyperLabel::SetLabelAndSize(::rtl::OUString _rText, const Size& _rNewSize ) + Size HyperLabel::CalcMinimumSize( long nMaxWidth ) const { - Size rLocSize = _rNewSize; - Size rLogicLocSize = PixelToLogic( _rNewSize, MAP_APPFONT ); - SetLabel( _rText ); - ImplCalcMinimumSize( rLocSize ); - rLocSize.Height() = ( m_pImpl->m_aMinSize.Height()); -// else -// rLocSize = LogicToPixel( Size( rLogicLocSize.Width(), LABELBASEMAPHEIGHT ), MAP_APPFONT ); - SetSizePixel( rLocSize ); - Show(); - } - - sal_Bool HyperLabel::ImplCalcMinimumSize(const Size& _rCompSize ) - { - sal_Bool b_AdjustMinWidth = sal_False; - m_pImpl->m_aMinSize = CalcMinimumSize( ); - if ( m_pImpl->m_aMinSize.Width() >= _rCompSize.Width() ) // the MinimumSize is used to size the FocusRectangle - { - m_pImpl->m_aMinSize.Width() = _rCompSize.Width(); // and for the MouseMove method - m_pImpl->m_aMinSize = CalcMinimumSize(_rCompSize.Width() ); - b_AdjustMinWidth = sal_True; - } + m_pImpl->m_aMinSize = FixedText::CalcMinimumSize( nMaxWidth ); + // the MinimumSize is used to size the FocusRectangle + // and for the MouseMove method m_pImpl->m_aMinSize.Height() += 2; m_pImpl->m_aMinSize.Width() += 1; - return b_AdjustMinWidth; + return m_pImpl->m_aMinSize; } - void HyperLabel::implInit() { ToggleBackgroundColor( COL_TRANSPARENT ); @@ -234,17 +215,6 @@ namespace svt m_pImpl->bInteractive = ( _bInteractive && IsEnabled() ); } - void HyperLabel::SetHyperLabelPosition(sal_uInt16 XPos, sal_uInt16 YPos) - { - SetPosPixel( LogicToPixel( Point( XPos, YPos ), MAP_APPFONT ) ); - } - - Point HyperLabel::GetLogicalPosition() - { - Point aPoint = GetPosPixel( ); - return PixelToLogic( aPoint, MAP_APPFONT ); - } - sal_Int16 HyperLabel::GetID() const { return m_pImpl->ID; @@ -270,10 +240,9 @@ namespace svt return GetText(); } - void HyperLabel::SetLabel( ::rtl::OUString _rText ) + void HyperLabel::SetLabel( const ::rtl::OUString& _rText ) { SetText(_rText); - Show(); } diff --git a/svtools/source/control/roadmap.cxx b/svtools/source/control/roadmap.cxx index b0e178e631d9..693bca733813 100644 --- a/svtools/source/control/roadmap.cxx +++ b/svtools/source/control/roadmap.cxx @@ -49,11 +49,10 @@ #endif #include <memory> -#define RMENTRYPOINT_X 4 -#define RMENTRYPOINT_Y 27 -#define RMITEMDISTANCE_Y 6 +#define ROADMAP_INDENT_X 4 +#define ROADMAP_INDENT_Y 27 +#define ROADMAP_ITEM_DISTANCE_Y 6 #define RMINCOMPLETE -1 -#define NREMOVERMITEM -1 #define NADDITEM 1 #define INCOMPLETELABEL ::String::CreateFromAscii("...") // TODO: Cast to String @@ -63,30 +62,18 @@ namespace svt //......................................................................... typedef std::vector< ::rtl::OUString > S_Vector; - typedef std::vector< ORoadmapHyperLabel* > HL_Vector; + typedef std::vector< RoadmapItem* > HL_Vector; //===================================================================== - //= FontChanger + //= ColorChanger //===================================================================== -// class FontChanger -// { -// protected: -// OutputDevice* m_pDev; -// -// public: -// FontChanger( OutputDevice* _pDev, const Font& _rNewFont ) -// :m_pDev( _pDev ) -// { -// m_pDev->Push( PUSH_FONT ); -// m_pDev->SetFont( _rNewFont ); -// } -// -// ~FontChanger() -// { -// m_pDev->Pop( ); -// } -// }; - + class IDLabel : public FixedText + { + public: + IDLabel( Window* _pParent, WinBits _nWinStyle = 0 ); + ~IDLabel( ); + virtual void DataChanged( const DataChangedEvent& rDCEvt ); + }; //===================================================================== //= ColorChanger @@ -111,6 +98,51 @@ namespace svt } }; + //===================================================================== + //= RoadmapItem + //===================================================================== + class RoadmapItem : public RoadmapTypes + { + private: + IDLabel* mpID; + HyperLabel* mpDescription; + const Size m_aItemPlayground; + + public: + RoadmapItem( ORoadmap& _rParent, const Size& _rItemPlayground ); + ~RoadmapItem( ); + + void SetID( sal_Int16 _ID ); + sal_Int16 GetID() const; + + void SetIndex( ItemIndex _Index ); + ItemIndex GetIndex() const; + + void SetLabel( const ::rtl::OUString& _rText ); + ::rtl::OUString GetLabel( ); + + void Update( ItemIndex _RMIndex, const ::rtl::OUString& _rText ); + + void SetPosition( RoadmapItem* OldHyperLabel ); + + void ToggleBackgroundColor( const Color& _rGBColor ); + void SetInteractive( sal_Bool _bInteractive ); + + void SetClickHdl( const Link& rLink ); + const Link& GetClickHdl() const; + void SetZOrder( RoadmapItem* pRefRoadmapHyperLabel, USHORT nFlags ); + void Enable( BOOL bEnable = TRUE); + BOOL IsEnabled() const; + void GrabFocus(); + + bool Contains( const Window* _pWindow ) const; + + HyperLabel* GetDescriptionHyperLabel() const { return mpDescription; } + + private: + void ImplUpdateIndex( const ItemIndex _nIndex ); + void ImplUpdatePosSize(); + }; //===================================================================== //= RoadmapImpl @@ -118,27 +150,32 @@ namespace svt class RoadmapImpl : public RoadmapTypes { protected: + const ORoadmap& m_rAntiImpl; Link m_aSelectHdl; BitmapEx m_aPicture; HL_Vector m_aRoadmapSteps; ItemId m_iCurItemID; sal_Bool m_bInteractive; sal_Bool m_bComplete; + Size m_aItemSizePixel; public: - RoadmapImpl() : - m_bInteractive( sal_True ), - m_bComplete( sal_True ) {} + RoadmapImpl( const ORoadmap& _rAntiImpl ) + :m_rAntiImpl( _rAntiImpl ) + ,m_iCurItemID( -1 ) + ,m_bInteractive( sal_True ) + ,m_bComplete( sal_True ) + { + } - Size aHyperLabelPixelSize; - ORoadmapHyperLabel* InCompleteHyperLabel; + RoadmapItem* InCompleteHyperLabel; - void addHyperLabel( ORoadmapHyperLabel* _rRoadmapStep ) { m_aRoadmapSteps.push_back(_rRoadmapStep); } + void addHyperLabel( RoadmapItem* _rRoadmapStep ) { m_aRoadmapSteps.push_back(_rRoadmapStep); } HL_Vector& getHyperLabels() { return m_aRoadmapSteps; } const HL_Vector& getHyperLabels() const { return m_aRoadmapSteps; } - void insertHyperLabel( ItemIndex _Index, ORoadmapHyperLabel* _rRoadmapStep ) { m_aRoadmapSteps.insert( m_aRoadmapSteps.begin() + _Index, _rRoadmapStep ); } + void insertHyperLabel( ItemIndex _Index, RoadmapItem* _rRoadmapStep ) { m_aRoadmapSteps.insert( m_aRoadmapSteps.begin() + _Index, _rRoadmapStep ); } ItemIndex getItemCount() const { return m_aRoadmapSteps.size();} @@ -157,6 +194,9 @@ namespace svt void setSelectHdl( const Link& _rHdl ) { m_aSelectHdl = _rHdl; } const Link& getSelectHdl( ) const { return m_aSelectHdl; } + void initItemSize(); + const Size& getItemSize() const { return m_aItemSizePixel; } + void removeHyperLabel( ItemIndex _Index ) { if ( ( _Index > -1 ) && ( _Index < getItemCount() ) ) @@ -172,8 +212,21 @@ namespace svt //= Roadmap //===================================================================== //--------------------------------------------------------------------- - ORoadmap::ORoadmap( Window* _pParent, const ResId& _rId ):Control( _pParent, _rId ) - ,m_pImpl( new RoadmapImpl() ) + void RoadmapImpl::initItemSize() + { + Size aLabelSize( m_rAntiImpl.GetOutputSizePixel() ); + aLabelSize.Height() = m_rAntiImpl.LogicToPixel( Size( 0, LABELBASEMAPHEIGHT ), MAP_APPFONT ).Height(); + aLabelSize.Width() -= m_rAntiImpl.LogicToPixel( Size( 2 * ROADMAP_INDENT_X, 0 ), MAP_APPFONT ).Width(); + m_aItemSizePixel = aLabelSize; + } + + //===================================================================== + //= Roadmap + //===================================================================== + //--------------------------------------------------------------------- + ORoadmap::ORoadmap( Window* _pParent, const ResId& _rId ) + :Control( _pParent, _rId ) + ,m_pImpl( new RoadmapImpl( *this ) ) { implInit(); } @@ -181,7 +234,7 @@ namespace svt //--------------------------------------------------------------------- ORoadmap::ORoadmap( Window* _pParent, WinBits _nWinStyle ) :Control( _pParent, _nWinStyle ) - , m_pImpl( new RoadmapImpl() ) + ,m_pImpl( new RoadmapImpl( *this ) ) { implInit(); @@ -216,14 +269,15 @@ namespace svt // on this with calculating a new bold font. // Unfortunately, the OutputDevice does not offer a notify mechanism for a changed font. // So settings the font from outside is simply a forbidded scenario at the moment + EnableMapMode( sal_False ); } //--------------------------------------------------------------------- ORoadmap::~ORoadmap( ) { - HL_Vector pLocRoadmapItems = m_pImpl->getHyperLabels(); + HL_Vector aItemsCopy = m_pImpl->getHyperLabels(); m_pImpl->getHyperLabels().clear(); - for ( HL_Vector::iterator i = pLocRoadmapItems.begin(); i< pLocRoadmapItems.end(); i++) + for ( HL_Vector::iterator i = aItemsCopy.begin(); i< aItemsCopy.end(); ++i ) { delete *i; } @@ -240,54 +294,43 @@ namespace svt } - void ORoadmap::InitializeHyperLabelSize() + RoadmapItem* ORoadmap::GetPreviousHyperLabel( ItemIndex _Index) { - Size aSize = GetSizePixel(); - Size aLogicSize = PixelToLogic( aSize, MAP_APPFONT ); - aLogicSize.Height() = LABELBASEMAPHEIGHT; - aLogicSize.Width() -= (2*RMENTRYPOINT_X); - m_pImpl->aHyperLabelPixelSize = LogicToPixel( aLogicSize, MAP_APPFONT ); - EnableMapMode( sal_False ); - } - - - ORoadmapHyperLabel* ORoadmap::GetPreviousHyperLabel( ItemIndex _Index) - { - ORoadmapHyperLabel* OldHyperLabel = NULL; - if (_Index > 0) - OldHyperLabel = m_pImpl->getHyperLabels().at( _Index - 1 ); - return OldHyperLabel; + RoadmapItem* pOldItem = NULL; + if ( _Index > 0 ) + pOldItem = m_pImpl->getHyperLabels().at( _Index - 1 ); + return pOldItem; } //--------------------------------------------------------------------- - ORoadmapHyperLabel* ORoadmap::InsertHyperLabel( ItemIndex _Index, ::rtl::OUString _sLabel, ItemId _RMID, sal_Bool _bEnabled) + RoadmapItem* ORoadmap::InsertHyperLabel( ItemIndex _Index, const ::rtl::OUString& _sLabel, ItemId _RMID, sal_Bool _bEnabled) { - if (m_pImpl->getItemCount() == 0 ) - InitializeHyperLabelSize(); - ORoadmapHyperLabel* CurHyperLabel; - ORoadmapHyperLabel* OldHyperLabel = GetPreviousHyperLabel( _Index); + if ( m_pImpl->getItemCount() == 0 ) + m_pImpl->initItemSize(); + + RoadmapItem* pItem = NULL; + RoadmapItem* pOldItem = GetPreviousHyperLabel( _Index ); - if (_RMID != RMINCOMPLETE ) + pItem = new RoadmapItem( *this, m_pImpl->getItemSize() ); + if ( _RMID != RMINCOMPLETE ) { - CurHyperLabel = new ORoadmapHyperLabel(this, WB_WORDBREAK); - CurHyperLabel->SetInteractive( m_pImpl->isInteractive() ); - m_pImpl->insertHyperLabel(_Index, CurHyperLabel ); + pItem->SetInteractive( m_pImpl->isInteractive() ); + m_pImpl->insertHyperLabel( _Index, pItem ); } else { - CurHyperLabel = new ORoadmapHyperLabel(this); - CurHyperLabel->SetInteractive( sal_False ); + pItem->SetInteractive( sal_False ); } - CurHyperLabel->SetPosition( OldHyperLabel ); - CurHyperLabel->SetLabelAndSize( _Index, _sLabel, m_pImpl->aHyperLabelPixelSize ); - CurHyperLabel->SetClickHdl(LINK( this, ORoadmap, ImplClickHdl ) ); - CurHyperLabel->SetID( _RMID ); - CurHyperLabel->SetIndex( _Index ); + pItem->SetPosition( pOldItem ); + pItem->Update( _Index, _sLabel ); + pItem->SetClickHdl(LINK( this, ORoadmap, ImplClickHdl ) ); + pItem->SetID( _RMID ); + pItem->SetIndex( _Index ); if (!_bEnabled) - CurHyperLabel->Enable( _bEnabled ); - return CurHyperLabel; + pItem->Enable( _bEnabled ); + return pItem; } //--------------------------------------------------------------------- @@ -308,12 +351,14 @@ namespace svt void ORoadmap::SetRoadmapInteractive( sal_Bool _bInteractive ) { m_pImpl->setInteractive( _bInteractive ); - ORoadmapHyperLabel* CurHyperLabel; - HL_Vector pLocRoadmapItems = m_pImpl->getHyperLabels(); - for ( HL_Vector::iterator i = pLocRoadmapItems.begin(); i< pLocRoadmapItems.end(); i++) + + const HL_Vector& rItems = m_pImpl->getHyperLabels(); + for ( HL_Vector::const_iterator i = rItems.begin(); + i < rItems.end(); + ++i + ) { - CurHyperLabel = *i; - CurHyperLabel->SetInteractive( _bInteractive ); + (*i)->SetInteractive( _bInteractive ); } } @@ -326,76 +371,55 @@ namespace svt //--------------------------------------------------------------------- void ORoadmap::SetRoadmapComplete( sal_Bool _bComplete ) { - sal_Bool OldbComplete = m_pImpl->isComplete(); - m_pImpl->setComplete( _bComplete); - if (_bComplete) + sal_Bool bWasComplete = m_pImpl->isComplete(); + m_pImpl->setComplete( _bComplete ); + if ( _bComplete ) { if ( m_pImpl->InCompleteHyperLabel != NULL) { - if (m_pImpl->getItemCount() > 0) - { - HL_Vector pLocRoadmapItems = m_pImpl->getHyperLabels(); - pLocRoadmapItems.pop_back(); - delete m_pImpl->InCompleteHyperLabel; - } + delete m_pImpl->InCompleteHyperLabel; m_pImpl->InCompleteHyperLabel = NULL; } } - else if (OldbComplete) - m_pImpl->InCompleteHyperLabel = InsertHyperLabel( m_pImpl->getItemCount(), ::String::CreateFromAscii("..."), RMINCOMPLETE ); + else if ( bWasComplete ) + m_pImpl->InCompleteHyperLabel = InsertHyperLabel( m_pImpl->getItemCount(), ::String::CreateFromAscii( "..." ), RMINCOMPLETE ); } //--------------------------------------------------------------------- - void ORoadmap::SetRoadmapLabel(ORoadmapHyperLabel* CurHyperLabel, sal_Int32 _nPrefix, String _sDescription) + void ORoadmap::UpdatefollowingHyperLabels( ItemIndex _nIndex ) { - const xub_StrLen n_Pos = _sDescription.Search( String::CreateFromAscii(".") ); - if ( n_Pos != STRING_NOTFOUND ) + const HL_Vector& rItems = m_pImpl->getHyperLabels(); + if ( _nIndex < (ItemIndex)rItems.size() ) { - const String sID = ::String::CreateFromInt32( _nPrefix ); - _sDescription.Replace(0 , n_Pos, sID ); - } - CurHyperLabel->SetLabelAndSize( _nPrefix, _sDescription, m_pImpl->aHyperLabelPixelSize ); - } - - //--------------------------------------------------------------------- - void ORoadmap::UpdatefollowingHyperLabels( ItemIndex _Index, sal_Int16 ) - { - if ( _Index < ( m_pImpl->getItemCount() ) ) - { - Point aPos; - String sLabel; - HL_Vector pLocRoadmapItems = m_pImpl->getHyperLabels(); - ORoadmapHyperLabel* CurHyperLabel = NULL; - ItemIndex n_CurPrefix = _Index + 1 ; - for ( HL_Vector::iterator i = pLocRoadmapItems.begin()+ _Index; i< pLocRoadmapItems.end(); i++) + RoadmapItem* pItem = NULL; + for ( HL_Vector::const_iterator i = rItems.begin() + _nIndex; + i< rItems.end(); + ++i, ++_nIndex + ) { - CurHyperLabel = *i; - aPos = CurHyperLabel->GetLogicalPosition(); - CurHyperLabel->SetIndex( n_CurPrefix - 1); - sLabel = CurHyperLabel->GetLabel(); - SetRoadmapLabel(CurHyperLabel, n_CurPrefix, sLabel); - ORoadmapHyperLabel* OldHyperLabel = GetPreviousHyperLabel( n_CurPrefix-1); - CurHyperLabel->SetPosition( OldHyperLabel); - n_CurPrefix++; + pItem = *i; + + pItem->SetIndex( _nIndex ); + pItem->SetPosition( GetPreviousHyperLabel( _nIndex ) ); } } if ( ! m_pImpl->isComplete() ) { - ORoadmapHyperLabel* OldHyperLabel = GetPreviousHyperLabel( m_pImpl->getItemCount()); - m_pImpl->InCompleteHyperLabel->SetPosition( OldHyperLabel ); - m_pImpl->InCompleteHyperLabel->SetLabelAndSize( m_pImpl->getItemCount(), ::String::CreateFromAscii("..."), m_pImpl->aHyperLabelPixelSize ); + RoadmapItem* pOldItem = GetPreviousHyperLabel( m_pImpl->getItemCount() ); + m_pImpl->InCompleteHyperLabel->SetPosition( pOldItem ); + m_pImpl->InCompleteHyperLabel->Update( m_pImpl->getItemCount(), ::String::CreateFromAscii("...") ); } } //--------------------------------------------------------------------- - void ORoadmap::ReplaceRoadmapItem( ItemIndex _Index, ::rtl::OUString _RoadmapItem, ItemId _RMID, sal_Bool _bEnabled ) + void ORoadmap::ReplaceRoadmapItem( ItemIndex _Index, const ::rtl::OUString& _RoadmapItem, ItemId _RMID, sal_Bool _bEnabled ) { - ORoadmapHyperLabel* CurHyperLabel = GetByIndex( _Index); - if ( CurHyperLabel != NULL ) + RoadmapItem* pItem = GetByIndex( _Index); + if ( pItem != NULL ) { - CurHyperLabel->SetLabelAndSize( _Index, _RoadmapItem, m_pImpl->aHyperLabelPixelSize ); - CurHyperLabel->SetID( _RMID ); - CurHyperLabel->Enable( _bEnabled ); + pItem->Update( _Index, _RoadmapItem ); + pItem->SetID( _RMID ); + pItem->Enable( _bEnabled ); } } @@ -408,7 +432,7 @@ namespace svt //--------------------------------------------------------------------- RoadmapTypes::ItemId ORoadmap::GetItemID( ItemIndex _nIndex ) const { - const ORoadmapHyperLabel* pHyperLabel = GetByIndex( _nIndex ); + const RoadmapItem* pHyperLabel = GetByIndex( _nIndex ); if ( pHyperLabel ) return pHyperLabel->GetID(); return -1; @@ -417,28 +441,26 @@ namespace svt //--------------------------------------------------------------------- RoadmapTypes::ItemIndex ORoadmap::GetItemIndex( ItemId _nID ) const { - ORoadmapHyperLabel* CurHyperLabel; ItemId nLocID = 0; - HL_Vector &LocHyperLabels = m_pImpl->getHyperLabels(); - ItemIndex nResult = 0; - for ( HL_Vector::iterator i = LocHyperLabels.begin(); i< LocHyperLabels.end(); i++) + const HL_Vector& rItems = m_pImpl->getHyperLabels(); + for ( HL_Vector::const_iterator i = rItems.begin(); + i < rItems.end(); + ++i + ) { - CurHyperLabel = *i; - nLocID = CurHyperLabel->GetID(); + nLocID = (*i)->GetID(); if ( nLocID == _nID ) - return nResult; - nResult++; + return ItemIndex( i - rItems.begin() ); } return -1; } //--------------------------------------------------------------------- - void ORoadmap::InsertRoadmapItem( ItemIndex _Index, ::rtl::OUString _RoadmapItem, ItemId _nUniqueId, sal_Bool _bEnabled ) + void ORoadmap::InsertRoadmapItem( ItemIndex _Index, const ::rtl::OUString& _RoadmapItem, ItemId _nUniqueId, sal_Bool _bEnabled ) { - ORoadmapHyperLabel* CurHyperLabel; - CurHyperLabel = InsertHyperLabel(_Index, _RoadmapItem, _nUniqueId, _bEnabled); + InsertHyperLabel( _Index, _RoadmapItem, _nUniqueId, _bEnabled ); // Todo: YPos is superfluous, if items are always appended - UpdatefollowingHyperLabels( _Index + 1); + UpdatefollowingHyperLabels( _Index + 1 ); } //--------------------------------------------------------------------- @@ -447,7 +469,7 @@ namespace svt if ( m_pImpl->getItemCount() > 0 && ( _Index > -1) && ( _Index < m_pImpl->getItemCount() ) ) { m_pImpl->removeHyperLabel( _Index ); - UpdatefollowingHyperLabels( _Index, NREMOVERMITEM); + UpdatefollowingHyperLabels( _Index ); } } @@ -460,33 +482,33 @@ namespace svt //--------------------------------------------------------------------- sal_Bool ORoadmap::IsRoadmapItemEnabled( ItemId _nItemId, ItemIndex _nStartIndex ) const { - const ORoadmapHyperLabel* _pLabelItem = GetByID( _nItemId, _nStartIndex ); + const RoadmapItem* _pLabelItem = GetByID( _nItemId, _nStartIndex ); return _pLabelItem ? _pLabelItem->IsEnabled() : sal_False; } //--------------------------------------------------------------------- void ORoadmap::EnableRoadmapItem( ItemId _nItemId, sal_Bool _bEnable, ItemIndex _nStartIndex ) { - ORoadmapHyperLabel* CurHyperLabel = GetByID( _nItemId, _nStartIndex ); - if ( CurHyperLabel != NULL ) - CurHyperLabel->Enable( _bEnable ); + RoadmapItem* pItem = GetByID( _nItemId, _nStartIndex ); + if ( pItem != NULL ) + pItem->Enable( _bEnable ); } //--------------------------------------------------------------------- - void ORoadmap::ChangeRoadmapItemLabel( ItemId _nID, ::rtl::OUString _sLabel, ItemIndex _nStartIndex ) + void ORoadmap::ChangeRoadmapItemLabel( ItemId _nID, const ::rtl::OUString& _sLabel, ItemIndex _nStartIndex ) { - ORoadmapHyperLabel* CurHyperLabel = GetByID( _nID, _nStartIndex ); - if ( CurHyperLabel != NULL ) + RoadmapItem* pItem = GetByID( _nID, _nStartIndex ); + if ( pItem != NULL ) { - CurHyperLabel->SetLabelAndSize( CurHyperLabel->GetIndex(), _sLabel, m_pImpl->aHyperLabelPixelSize ); - HL_Vector pLocRoadmapItems = m_pImpl->getHyperLabels(); - ItemIndex Index = _nStartIndex; - for ( HL_Vector::iterator i = pLocRoadmapItems.begin()+ Index; i< pLocRoadmapItems.end(); i++) + pItem->Update( pItem->GetIndex(), _sLabel ); + + const HL_Vector& rItems = m_pImpl->getHyperLabels(); + for ( HL_Vector::const_iterator i = rItems.begin() + _nStartIndex; + i < rItems.end(); + ++i + ) { - CurHyperLabel = *i; - ORoadmapHyperLabel* OldHyperLabel = GetPreviousHyperLabel( Index ); - CurHyperLabel->SetPosition( OldHyperLabel); - Index++; + (*i)->SetPosition( GetPreviousHyperLabel( i - rItems.begin() ) ); } } } @@ -495,9 +517,9 @@ namespace svt ::rtl::OUString ORoadmap::GetRoadmapItemLabel( ItemId _nID, ItemIndex _nStartIndex ) { - ORoadmapHyperLabel* CurHyperLabel = GetByID( _nID, _nStartIndex ); - if ( CurHyperLabel != NULL ) - return CurHyperLabel->GetLabel(); + RoadmapItem* pItem = GetByID( _nID, _nStartIndex ); + if ( pItem != NULL ) + return pItem->GetLabel(); else return ::rtl::OUString(); } @@ -505,47 +527,47 @@ namespace svt //--------------------------------------------------------------------- void ORoadmap::ChangeRoadmapItemID( ItemId _nID, ItemId _NewID, ItemIndex _nStartIndex ) { - ORoadmapHyperLabel* CurHyperLabel = GetByID( _nID, _nStartIndex ); - if ( CurHyperLabel != NULL ) - CurHyperLabel->SetID( _NewID ); + RoadmapItem* pItem = GetByID( _nID, _nStartIndex ); + if ( pItem != NULL ) + pItem->SetID( _NewID ); } //--------------------------------------------------------------------- - ORoadmapHyperLabel* ORoadmap::GetByID( ItemId _nID, ItemIndex _nStartIndex) + RoadmapItem* ORoadmap::GetByID( ItemId _nID, ItemIndex _nStartIndex) { - ORoadmapHyperLabel* CurHyperLabel; ItemId nLocID = 0; - HL_Vector &LocHyperLabels = m_pImpl->getHyperLabels(); - for ( HL_Vector::iterator i = LocHyperLabels.begin()+ _nStartIndex; i< LocHyperLabels.end(); i++) + const HL_Vector& rItems = m_pImpl->getHyperLabels(); + for ( HL_Vector::const_iterator i = rItems.begin() + _nStartIndex; + i < rItems.end(); + ++i + ) { - CurHyperLabel = *i; - nLocID = CurHyperLabel->GetID(); + nLocID = (*i)->GetID(); if ( nLocID == _nID ) - return CurHyperLabel; + return *i; } return NULL; } //--------------------------------------------------------------------- - const ORoadmapHyperLabel* ORoadmap::GetByID( ItemId _nID, ItemIndex _nStartIndex ) const + const RoadmapItem* ORoadmap::GetByID( ItemId _nID, ItemIndex _nStartIndex ) const { return const_cast< ORoadmap* >( this )->GetByID( _nID, _nStartIndex ); } //--------------------------------------------------------------------- - ORoadmapHyperLabel* ORoadmap::GetByIndex( ItemIndex _nItemIndex) + RoadmapItem* ORoadmap::GetByIndex( ItemIndex _nItemIndex) { - HL_Vector &LocHyperLabels = m_pImpl->getHyperLabels(); - if ((_nItemIndex > -1) && (_nItemIndex < m_pImpl->getItemCount( ) ) ) + const HL_Vector& rItems = m_pImpl->getHyperLabels(); + if ( ( _nItemIndex > -1 ) && ( _nItemIndex < (ItemIndex)rItems.size() ) ) { - ORoadmapHyperLabel* CurHyperLabel = LocHyperLabels.at(_nItemIndex); // Vectors are one-based - return CurHyperLabel; + return rItems.at( _nItemIndex ); } return NULL; } //--------------------------------------------------------------------- - const ORoadmapHyperLabel* ORoadmap::GetByIndex( ItemIndex _nItemIndex ) const + const RoadmapItem* ORoadmap::GetByIndex( ItemIndex _nItemIndex ) const { return const_cast< ORoadmap* >( this )->GetByIndex( _nItemIndex ); } @@ -553,14 +575,14 @@ namespace svt //--------------------------------------------------------------------- RoadmapTypes::ItemId ORoadmap::GetNextAvailableItemId( ItemIndex _nNewIndex ) { - ORoadmapHyperLabel* CurHyperLabel; + RoadmapItem* pItem = NULL; ItemIndex searchIndex = ++_nNewIndex; while ( searchIndex < m_pImpl->getItemCount() ) { - CurHyperLabel = GetByIndex( searchIndex ); - if ( CurHyperLabel->IsEnabled() ) - return CurHyperLabel->GetID( ); + pItem = GetByIndex( searchIndex ); + if ( pItem->IsEnabled() ) + return pItem->GetID( ); ++searchIndex; } @@ -570,13 +592,13 @@ namespace svt //--------------------------------------------------------------------- RoadmapTypes::ItemId ORoadmap::GetPreviousAvailableItemId( ItemIndex _nNewIndex ) { - ORoadmapHyperLabel* CurHyperLabel; + RoadmapItem* pItem = NULL; ItemIndex searchIndex = --_nNewIndex; while ( searchIndex > -1 ) { - CurHyperLabel = GetByIndex( searchIndex ); - if ( CurHyperLabel->IsEnabled() ) - return CurHyperLabel->GetID( ); + pItem = GetByIndex( searchIndex ); + if ( pItem->IsEnabled() ) + return pItem->GetID( ); searchIndex--; } @@ -586,12 +608,13 @@ namespace svt //--------------------------------------------------------------------- void ORoadmap::DeselectOldRoadmapItems() { - HL_Vector pLocRoadmapItems = m_pImpl->getHyperLabels(); - ORoadmapHyperLabel* CurHyperLabel = NULL; - for ( HL_Vector::iterator i = pLocRoadmapItems.begin(); i< pLocRoadmapItems.end(); i++) + const HL_Vector& rItems = m_pImpl->getHyperLabels(); + for ( HL_Vector::const_iterator i = rItems.begin(); + i < rItems.end(); + ++i + ) { - CurHyperLabel = *i; - CurHyperLabel->ToggleBackgroundColor( COL_TRANSPARENT ); + (*i)->ToggleBackgroundColor( COL_TRANSPARENT ); } } @@ -617,7 +640,7 @@ namespace svt //--------------------------------------------------------------------- void ORoadmap::GetFocus() { - ORoadmapHyperLabel* pCurHyperLabel = GetByID( GetCurrentRoadmapItemID() ); + RoadmapItem* pCurHyperLabel = GetByID( GetCurrentRoadmapItemID() ); if ( pCurHyperLabel != NULL ) pCurHyperLabel->GrabFocus(); } @@ -626,15 +649,15 @@ namespace svt sal_Bool ORoadmap::SelectRoadmapItemByID( ItemId _nNewID ) { DeselectOldRoadmapItems(); - ORoadmapHyperLabel* CurHyperLabel = GetByID( _nNewID ); - if (CurHyperLabel != NULL) + RoadmapItem* pItem = GetByID( _nNewID ); + if ( pItem != NULL ) { - if (CurHyperLabel->IsEnabled()) + if ( pItem->IsEnabled() ) { const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings(); - CurHyperLabel->ToggleBackgroundColor( rStyleSettings.GetHighlightColor() ); //HighlightColor + pItem->ToggleBackgroundColor( rStyleSettings.GetHighlightColor() ); //HighlightColor - CurHyperLabel->GrabFocus(); + pItem->GrabFocus(); m_pImpl->setCurItemID(_nNewID); Select(); @@ -670,7 +693,7 @@ namespace svt //--------------------------------------------------------------------- void ORoadmap::DrawHeadline() { - Point aTextPos = LogicToPixel( Point( RMENTRYPOINT_X, 8 ), MAP_APPFONT ); + Point aTextPos = LogicToPixel( Point( ROADMAP_INDENT_X, 8 ), MAP_APPFONT ); Size aOutputSize( GetOutputSizePixel() ); @@ -683,15 +706,16 @@ namespace svt } //--------------------------------------------------------------------- - ORoadmapHyperLabel* ORoadmap::GetByPointer(Window* pWindow) + RoadmapItem* ORoadmap::GetByPointer(Window* pWindow) { - ORoadmapHyperLabel* CurHyperLabel; - HL_Vector &LocHyperLabels = m_pImpl->getHyperLabels(); - for ( HL_Vector::iterator i = LocHyperLabels.begin(); i< LocHyperLabels.end(); i++) + const HL_Vector& rItems = m_pImpl->getHyperLabels(); + for ( HL_Vector::const_iterator i = rItems.begin(); + i < rItems.end(); + ++i + ) { - CurHyperLabel = *i; - if ( (CurHyperLabel->GetIDLabel() == pWindow) || (CurHyperLabel->GetDescriptionHyperLabel() == pWindow) ) - return CurHyperLabel; + if ( (*i)->Contains( pWindow ) ) + return *i; } return NULL; } @@ -703,30 +727,30 @@ namespace svt if ( _rNEvt.GetType() == EVENT_KEYINPUT ) { Window* pWindow = _rNEvt.GetWindow(); - ORoadmapHyperLabel* CurHyperLabel = GetByPointer( pWindow ); - if ( CurHyperLabel != NULL ) + RoadmapItem* pItem = GetByPointer( pWindow ); + if ( pItem != NULL ) { sal_Int16 nKeyCode = _rNEvt.GetKeyEvent()->GetKeyCode().GetCode(); switch( nKeyCode ) { case KEY_UP: - { // Note: Performancewhise this is not optimal, because we search for an ID in the labels + { // Note: Performancewise this is not optimal, because we search for an ID in the labels // and afterwards we search again for a label with the appropriate ID -> // unnecessarily we search twice!!! - ItemId nPrevItemID = GetPreviousAvailableItemId( CurHyperLabel->GetIndex() ); + ItemId nPrevItemID = GetPreviousAvailableItemId( pItem->GetIndex() ); if ( nPrevItemID != -1 ) return SelectRoadmapItemByID( nPrevItemID ); } break; case KEY_DOWN: { - ItemId nNextItemID = GetNextAvailableItemId( CurHyperLabel->GetIndex() ); + ItemId nNextItemID = GetNextAvailableItemId( pItem->GetIndex() ); if ( nNextItemID != -1 ) return SelectRoadmapItemByID( nNextItemID ); } break; case KEY_SPACE: - return SelectRoadmapItemByID( CurHyperLabel->GetID() ); + return SelectRoadmapItemByID( pItem->GetID() ); } } } @@ -736,9 +760,12 @@ namespace svt //--------------------------------------------------------------------- IMPL_LINK(ORoadmap, ImplClickHdl, HyperLabel*, _CurHyperLabel) { - return SelectRoadmapItemByID( _CurHyperLabel->GetID() ); + return SelectRoadmapItemByID( _CurHyperLabel->GetID() ); } + + + //--------------------------------------------------------------------- void ORoadmap::DataChanged( const DataChangedEvent& rDCEvt ) { if ((( rDCEvt.GetType() == DATACHANGED_SETTINGS ) || @@ -752,216 +779,228 @@ namespace svt aFont.SetColor( aTextColor ); SetFont( aFont ); RoadmapTypes::ItemId curItemID = GetCurrentRoadmapItemID(); - ORoadmapHyperLabel* pLabelItem = GetByID( curItemID ); + RoadmapItem* pLabelItem = GetByID( curItemID ); pLabelItem->ToggleBackgroundColor(rStyleSettings.GetHighlightColor()); Invalidate(); } } - ORoadmapHyperLabel::ORoadmapHyperLabel( Window* _pParent, const ResId& ) + //--------------------------------------------------------------------- + RoadmapItem::RoadmapItem( ORoadmap& _rParent, const Size& _rItemPlayground ) + :m_aItemPlayground( _rItemPlayground ) { - mpIDLabel = new ORoadmapIDHyperLabel(_pParent, WB_WORDBREAK); - mpDescHyperLabel = new HyperLabel(_pParent, WB_NOTABSTOP | WB_WORDBREAK); + mpID = new IDLabel( &_rParent, WB_WORDBREAK ); + mpID->SetTextColor( mpID->GetSettings().GetStyleSettings().GetFieldTextColor( ) ); + mpID->Show(); + mpDescription = new HyperLabel( &_rParent, WB_NOTABSTOP | WB_WORDBREAK ); + mpDescription->Show(); } - - ORoadmapHyperLabel::ORoadmapHyperLabel( Window* _pParent, WinBits ) + //--------------------------------------------------------------------- + bool RoadmapItem::Contains( const Window* _pWindow ) const { - mpIDLabel = new ORoadmapIDHyperLabel(_pParent, WB_WORDBREAK); - mpIDLabel->SetTextColor( mpIDLabel->GetSettings().GetStyleSettings().GetFieldTextColor( ) ); - mpDescHyperLabel = new HyperLabel(_pParent, WB_NOTABSTOP | WB_WORDBREAK); + return ( mpID == _pWindow ) || ( mpDescription == _pWindow ); } //--------------------------------------------------------------------- - void ORoadmapHyperLabel::GrabFocus() + void RoadmapItem::GrabFocus() { - if ( mpDescHyperLabel ) - mpDescHyperLabel->GrabFocus(); + if ( mpDescription ) + mpDescription->GrabFocus(); } - - void ORoadmapHyperLabel::SetInteractive( sal_Bool _bInteractive ) + //--------------------------------------------------------------------- + void RoadmapItem::SetInteractive( sal_Bool _bInteractive ) { - if ( mpDescHyperLabel ) - mpDescHyperLabel->SetInteractive(_bInteractive); + if ( mpDescription ) + mpDescription->SetInteractive(_bInteractive); } - void ORoadmapHyperLabel::SetID( sal_Int16 _ID ) + //--------------------------------------------------------------------- + void RoadmapItem::SetID( sal_Int16 _ID ) { - if ( mpDescHyperLabel ) - mpDescHyperLabel->SetID(_ID); + if ( mpDescription ) + mpDescription->SetID(_ID); } - sal_Int16 ORoadmapHyperLabel::GetID() const + //--------------------------------------------------------------------- + sal_Int16 RoadmapItem::GetID() const { - return mpDescHyperLabel ? mpDescHyperLabel->GetID() : sal_Int16(-1); + return mpDescription ? mpDescription->GetID() : sal_Int16(-1); } - void ORoadmapHyperLabel::SetIndex( sal_Int32 _Index ) + //--------------------------------------------------------------------- + void RoadmapItem::ImplUpdateIndex( const ItemIndex _nIndex ) { - if ( mpDescHyperLabel ) - mpDescHyperLabel->SetIndex(_Index); - } + if ( mpDescription ) + mpDescription->SetIndex( _nIndex ); + if ( mpID ) + { + ::rtl::OUString aIDText = ::rtl::OUString::valueOf( (sal_Int32)( _nIndex + 1 ) ) + ::rtl::OUString::createFromAscii( "." ); + mpID->SetText( aIDText ); + } - sal_Int32 ORoadmapHyperLabel::GetIndex() const - { - return mpDescHyperLabel ? mpDescHyperLabel->GetIndex() : sal_Int32(-1); + // update the geometry of both controls + ImplUpdatePosSize(); } - - void ORoadmapHyperLabel::SetLabel( ::rtl::OUString _rText ) + //--------------------------------------------------------------------- + void RoadmapItem::SetIndex( ItemIndex _Index ) { - if ( mpDescHyperLabel ) - mpDescHyperLabel->SetText(_rText); + ImplUpdateIndex( _Index ); } + //--------------------------------------------------------------------- + RoadmapTypes::ItemIndex RoadmapItem::GetIndex() const + { + return mpDescription ? mpDescription->GetIndex() : ItemIndex(-1); + } - ::rtl::OUString ORoadmapHyperLabel::GetLabel( ) + //--------------------------------------------------------------------- + void RoadmapItem::SetLabel( const ::rtl::OUString& _rText ) { - return mpDescHyperLabel ? mpDescHyperLabel->GetText() : String(); + if ( mpDescription ) + mpDescription->SetText(_rText); } + //--------------------------------------------------------------------- + ::rtl::OUString RoadmapItem::GetLabel( ) + { + return mpDescription ? mpDescription->GetText() : String(); + } - void ORoadmapHyperLabel::SetPosition(ORoadmapHyperLabel* OldHyperLabel) + //--------------------------------------------------------------------- + void RoadmapItem::SetPosition( RoadmapItem* _pOldItem ) { - Point aNewLogicalPoint; - Point aNewPoint; - if (OldHyperLabel == NULL) + Point aIDPos; + if ( _pOldItem == NULL ) { - aNewLogicalPoint = Point( RMENTRYPOINT_X, RMENTRYPOINT_Y); - aNewPoint = mpIDLabel->LogicToPixel(aNewLogicalPoint, MAP_APPFONT ); + aIDPos = mpID->LogicToPixel( Point( ROADMAP_INDENT_X, ROADMAP_INDENT_Y ), MAP_APPFONT ); } else { - Size aOldSize = OldHyperLabel->GetDescriptionHyperLabel()->GetSizePixel(); - Point aOldLogicalPoint = OldHyperLabel->GetLogicalPosition(); - aNewLogicalPoint = Point(aOldLogicalPoint.X(), (aOldLogicalPoint.Y() + RMITEMDISTANCE_Y)); - aNewPoint = mpIDLabel->LogicToPixel(aNewLogicalPoint, MAP_APPFONT ); - aNewPoint = Point(aNewPoint.X(),aNewPoint.Y() + aOldSize.Height()); + Size aOldSize = _pOldItem->GetDescriptionHyperLabel()->GetSizePixel(); + + aIDPos = _pOldItem->mpID->GetPosPixel(); + aIDPos.Y() += aOldSize.Height(); + aIDPos.Y() += mpID->GetParent()->LogicToPixel( Size( 0, ROADMAP_ITEM_DISTANCE_Y ) ).Height(); } - mpIDLabel->SetPosPixel( aNewPoint ); - sal_Int32 xDescPos = aNewPoint.X() + mpIDLabel->GetSizePixel().Width(); - mpDescHyperLabel->SetPosPixel( Point(xDescPos, aNewPoint.Y()) ); - } + mpID->SetPosPixel( aIDPos ); + sal_Int32 nDescPos = aIDPos.X() + mpID->GetSizePixel().Width(); + mpDescription->SetPosPixel( Point( nDescPos, aIDPos.Y() ) ); + } - void ORoadmapHyperLabel::SetZOrder( ORoadmapHyperLabel* pRefRoadmapHyperLabel, USHORT nFlags ) + //--------------------------------------------------------------------- + void RoadmapItem::SetZOrder( RoadmapItem* pRefRoadmapHyperLabel, USHORT nFlags ) { if (pRefRoadmapHyperLabel == NULL) - mpDescHyperLabel->SetZOrder( NULL, nFlags); //WINDOW_ZORDER_FIRST ); + mpDescription->SetZOrder( NULL, nFlags); //WINDOW_ZORDER_FIRST ); else - mpDescHyperLabel->SetZOrder( pRefRoadmapHyperLabel->mpDescHyperLabel, nFlags); //, WINDOW_ZORDER_BEHIND ); + mpDescription->SetZOrder( pRefRoadmapHyperLabel->mpDescription, nFlags); //, WINDOW_ZORDER_BEHIND ); } - - void ORoadmapHyperLabel::Enable( BOOL _bEnable) + //--------------------------------------------------------------------- + void RoadmapItem::Enable( BOOL _bEnable) { - mpIDLabel->Enable(_bEnable); - mpDescHyperLabel->Enable(_bEnable); + mpID->Enable(_bEnable); + mpDescription->Enable(_bEnable); } - BOOL ORoadmapHyperLabel::IsEnabled() const + //--------------------------------------------------------------------- + BOOL RoadmapItem::IsEnabled() const { - return mpIDLabel->IsEnabled(); + return mpID->IsEnabled(); } -// void ORoadmapHyperLabel::GrabFocus() -// { -// mpDescHyperLabel->GrabFocus(); -// -// } - - void ORoadmapHyperLabel::ToggleBackgroundColor( const Color& _rGBColor ) + //--------------------------------------------------------------------- + void RoadmapItem::ToggleBackgroundColor( const Color& _rGBColor ) { if (_rGBColor == COL_TRANSPARENT) { - mpIDLabel->SetTextColor( mpIDLabel->GetSettings().GetStyleSettings().GetFieldTextColor( ) ); - mpIDLabel->SetControlBackground( COL_TRANSPARENT ); + mpID->SetTextColor( mpID->GetSettings().GetStyleSettings().GetFieldTextColor( ) ); + mpID->SetControlBackground( COL_TRANSPARENT ); } else { - mpIDLabel->SetControlBackground( mpIDLabel->GetSettings().GetStyleSettings().GetHighlightColor() ); - mpIDLabel->SetTextColor( mpIDLabel->GetSettings().GetStyleSettings().GetHighlightTextColor( ) ); + mpID->SetControlBackground( mpID->GetSettings().GetStyleSettings().GetHighlightColor() ); + mpID->SetTextColor( mpID->GetSettings().GetStyleSettings().GetHighlightTextColor( ) ); } - mpDescHyperLabel->ToggleBackgroundColor(_rGBColor); + mpDescription->ToggleBackgroundColor(_rGBColor); } - - Point ORoadmapHyperLabel::GetLogicalPosition() + //--------------------------------------------------------------------- + void RoadmapItem::ImplUpdatePosSize() { - Point aPoint = mpIDLabel->GetPosPixel( ); - Size aSize = Size(aPoint.X(), aPoint.Y()); - aSize = mpIDLabel->PixelToLogic( aSize, MAP_APPFONT ); - aPoint = Point(aSize.Width(), aSize.Height()); - return aPoint; - } + // calculate widths + long nIDWidth = mpID->GetTextWidth( mpID->GetText() ); + long nMaxIDWidth = mpID->GetTextWidth( ::rtl::OUString::createFromAscii( "100." ) ); + nIDWidth = ::std::min( nIDWidth, nMaxIDWidth ); + + // check how many space the description would need + Size aDescriptionSize = mpDescription->CalcMinimumSize( m_aItemPlayground.Width() - nIDWidth ); + + // position and size both controls + Size aIDSize( nIDWidth, aDescriptionSize.Height() ); + mpID->SetSizePixel( aIDSize ); + Point aIDPos = mpID->GetPosPixel(); + mpDescription->SetPosPixel( Point( aIDPos.X() + nIDWidth, aIDPos.Y() ) ); + mpDescription->SetSizePixel( aDescriptionSize ); + } - void ORoadmapHyperLabel::SetLabelAndSize( ItemIndex _RMIndex, ::rtl::OUString _rText, const Size& _rNewSize) + //--------------------------------------------------------------------- + void RoadmapItem::Update( ItemIndex _RMIndex, const ::rtl::OUString& _rText ) { - Size rIDSize = _rNewSize; - ::rtl::OUString aStr = ::rtl::OUString::valueOf( (sal_Int32)( _RMIndex + 1 ) ) + ::rtl::OUString::createFromAscii( "." ); - rIDSize.Width() = (sal_Int32) mpIDLabel->GetTextWidth( aStr ); - long nMaxWidth = mpIDLabel->GetTextWidth( ::rtl::OUString::createFromAscii("100.") ); - rIDSize.Width() = ::std::min( rIDSize.getWidth(),nMaxWidth ); - mpIDLabel->SetSizePixel(mpIDLabel->LogicToPixel( rIDSize)); - mpIDLabel->SetText( aStr); - mpIDLabel->Show(); - Size rDescSize = _rNewSize; - rDescSize.Width() -= rIDSize.Width(); - sal_Int32 xDescPos = mpIDLabel->GetPosPixel().X() + mpIDLabel->GetSizePixel().Width(); - sal_Int32 yDescPos = mpIDLabel->GetPosPixel().Y(); - Point aPoint = Point(xDescPos, yDescPos); - mpDescHyperLabel->SetPosPixel( aPoint ); - mpDescHyperLabel->SetLabelAndSize(_rText, rDescSize); - mpIDLabel->SetSizePixel( Size( mpIDLabel->GetSizePixel().Width(), mpDescHyperLabel->GetSizePixel().Height() ) ); + // update description label + mpDescription->SetLabel( _rText ); + + // update the index in both controls, which triggers updating the geometry of both + ImplUpdateIndex( _RMIndex ); } - ORoadmapHyperLabel::~ORoadmapHyperLabel( ) + //--------------------------------------------------------------------- + RoadmapItem::~RoadmapItem( ) { { - ::std::auto_ptr<Control> aTemp(mpIDLabel); - mpIDLabel = NULL; + ::std::auto_ptr<Control> aTemp(mpID); + mpID = NULL; } { - ::std::auto_ptr<Control> aTemp(mpDescHyperLabel); - mpDescHyperLabel = NULL; + ::std::auto_ptr<Control> aTemp(mpDescription); + mpDescription = NULL; } } - - void ORoadmapHyperLabel::SetClickHdl( const Link& rLink ) - { - if ( mpDescHyperLabel ) - mpDescHyperLabel->SetClickHdl( rLink); - } - - const Link& ORoadmapHyperLabel::GetClickHdl( ) const + //--------------------------------------------------------------------- + void RoadmapItem::SetClickHdl( const Link& rLink ) { - return mpDescHyperLabel->GetClickHdl(); + if ( mpDescription ) + mpDescription->SetClickHdl( rLink); } - - ORoadmapIDHyperLabel::ORoadmapIDHyperLabel( Window* _pParent, const ResId& _rId ) - :FixedText( _pParent, _rId ) + //--------------------------------------------------------------------- + const Link& RoadmapItem::GetClickHdl( ) const { + return mpDescription->GetClickHdl(); } - ORoadmapIDHyperLabel::ORoadmapIDHyperLabel( Window* _pParent, WinBits _nWinStyle ) + //--------------------------------------------------------------------- + IDLabel::IDLabel( Window* _pParent, WinBits _nWinStyle ) :FixedText( _pParent, _nWinStyle ) { } - - ORoadmapIDHyperLabel::~ORoadmapIDHyperLabel( ) + //--------------------------------------------------------------------- + IDLabel::~IDLabel( ) { } - - void ORoadmapIDHyperLabel::DataChanged( const DataChangedEvent& rDCEvt ) + //--------------------------------------------------------------------- + void IDLabel::DataChanged( const DataChangedEvent& rDCEvt ) { const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings(); FixedText::DataChanged( rDCEvt ); diff --git a/toolkit/inc/toolkit/awt/vclxtopwindow.hxx b/toolkit/inc/toolkit/awt/vclxtopwindow.hxx index 7b4f1922b99e..4716120a347b 100644 --- a/toolkit/inc/toolkit/awt/vclxtopwindow.hxx +++ b/toolkit/inc/toolkit/awt/vclxtopwindow.hxx @@ -32,31 +32,45 @@ #define _TOOLKIT_AWT_VCLXTOPWINDOW_HXX_ #include <com/sun/star/awt/XSystemDependentWindowPeer.hpp> -#include <com/sun/star/awt/XTopWindow.hpp> +#include <com/sun/star/awt/XTopWindow2.hpp> #include <com/sun/star/awt/XMenuBar.hpp> #include <cppuhelper/weak.hxx> #include <osl/mutex.hxx> -#include <cppuhelper/implbase2.hxx> +#include <cppuhelper/implbase1.hxx> #include <toolkit/awt/vclxcontainer.hxx> -typedef ::cppu::ImplHelper2 < ::com::sun::star::awt::XTopWindow, - ::com::sun::star::awt::XSystemDependentWindowPeer - > VCLXTopWindow_XBase; +typedef ::cppu::ImplHelper1 < ::com::sun::star::awt::XTopWindow2 + > VCLXTopWindow_XBase; +typedef ::cppu::ImplHelper1 < ::com::sun::star::awt::XSystemDependentWindowPeer + > VCLXTopWindow_SBase; -class TOOLKIT_DLLPUBLIC VCLXTopWindow_Base: public VCLXTopWindow_XBase +class TOOLKIT_DLLPUBLIC VCLXTopWindow_Base :public VCLXTopWindow_XBase + ,public VCLXTopWindow_SBase { +private: + const bool m_bWHWND; + protected: ::com::sun::star::uno::Reference< ::com::sun::star::awt::XMenuBar> mxMenuBar; + bool isSystemDependentWindowPeer() const { return m_bWHWND; } + virtual ::vos::IMutex& GetMutexImpl() = 0; virtual Window* GetWindowImpl() = 0; virtual ::cppu::OInterfaceContainerHelper& GetTopWindowListenersImpl() = 0; + VCLXTopWindow_Base( const bool _bSupportSystemWindowPeer ); + public: virtual ~VCLXTopWindow_Base(); + // XInterface equivalents + ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException); + // XTypeProvider equivalents + ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes() throw(::com::sun::star::uno::RuntimeException); + // ::com::sun::star::awt::XSystemDependentWindowPeer ::com::sun::star::uno::Any SAL_CALL getWindowHandle( const ::com::sun::star::uno::Sequence< sal_Int8 >& ProcessId, sal_Int16 SystemType ) throw(::com::sun::star::uno::RuntimeException); @@ -66,6 +80,14 @@ public: void SAL_CALL toFront() throw(::com::sun::star::uno::RuntimeException); void SAL_CALL toBack() throw(::com::sun::star::uno::RuntimeException); void SAL_CALL setMenuBar( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XMenuBar >& xMenu ) throw(::com::sun::star::uno::RuntimeException); + + // XTopWindow2 + virtual ::sal_Bool SAL_CALL getIsMaximized() throw (::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL setIsMaximized( ::sal_Bool _ismaximized ) throw (::com::sun::star::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL getIsMinimized() throw (::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL setIsMinimized( ::sal_Bool _isminimized ) throw (::com::sun::star::uno::RuntimeException); + virtual ::sal_Int32 SAL_CALL getDisplay() throw (::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL setDisplay( ::sal_Int32 _display ) throw (::com::sun::star::uno::RuntimeException, ::com::sun::star::lang::IndexOutOfBoundsException); }; // ---------------------------------------------------- @@ -75,9 +97,6 @@ public: class VCLXTopWindow: public VCLXTopWindow_Base, public VCLXContainer { -private: - bool m_bWHWND; - protected: virtual vos::IMutex& GetMutexImpl(); virtual Window* GetWindowImpl(); diff --git a/toolkit/inc/toolkit/awt/vclxwindows.hxx b/toolkit/inc/toolkit/awt/vclxwindows.hxx index 3e61a9e9aa87..b6958c720f29 100644 --- a/toolkit/inc/toolkit/awt/vclxwindows.hxx +++ b/toolkit/inc/toolkit/awt/vclxwindows.hxx @@ -32,6 +32,7 @@ #define _TOOLKIT_AWT_VCLXWINDOWS_HXX_ #include <toolkit/dllapi.h> + #include <com/sun/star/beans/PropertyValues.hpp> #include <com/sun/star/beans/XPropertySet.hpp> #include <com/sun/star/beans/PropertyValue.hpp> @@ -88,8 +89,8 @@ #include <cppuhelper/weak.hxx> #include <cppuhelper/implbase2.hxx> -#include <toolkit/awt/vclxwindow.hxx> -#include <toolkit/awt/vclxtopwindow.hxx> +#include "toolkit/awt/vclxwindow.hxx" +#include "toolkit/awt/vclxtopwindow.hxx" #include <cppuhelper/implbase1.hxx> #include <vcl/pointr.hxx> diff --git a/toolkit/source/awt/vclxdialog.cxx b/toolkit/source/awt/vclxdialog.cxx index 0712f8ca074c..32f2931e7438 100644 --- a/toolkit/source/awt/vclxdialog.cxx +++ b/toolkit/source/awt/vclxdialog.cxx @@ -66,6 +66,7 @@ DBG_NAME( VCLXDialog ) VCLXDialog::VCLXDialog() : VCLXWindow() + , VCLXTopWindow_Base( true ) , VCLXDialog_Base() , Bin() , bRealized( false ) diff --git a/toolkit/source/awt/vclxtopwindow.cxx b/toolkit/source/awt/vclxtopwindow.cxx index 26e457d74583..6e532c7bef3e 100644 --- a/toolkit/source/awt/vclxtopwindow.cxx +++ b/toolkit/source/awt/vclxtopwindow.cxx @@ -46,6 +46,7 @@ #include <vcl/syschild.hxx> #include <vcl/sysdata.hxx> #include <cppuhelper/typeprovider.hxx> +#include <comphelper/sequence.hxx> #include <toolkit/awt/vclxtopwindow.hxx> #include <toolkit/awt/vclxmenu.hxx> @@ -54,13 +55,44 @@ #include <vcl/wrkwin.hxx> #include <vcl/syswin.hxx> #include <vcl/menu.hxx> +#include <vcl/svapp.hxx> #include <tools/debug.hxx> +using ::com::sun::star::uno::RuntimeException; +using ::com::sun::star::uno::Sequence; +using ::com::sun::star::uno::Type; +using ::com::sun::star::uno::Any; +using ::com::sun::star::lang::IndexOutOfBoundsException; + +VCLXTopWindow_Base::VCLXTopWindow_Base( const bool _bSupportSystemWindowPeer ) + :m_bWHWND( _bSupportSystemWindowPeer ) +{ +} + VCLXTopWindow_Base::~VCLXTopWindow_Base() { } +Any VCLXTopWindow_Base::queryInterface( const Type & rType ) throw(RuntimeException) +{ + ::com::sun::star::uno::Any aRet( VCLXTopWindow_XBase::queryInterface( rType ) ); + + // do not expose XSystemDependentWindowPeer if we do not have a system window handle + if ( !aRet.hasValue() && m_bWHWND ) + aRet = VCLXTopWindow_SBase::queryInterface( rType ); + + return aRet; +} + +Sequence< Type > VCLXTopWindow_Base::getTypes() throw(RuntimeException) +{ + Sequence< Type > aTypes( VCLXTopWindow_XBase::getTypes() ); + if ( m_bWHWND ) + aTypes = ::comphelper::concatSequences( aTypes, VCLXTopWindow_SBase::getTypes() ); + return aTypes; +} + ::com::sun::star::uno::Any VCLXTopWindow_Base::getWindowHandle( const ::com::sun::star::uno::Sequence< sal_Int8 >& /*ProcessId*/, sal_Int16 SystemType ) throw(::com::sun::star::uno::RuntimeException) { ::vos::OGuard aGuard( GetMutexImpl() ); @@ -157,6 +189,81 @@ void VCLXTopWindow_Base::setMenuBar( const ::com::sun::star::uno::Reference< ::c mxMenuBar = rxMenu; } +//-------------------------------------------------------------------- +::sal_Bool SAL_CALL VCLXTopWindow_Base::getIsMaximized() throw (RuntimeException) +{ + ::vos::OGuard aGuard( GetMutexImpl() ); + + const WorkWindow* pWindow = dynamic_cast< const WorkWindow* >( GetWindowImpl() ); + if ( !pWindow ) + return sal_False; + + return pWindow->IsMaximized(); +} + +//-------------------------------------------------------------------- +void SAL_CALL VCLXTopWindow_Base::setIsMaximized( ::sal_Bool _ismaximized ) throw (RuntimeException) +{ + ::vos::OGuard aGuard( GetMutexImpl() ); + + WorkWindow* pWindow = dynamic_cast< WorkWindow* >( GetWindowImpl() ); + if ( !pWindow ) + return; + + pWindow->Maximize( _ismaximized ); +} + +//-------------------------------------------------------------------- +::sal_Bool SAL_CALL VCLXTopWindow_Base::getIsMinimized() throw (RuntimeException) +{ + ::vos::OGuard aGuard( GetMutexImpl() ); + + const WorkWindow* pWindow = dynamic_cast< const WorkWindow* >( GetWindowImpl() ); + if ( !pWindow ) + return sal_False; + + return pWindow->IsMinimized(); +} + +//-------------------------------------------------------------------- +void SAL_CALL VCLXTopWindow_Base::setIsMinimized( ::sal_Bool _isMinimized ) throw (RuntimeException) +{ + ::vos::OGuard aGuard( GetMutexImpl() ); + + WorkWindow* pWindow = dynamic_cast< WorkWindow* >( GetWindowImpl() ); + if ( !pWindow ) + return; + + _isMinimized ? pWindow->Minimize() : pWindow->Restore(); +} + +//-------------------------------------------------------------------- +::sal_Int32 SAL_CALL VCLXTopWindow_Base::getDisplay() throw (RuntimeException) +{ + ::vos::OGuard aGuard( GetMutexImpl() ); + + const SystemWindow* pWindow = dynamic_cast< const SystemWindow* >( GetWindowImpl() ); + if ( !pWindow ) + return 0; + + return pWindow->GetScreenNumber(); +} + +//-------------------------------------------------------------------- +void SAL_CALL VCLXTopWindow_Base::setDisplay( ::sal_Int32 _display ) throw (RuntimeException, IndexOutOfBoundsException) +{ + ::vos::OGuard aGuard( GetMutexImpl() ); + + if ( ( _display < 0 ) || ( _display >= (sal_Int32)Application::GetScreenCount() ) ) + throw IndexOutOfBoundsException(); + + SystemWindow* pWindow = dynamic_cast< SystemWindow* >( GetWindowImpl() ); + if ( !pWindow ) + return; + + pWindow->SetScreenNumber( _display ); +} + // ---------------------------------------------------- // class VCLXTopWindow // ---------------------------------------------------- @@ -167,7 +274,7 @@ void VCLXTopWindow::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds ) } VCLXTopWindow::VCLXTopWindow(bool bWHWND) - : m_bWHWND(bWHWND) + : VCLXTopWindow_Base( bWHWND ) { } @@ -193,24 +300,19 @@ Window* VCLXTopWindow::GetWindowImpl() // ::com::sun::star::uno::XInterface ::com::sun::star::uno::Any VCLXTopWindow::queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException) { - ::com::sun::star::uno::Any aRet; - if(! m_bWHWND) { - aRet = ::cppu::queryInterface( rType, - SAL_STATIC_CAST( ::com::sun::star::awt::XTopWindow*, this ) ); - } - else { - aRet = ::cppu::queryInterface( rType, - SAL_STATIC_CAST( ::com::sun::star::awt::XTopWindow*, this ), - SAL_STATIC_CAST( ::com::sun::star::awt::XSystemDependentWindowPeer*, this ) ); - } - return (aRet.hasValue() ? aRet : VCLXContainer::queryInterface( rType )); + ::com::sun::star::uno::Any aRet( VCLXTopWindow_Base::queryInterface( rType ) ); + + if ( !aRet.hasValue() ) + aRet = VCLXContainer::queryInterface( rType ); + + return aRet; } ::com::sun::star::uno::Sequence< sal_Int8 > VCLXTopWindow::getImplementationId() throw(::com::sun::star::uno::RuntimeException) { static ::cppu::OImplementationId* pId = NULL; static ::cppu::OImplementationId* pIdWithHandle = NULL; - if ( m_bWHWND ) + if ( isSystemDependentWindowPeer() ) { if( !pIdWithHandle ) { @@ -242,41 +344,5 @@ Window* VCLXTopWindow::GetWindowImpl() ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > VCLXTopWindow::getTypes() throw(::com::sun::star::uno::RuntimeException) { - static ::cppu::OTypeCollection* pCollection = NULL; - static ::cppu::OTypeCollection* pCollectionWithHandle = NULL; - - if ( m_bWHWND ) - { - if( !pCollectionWithHandle ) - { - ::osl::Guard< ::osl::Mutex > aGuard( ::osl::Mutex::getGlobalMutex() ); - if( !pCollectionWithHandle ) - { - static ::cppu::OTypeCollection collectionWithHandle( - getCppuType( ( ::com::sun::star::uno::Reference< ::com::sun::star::lang::XTypeProvider>* ) NULL ), - getCppuType( ( ::com::sun::star::uno::Reference< ::com::sun::star::awt::XTopWindow>* ) NULL ), - getCppuType( ( ::com::sun::star::uno::Reference< ::com::sun::star::awt::XSystemDependentWindowPeer>* ) NULL ), - VCLXContainer::getTypes() ); - pCollectionWithHandle = &collectionWithHandle; - } - } - - return (*pCollectionWithHandle).getTypes(); - } - else - { - if( !pCollection ) - { - ::osl::Guard< ::osl::Mutex > aGuard( ::osl::Mutex::getGlobalMutex() ); - if( !pCollection ) - { - static ::cppu::OTypeCollection collection( - getCppuType( ( ::com::sun::star::uno::Reference< ::com::sun::star::lang::XTypeProvider>* ) NULL ), - getCppuType( ( ::com::sun::star::uno::Reference< ::com::sun::star::awt::XTopWindow>* ) NULL ), - VCLXContainer::getTypes() ); - pCollection = &collection; - } - } - return (*pCollection).getTypes(); - } + return ::comphelper::concatSequences( VCLXTopWindow_Base::getTypes(), VCLXContainer::getTypes() ); } diff --git a/toolkit/source/awt/vclxwindows.cxx b/toolkit/source/awt/vclxwindows.cxx index b49fa1a621d6..1df275589063 100644 --- a/toolkit/source/awt/vclxwindows.cxx +++ b/toolkit/source/awt/vclxwindows.cxx @@ -420,9 +420,6 @@ VCLXButton::VCLXButton() VCLXButton::~VCLXButton() { -#ifndef __SUNPRO_CC - OSL_TRACE ("%s", __FUNCTION__); -#endif } ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext > VCLXButton::CreateAccessibleContext() diff --git a/toolkit/source/controls/unocontrol.cxx b/toolkit/source/controls/unocontrol.cxx index 0775b6ee74f3..21876feb072b 100644 --- a/toolkit/source/controls/unocontrol.cxx +++ b/toolkit/source/controls/unocontrol.cxx @@ -1050,10 +1050,10 @@ void UnoControl::draw( sal_Int32 x, sal_Int32 y ) throw(RuntimeException) if ( xDrawPeerView.is() ) { - Reference< XVclWindowPeer > xWindowPeer; - xWindowPeer.set( xDrawPeer, UNO_QUERY ); - if ( xWindowPeer.is() ) - xWindowPeer->setDesignMode( mbDesignMode ); + Reference< XVclWindowPeer > xWindowPeer; + xWindowPeer.set( xDrawPeer, UNO_QUERY ); + if ( xWindowPeer.is() ) + xWindowPeer->setDesignMode( mbDesignMode ); xDrawPeerView->draw( x, y ); } diff --git a/vcl/inc/vcl/wrkwin.hxx b/vcl/inc/vcl/wrkwin.hxx index 8b2701420a2f..1dd46d8debe5 100644 --- a/vcl/inc/vcl/wrkwin.hxx +++ b/vcl/inc/vcl/wrkwin.hxx @@ -105,7 +105,7 @@ public: void Restore(); void Maximize( BOOL bMaximize = TRUE ); - BOOL IsMaximized(); + BOOL IsMaximized() const; }; #endif // _SV_WRKWIN_HXX diff --git a/vcl/source/window/wrkwin.cxx b/vcl/source/window/wrkwin.cxx index 0c19c5c5ee4f..c1f80bb061e5 100644 --- a/vcl/source/window/wrkwin.cxx +++ b/vcl/source/window/wrkwin.cxx @@ -310,7 +310,7 @@ void WorkWindow::Maximize( BOOL bMaximize ) ImplSetFrameState( bMaximize ? SAL_FRAMESTATE_MAXIMIZED : SAL_FRAMESTATE_NORMAL ); } -BOOL WorkWindow::IsMaximized() +BOOL WorkWindow::IsMaximized() const { BOOL bRet = FALSE; |