summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2013-01-08 09:29:44 +0000
committerCaolán McNamara <caolanm@redhat.com>2013-01-09 11:40:53 +0000
commit5223d2e8c5be11b0821b1997076377485d3b200a (patch)
tree0c51da353b3cc97d57910cb33daa5bb04c59c167 /vcl
parentd9e3efbc0ed6193119565530e390a1c1c0a5f6b7 (diff)
allow menu items to be enabled by name
and to get the name of the current enabled item Change-Id: Ie4688fe5697d0bdb4c05da3c1e3bc29a3b86d6f0
Diffstat (limited to 'vcl')
-rw-r--r--vcl/inc/vcl/menu.hxx12
-rw-r--r--vcl/inc/vcl/menubtn.hxx1
-rw-r--r--vcl/source/control/menubtn.cxx6
-rw-r--r--vcl/source/window/menu.cxx12
4 files changed, 28 insertions, 3 deletions
diff --git a/vcl/inc/vcl/menu.hxx b/vcl/inc/vcl/menu.hxx
index ebf8e49ff747..6d7b967b85b3 100644
--- a/vcl/inc/vcl/menu.hxx
+++ b/vcl/inc/vcl/menu.hxx
@@ -239,9 +239,11 @@ public:
sal_uInt16 GetItemCount() const;
sal_uInt16 GetItemId(sal_uInt16 nPos) const;
sal_uInt16 GetItemId(const OString &rIdent) const;
- sal_uInt16 GetItemPos( sal_uInt16 nItemId ) const;
+ sal_uInt16 GetItemPos( sal_uInt16 nItemId ) const;
+ OString GetItemIdent(sal_uInt16 nItemId) const;
MenuItemType GetItemType( sal_uInt16 nPos ) const;
- sal_uInt16 GetCurItemId() const;
+ sal_uInt16 GetCurItemId() const;
+ OString GetCurItemIdent() const;
void SetDefaultItem( sal_uInt16 nItemId ) { nDefaultItem = nItemId; }
sal_uInt16 GetDefaultItem() const { return nDefaultItem; }
@@ -265,7 +267,11 @@ public:
void DeSelect() { SelectItem( 0xFFFF ); } // MENUITEMPOS_INVALID
void EnableItem( sal_uInt16 nItemId, sal_Bool bEnable = sal_True );
- sal_Bool IsItemEnabled( sal_uInt16 nItemId ) const;
+ void EnableItem(const OString &rIdent, bool bEnable = true)
+ {
+ EnableItem(GetItemId(rIdent), bEnable);
+ }
+ sal_Bool IsItemEnabled( sal_uInt16 nItemId ) const;
void ShowItem( sal_uInt16 nItemId, sal_Bool bVisible = sal_True );
void HideItem( sal_uInt16 nItemId ) { ShowItem( nItemId, sal_False ); }
diff --git a/vcl/inc/vcl/menubtn.hxx b/vcl/inc/vcl/menubtn.hxx
index 46ead53c22df..4036ee9059b1 100644
--- a/vcl/inc/vcl/menubtn.hxx
+++ b/vcl/inc/vcl/menubtn.hxx
@@ -84,6 +84,7 @@ public:
PopupMenu* GetPopupMenu() const { return mpMenu; }
sal_uInt16 GetCurItemId() const { return mnCurItemId; }
+ OString GetCurItemIdent() const;
void SetCurItemId( sal_uInt16 nItemId ) { mnCurItemId = nItemId; }
void SetActivateHdl( const Link& rLink ) { maActivateHdl = rLink; }
diff --git a/vcl/source/control/menubtn.cxx b/vcl/source/control/menubtn.cxx
index f8fb86fcaf6b..2bce1cc47a20 100644
--- a/vcl/source/control/menubtn.cxx
+++ b/vcl/source/control/menubtn.cxx
@@ -73,6 +73,12 @@ void MenuButton::ImplExecuteMenu()
}
}
+OString MenuButton::GetCurItemIdent() const
+{
+ return (mnCurItemId && mpMenu) ?
+ mpMenu->GetItemIdent(mnCurItemId) : OString();
+}
+
// -----------------------------------------------------------------------
MenuButton::MenuButton( Window* pParent, WinBits nWinBits )
diff --git a/vcl/source/window/menu.cxx b/vcl/source/window/menu.cxx
index dc70650f090a..3542ee4ce438 100644
--- a/vcl/source/window/menu.cxx
+++ b/vcl/source/window/menu.cxx
@@ -1555,6 +1555,18 @@ sal_uInt16 Menu::GetCurItemId() const
return nSelectedId;
}
+OString Menu::GetCurItemIdent() const
+{
+ const MenuItemData* pData = pItemList->GetData(nSelectedId);
+ return pData ? pData->sIdent : OString();
+}
+
+OString Menu::GetItemIdent(sal_uInt16 nId) const
+{
+ const MenuItemData* pData = pItemList->GetData(nId);
+ return pData ? pData->sIdent : OString();
+}
+
void Menu::SetItemBits( sal_uInt16 nItemId, MenuItemBits nBits )
{
MenuItemData* pData = pItemList->GetData( nItemId );