[Libreoffice-commits] core.git: 2 commits - svtools/inc svtools/source
Tomaž Vajngerl
tomaz.vajngerl at collabora.co.uk
Sun May 10 21:58:07 PDT 2015
svtools/inc/roadmap.hxx | 126 +--
svtools/source/control/roadmap.cxx | 1245 ++++++++++++++++++-------------------
2 files changed, 667 insertions(+), 704 deletions(-)
New commits:
commit 71c561740d3a11081c7737376948212fb0937fe4
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
Date: Mon May 11 12:25:55 2015 +0900
refactor Roadmap to use RenderContext, some cleanup
Change-Id: I4750c17ae7110b0102ebdd141a31ab2a52c4e774
diff --git a/svtools/inc/roadmap.hxx b/svtools/inc/roadmap.hxx
index 412bc4a..a4e9431 100644
--- a/svtools/inc/roadmap.hxx
+++ b/svtools/inc/roadmap.hxx
@@ -25,100 +25,90 @@
#include <svtools/hyperlabel.hxx>
-
-
-
class Bitmap;
namespace svt
{
+struct RoadmapTypes
+{
+public:
+ typedef sal_Int16 ItemId;
+ typedef sal_Int32 ItemIndex;
+};
- struct RoadmapTypes
- {
- public:
- typedef sal_Int16 ItemId;
- typedef sal_Int32 ItemIndex;
- };
-
- class RoadmapImpl;
- class RoadmapItem;
-
-
- //= Roadmap
-
- class SVT_DLLPUBLIC ORoadmap : public Control, public RoadmapTypes
- {
- protected:
- RoadmapImpl* m_pImpl;
- // Window overridables
- void Paint( vcl::RenderContext& rRenderContext, const Rectangle& _rRect ) SAL_OVERRIDE;
- void implInit();
-
- public:
- ORoadmap( vcl::Window* _pParent, WinBits _nWinStyle = 0 );
- virtual ~ORoadmap( );
- virtual void dispose() SAL_OVERRIDE;
+class RoadmapImpl;
+class RoadmapItem;
- void SetRoadmapBitmap( const BitmapEx& maBitmap, bool _bInvalidate = true );
+class SVT_DLLPUBLIC ORoadmap : public Control, public RoadmapTypes
+{
+protected:
+ RoadmapImpl* m_pImpl;
+ // Window overridables
+ void Paint(vcl::RenderContext& rRenderContext, const Rectangle& _rRect) SAL_OVERRIDE;
+ void implInit(vcl::RenderContext& rRenderContext);
- void EnableRoadmapItem( ItemId _nItemId, bool _bEnable, ItemIndex _nStartIndex = 0 );
+public:
+ ORoadmap( vcl::Window* _pParent, WinBits _nWinStyle = 0 );
+ virtual ~ORoadmap( );
+ virtual void dispose() SAL_OVERRIDE;
- void ChangeRoadmapItemLabel( ItemId _nID, const OUString& sLabel, ItemIndex _nStartIndex = 0 );
- void ChangeRoadmapItemID( ItemId _nID, ItemId _NewID, ItemIndex _nStartIndex = 0 );
+ void SetRoadmapBitmap( const BitmapEx& maBitmap, bool _bInvalidate = true );
- void SetRoadmapInteractive( bool _bInteractive );
- bool IsRoadmapInteractive();
+ void EnableRoadmapItem( ItemId _nItemId, bool _bEnable, ItemIndex _nStartIndex = 0 );
- void SetRoadmapComplete( bool _bComplete );
- bool IsRoadmapComplete() const;
+ void ChangeRoadmapItemLabel( ItemId _nID, const OUString& sLabel, ItemIndex _nStartIndex = 0 );
+ void ChangeRoadmapItemID( ItemId _nID, ItemId _NewID, ItemIndex _nStartIndex = 0 );
- ItemIndex GetItemCount() const;
- ItemId GetItemID( ItemIndex _nIndex ) const;
+ void SetRoadmapInteractive( bool _bInteractive );
+ bool IsRoadmapInteractive();
- void InsertRoadmapItem( ItemIndex _Index, const OUString& _RoadmapItem, ItemId _nUniqueId, bool _bEnabled = true );
- void ReplaceRoadmapItem( ItemIndex _Index, const OUString& _RoadmapItem, ItemId _nUniqueId, bool _bEnabled );
- void DeleteRoadmapItem( ItemIndex _nIndex );
+ void SetRoadmapComplete( bool _bComplete );
+ bool IsRoadmapComplete() const;
- ItemId GetCurrentRoadmapItemID() const;
- bool SelectRoadmapItemByID( ItemId _nItemID );
+ ItemIndex GetItemCount() const;
+ ItemId GetItemID( ItemIndex _nIndex ) const;
- void SetItemSelectHdl( const Link<>& _rHdl );
- Link<> GetItemSelectHdl( ) const;
- virtual void DataChanged( const DataChangedEvent& rDCEvt ) SAL_OVERRIDE;
- virtual void GetFocus() SAL_OVERRIDE;
+ void InsertRoadmapItem( ItemIndex _Index, const OUString& _RoadmapItem, ItemId _nUniqueId, bool _bEnabled = true );
+ void ReplaceRoadmapItem( ItemIndex _Index, const OUString& _RoadmapItem, ItemId _nUniqueId, bool _bEnabled );
+ void DeleteRoadmapItem( ItemIndex _nIndex );
+ ItemId GetCurrentRoadmapItemID() const;
+ bool SelectRoadmapItemByID( ItemId _nItemID );
- protected:
- bool PreNotify( NotifyEvent& rNEvt ) SAL_OVERRIDE;
+ void SetItemSelectHdl( const Link<>& _rHdl );
+ Link<> GetItemSelectHdl( ) const;
+ virtual void DataChanged( const DataChangedEvent& rDCEvt ) SAL_OVERRIDE;
+ virtual void GetFocus() SAL_OVERRIDE;
- protected:
- /// called when an item has been selected by any means
- void Select();
+protected:
+ bool PreNotify( NotifyEvent& rNEvt ) SAL_OVERRIDE;
- private:
- DECL_LINK(ImplClickHdl, HyperLabel*);
+protected:
+ /// called when an item has been selected by any means
+ void Select();
- RoadmapItem* GetByIndex( ItemIndex _nItemIndex );
- const RoadmapItem* GetByIndex( ItemIndex _nItemIndex ) const;
+private:
+ DECL_LINK(ImplClickHdl, HyperLabel*);
- RoadmapItem* GetByID( ItemId _nID, ItemIndex _nStartIndex = 0 );
- const RoadmapItem* GetByID( ItemId _nID, ItemIndex _nStartIndex = 0 ) const;
- RoadmapItem* GetPreviousHyperLabel( ItemIndex _Index);
+ RoadmapItem* GetByIndex( ItemIndex _nItemIndex );
+ const RoadmapItem* GetByIndex( ItemIndex _nItemIndex ) const;
- void DrawHeadline();
- void DeselectOldRoadmapItems();
- ItemId GetNextAvailableItemId( ItemIndex _NewIndex );
- ItemId GetPreviousAvailableItemId( ItemIndex _NewIndex );
- RoadmapItem* GetByPointer(vcl::Window* pWindow);
- RoadmapItem* InsertHyperLabel( ItemIndex _Index, const OUString& _aStr, ItemId _RMID, bool _bEnabled, bool _bIncomplete );
- void UpdatefollowingHyperLabels( ItemIndex _Index );
- };
+ RoadmapItem* GetByID( ItemId _nID, ItemIndex _nStartIndex = 0 );
+ const RoadmapItem* GetByID( ItemId _nID, ItemIndex _nStartIndex = 0 ) const;
+ RoadmapItem* GetPreviousHyperLabel( ItemIndex _Index);
+ void DrawHeadline(vcl::RenderContext& rRenderContext);
+ void DeselectOldRoadmapItems();
+ ItemId GetNextAvailableItemId( ItemIndex _NewIndex );
+ ItemId GetPreviousAvailableItemId( ItemIndex _NewIndex );
+ RoadmapItem* GetByPointer(vcl::Window* pWindow);
+ RoadmapItem* InsertHyperLabel( ItemIndex _Index, const OUString& _aStr, ItemId _RMID, bool _bEnabled, bool _bIncomplete );
+ void UpdatefollowingHyperLabels( ItemIndex _Index );
+};
} // namespace svt
-
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svtools/source/control/roadmap.cxx b/svtools/source/control/roadmap.cxx
index f96a7cd..742cae6 100644
--- a/svtools/source/control/roadmap.cxx
+++ b/svtools/source/control/roadmap.cxx
@@ -83,7 +83,6 @@ private:
void ImplUpdatePosSize();
};
-
//= RoadmapImpl
class RoadmapImpl : public RoadmapTypes
@@ -94,9 +93,11 @@ protected:
BitmapEx m_aPicture;
HL_Vector m_aRoadmapSteps;
ItemId m_iCurItemID;
- bool m_bInteractive;
- bool m_bComplete;
+ bool m_bInteractive : 1;
+ bool m_bComplete : 1;
Size m_aItemSizePixel;
+public:
+ bool m_bPaintInitialized : 1;
public:
RoadmapImpl(const ORoadmap& rAntiImpl)
@@ -104,6 +105,7 @@ public:
, m_iCurItemID(-1)
, m_bInteractive(true)
, m_bComplete(true)
+ , m_bPaintInitialized(false)
, InCompleteHyperLabel(NULL)
{}
@@ -198,25 +200,23 @@ void RoadmapImpl::initItemSize()
ORoadmap::ORoadmap(vcl::Window* _pParent, WinBits _nWinStyle)
: Control(_pParent, _nWinStyle)
, m_pImpl(new RoadmapImpl(*this))
-
{
- implInit();
}
-
-void ORoadmap::implInit()
+void ORoadmap::implInit(vcl::RenderContext& rRenderContext)
{
- const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
+ const StyleSettings& rStyleSettings = rRenderContext.GetSettings().GetStyleSettings();
Color aTextColor = rStyleSettings.GetFieldTextColor();
- vcl::Font aFont = GetFont( );
- aFont.SetColor( aTextColor );
- aFont.SetWeight( WEIGHT_BOLD );
- aFont.SetUnderline( UNDERLINE_SINGLE );
- SetFont( aFont );
- SetBackground( Wallpaper( rStyleSettings.GetFieldColor() ) );
+ vcl::Font aFont = rRenderContext.GetFont();
+ aFont.SetColor(aTextColor);
+ aFont.SetWeight(WEIGHT_BOLD);
+ aFont.SetUnderline(UNDERLINE_SINGLE);
+ rRenderContext.SetFont(aFont);
+ rRenderContext.SetBackground(Wallpaper(rStyleSettings.GetFieldColor()));
m_pImpl->InCompleteHyperLabel = NULL;
- m_pImpl->setCurItemID(-1 );
- m_pImpl->setComplete( true );
+ m_pImpl->setCurItemID(-1);
+ m_pImpl->setComplete(true);
+ m_pImpl->m_bPaintInitialized = true;
// Roadmap control should be reachable as one unit with a Tab key
// the next Tab key should spring out of the control.
@@ -232,7 +232,7 @@ void ORoadmap::implInit()
// 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(false);
+ rRenderContext.EnableMapMode(false);
}
ORoadmap::~ORoadmap()
@@ -561,36 +561,39 @@ bool ORoadmap::SelectRoadmapItemByID( ItemId _nNewID )
void ORoadmap::Paint(vcl::RenderContext& rRenderContext, const Rectangle& _rRect)
{
+ if (!m_pImpl->m_bPaintInitialized)
+ implInit(rRenderContext);
Control::Paint(rRenderContext, _rRect);
// draw the bitmap
- if ( !!m_pImpl->getPicture() )
+ if (!!m_pImpl->getPicture())
{
Size aBitmapSize = m_pImpl->getPicture().GetSizePixel();
- Size aMySize = GetOutputSizePixel();
+ Size aMySize = rRenderContext.GetOutputSizePixel();
- Point aBitmapPos( aMySize.Width() - aBitmapSize.Width(), aMySize.Height() - aBitmapSize.Height() );
+ Point aBitmapPos(aMySize.Width() - aBitmapSize.Width(), aMySize.Height() - aBitmapSize.Height());
// draw it
- DrawBitmapEx( aBitmapPos, m_pImpl->getPicture() );
+ rRenderContext.DrawBitmapEx( aBitmapPos, m_pImpl->getPicture() );
}
// draw the headline
- DrawHeadline();
+ DrawHeadline(rRenderContext);
}
-void ORoadmap::DrawHeadline()
+void ORoadmap::DrawHeadline(vcl::RenderContext& rRenderContext)
{
- Point aTextPos = LogicToPixel( Point( ROADMAP_INDENT_X, 8 ), MAP_APPFONT );
+ Point aTextPos = LogicToPixel(Point(ROADMAP_INDENT_X, 8), MAP_APPFONT);
- Size aOutputSize( GetOutputSizePixel() );
+ Size aOutputSize(rRenderContext.GetOutputSizePixel());
// draw it
- DrawText( Rectangle( aTextPos, aOutputSize ), GetText(), TEXT_DRAW_LEFT | TEXT_DRAW_TOP | TEXT_DRAW_MULTILINE | TEXT_DRAW_WORDBREAK );
- DrawTextLine( aTextPos, aOutputSize.Width(), STRIKEOUT_NONE, UNDERLINE_SINGLE, UNDERLINE_NONE, false );
- const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
- SetLineColor( rStyleSettings.GetFieldTextColor());
- SetTextColor(rStyleSettings.GetFieldTextColor());
+ rRenderContext.DrawText(Rectangle(aTextPos, aOutputSize), GetText(),
+ TEXT_DRAW_LEFT | TEXT_DRAW_TOP | TEXT_DRAW_MULTILINE | TEXT_DRAW_WORDBREAK);
+ rRenderContext.DrawTextLine(aTextPos, aOutputSize.Width(), STRIKEOUT_NONE, UNDERLINE_SINGLE, UNDERLINE_NONE, false);
+ const StyleSettings& rStyleSettings = rRenderContext.GetSettings().GetStyleSettings();
+ rRenderContext.SetLineColor(rStyleSettings.GetFieldTextColor());
+ rRenderContext.SetTextColor(rStyleSettings.GetFieldTextColor());
}
RoadmapItem* ORoadmap::GetByPointer(vcl::Window* pWindow)
commit 01f1a5b106ca2a324619ca02e7df6aba872c9a35
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
Date: Mon May 11 12:10:36 2015 +0900
remove whitespace, decrease indent level, cleanup
Change-Id: I618ca9c26e5d5371262d50782ea3396f11931892
diff --git a/svtools/source/control/roadmap.cxx b/svtools/source/control/roadmap.cxx
index 52ac89a..f96a7cd 100644
--- a/svtools/source/control/roadmap.cxx
+++ b/svtools/source/control/roadmap.cxx
@@ -31,846 +31,816 @@
#define ROADMAP_INDENT_Y 27
#define ROADMAP_ITEM_DISTANCE_Y 6
-
namespace svt
{
+typedef std::vector< RoadmapItem* > HL_Vector;
- typedef std::vector< RoadmapItem* > HL_Vector;
-
-
- //= ColorChanger
-
- class IDLabel : public FixedText
- {
- public:
- IDLabel( vcl::Window* _pParent, WinBits _nWinStyle = 0 );
- virtual void DataChanged( const DataChangedEvent& rDCEvt ) SAL_OVERRIDE;
- };
-
- class RoadmapItem : public RoadmapTypes
- {
- private:
- VclPtr<IDLabel> mpID;
- VclPtr<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;
+//= ColorChanger
- void Update( ItemIndex _RMIndex, const OUString& _rText );
-
- void SetPosition( RoadmapItem* OldHyperLabel );
-
- void ToggleBackgroundColor( const Color& _rGBColor );
- void SetInteractive( bool _bInteractive );
-
- void SetClickHdl( const Link<>& rLink );
- void Enable( bool bEnable = true);
- bool IsEnabled() const;
- void GrabFocus();
-
- bool Contains( const vcl::Window* _pWindow ) const;
-
- HyperLabel* GetDescriptionHyperLabel() const { return mpDescription; }
+class IDLabel : public FixedText
+{
+public:
+ IDLabel( vcl::Window* _pParent, WinBits _nWinStyle = 0 );
+ virtual void DataChanged( const DataChangedEvent& rDCEvt ) SAL_OVERRIDE;
+};
- private:
- void ImplUpdateIndex( const ItemIndex _nIndex );
- void ImplUpdatePosSize();
- };
+class RoadmapItem : public RoadmapTypes
+{
+private:
+ VclPtr<IDLabel> mpID;
+ VclPtr<HyperLabel> mpDescription;
+ const Size m_aItemPlayground;
+public:
+ RoadmapItem( ORoadmap& _rParent, const Size& _rItemPlayground );
+ ~RoadmapItem();
- //= RoadmapImpl
+ void SetID( sal_Int16 _ID );
+ sal_Int16 GetID() const;
- class RoadmapImpl : public RoadmapTypes
- {
- protected:
- const ORoadmap& m_rAntiImpl;
- Link<> m_aSelectHdl;
- BitmapEx m_aPicture;
- HL_Vector m_aRoadmapSteps;
- ItemId m_iCurItemID;
- bool m_bInteractive;
- bool m_bComplete;
- Size m_aItemSizePixel;
-
- public:
- RoadmapImpl( const ORoadmap& _rAntiImpl )
- :m_rAntiImpl( _rAntiImpl )
- ,m_iCurItemID( -1 )
- ,m_bInteractive( true )
- ,m_bComplete( true )
- ,InCompleteHyperLabel ( NULL )
- {
- }
+ void SetIndex( ItemIndex _Index );
+ ItemIndex GetIndex() const;
- RoadmapItem* InCompleteHyperLabel;
+ void Update( ItemIndex _RMIndex, const OUString& _rText );
- HL_Vector& getHyperLabels() { return m_aRoadmapSteps; }
+ void SetPosition( RoadmapItem* OldHyperLabel );
- void insertHyperLabel( ItemIndex _Index, RoadmapItem* _rRoadmapStep ) { m_aRoadmapSteps.insert( m_aRoadmapSteps.begin() + _Index, _rRoadmapStep ); }
+ void ToggleBackgroundColor( const Color& _rGBColor );
+ void SetInteractive( bool _bInteractive );
- ItemIndex getItemCount() const { return m_aRoadmapSteps.size();}
+ void SetClickHdl( const Link<>& rLink );
+ void Enable( bool bEnable = true);
+ bool IsEnabled() const;
+ void GrabFocus();
- void setCurItemID( ItemId i ) {m_iCurItemID = i; }
- ItemId getCurItemID() const { return m_iCurItemID; }
+ bool Contains( const vcl::Window* _pWindow ) const;
- void setInteractive(const bool _bInteractive) {m_bInteractive = _bInteractive; }
- bool isInteractive() const { return m_bInteractive; };
+ HyperLabel* GetDescriptionHyperLabel() const { return mpDescription; }
- void setComplete(const bool _bComplete) {m_bComplete = _bComplete; }
- bool isComplete() const { return m_bComplete; };
+private:
+ void ImplUpdateIndex( const ItemIndex _nIndex );
+ void ImplUpdatePosSize();
+};
- void setPicture( const BitmapEx& _rPic ) { m_aPicture = _rPic; }
- const BitmapEx& getPicture( ) const { return m_aPicture; }
- void setSelectHdl( const Link<>& _rHdl ) { m_aSelectHdl = _rHdl; }
- const Link<>& getSelectHdl( ) const { return m_aSelectHdl; }
+//= RoadmapImpl
- void initItemSize();
- const Size& getItemSize() const { return m_aItemSizePixel; }
+class RoadmapImpl : public RoadmapTypes
+{
+protected:
+ const ORoadmap& m_rAntiImpl;
+ Link<> m_aSelectHdl;
+ BitmapEx m_aPicture;
+ HL_Vector m_aRoadmapSteps;
+ ItemId m_iCurItemID;
+ bool m_bInteractive;
+ bool m_bComplete;
+ Size m_aItemSizePixel;
- void removeHyperLabel( ItemIndex _Index )
- {
- if ( ( _Index > -1 ) && ( _Index < getItemCount() ) )
- {
- delete m_aRoadmapSteps[_Index];
- m_aRoadmapSteps.erase( m_aRoadmapSteps.begin() + _Index);
- }
- }
- };
+public:
+ RoadmapImpl(const ORoadmap& rAntiImpl)
+ : m_rAntiImpl(rAntiImpl)
+ , m_iCurItemID(-1)
+ , m_bInteractive(true)
+ , m_bComplete(true)
+ , InCompleteHyperLabel(NULL)
+ {}
+ RoadmapItem* InCompleteHyperLabel;
- void RoadmapImpl::initItemSize()
+ HL_Vector& getHyperLabels()
{
- 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;
+ return m_aRoadmapSteps;
}
-
- //= Roadmap
-
-
- ORoadmap::ORoadmap( vcl::Window* _pParent, WinBits _nWinStyle )
- :Control( _pParent, _nWinStyle )
- ,m_pImpl( new RoadmapImpl( *this ) )
-
+ void insertHyperLabel(ItemIndex _Index, RoadmapItem* _rRoadmapStep)
{
- implInit();
+ m_aRoadmapSteps.insert(m_aRoadmapSteps.begin() + _Index, _rRoadmapStep);
}
-
- void ORoadmap::implInit()
+ ItemIndex getItemCount() const
{
- const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
- Color aTextColor = rStyleSettings.GetFieldTextColor();
- vcl::Font aFont = GetFont( );
- aFont.SetColor( aTextColor );
- aFont.SetWeight( WEIGHT_BOLD );
- aFont.SetUnderline( UNDERLINE_SINGLE );
- SetFont( aFont );
- SetBackground( Wallpaper( rStyleSettings.GetFieldColor() ) );
- m_pImpl->InCompleteHyperLabel = NULL;
- m_pImpl->setCurItemID(-1 );
- m_pImpl->setComplete( true );
-
- // Roadmap control should be reachable as one unit with a Tab key
- // the next Tab key should spring out of the control.
- // To reach it the control itself should get focus and set it
- // on entries. The entries themself should not be reachable with
- // the Tab key directly. So each entry should have WB_NOTABSTOP.
-
- // In other words the creator should create the control with the following
- // flags:
- // SetStyle( ( GetStyle() | WB_TABSTOP ) & ~WB_DIALOGCONTROL );
-
-// TODO: if somebody sets a new font from outside (OutputDevice::SetFont), we would have to react
-// 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( false );
+ return m_aRoadmapSteps.size();
}
-
- ORoadmap::~ORoadmap( )
+ void setCurItemID(ItemId i)
{
- disposeOnce();
+ m_iCurItemID = i;
}
-
- void ORoadmap::dispose()
+ ItemId getCurItemID() const
{
- HL_Vector aItemsCopy = m_pImpl->getHyperLabels();
- m_pImpl->getHyperLabels().clear();
- for ( HL_Vector::iterator i = aItemsCopy.begin(); i != aItemsCopy.end(); ++i )
- {
- delete *i;
- }
- if ( ! m_pImpl->isComplete() )
- delete m_pImpl->InCompleteHyperLabel;
- delete m_pImpl;
- m_pImpl = NULL;
- Control::dispose();
+ return m_iCurItemID;
}
-
- RoadmapTypes::ItemId ORoadmap::GetCurrentRoadmapItemID() const
+ void setInteractive(const bool _bInteractive)
{
- return m_pImpl->getCurItemID();
+ m_bInteractive = _bInteractive;
}
-
-
- RoadmapItem* ORoadmap::GetPreviousHyperLabel( ItemIndex _Index)
+ bool isInteractive() const
{
- RoadmapItem* pOldItem = NULL;
- if ( _Index > 0 )
- pOldItem = m_pImpl->getHyperLabels().at( _Index - 1 );
- return pOldItem;
+ return m_bInteractive;
}
-
-
-
- RoadmapItem* ORoadmap::InsertHyperLabel( ItemIndex _Index, const OUString& _sLabel, ItemId _RMID, bool _bEnabled, bool _bIncomplete)
+ void setComplete(const bool _bComplete)
{
- if ( m_pImpl->getItemCount() == 0 )
- m_pImpl->initItemSize();
-
- RoadmapItem* pItem = NULL;
- RoadmapItem* pOldItem = GetPreviousHyperLabel( _Index );
-
- pItem = new RoadmapItem( *this, m_pImpl->getItemSize() );
- if ( _bIncomplete )
- {
- pItem->SetInteractive( false );
- }
- else
- {
- pItem->SetInteractive( m_pImpl->isInteractive() );
- m_pImpl->insertHyperLabel( _Index, pItem );
- }
- pItem->SetPosition( pOldItem );
- pItem->Update( _Index, _sLabel );
- pItem->SetClickHdl(LINK( this, ORoadmap, ImplClickHdl ) );
- pItem->SetID( _RMID );
- pItem->SetIndex( _Index );
- if (!_bEnabled)
- pItem->Enable( _bEnabled );
- return pItem;
+ m_bComplete = _bComplete;
}
-
-
- void ORoadmap::SetRoadmapBitmap( const BitmapEx& _rBmp, bool _bInvalidate )
+ bool isComplete() const
{
- m_pImpl->setPicture( _rBmp );
- if ( _bInvalidate )
- Invalidate( );
+ return m_bComplete;
}
-
- void ORoadmap::SetRoadmapInteractive( bool _bInteractive )
+ void setPicture(const BitmapEx& _rPic)
{
- m_pImpl->setInteractive( _bInteractive );
-
- const HL_Vector& rItems = m_pImpl->getHyperLabels();
- for ( HL_Vector::const_iterator i = rItems.begin();
- i != rItems.end();
- ++i
- )
- {
- (*i)->SetInteractive( _bInteractive );
- }
+ m_aPicture = _rPic;
+ }
+ const BitmapEx& getPicture() const
+ {
+ return m_aPicture;
}
-
- bool ORoadmap::IsRoadmapInteractive()
+ void setSelectHdl(const Link<>& _rHdl)
{
- return m_pImpl->isInteractive();
+ m_aSelectHdl = _rHdl;
+ }
+ const Link<>& getSelectHdl() const
+ {
+ return m_aSelectHdl;
}
+ void initItemSize();
+ const Size& getItemSize() const
+ {
+ return m_aItemSizePixel;
+ }
- void ORoadmap::SetRoadmapComplete( bool _bComplete )
+ void removeHyperLabel(ItemIndex _Index)
{
- bool bWasComplete = m_pImpl->isComplete();
- m_pImpl->setComplete( _bComplete );
- if ( _bComplete )
+ if ((_Index > -1) && (_Index < getItemCount()))
{
- if ( m_pImpl->InCompleteHyperLabel != NULL)
- {
- delete m_pImpl->InCompleteHyperLabel;
- m_pImpl->InCompleteHyperLabel = NULL;
- }
+ delete m_aRoadmapSteps[_Index];
+ m_aRoadmapSteps.erase(m_aRoadmapSteps.begin() + _Index);
}
- else if ( bWasComplete )
- m_pImpl->InCompleteHyperLabel = InsertHyperLabel( m_pImpl->getItemCount(), OUString("..."), -1, true/*bEnabled*/, true/*bIncomplete*/ );
}
+};
+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;
+}
- void ORoadmap::UpdatefollowingHyperLabels( ItemIndex _nIndex )
- {
- const HL_Vector& rItems = m_pImpl->getHyperLabels();
- if ( _nIndex < (ItemIndex)rItems.size() )
- {
- for ( HL_Vector::const_iterator i = rItems.begin() + _nIndex;
- i != rItems.end();
- ++i, ++_nIndex
- )
- {
- RoadmapItem* pItem = *i;
+//= Roadmap
- pItem->SetIndex( _nIndex );
- pItem->SetPosition( GetPreviousHyperLabel( _nIndex ) );
- }
- }
- if ( ! m_pImpl->isComplete() )
- {
- RoadmapItem* pOldItem = GetPreviousHyperLabel( m_pImpl->getItemCount() );
- m_pImpl->InCompleteHyperLabel->SetPosition( pOldItem );
- m_pImpl->InCompleteHyperLabel->Update( m_pImpl->getItemCount(), OUString("...") );
- }
- }
+ORoadmap::ORoadmap(vcl::Window* _pParent, WinBits _nWinStyle)
+ : Control(_pParent, _nWinStyle)
+ , m_pImpl(new RoadmapImpl(*this))
+{
+ implInit();
+}
- void ORoadmap::ReplaceRoadmapItem( ItemIndex _Index, const OUString& _RoadmapItem, ItemId _RMID, bool _bEnabled )
- {
- RoadmapItem* pItem = GetByIndex( _Index);
- if ( pItem != NULL )
- {
- pItem->Update( _Index, _RoadmapItem );
- pItem->SetID( _RMID );
- pItem->Enable( _bEnabled );
- }
- }
+void ORoadmap::implInit()
+{
+ const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
+ Color aTextColor = rStyleSettings.GetFieldTextColor();
+ vcl::Font aFont = GetFont( );
+ aFont.SetColor( aTextColor );
+ aFont.SetWeight( WEIGHT_BOLD );
+ aFont.SetUnderline( UNDERLINE_SINGLE );
+ SetFont( aFont );
+ SetBackground( Wallpaper( rStyleSettings.GetFieldColor() ) );
+ m_pImpl->InCompleteHyperLabel = NULL;
+ m_pImpl->setCurItemID(-1 );
+ m_pImpl->setComplete( true );
+
+ // Roadmap control should be reachable as one unit with a Tab key
+ // the next Tab key should spring out of the control.
+ // To reach it the control itself should get focus and set it
+ // on entries. The entries themself should not be reachable with
+ // the Tab key directly. So each entry should have WB_NOTABSTOP.
+
+ // In other words the creator should create the control with the following
+ // flags:
+ // SetStyle( ( GetStyle() | WB_TABSTOP ) & ~WB_DIALOGCONTROL );
- RoadmapTypes::ItemIndex ORoadmap::GetItemCount() const
- {
- return m_pImpl->getItemCount();
- }
+// TODO: if somebody sets a new font from outside (OutputDevice::SetFont), we would have to react
+// 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(false);
+}
+ORoadmap::~ORoadmap()
+{
+ disposeOnce();
+}
- RoadmapTypes::ItemId ORoadmap::GetItemID( ItemIndex _nIndex ) const
+void ORoadmap::dispose()
+{
+ HL_Vector aItemsCopy = m_pImpl->getHyperLabels();
+ m_pImpl->getHyperLabels().clear();
+ for ( HL_Vector::iterator i = aItemsCopy.begin(); i != aItemsCopy.end(); ++i )
{
- const RoadmapItem* pHyperLabel = GetByIndex( _nIndex );
- if ( pHyperLabel )
- return pHyperLabel->GetID();
- return -1;
+ delete *i;
}
+ if ( ! m_pImpl->isComplete() )
+ delete m_pImpl->InCompleteHyperLabel;
+ delete m_pImpl;
+ m_pImpl = NULL;
+ Control::dispose();
+}
+RoadmapTypes::ItemId ORoadmap::GetCurrentRoadmapItemID() const
+{
+ return m_pImpl->getCurItemID();
+}
- void ORoadmap::InsertRoadmapItem( ItemIndex _Index, const OUString& _RoadmapItem, ItemId _nUniqueId, bool _bEnabled )
- {
- InsertHyperLabel( _Index, _RoadmapItem, _nUniqueId, _bEnabled, false/*bIncomplete*/ );
- // TODO YPos is superfluous, if items are always appended
- UpdatefollowingHyperLabels( _Index + 1 );
- }
+RoadmapItem* ORoadmap::GetPreviousHyperLabel(ItemIndex _Index)
+{
+ RoadmapItem* pOldItem = NULL;
+ if ( _Index > 0 )
+ pOldItem = m_pImpl->getHyperLabels().at( _Index - 1 );
+ return pOldItem;
+}
+
+RoadmapItem* ORoadmap::InsertHyperLabel(ItemIndex _Index, const OUString& _sLabel, ItemId _RMID, bool _bEnabled, bool _bIncomplete)
+{
+ if (m_pImpl->getItemCount() == 0)
+ m_pImpl->initItemSize();
+ RoadmapItem* pItem = NULL;
+ RoadmapItem* pOldItem = GetPreviousHyperLabel( _Index );
- void ORoadmap::DeleteRoadmapItem( ItemIndex _Index )
+ pItem = new RoadmapItem( *this, m_pImpl->getItemSize() );
+ if ( _bIncomplete )
{
- if ( m_pImpl->getItemCount() > 0 && ( _Index > -1) && ( _Index < m_pImpl->getItemCount() ) )
- {
- m_pImpl->removeHyperLabel( _Index );
- UpdatefollowingHyperLabels( _Index );
- }
+ pItem->SetInteractive( false );
}
-
-
- bool ORoadmap::IsRoadmapComplete( ) const
+ else
{
- return m_pImpl->isComplete();
+ pItem->SetInteractive( m_pImpl->isInteractive() );
+ m_pImpl->insertHyperLabel( _Index, pItem );
}
+ pItem->SetPosition( pOldItem );
+ pItem->Update( _Index, _sLabel );
+ pItem->SetClickHdl(LINK( this, ORoadmap, ImplClickHdl ) );
+ pItem->SetID( _RMID );
+ pItem->SetIndex( _Index );
+ if (!_bEnabled)
+ pItem->Enable( _bEnabled );
+ return pItem;
+}
+
+void ORoadmap::SetRoadmapBitmap(const BitmapEx& _rBmp, bool _bInvalidate)
+{
+ m_pImpl->setPicture( _rBmp );
+ if ( _bInvalidate )
+ Invalidate( );
+}
+void ORoadmap::SetRoadmapInteractive(bool _bInteractive)
+{
+ m_pImpl->setInteractive( _bInteractive );
- void ORoadmap::EnableRoadmapItem( ItemId _nItemId, bool _bEnable, ItemIndex _nStartIndex )
+ const HL_Vector& rItems = m_pImpl->getHyperLabels();
+ for ( HL_Vector::const_iterator i = rItems.begin();
+ i != rItems.end();
+ ++i
+ )
{
- RoadmapItem* pItem = GetByID( _nItemId, _nStartIndex );
- if ( pItem != NULL )
- pItem->Enable( _bEnable );
+ (*i)->SetInteractive( _bInteractive );
}
+}
+bool ORoadmap::IsRoadmapInteractive()
+{
+ return m_pImpl->isInteractive();
+}
- void ORoadmap::ChangeRoadmapItemLabel( ItemId _nID, const OUString& _sLabel, ItemIndex _nStartIndex )
+void ORoadmap::SetRoadmapComplete(bool _bComplete)
+{
+ bool bWasComplete = m_pImpl->isComplete();
+ m_pImpl->setComplete( _bComplete );
+ if (_bComplete)
{
- RoadmapItem* pItem = GetByID( _nID, _nStartIndex );
- if ( pItem != NULL )
+ if (m_pImpl->InCompleteHyperLabel != NULL)
{
- 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
- )
- {
- (*i)->SetPosition( GetPreviousHyperLabel( i - rItems.begin() ) );
- }
+ delete m_pImpl->InCompleteHyperLabel;
+ m_pImpl->InCompleteHyperLabel = NULL;
}
}
+ else if (bWasComplete)
+ m_pImpl->InCompleteHyperLabel = InsertHyperLabel(m_pImpl->getItemCount(), OUString("..."), -1, true/*bEnabled*/, true/*bIncomplete*/ );
+}
-
- void ORoadmap::ChangeRoadmapItemID( ItemId _nID, ItemId _NewID, ItemIndex _nStartIndex )
- {
- RoadmapItem* pItem = GetByID( _nID, _nStartIndex );
- if ( pItem != NULL )
- pItem->SetID( _NewID );
- }
-
-
- RoadmapItem* ORoadmap::GetByID( ItemId _nID, ItemIndex _nStartIndex)
+void ORoadmap::UpdatefollowingHyperLabels(ItemIndex _nIndex)
+{
+ const HL_Vector& rItems = m_pImpl->getHyperLabels();
+ if ( _nIndex < (ItemIndex)rItems.size() )
{
- ItemId nLocID = 0;
- const HL_Vector& rItems = m_pImpl->getHyperLabels();
- for ( HL_Vector::const_iterator i = rItems.begin() + _nStartIndex;
+ for ( HL_Vector::const_iterator i = rItems.begin() + _nIndex;
i != rItems.end();
- ++i
+ ++i, ++_nIndex
)
{
- nLocID = (*i)->GetID();
- if ( nLocID == _nID )
- return *i;
+ RoadmapItem* pItem = *i;
+
+ pItem->SetIndex( _nIndex );
+ pItem->SetPosition( GetPreviousHyperLabel( _nIndex ) );
}
- return NULL;
}
-
-
- const RoadmapItem* ORoadmap::GetByID( ItemId _nID, ItemIndex _nStartIndex ) const
+ if ( ! m_pImpl->isComplete() )
{
- return const_cast< ORoadmap* >( this )->GetByID( _nID, _nStartIndex );
+ RoadmapItem* pOldItem = GetPreviousHyperLabel( m_pImpl->getItemCount() );
+ m_pImpl->InCompleteHyperLabel->SetPosition( pOldItem );
+ m_pImpl->InCompleteHyperLabel->Update( m_pImpl->getItemCount(), OUString("...") );
}
+}
-
- RoadmapItem* ORoadmap::GetByIndex( ItemIndex _nItemIndex)
+void ORoadmap::ReplaceRoadmapItem(ItemIndex _Index, const OUString& _RoadmapItem, ItemId _RMID, bool _bEnabled)
+{
+ RoadmapItem* pItem = GetByIndex( _Index);
+ if ( pItem != NULL )
{
- const HL_Vector& rItems = m_pImpl->getHyperLabels();
- if ( ( _nItemIndex > -1 ) && ( _nItemIndex < (ItemIndex)rItems.size() ) )
- {
- return rItems.at( _nItemIndex );
- }
- return NULL;
+ pItem->Update( _Index, _RoadmapItem );
+ pItem->SetID( _RMID );
+ pItem->Enable( _bEnabled );
}
+}
+RoadmapTypes::ItemIndex ORoadmap::GetItemCount() const
+{
+ return m_pImpl->getItemCount();
+}
- const RoadmapItem* ORoadmap::GetByIndex( ItemIndex _nItemIndex ) const
- {
- return const_cast< ORoadmap* >( this )->GetByIndex( _nItemIndex );
- }
+RoadmapTypes::ItemId ORoadmap::GetItemID(ItemIndex _nIndex) const
+{
+ const RoadmapItem* pHyperLabel = GetByIndex( _nIndex );
+ if ( pHyperLabel )
+ return pHyperLabel->GetID();
+ return -1;
+}
+void ORoadmap::InsertRoadmapItem(ItemIndex _Index, const OUString& _RoadmapItem, ItemId _nUniqueId, bool _bEnabled)
+{
+ InsertHyperLabel( _Index, _RoadmapItem, _nUniqueId, _bEnabled, false/*bIncomplete*/ );
+ // TODO YPos is superfluous, if items are always appended
+ UpdatefollowingHyperLabels( _Index + 1 );
+}
- RoadmapTypes::ItemId ORoadmap::GetNextAvailableItemId( ItemIndex _nNewIndex )
+void ORoadmap::DeleteRoadmapItem(ItemIndex _Index)
+{
+ if ( m_pImpl->getItemCount() > 0 && ( _Index > -1) && ( _Index < m_pImpl->getItemCount() ) )
{
- ItemIndex searchIndex = ++_nNewIndex;
- while ( searchIndex < m_pImpl->getItemCount() )
- {
- RoadmapItem* pItem = GetByIndex( searchIndex );
- if ( pItem->IsEnabled() )
- return pItem->GetID( );
-
- ++searchIndex;
- }
- return -1;
+ m_pImpl->removeHyperLabel( _Index );
+ UpdatefollowingHyperLabels( _Index );
}
+}
+bool ORoadmap::IsRoadmapComplete() const
+{
+ return m_pImpl->isComplete();
+}
- RoadmapTypes::ItemId ORoadmap::GetPreviousAvailableItemId( ItemIndex _nNewIndex )
- {
- ItemIndex searchIndex = --_nNewIndex;
- while ( searchIndex > -1 )
- {
- RoadmapItem* pItem = GetByIndex( searchIndex );
- if ( pItem->IsEnabled() )
- return pItem->GetID( );
-
- searchIndex--;
- }
- return -1;
- }
-
+void ORoadmap::EnableRoadmapItem( ItemId _nItemId, bool _bEnable, ItemIndex _nStartIndex )
+{
+ RoadmapItem* pItem = GetByID( _nItemId, _nStartIndex );
+ if ( pItem != NULL )
+ pItem->Enable( _bEnable );
+}
- void ORoadmap::DeselectOldRoadmapItems()
+void ORoadmap::ChangeRoadmapItemLabel( ItemId _nID, const OUString& _sLabel, ItemIndex _nStartIndex )
+{
+ RoadmapItem* pItem = GetByID( _nID, _nStartIndex );
+ if ( pItem != NULL )
{
+ pItem->Update( pItem->GetIndex(), _sLabel );
+
const HL_Vector& rItems = m_pImpl->getHyperLabels();
- for ( HL_Vector::const_iterator i = rItems.begin();
+ for ( HL_Vector::const_iterator i = rItems.begin() + _nStartIndex;
i != rItems.end();
++i
)
{
- (*i)->ToggleBackgroundColor( COL_TRANSPARENT );
+ (*i)->SetPosition( GetPreviousHyperLabel( i - rItems.begin() ) );
}
}
+}
+void ORoadmap::ChangeRoadmapItemID(ItemId _nID, ItemId _NewID, ItemIndex _nStartIndex)
+{
+ RoadmapItem* pItem = GetByID( _nID, _nStartIndex );
+ if ( pItem != NULL )
+ pItem->SetID( _NewID );
+}
- void ORoadmap::SetItemSelectHdl( const Link<>& _rHdl )
+RoadmapItem* ORoadmap::GetByID(ItemId _nID, ItemIndex _nStartIndex)
+{
+ ItemId nLocID = 0;
+ const HL_Vector& rItems = m_pImpl->getHyperLabels();
+ for ( HL_Vector::const_iterator i = rItems.begin() + _nStartIndex;
+ i != rItems.end();
+ ++i
+ )
{
- m_pImpl->setSelectHdl( _rHdl );
+ nLocID = (*i)->GetID();
+ if ( nLocID == _nID )
+ return *i;
}
+ return NULL;
+}
+const RoadmapItem* ORoadmap::GetByID(ItemId _nID, ItemIndex _nStartIndex) const
+{
+ return const_cast< ORoadmap* >( this )->GetByID( _nID, _nStartIndex );
+}
- Link<> ORoadmap::GetItemSelectHdl( ) const
+RoadmapItem* ORoadmap::GetByIndex(ItemIndex _nItemIndex)
+{
+ const HL_Vector& rItems = m_pImpl->getHyperLabels();
+ if ( ( _nItemIndex > -1 ) && ( _nItemIndex < (ItemIndex)rItems.size() ) )
{
- return m_pImpl->getSelectHdl();
+ return rItems.at( _nItemIndex );
}
+ return NULL;
+}
+const RoadmapItem* ORoadmap::GetByIndex(ItemIndex _nItemIndex) const
+{
+ return const_cast< ORoadmap* >( this )->GetByIndex( _nItemIndex );
+}
- void ORoadmap::Select()
+RoadmapTypes::ItemId ORoadmap::GetNextAvailableItemId(ItemIndex _nNewIndex)
+{
+ ItemIndex searchIndex = ++_nNewIndex;
+ while ( searchIndex < m_pImpl->getItemCount() )
{
- GetItemSelectHdl().Call( this );
- CallEventListeners( VCLEVENT_ROADMAP_ITEMSELECTED );
- }
+ RoadmapItem* pItem = GetByIndex( searchIndex );
+ if ( pItem->IsEnabled() )
+ return pItem->GetID( );
+ ++searchIndex;
+ }
+ return -1;
+}
- void ORoadmap::GetFocus()
+RoadmapTypes::ItemId ORoadmap::GetPreviousAvailableItemId(ItemIndex _nNewIndex)
+{
+ ItemIndex searchIndex = --_nNewIndex;
+ while ( searchIndex > -1 )
{
- RoadmapItem* pCurHyperLabel = GetByID( GetCurrentRoadmapItemID() );
- if ( pCurHyperLabel != NULL )
- pCurHyperLabel->GrabFocus();
- }
+ RoadmapItem* pItem = GetByIndex( searchIndex );
+ if ( pItem->IsEnabled() )
+ return pItem->GetID( );
+ searchIndex--;
+ }
+ return -1;
+}
- bool ORoadmap::SelectRoadmapItemByID( ItemId _nNewID )
+void ORoadmap::DeselectOldRoadmapItems()
+{
+ const HL_Vector& rItems = m_pImpl->getHyperLabels();
+ for ( HL_Vector::const_iterator i = rItems.begin();
+ i != rItems.end();
+ ++i
+ )
{
- DeselectOldRoadmapItems();
- RoadmapItem* pItem = GetByID( _nNewID );
- if ( pItem != NULL )
- {
- if ( pItem->IsEnabled() )
- {
- const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
- pItem->ToggleBackgroundColor( rStyleSettings.GetHighlightColor() ); //HighlightColor
+ (*i)->ToggleBackgroundColor( COL_TRANSPARENT );
+ }
+}
- pItem->GrabFocus();
- m_pImpl->setCurItemID(_nNewID);
+void ORoadmap::SetItemSelectHdl(const Link<>& _rHdl)
+{
+ m_pImpl->setSelectHdl(_rHdl);
+}
- Select();
- return true;
- }
- }
- return false;
- }
+Link<> ORoadmap::GetItemSelectHdl() const
+{
+ return m_pImpl->getSelectHdl();
+}
+void ORoadmap::Select()
+{
+ GetItemSelectHdl().Call( this );
+ CallEventListeners( VCLEVENT_ROADMAP_ITEMSELECTED );
+}
- void ORoadmap::Paint( vcl::RenderContext& rRenderContext, const Rectangle& _rRect )
- {
- Control::Paint(rRenderContext, _rRect);
+void ORoadmap::GetFocus()
+{
+ RoadmapItem* pCurHyperLabel = GetByID( GetCurrentRoadmapItemID() );
+ if ( pCurHyperLabel != NULL )
+ pCurHyperLabel->GrabFocus();
+}
- // draw the bitmap
- if ( !!m_pImpl->getPicture() )
+bool ORoadmap::SelectRoadmapItemByID( ItemId _nNewID )
+{
+ DeselectOldRoadmapItems();
+ RoadmapItem* pItem = GetByID( _nNewID );
+ if ( pItem != NULL )
+ {
+ if ( pItem->IsEnabled() )
{
- Size aBitmapSize = m_pImpl->getPicture().GetSizePixel();
- Size aMySize = GetOutputSizePixel();
+ const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
+ pItem->ToggleBackgroundColor( rStyleSettings.GetHighlightColor() ); //HighlightColor
- Point aBitmapPos( aMySize.Width() - aBitmapSize.Width(), aMySize.Height() - aBitmapSize.Height() );
+ pItem->GrabFocus();
+ m_pImpl->setCurItemID(_nNewID);
- // draw it
- DrawBitmapEx( aBitmapPos, m_pImpl->getPicture() );
+ Select();
+ return true;
}
-
- // draw the headline
- DrawHeadline();
}
+ return false;
+}
+void ORoadmap::Paint(vcl::RenderContext& rRenderContext, const Rectangle& _rRect)
+{
+ Control::Paint(rRenderContext, _rRect);
- void ORoadmap::DrawHeadline()
+ // draw the bitmap
+ if ( !!m_pImpl->getPicture() )
{
- Point aTextPos = LogicToPixel( Point( ROADMAP_INDENT_X, 8 ), MAP_APPFONT );
+ Size aBitmapSize = m_pImpl->getPicture().GetSizePixel();
+ Size aMySize = GetOutputSizePixel();
- Size aOutputSize( GetOutputSizePixel() );
+ Point aBitmapPos( aMySize.Width() - aBitmapSize.Width(), aMySize.Height() - aBitmapSize.Height() );
// draw it
- DrawText( Rectangle( aTextPos, aOutputSize ), GetText(), TEXT_DRAW_LEFT | TEXT_DRAW_TOP | TEXT_DRAW_MULTILINE | TEXT_DRAW_WORDBREAK );
- DrawTextLine( aTextPos, aOutputSize.Width(), STRIKEOUT_NONE, UNDERLINE_SINGLE, UNDERLINE_NONE, false );
- const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
- SetLineColor( rStyleSettings.GetFieldTextColor());
- SetTextColor(rStyleSettings.GetFieldTextColor());
+ DrawBitmapEx( aBitmapPos, m_pImpl->getPicture() );
}
+ // draw the headline
+ DrawHeadline();
+}
- RoadmapItem* ORoadmap::GetByPointer(vcl::Window* pWindow)
- {
- const HL_Vector& rItems = m_pImpl->getHyperLabels();
- for ( HL_Vector::const_iterator i = rItems.begin();
- i != rItems.end();
- ++i
- )
- {
- if ( (*i)->Contains( pWindow ) )
- return *i;
- }
- return NULL;
- }
-
+void ORoadmap::DrawHeadline()
+{
+ Point aTextPos = LogicToPixel( Point( ROADMAP_INDENT_X, 8 ), MAP_APPFONT );
- bool ORoadmap::PreNotify( NotifyEvent& _rNEvt )
- {
- // capture KeyEvents for taskpane cycling
- if ( _rNEvt.GetType() == MouseNotifyEvent::KEYINPUT )
- {
- vcl::Window* pWindow = _rNEvt.GetWindow();
- RoadmapItem* pItem = GetByPointer( pWindow );
- if ( pItem != NULL )
- {
- sal_Int16 nKeyCode = _rNEvt.GetKeyEvent()->GetKeyCode().GetCode();
- switch( nKeyCode )
- {
- case KEY_UP:
- { // 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( pItem->GetIndex() );
- if ( nPrevItemID != -1 )
- return SelectRoadmapItemByID( nPrevItemID );
- }
- break;
- case KEY_DOWN:
- {
- ItemId nNextItemID = GetNextAvailableItemId( pItem->GetIndex() );
- if ( nNextItemID != -1 )
- return SelectRoadmapItemByID( nNextItemID );
- }
- break;
- case KEY_SPACE:
- return SelectRoadmapItemByID( pItem->GetID() );
- }
- }
- }
- return Window::PreNotify( _rNEvt );
- }
+ Size aOutputSize( GetOutputSizePixel() );
+ // draw it
+ DrawText( Rectangle( aTextPos, aOutputSize ), GetText(), TEXT_DRAW_LEFT | TEXT_DRAW_TOP | TEXT_DRAW_MULTILINE | TEXT_DRAW_WORDBREAK );
+ DrawTextLine( aTextPos, aOutputSize.Width(), STRIKEOUT_NONE, UNDERLINE_SINGLE, UNDERLINE_NONE, false );
+ const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
+ SetLineColor( rStyleSettings.GetFieldTextColor());
+ SetTextColor(rStyleSettings.GetFieldTextColor());
+}
- IMPL_LINK(ORoadmap, ImplClickHdl, HyperLabel*, _CurHyperLabel)
+RoadmapItem* ORoadmap::GetByPointer(vcl::Window* pWindow)
+{
+ const HL_Vector& rItems = m_pImpl->getHyperLabels();
+ for ( HL_Vector::const_iterator i = rItems.begin();
+ i != rItems.end();
+ ++i
+ )
{
- return SelectRoadmapItemByID( _CurHyperLabel->GetID() ) ? 1 : 0;
+ if ( (*i)->Contains( pWindow ) )
+ return *i;
}
+ return NULL;
+}
-
-
-
- void ORoadmap::DataChanged( const DataChangedEvent& rDCEvt )
+bool ORoadmap::PreNotify(NotifyEvent& _rNEvt)
+{
+ // capture KeyEvents for taskpane cycling
+ if ( _rNEvt.GetType() == MouseNotifyEvent::KEYINPUT )
{
- if ((( rDCEvt.GetType() == DataChangedEventType::SETTINGS ) ||
- ( rDCEvt.GetType() == DataChangedEventType::DISPLAY )) &&
- ( rDCEvt.GetFlags() & AllSettingsFlags::STYLE ))
+ vcl::Window* pWindow = _rNEvt.GetWindow();
+ RoadmapItem* pItem = GetByPointer( pWindow );
+ if ( pItem != NULL )
{
- const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
- SetBackground( Wallpaper( rStyleSettings.GetFieldColor() ) );
- Color aTextColor = rStyleSettings.GetFieldTextColor();
- vcl::Font aFont = GetFont();
- aFont.SetColor( aTextColor );
- SetFont( aFont );
- RoadmapTypes::ItemId curItemID = GetCurrentRoadmapItemID();
- RoadmapItem* pLabelItem = GetByID( curItemID );
- if (pLabelItem != NULL)
+ sal_Int16 nKeyCode = _rNEvt.GetKeyEvent()->GetKeyCode().GetCode();
+ switch( nKeyCode )
{
- pLabelItem->ToggleBackgroundColor(rStyleSettings.GetHighlightColor());
+ case KEY_UP:
+ { // 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( pItem->GetIndex() );
+ if ( nPrevItemID != -1 )
+ return SelectRoadmapItemByID( nPrevItemID );
+ }
+ break;
+ case KEY_DOWN:
+ {
+ ItemId nNextItemID = GetNextAvailableItemId( pItem->GetIndex() );
+ if ( nNextItemID != -1 )
+ return SelectRoadmapItemByID( nNextItemID );
+ }
+ break;
+ case KEY_SPACE:
+ return SelectRoadmapItemByID( pItem->GetID() );
}
- Invalidate();
}
}
+ return Window::PreNotify( _rNEvt );
+}
+IMPL_LINK(ORoadmap, ImplClickHdl, HyperLabel*, _CurHyperLabel)
+{
+ return SelectRoadmapItemByID( _CurHyperLabel->GetID() ) ? 1 : 0;
+}
-
- RoadmapItem::RoadmapItem( ORoadmap& _rParent, const Size& _rItemPlayground )
- :m_aItemPlayground( _rItemPlayground )
- {
- mpID = VclPtr<IDLabel>::Create( &_rParent, WB_WORDBREAK );
- mpID->SetTextColor( mpID->GetSettings().GetStyleSettings().GetFieldTextColor( ) );
- mpID->Show();
- mpDescription = VclPtr<HyperLabel>::Create( &_rParent, WB_NOTABSTOP | WB_WORDBREAK );
- mpDescription->Show();
- }
-
- RoadmapItem::~RoadmapItem()
- {
- mpID.disposeAndClear();
- mpDescription.disposeAndClear();
- }
-
-
- bool RoadmapItem::Contains( const vcl::Window* _pWindow ) const
- {
- return ( mpID == _pWindow ) || ( mpDescription == _pWindow );
- }
-
-
- void RoadmapItem::GrabFocus()
- {
- if ( mpDescription )
- mpDescription->GrabFocus();
- }
-
-
- void RoadmapItem::SetInteractive( bool _bInteractive )
+void ORoadmap::DataChanged(const DataChangedEvent& rDCEvt)
+{
+ if ((( rDCEvt.GetType() == DataChangedEventType::SETTINGS ) ||
+ ( rDCEvt.GetType() == DataChangedEventType::DISPLAY )) &&
+ ( rDCEvt.GetFlags() & AllSettingsFlags::STYLE ))
{
- if ( mpDescription )
- mpDescription->SetInteractive(_bInteractive);
+ const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
+ SetBackground( Wallpaper( rStyleSettings.GetFieldColor() ) );
+ Color aTextColor = rStyleSettings.GetFieldTextColor();
+ vcl::Font aFont = GetFont();
+ aFont.SetColor( aTextColor );
+ SetFont( aFont );
+ RoadmapTypes::ItemId curItemID = GetCurrentRoadmapItemID();
+ RoadmapItem* pLabelItem = GetByID( curItemID );
+ if (pLabelItem != NULL)
+ {
+ pLabelItem->ToggleBackgroundColor(rStyleSettings.GetHighlightColor());
+ }
+ Invalidate();
}
+}
+RoadmapItem::RoadmapItem(ORoadmap& _rParent, const Size& _rItemPlayground)
+ : m_aItemPlayground(_rItemPlayground)
+{
+ mpID = VclPtr<IDLabel>::Create( &_rParent, WB_WORDBREAK );
+ mpID->SetTextColor( mpID->GetSettings().GetStyleSettings().GetFieldTextColor( ) );
+ mpID->Show();
+ mpDescription = VclPtr<HyperLabel>::Create( &_rParent, WB_NOTABSTOP | WB_WORDBREAK );
+ mpDescription->Show();
+}
+
+RoadmapItem::~RoadmapItem()
+{
+ mpID.disposeAndClear();
+ mpDescription.disposeAndClear();
+}
- void RoadmapItem::SetID( sal_Int16 _ID )
- {
- if ( mpDescription )
- mpDescription->SetID(_ID);
- }
+bool RoadmapItem::Contains(const vcl::Window* _pWindow) const
+{
+ return ( mpID == _pWindow ) || ( mpDescription == _pWindow );
+}
+void RoadmapItem::GrabFocus()
+{
+ if ( mpDescription )
+ mpDescription->GrabFocus();
+}
- sal_Int16 RoadmapItem::GetID() const
- {
- return mpDescription ? mpDescription->GetID() : sal_Int16(-1);
- }
+void RoadmapItem::SetInteractive(bool _bInteractive)
+{
+ if ( mpDescription )
+ mpDescription->SetInteractive(_bInteractive);
+}
+void RoadmapItem::SetID(sal_Int16 _ID)
+{
+ if ( mpDescription )
+ mpDescription->SetID(_ID);
+}
- void RoadmapItem::ImplUpdateIndex( const ItemIndex _nIndex )
- {
- mpDescription->SetIndex( _nIndex );
+sal_Int16 RoadmapItem::GetID() const
+{
+ return mpDescription ? mpDescription->GetID() : sal_Int16(-1);
+}
- OUString aIDText = OUString::number( _nIndex + 1 ) + ".";
- mpID->SetText( aIDText );
+void RoadmapItem::ImplUpdateIndex(const ItemIndex _nIndex)
+{
+ mpDescription->SetIndex( _nIndex );
- // update the geometry of both controls
- ImplUpdatePosSize();
- }
+ OUString aIDText = OUString::number( _nIndex + 1 ) + ".";
+ mpID->SetText( aIDText );
+ // update the geometry of both controls
+ ImplUpdatePosSize();
+}
- void RoadmapItem::SetIndex( ItemIndex _Index )
- {
- ImplUpdateIndex( _Index );
- }
+void RoadmapItem::SetIndex(ItemIndex _Index)
+{
+ ImplUpdateIndex(_Index);
+}
+RoadmapTypes::ItemIndex RoadmapItem::GetIndex() const
+{
+ return mpDescription ? mpDescription->GetIndex() : ItemIndex(-1);
+}
- RoadmapTypes::ItemIndex RoadmapItem::GetIndex() const
+void RoadmapItem::SetPosition(RoadmapItem* _pOldItem)
+{
+ Point aIDPos;
+ if ( _pOldItem == NULL )
{
- return mpDescription ? mpDescription->GetIndex() : ItemIndex(-1);
+ aIDPos = mpID->LogicToPixel( Point( ROADMAP_INDENT_X, ROADMAP_INDENT_Y ), MAP_APPFONT );
}
-
-
- void RoadmapItem::SetPosition( RoadmapItem* _pOldItem )
+ else
{
- Point aIDPos;
- if ( _pOldItem == NULL )
- {
- aIDPos = mpID->LogicToPixel( Point( ROADMAP_INDENT_X, ROADMAP_INDENT_Y ), MAP_APPFONT );
- }
- else
- {
- 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();
- }
- mpID->SetPosPixel( aIDPos );
-
- sal_Int32 nDescPos = aIDPos.X() + mpID->GetSizePixel().Width();
- mpDescription->SetPosPixel( Point( nDescPos, aIDPos.Y() ) );
- }
-
+ Size aOldSize = _pOldItem->GetDescriptionHyperLabel()->GetSizePixel();
- void RoadmapItem::Enable( bool _bEnable)
- {
- mpID->Enable(_bEnable);
- mpDescription->Enable(_bEnable);
+ aIDPos = _pOldItem->mpID->GetPosPixel();
+ aIDPos.Y() += aOldSize.Height();
+ aIDPos.Y() += mpID->GetParent()->LogicToPixel( Size( 0, ROADMAP_ITEM_DISTANCE_Y ) ).Height();
}
+ mpID->SetPosPixel( aIDPos );
+ sal_Int32 nDescPos = aIDPos.X() + mpID->GetSizePixel().Width();
+ mpDescription->SetPosPixel( Point( nDescPos, aIDPos.Y() ) );
+}
- bool RoadmapItem::IsEnabled() const
- {
- return mpID->IsEnabled();
- }
+void RoadmapItem::Enable(bool _bEnable)
+{
+ mpID->Enable(_bEnable);
+ mpDescription->Enable(_bEnable);
+}
+bool RoadmapItem::IsEnabled() const
+{
+ return mpID->IsEnabled();
+}
- void RoadmapItem::ToggleBackgroundColor( const Color& _rGBColor )
+void RoadmapItem::ToggleBackgroundColor(const Color& _rGBColor)
+{
+ if (_rGBColor == COL_TRANSPARENT)
{
- if (_rGBColor == COL_TRANSPARENT)
- {
- mpID->SetTextColor( mpID->GetSettings().GetStyleSettings().GetFieldTextColor( ) );
- mpID->SetControlBackground( COL_TRANSPARENT );
- }
- else
- {
- mpID->SetControlBackground( mpID->GetSettings().GetStyleSettings().GetHighlightColor() );
- mpID->SetTextColor( mpID->GetSettings().GetStyleSettings().GetHighlightTextColor( ) );
- }
- mpDescription->ToggleBackgroundColor(_rGBColor);
+ mpID->SetTextColor( mpID->GetSettings().GetStyleSettings().GetFieldTextColor( ) );
+ mpID->SetControlBackground( COL_TRANSPARENT );
}
-
-
- void RoadmapItem::ImplUpdatePosSize()
+ else
{
- // calculate widths
- long nIDWidth = mpID->GetTextWidth( mpID->GetText() );
- long nMaxIDWidth = mpID->GetTextWidth( OUString( "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 );
+ mpID->SetControlBackground( mpID->GetSettings().GetStyleSettings().GetHighlightColor() );
+ mpID->SetTextColor( mpID->GetSettings().GetStyleSettings().GetHighlightTextColor( ) );
}
+ mpDescription->ToggleBackgroundColor(_rGBColor);
+}
+void RoadmapItem::ImplUpdatePosSize()
+{
+ // calculate widths
+ long nIDWidth = mpID->GetTextWidth( mpID->GetText() );
+ long nMaxIDWidth = mpID->GetTextWidth( OUString( "100." ) );
+ nIDWidth = ::std::min( nIDWidth, nMaxIDWidth );
- void RoadmapItem::Update( ItemIndex _RMIndex, const OUString& _rText )
- {
- // update description label
- mpDescription->SetLabel( _rText );
+ // check how many space the description would need
+ Size aDescriptionSize = mpDescription->CalcMinimumSize( m_aItemPlayground.Width() - nIDWidth );
- // update the index in both controls, which triggers updating the geometry of both
- ImplUpdateIndex( _RMIndex );
- }
+ // 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 RoadmapItem::SetClickHdl( const Link<>& rLink )
- {
- if ( mpDescription )
- mpDescription->SetClickHdl( rLink);
- }
-
+void RoadmapItem::Update(ItemIndex _RMIndex, const OUString& _rText)
+{
+ // update description label
+ mpDescription->SetLabel( _rText );
- IDLabel::IDLabel( vcl::Window* _pParent, WinBits _nWinStyle )
- :FixedText( _pParent, _nWinStyle )
- {
+ // update the index in both controls, which triggers updating the geometry of both
+ ImplUpdateIndex( _RMIndex );
+}
- }
+void RoadmapItem::SetClickHdl(const Link<>& rLink)
+{
+ if ( mpDescription )
+ mpDescription->SetClickHdl( rLink);
+}
+IDLabel::IDLabel(vcl::Window* _pParent, WinBits _nWinStyle)
+ : FixedText(_pParent, _nWinStyle)
+{
+}
- void IDLabel::DataChanged( const DataChangedEvent& rDCEvt )
- {
- const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
- FixedText::DataChanged( rDCEvt );
- if ((( rDCEvt.GetType() == DataChangedEventType::SETTINGS ) ||
- ( rDCEvt.GetType() == DataChangedEventType::DISPLAY )) &&
- ( rDCEvt.GetFlags() & AllSettingsFlags::STYLE ))
+void IDLabel::DataChanged(const DataChangedEvent& rDCEvt)
+{
+ const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
+ FixedText::DataChanged( rDCEvt );
+ if ((( rDCEvt.GetType() == DataChangedEventType::SETTINGS ) ||
+ ( rDCEvt.GetType() == DataChangedEventType::DISPLAY )) &&
+ ( rDCEvt.GetFlags() & AllSettingsFlags::STYLE ))
+ {
+ const Color& rGBColor = GetControlBackground();
+ if (rGBColor == COL_TRANSPARENT)
+ SetTextColor( rStyleSettings.GetFieldTextColor( ) );
+ else
{
- const Color& rGBColor = GetControlBackground();
- if (rGBColor == COL_TRANSPARENT)
- SetTextColor( rStyleSettings.GetFieldTextColor( ) );
- else
- {
- SetControlBackground(rStyleSettings.GetHighlightColor());
- SetTextColor( rStyleSettings.GetHighlightTextColor( ) );
- }
- Invalidate();
+ SetControlBackground(rStyleSettings.GetHighlightColor());
+ SetTextColor( rStyleSettings.GetHighlightTextColor( ) );
}
+ Invalidate();
}
-
-
-
-
+}
} // namespace svt
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
More information about the Libreoffice-commits
mailing list