Kaydet (Commit) cbcb304b authored tarafından Caolán McNamara's avatar Caolán McNamara

allow tabpageids to have names which can be queried

and in the .ui builder set that name from the name of the
label widget matching that tab

which allows human understandable names to be used in looking
up the pageids for a given tab page rather than fragile
by_position so tab pages can be freely moved around without
busting the code

Change-Id: Ieaff1408b25545c561a0b28c51ec205af6e1400f
üst 98818ee5
......@@ -128,11 +128,12 @@ public:
void Clear();
void EnablePage( sal_uInt16 nPageId, bool bEnable = true );
sal_uInt16 GetPageCount() const;
sal_uInt16 GetPageId( sal_uInt16 nPos ) const;
sal_uInt16 GetPagePos( sal_uInt16 nPageId ) const;
sal_uInt16 GetPageId( const Point& rPos ) const;
sal_uInt16 GetPageId( const TabPage& rPage ) const;
sal_uInt16 GetPagePos( sal_uInt16 nPageId ) const;
sal_uInt16 GetPageCount() const;
sal_uInt16 GetPageId( sal_uInt16 nPos ) const;
sal_uInt16 GetPageId( const Point& rPos ) const;
sal_uInt16 GetPageId( const TabPage& rPage ) const;
sal_uInt16 GetPageId( const OString& rName ) const;
void SetCurPageId( sal_uInt16 nPageId );
sal_uInt16 GetCurPageId() const;
......@@ -153,8 +154,11 @@ public:
void SetHelpText( sal_uInt16 nPageId, const XubString& rText );
const XubString& GetHelpText( sal_uInt16 nPageId ) const;
void SetHelpId( sal_uInt16 nPageId, const rtl::OString& rId ) const;
rtl::OString GetHelpId( sal_uInt16 nPageId ) const;
void SetHelpId( sal_uInt16 nPageId, const OString& rId ) const;
OString GetHelpId( sal_uInt16 nPageId ) const;
void SetPageName( sal_uInt16 nPageId, const OString& rName ) const;
OString GetPageName( sal_uInt16 nPageId ) const;
void SetPageImage( sal_uInt16 nPageId, const Image& rImage );
......
......@@ -42,14 +42,15 @@
struct ImplTabItem
{
sal_uInt16 mnId;
sal_uInt16 mnId;
TabPage* mpTabPage;
String maText;
String maFormatText;
String maHelpText;
rtl::OString maHelpId;
OString maHelpId;
OString maTabName;
Rectangle maRect;
sal_uInt16 mnLine;
sal_uInt16 mnLine;
bool mbFullVisible;
bool mbEnabled;
Image maTabImage;
......@@ -1855,6 +1856,18 @@ sal_uInt16 TabControl::GetPageId( const TabPage& rPage ) const
return 0;
}
sal_uInt16 TabControl::GetPageId( const OString& rName ) const
{
for( std::vector< ImplTabItem >::const_iterator it = mpTabCtrlData->maItemList.begin();
it != mpTabCtrlData->maItemList.end(); ++it )
{
if ( it->maTabName == rName )
return it->mnId;
}
return 0;
}
// -----------------------------------------------------------------------
void TabControl::SetCurPageId( sal_uInt16 nPageId )
......@@ -2036,7 +2049,7 @@ const XubString& TabControl::GetHelpText( sal_uInt16 nPageId ) const
// -----------------------------------------------------------------------
void TabControl::SetHelpId( sal_uInt16 nPageId, const rtl::OString& rId ) const
void TabControl::SetHelpId( sal_uInt16 nPageId, const OString& rId ) const
{
ImplTabItem* pItem = ImplGetItem( nPageId );
......@@ -2044,15 +2057,32 @@ void TabControl::SetHelpId( sal_uInt16 nPageId, const rtl::OString& rId ) const
pItem->maHelpId = rId;
}
rtl::OString TabControl::GetHelpId( sal_uInt16 nPageId ) const
OString TabControl::GetHelpId( sal_uInt16 nPageId ) const
{
ImplTabItem* pItem = ImplGetItem( nPageId );
if (pItem)
return pItem->maHelpId;
return OString();
}
void TabControl::SetPageName( sal_uInt16 nPageId, const OString& rName ) const
{
rtl::OString aRet;
ImplTabItem* pItem = ImplGetItem( nPageId );
if ( pItem )
aRet = pItem->maHelpId;
pItem->maTabName = rName;
}
return aRet;
OString TabControl::GetPageName( sal_uInt16 nPageId ) const
{
ImplTabItem* pItem = ImplGetItem( nPageId );
if (pItem)
return pItem->maTabName;
return OString();
}
// -----------------------------------------------------------------------
......
......@@ -1137,8 +1137,10 @@ void VclBuilder::handleTabChild(Window *pParent, xmlreader::XmlReader &reader)
VclBuilder::stringmap::iterator aFind = aProperties.find(OString("label"));
if (aFind != aProperties.end())
{
pTabControl->SetPageText(pTabControl->GetCurPageId(),
sal_uInt16 nPageId = pTabControl->GetCurPageId();
pTabControl->SetPageText(nPageId,
OStringToOUString(aFind->second, RTL_TEXTENCODING_UTF8));
pTabControl->SetPageName(nPageId, sID);
}
else
pTabControl->RemovePage(pTabControl->GetCurPageId());
......
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