Kaydet (Commit) 01f1a5b1 authored tarafından Tomaž Vajngerl's avatar Tomaž Vajngerl

remove whitespace, decrease indent level, cleanup

Change-Id: I618ca9c26e5d5371262d50782ea3396f11931892
üst 285d5c52
...@@ -31,846 +31,816 @@ ...@@ -31,846 +31,816 @@
#define ROADMAP_INDENT_Y 27 #define ROADMAP_INDENT_Y 27
#define ROADMAP_ITEM_DISTANCE_Y 6 #define ROADMAP_ITEM_DISTANCE_Y 6
namespace svt namespace svt
{ {
typedef std::vector< RoadmapItem* > HL_Vector;
typedef std::vector< RoadmapItem* > HL_Vector; //= ColorChanger
//= 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;
void Update( ItemIndex _RMIndex, const OUString& _rText ); class IDLabel : public FixedText
{
void SetPosition( RoadmapItem* OldHyperLabel ); public:
IDLabel( vcl::Window* _pParent, WinBits _nWinStyle = 0 );
void ToggleBackgroundColor( const Color& _rGBColor ); virtual void DataChanged( const DataChangedEvent& rDCEvt ) SAL_OVERRIDE;
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; }
private: class RoadmapItem : public RoadmapTypes
void ImplUpdateIndex( const ItemIndex _nIndex ); {
void ImplUpdatePosSize(); 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 void SetIndex( ItemIndex _Index );
{ ItemIndex GetIndex() const;
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 )
{
}
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; } bool Contains( const vcl::Window* _pWindow ) const;
ItemId getCurItemID() const { return m_iCurItemID; }
void setInteractive(const bool _bInteractive) {m_bInteractive = _bInteractive; } HyperLabel* GetDescriptionHyperLabel() const { return mpDescription; }
bool isInteractive() const { return m_bInteractive; };
void setComplete(const bool _bComplete) {m_bComplete = _bComplete; } private:
bool isComplete() const { return m_bComplete; }; 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; } //= RoadmapImpl
const Link<>& getSelectHdl( ) const { return m_aSelectHdl; }
void initItemSize(); class RoadmapImpl : public RoadmapTypes
const Size& getItemSize() const { return m_aItemSizePixel; } {
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 ) public:
{ RoadmapImpl(const ORoadmap& rAntiImpl)
if ( ( _Index > -1 ) && ( _Index < getItemCount() ) ) : m_rAntiImpl(rAntiImpl)
{ , m_iCurItemID(-1)
delete m_aRoadmapSteps[_Index]; , m_bInteractive(true)
m_aRoadmapSteps.erase( m_aRoadmapSteps.begin() + _Index); , m_bComplete(true)
} , InCompleteHyperLabel(NULL)
} {}
};
RoadmapItem* InCompleteHyperLabel;
void RoadmapImpl::initItemSize() HL_Vector& getHyperLabels()
{ {
Size aLabelSize( m_rAntiImpl.GetOutputSizePixel() ); return m_aRoadmapSteps;
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 insertHyperLabel(ItemIndex _Index, RoadmapItem* _rRoadmapStep)
//= Roadmap
ORoadmap::ORoadmap( vcl::Window* _pParent, WinBits _nWinStyle )
:Control( _pParent, _nWinStyle )
,m_pImpl( new RoadmapImpl( *this ) )
{ {
implInit(); m_aRoadmapSteps.insert(m_aRoadmapSteps.begin() + _Index, _rRoadmapStep);
} }
ItemIndex getItemCount() const
void ORoadmap::implInit()
{ {
const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings(); return m_aRoadmapSteps.size();
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 );
} }
void setCurItemID(ItemId i)
ORoadmap::~ORoadmap( )
{ {
disposeOnce(); m_iCurItemID = i;
} }
ItemId getCurItemID() const
void ORoadmap::dispose()
{ {
HL_Vector aItemsCopy = m_pImpl->getHyperLabels(); return m_iCurItemID;
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();
} }
void setInteractive(const bool _bInteractive)
RoadmapTypes::ItemId ORoadmap::GetCurrentRoadmapItemID() const
{ {
return m_pImpl->getCurItemID(); m_bInteractive = _bInteractive;
} }
bool isInteractive() const
RoadmapItem* ORoadmap::GetPreviousHyperLabel( ItemIndex _Index)
{ {
RoadmapItem* pOldItem = NULL; return m_bInteractive;
if ( _Index > 0 )
pOldItem = m_pImpl->getHyperLabels().at( _Index - 1 );
return pOldItem;
} }
void setComplete(const bool _bComplete)
RoadmapItem* ORoadmap::InsertHyperLabel( ItemIndex _Index, const OUString& _sLabel, ItemId _RMID, bool _bEnabled, bool _bIncomplete)
{ {
if ( m_pImpl->getItemCount() == 0 ) m_bComplete = _bComplete;
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;
} }
bool isComplete() const
void ORoadmap::SetRoadmapBitmap( const BitmapEx& _rBmp, bool _bInvalidate )
{ {
m_pImpl->setPicture( _rBmp ); return m_bComplete;
if ( _bInvalidate )
Invalidate( );
} }
void setPicture(const BitmapEx& _rPic)
void ORoadmap::SetRoadmapInteractive( bool _bInteractive )
{ {
m_pImpl->setInteractive( _bInteractive ); m_aPicture = _rPic;
}
const HL_Vector& rItems = m_pImpl->getHyperLabels(); const BitmapEx& getPicture() const
for ( HL_Vector::const_iterator i = rItems.begin(); {
i != rItems.end(); return m_aPicture;
++i
)
{
(*i)->SetInteractive( _bInteractive );
}
} }
void setSelectHdl(const Link<>& _rHdl)
bool ORoadmap::IsRoadmapInteractive()
{ {
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(); if ((_Index > -1) && (_Index < getItemCount()))
m_pImpl->setComplete( _bComplete );
if ( _bComplete )
{ {
if ( m_pImpl->InCompleteHyperLabel != NULL) delete m_aRoadmapSteps[_Index];
{ m_aRoadmapSteps.erase(m_aRoadmapSteps.begin() + _Index);
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 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 ) //= Roadmap
{
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;
pItem->SetIndex( _nIndex ); ORoadmap::ORoadmap(vcl::Window* _pParent, WinBits _nWinStyle)
pItem->SetPosition( GetPreviousHyperLabel( _nIndex ) ); : Control(_pParent, _nWinStyle)
} , m_pImpl(new RoadmapImpl(*this))
}
if ( ! m_pImpl->isComplete() )
{
RoadmapItem* pOldItem = GetPreviousHyperLabel( m_pImpl->getItemCount() );
m_pImpl->InCompleteHyperLabel->SetPosition( pOldItem );
m_pImpl->InCompleteHyperLabel->Update( m_pImpl->getItemCount(), OUString("...") );
}
}
{
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 // TODO: if somebody sets a new font from outside (OutputDevice::SetFont), we would have to react
{ // on this with calculating a new bold font.
return m_pImpl->getItemCount(); // 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 ); delete *i;
if ( pHyperLabel )
return pHyperLabel->GetID();
return -1;
} }
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 ) RoadmapItem* ORoadmap::GetPreviousHyperLabel(ItemIndex _Index)
{ {
InsertHyperLabel( _Index, _RoadmapItem, _nUniqueId, _bEnabled, false/*bIncomplete*/ ); RoadmapItem* pOldItem = NULL;
// TODO YPos is superfluous, if items are always appended if ( _Index > 0 )
UpdatefollowingHyperLabels( _Index + 1 ); 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() ) ) pItem->SetInteractive( false );
{
m_pImpl->removeHyperLabel( _Index );
UpdatefollowingHyperLabels( _Index );
}
} }
else
bool ORoadmap::IsRoadmapComplete( ) const
{ {
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 ); (*i)->SetInteractive( _bInteractive );
if ( pItem != NULL )
pItem->Enable( _bEnable );
} }
}
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 (m_pImpl->InCompleteHyperLabel != NULL)
if ( pItem != NULL )
{ {
pItem->Update( pItem->GetIndex(), _sLabel ); delete m_pImpl->InCompleteHyperLabel;
m_pImpl->InCompleteHyperLabel = NULL;
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() ) );
}
} }
} }
else if (bWasComplete)
m_pImpl->InCompleteHyperLabel = InsertHyperLabel(m_pImpl->getItemCount(), OUString("..."), -1, true/*bEnabled*/, true/*bIncomplete*/ );
}
void ORoadmap::UpdatefollowingHyperLabels(ItemIndex _nIndex)
void ORoadmap::ChangeRoadmapItemID( ItemId _nID, ItemId _NewID, ItemIndex _nStartIndex ) {
{ const HL_Vector& rItems = m_pImpl->getHyperLabels();
RoadmapItem* pItem = GetByID( _nID, _nStartIndex ); if ( _nIndex < (ItemIndex)rItems.size() )
if ( pItem != NULL )
pItem->SetID( _NewID );
}
RoadmapItem* ORoadmap::GetByID( ItemId _nID, ItemIndex _nStartIndex)
{ {
ItemId nLocID = 0; for ( HL_Vector::const_iterator i = rItems.begin() + _nIndex;
const HL_Vector& rItems = m_pImpl->getHyperLabels();
for ( HL_Vector::const_iterator i = rItems.begin() + _nStartIndex;
i != rItems.end(); i != rItems.end();
++i ++i, ++_nIndex
) )
{ {
nLocID = (*i)->GetID(); RoadmapItem* pItem = *i;
if ( nLocID == _nID )
return *i; pItem->SetIndex( _nIndex );
pItem->SetPosition( GetPreviousHyperLabel( _nIndex ) );
} }
return NULL;
} }
if ( ! m_pImpl->isComplete() )
const RoadmapItem* ORoadmap::GetByID( ItemId _nID, ItemIndex _nStartIndex ) const
{ {
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("...") );
} }
}
void ORoadmap::ReplaceRoadmapItem(ItemIndex _Index, const OUString& _RoadmapItem, ItemId _RMID, bool _bEnabled)
RoadmapItem* ORoadmap::GetByIndex( ItemIndex _nItemIndex) {
RoadmapItem* pItem = GetByIndex( _Index);
if ( pItem != NULL )
{ {
const HL_Vector& rItems = m_pImpl->getHyperLabels(); pItem->Update( _Index, _RoadmapItem );
if ( ( _nItemIndex > -1 ) && ( _nItemIndex < (ItemIndex)rItems.size() ) ) pItem->SetID( _RMID );
{ pItem->Enable( _bEnabled );
return rItems.at( _nItemIndex );
}
return NULL;
} }
}
RoadmapTypes::ItemIndex ORoadmap::GetItemCount() const
{
return m_pImpl->getItemCount();
}
const RoadmapItem* ORoadmap::GetByIndex( ItemIndex _nItemIndex ) const RoadmapTypes::ItemId ORoadmap::GetItemID(ItemIndex _nIndex) const
{ {
return const_cast< ORoadmap* >( this )->GetByIndex( _nItemIndex ); 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; m_pImpl->removeHyperLabel( _Index );
while ( searchIndex < m_pImpl->getItemCount() ) UpdatefollowingHyperLabels( _Index );
{
RoadmapItem* pItem = GetByIndex( searchIndex );
if ( pItem->IsEnabled() )
return pItem->GetID( );
++searchIndex;
}
return -1;
} }
}
bool ORoadmap::IsRoadmapComplete() const
{
return m_pImpl->isComplete();
}
RoadmapTypes::ItemId ORoadmap::GetPreviousAvailableItemId( ItemIndex _nNewIndex ) void ORoadmap::EnableRoadmapItem( ItemId _nItemId, bool _bEnable, ItemIndex _nStartIndex )
{ {
ItemIndex searchIndex = --_nNewIndex; RoadmapItem* pItem = GetByID( _nItemId, _nStartIndex );
while ( searchIndex > -1 ) if ( pItem != NULL )
{ pItem->Enable( _bEnable );
RoadmapItem* pItem = GetByIndex( searchIndex ); }
if ( pItem->IsEnabled() )
return pItem->GetID( );
searchIndex--;
}
return -1;
}
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(); 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 != rItems.end();
++i ++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 ); RoadmapItem* pItem = GetByIndex( searchIndex );
CallEventListeners( VCLEVENT_ROADMAP_ITEMSELECTED ); 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() ); RoadmapItem* pItem = GetByIndex( searchIndex );
if ( pCurHyperLabel != NULL ) if ( pItem->IsEnabled() )
pCurHyperLabel->GrabFocus(); 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(); (*i)->ToggleBackgroundColor( COL_TRANSPARENT );
RoadmapItem* pItem = GetByID( _nNewID ); }
if ( pItem != NULL ) }
{
if ( pItem->IsEnabled() )
{
const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
pItem->ToggleBackgroundColor( rStyleSettings.GetHighlightColor() ); //HighlightColor
pItem->GrabFocus(); void ORoadmap::SetItemSelectHdl(const Link<>& _rHdl)
m_pImpl->setCurItemID(_nNewID); {
m_pImpl->setSelectHdl(_rHdl);
}
Select(); Link<> ORoadmap::GetItemSelectHdl() const
return true; {
} return m_pImpl->getSelectHdl();
} }
return false;
}
void ORoadmap::Select()
{
GetItemSelectHdl().Call( this );
CallEventListeners( VCLEVENT_ROADMAP_ITEMSELECTED );
}
void ORoadmap::Paint( vcl::RenderContext& rRenderContext, const Rectangle& _rRect ) void ORoadmap::GetFocus()
{ {
Control::Paint(rRenderContext, _rRect); RoadmapItem* pCurHyperLabel = GetByID( GetCurrentRoadmapItemID() );
if ( pCurHyperLabel != NULL )
pCurHyperLabel->GrabFocus();
}
// draw the bitmap bool ORoadmap::SelectRoadmapItemByID( ItemId _nNewID )
if ( !!m_pImpl->getPicture() ) {
DeselectOldRoadmapItems();
RoadmapItem* pItem = GetByID( _nNewID );
if ( pItem != NULL )
{
if ( pItem->IsEnabled() )
{ {
Size aBitmapSize = m_pImpl->getPicture().GetSizePixel(); const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
Size aMySize = GetOutputSizePixel(); pItem->ToggleBackgroundColor( rStyleSettings.GetHighlightColor() ); //HighlightColor
Point aBitmapPos( aMySize.Width() - aBitmapSize.Width(), aMySize.Height() - aBitmapSize.Height() ); pItem->GrabFocus();
m_pImpl->setCurItemID(_nNewID);
// draw it Select();
DrawBitmapEx( aBitmapPos, m_pImpl->getPicture() ); 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 // draw it
DrawText( Rectangle( aTextPos, aOutputSize ), GetText(), TEXT_DRAW_LEFT | TEXT_DRAW_TOP | TEXT_DRAW_MULTILINE | TEXT_DRAW_WORDBREAK ); DrawBitmapEx( aBitmapPos, m_pImpl->getPicture() );
DrawTextLine( aTextPos, aOutputSize.Width(), STRIKEOUT_NONE, UNDERLINE_SINGLE, UNDERLINE_NONE, false );
const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
SetLineColor( rStyleSettings.GetFieldTextColor());
SetTextColor(rStyleSettings.GetFieldTextColor());
} }
// draw the headline
DrawHeadline();
}
RoadmapItem* ORoadmap::GetByPointer(vcl::Window* pWindow) void ORoadmap::DrawHeadline()
{ {
const HL_Vector& rItems = m_pImpl->getHyperLabels(); Point aTextPos = LogicToPixel( Point( ROADMAP_INDENT_X, 8 ), MAP_APPFONT );
for ( HL_Vector::const_iterator i = rItems.begin();
i != rItems.end();
++i
)
{
if ( (*i)->Contains( pWindow ) )
return *i;
}
return NULL;
}
bool ORoadmap::PreNotify( NotifyEvent& _rNEvt ) Size aOutputSize( GetOutputSizePixel() );
{
// 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 );
}
// 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;
}
bool ORoadmap::PreNotify(NotifyEvent& _rNEvt)
{
// capture KeyEvents for taskpane cycling
void ORoadmap::DataChanged( const DataChangedEvent& rDCEvt ) if ( _rNEvt.GetType() == MouseNotifyEvent::KEYINPUT )
{ {
if ((( rDCEvt.GetType() == DataChangedEventType::SETTINGS ) || vcl::Window* pWindow = _rNEvt.GetWindow();
( rDCEvt.GetType() == DataChangedEventType::DISPLAY )) && RoadmapItem* pItem = GetByPointer( pWindow );
( rDCEvt.GetFlags() & AllSettingsFlags::STYLE )) if ( pItem != NULL )
{ {
const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings(); sal_Int16 nKeyCode = _rNEvt.GetKeyEvent()->GetKeyCode().GetCode();
SetBackground( Wallpaper( rStyleSettings.GetFieldColor() ) ); switch( nKeyCode )
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()); 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;
}
void ORoadmap::DataChanged(const DataChangedEvent& rDCEvt)
RoadmapItem::RoadmapItem( ORoadmap& _rParent, const Size& _rItemPlayground ) {
:m_aItemPlayground( _rItemPlayground ) if ((( rDCEvt.GetType() == DataChangedEventType::SETTINGS ) ||
{ ( rDCEvt.GetType() == DataChangedEventType::DISPLAY )) &&
mpID = VclPtr<IDLabel>::Create( &_rParent, WB_WORDBREAK ); ( rDCEvt.GetFlags() & AllSettingsFlags::STYLE ))
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 )
{ {
if ( mpDescription ) const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
mpDescription->SetInteractive(_bInteractive); 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 ) bool RoadmapItem::Contains(const vcl::Window* _pWindow) const
{ {
if ( mpDescription ) return ( mpID == _pWindow ) || ( mpDescription == _pWindow );
mpDescription->SetID(_ID); }
}
void RoadmapItem::GrabFocus()
{
if ( mpDescription )
mpDescription->GrabFocus();
}
sal_Int16 RoadmapItem::GetID() const void RoadmapItem::SetInteractive(bool _bInteractive)
{ {
return mpDescription ? mpDescription->GetID() : sal_Int16(-1); if ( mpDescription )
} mpDescription->SetInteractive(_bInteractive);
}
void RoadmapItem::SetID(sal_Int16 _ID)
{
if ( mpDescription )
mpDescription->SetID(_ID);
}
void RoadmapItem::ImplUpdateIndex( const ItemIndex _nIndex ) sal_Int16 RoadmapItem::GetID() const
{ {
mpDescription->SetIndex( _nIndex ); return mpDescription ? mpDescription->GetID() : sal_Int16(-1);
}
OUString aIDText = OUString::number( _nIndex + 1 ) + "."; void RoadmapItem::ImplUpdateIndex(const ItemIndex _nIndex)
mpID->SetText( aIDText ); {
mpDescription->SetIndex( _nIndex );
// update the geometry of both controls OUString aIDText = OUString::number( _nIndex + 1 ) + ".";
ImplUpdatePosSize(); mpID->SetText( aIDText );
}
// update the geometry of both controls
ImplUpdatePosSize();
}
void RoadmapItem::SetIndex( ItemIndex _Index ) void RoadmapItem::SetIndex(ItemIndex _Index)
{ {
ImplUpdateIndex( _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 );
} }
else
void RoadmapItem::SetPosition( RoadmapItem* _pOldItem )
{ {
Point aIDPos; Size aOldSize = _pOldItem->GetDescriptionHyperLabel()->GetSizePixel();
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() ) );
}
void RoadmapItem::Enable( bool _bEnable) aIDPos = _pOldItem->mpID->GetPosPixel();
{ aIDPos.Y() += aOldSize.Height();
mpID->Enable(_bEnable); aIDPos.Y() += mpID->GetParent()->LogicToPixel( Size( 0, ROADMAP_ITEM_DISTANCE_Y ) ).Height();
mpDescription->Enable(_bEnable);
} }
mpID->SetPosPixel( aIDPos );
sal_Int32 nDescPos = aIDPos.X() + mpID->GetSizePixel().Width();
mpDescription->SetPosPixel( Point( nDescPos, aIDPos.Y() ) );
}
bool RoadmapItem::IsEnabled() const void RoadmapItem::Enable(bool _bEnable)
{ {
return mpID->IsEnabled(); 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 );
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);
} }
else
void RoadmapItem::ImplUpdatePosSize()
{ {
// calculate widths mpID->SetControlBackground( mpID->GetSettings().GetStyleSettings().GetHighlightColor() );
long nIDWidth = mpID->GetTextWidth( mpID->GetText() ); mpID->SetTextColor( mpID->GetSettings().GetStyleSettings().GetHighlightTextColor( ) );
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 );
} }
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 ) // check how many space the description would need
{ Size aDescriptionSize = mpDescription->CalcMinimumSize( m_aItemPlayground.Width() - nIDWidth );
// update description label
mpDescription->SetLabel( _rText );
// update the index in both controls, which triggers updating the geometry of both // position and size both controls
ImplUpdateIndex( _RMIndex ); 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 ) void RoadmapItem::Update(ItemIndex _RMIndex, const OUString& _rText)
{ {
if ( mpDescription ) // update description label
mpDescription->SetClickHdl( rLink); mpDescription->SetLabel( _rText );
}
IDLabel::IDLabel( vcl::Window* _pParent, WinBits _nWinStyle ) // update the index in both controls, which triggers updating the geometry of both
:FixedText( _pParent, _nWinStyle ) 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 ) void IDLabel::DataChanged(const DataChangedEvent& rDCEvt)
{ {
const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings(); const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
FixedText::DataChanged( rDCEvt ); FixedText::DataChanged( rDCEvt );
if ((( rDCEvt.GetType() == DataChangedEventType::SETTINGS ) || if ((( rDCEvt.GetType() == DataChangedEventType::SETTINGS ) ||
( rDCEvt.GetType() == DataChangedEventType::DISPLAY )) && ( rDCEvt.GetType() == DataChangedEventType::DISPLAY )) &&
( rDCEvt.GetFlags() & AllSettingsFlags::STYLE )) ( rDCEvt.GetFlags() & AllSettingsFlags::STYLE ))
{
const Color& rGBColor = GetControlBackground();
if (rGBColor == COL_TRANSPARENT)
SetTextColor( rStyleSettings.GetFieldTextColor( ) );
else
{ {
const Color& rGBColor = GetControlBackground(); SetControlBackground(rStyleSettings.GetHighlightColor());
if (rGBColor == COL_TRANSPARENT) SetTextColor( rStyleSettings.GetHighlightTextColor( ) );
SetTextColor( rStyleSettings.GetFieldTextColor( ) );
else
{
SetControlBackground(rStyleSettings.GetHighlightColor());
SetTextColor( rStyleSettings.GetHighlightTextColor( ) );
}
Invalidate();
} }
Invalidate();
} }
}
} // namespace svt } // namespace svt
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment