/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * *************************************************************/ #ifndef _SFXVIRTMENU_HXX #define _SFXVIRTMENU_HXX #include #include #include "mnucfga.hxx" class SfxBindings; class Timer; class SfxMenuImageControl_Impl; SV_DECL_PTRARR_DEL( SfxMenuCtrlArr_Impl, SfxMenuControl*, 2, 2 ) class SAL_DLLPUBLIC_EXPORT SfxVirtualMenu { friend class SfxMenuControl; private: Menu* pSVMenu; SfxVirtualMenu* pParent; SfxMenuCtrlArr_Impl* pAppCtrl; SfxMenuControl* pItems; SfxMenuImageControl_Impl* pImageControl; SfxBindings* pBindings; ResMgr* pResMgr; PopupMenu* pWindowMenu; PopupMenu* pPickMenu; PopupMenu* pAddonsMenu; Timer* pAutoDeactivate; // Hack fuer QAP-Bug sal_uInt16 nVisibleItems; sal_uInt16 nId; sal_uInt16 nCount; sal_uInt16 nLocks; sal_Bool bResCtor : 1; // SV Menu created from resource sal_Bool bOLE : 1; // InPlaceMenu sal_Bool bHelpInitialized : 1; sal_Bool bIsActive : 1; sal_Bool bControllersUnBound : 1; sal_Bool bWasHighContrast : 1; sal_Bool bIsAddonPopupMenu : 1; private: void Construct_Impl(); bool Bind_Impl( Menu *pMenu ); inline SfxMenuCtrlArr_Impl& GetAppCtrl_Impl() { return pAppCtrl? *pAppCtrl: *(pAppCtrl = new SfxMenuCtrlArr_Impl) ; } void UnbindControllers(); void BindControllers(); protected: SfxVirtualMenu( sal_uInt16 nOwnId, SfxVirtualMenu* pParent, Menu& rMenu, sal_Bool bWithHelp, SfxBindings &rBind, sal_Bool bOLEServer=sal_False, sal_Bool bRes=sal_False, sal_Bool bIsAddonMenu=sal_False ); void CreateFromSVMenu(); DECL_LINK( Highlight, Menu * ); DECL_LINK( Activate, Menu * ); DECL_LINK( Deactivate, Menu * ); DECL_LINK( SettingsChanged, void* ); // Used for runtime popup menus void UpdateImages( Menu* pMenu ); void RemoveMenuImages( Menu* pMenu ); void InsertAddOnsMenuItem( Menu* pMenu ); public: ~SfxVirtualMenu(); SfxVirtualMenu( Menu *pStarViewMenu, sal_Bool bWithHelp, SfxBindings &rBind, sal_Bool bOLEServer=sal_False, sal_Bool bRes=sal_False, sal_Bool bIsAddonMenu=sal_False ); void CheckItem( sal_uInt16 nItemId, sal_Bool bCheck ); void EnableItem( sal_uInt16 nItemId, sal_Bool bEnable ); void SetItemText( sal_uInt16 nItemId, const String& rText ); sal_uInt16 GetItemPos( sal_uInt16 nItemId ) const; sal_uInt16 GetItemCount() const; Menu* GetSVMenu() const; SfxMenuControl& operator[]( sal_uInt16 nPos ) const; sal_uInt16 GetItemId( sal_uInt16 nPos ) const; SfxVirtualMenu* GetPopupMenu( sal_uInt16 nId ) const; String GetItemText( sal_uInt16 nId ) const; String GetItemHelpText( sal_uInt16 nId ) const; //void InvalidateKeyCodes(); SfxVirtualMenu* GetParentMenu() const { return pParent; } void SetParentMenu( SfxVirtualMenu* pNewParent ) { pParent = pNewParent; } void SetPopupMenu( sal_uInt16 nId, PopupMenu *pMenu ); sal_Bool IsFromResource() const { return bResCtor; } void InitPopup(sal_uInt16 nPos, sal_Bool bOLE = sal_True); void InitializeHelp(); void SetResMgr(ResMgr* pMgr) {pResMgr = pMgr; } ResMgr* GetResMgr() { return pResMgr; } void SetHelpIds( ResMgr* ); sal_Bool IsHiContrastMode() const; void UpdateImages(); DECL_LINK( Select, Menu * ); }; //-------------------------------------------------------------------- // return the number of virtual items in this menu inline sal_uInt16 SfxVirtualMenu::GetItemCount() const { return nCount; } //-------------------------------------------------------------------- // inline SfxMenuControl& SfxVirtualMenu::operator[]( sal_uInt16 nPos ) const { return *(pItems+nPos); } //-------------------------------------------------------------------- // returns the item id at position nPos in the menu (or 0 if sep.) inline sal_uInt16 SfxVirtualMenu::GetItemId( sal_uInt16 nPos ) const { return pItems ? pItems[nPos].GetId() : 0; } #endif