10d63794cSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 30d63794cSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 40d63794cSAndrew Rist * or more contributor license agreements. See the NOTICE file 50d63794cSAndrew Rist * distributed with this work for additional information 60d63794cSAndrew Rist * regarding copyright ownership. The ASF licenses this file 70d63794cSAndrew Rist * to you under the Apache License, Version 2.0 (the 80d63794cSAndrew Rist * "License"); you may not use this file except in compliance 90d63794cSAndrew Rist * with the License. You may obtain a copy of the License at 100d63794cSAndrew Rist * 110d63794cSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 120d63794cSAndrew Rist * 130d63794cSAndrew Rist * Unless required by applicable law or agreed to in writing, 140d63794cSAndrew Rist * software distributed under the License is distributed on an 150d63794cSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 160d63794cSAndrew Rist * KIND, either express or implied. See the License for the 170d63794cSAndrew Rist * specific language governing permissions and limitations 180d63794cSAndrew Rist * under the License. 190d63794cSAndrew Rist * 200d63794cSAndrew Rist *************************************************************/ 210d63794cSAndrew Rist 220d63794cSAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir #ifndef _SV_MENUBTN_HXX 25cdf0e10cSrcweir #define _SV_MENUBTN_HXX 26cdf0e10cSrcweir 27cdf0e10cSrcweir #include <vcl/sv.h> 28cdf0e10cSrcweir #include <vcl/dllapi.h> 29cdf0e10cSrcweir #include <vcl/button.hxx> 30cdf0e10cSrcweir 31cdf0e10cSrcweir class Timer; 32cdf0e10cSrcweir class PopupMenu; 33cdf0e10cSrcweir 34cdf0e10cSrcweir // -------------------- 35cdf0e10cSrcweir // - MenuButton-Types - 36cdf0e10cSrcweir // -------------------- 37cdf0e10cSrcweir 38cdf0e10cSrcweir #define MENUBUTTON_MENUMODE_TIMED ((sal_uInt16)0x0001) 39cdf0e10cSrcweir 40cdf0e10cSrcweir // -------------- 41cdf0e10cSrcweir // - MenuButton - 42cdf0e10cSrcweir // -------------- 43cdf0e10cSrcweir 44cdf0e10cSrcweir class VCL_DLLPUBLIC MenuButton : public PushButton 45cdf0e10cSrcweir { 46cdf0e10cSrcweir private: 47cdf0e10cSrcweir Rectangle maFocusRect; 48cdf0e10cSrcweir Timer* mpMenuTimer; 49cdf0e10cSrcweir PopupMenu* mpOwnMenu; 50cdf0e10cSrcweir PopupMenu* mpMenu; 51cdf0e10cSrcweir sal_uInt16 mnCurItemId; 52cdf0e10cSrcweir sal_uInt16 mnMenuMode; 53cdf0e10cSrcweir Link maActivateHdl; 54cdf0e10cSrcweir Link maSelectHdl; 55cdf0e10cSrcweir 56cdf0e10cSrcweir SAL_DLLPRIVATE void ImplInitMenuButtonData(); 57cdf0e10cSrcweir SAL_DLLPRIVATE void ImplExecuteMenu(); 58cdf0e10cSrcweir DECL_DLLPRIVATE_LINK( ImplMenuTimeoutHdl, Timer* ); 59cdf0e10cSrcweir 60cdf0e10cSrcweir // Copy assignment is forbidden and not implemented. 61cdf0e10cSrcweir SAL_DLLPRIVATE MenuButton( const MenuButton & ); 62cdf0e10cSrcweir SAL_DLLPRIVATE MenuButton& operator=( const MenuButton & ); 63cdf0e10cSrcweir 64cdf0e10cSrcweir protected: 65cdf0e10cSrcweir using Window::ImplInit; 66cdf0e10cSrcweir SAL_DLLPRIVATE void ImplInit( Window* pParent, WinBits nStyle ); 67cdf0e10cSrcweir SAL_DLLPRIVATE void ImplLoadRes( const ResId& rResId ); 68cdf0e10cSrcweir 69cdf0e10cSrcweir public: 70*e1beba7dSHerbert Dürr explicit MenuButton( Window* pParent, WinBits nStyle = 0 ); 71*e1beba7dSHerbert Dürr explicit MenuButton( Window* pParent, const ResId& ); 72*e1beba7dSHerbert Dürr virtual ~MenuButton(); 73cdf0e10cSrcweir 74cdf0e10cSrcweir virtual void MouseButtonDown( const MouseEvent& rMEvt ); 75cdf0e10cSrcweir virtual void KeyInput( const KeyEvent& rKEvt ); 76cdf0e10cSrcweir 77cdf0e10cSrcweir virtual void Activate(); 78cdf0e10cSrcweir virtual void Select(); 79cdf0e10cSrcweir 80cdf0e10cSrcweir void SetMenuMode( sal_uInt16 nMode ); GetMenuMode() const81cdf0e10cSrcweir sal_uInt16 GetMenuMode() const { return mnMenuMode; } 82cdf0e10cSrcweir 83cdf0e10cSrcweir void SetPopupMenu( PopupMenu* pNewMenu ); GetPopupMenu() const84cdf0e10cSrcweir PopupMenu* GetPopupMenu() const { return mpMenu; } 85cdf0e10cSrcweir GetCurItemId() const86cdf0e10cSrcweir sal_uInt16 GetCurItemId() const { return mnCurItemId; } 87cdf0e10cSrcweir SetActivateHdl(const Link & rLink)88cdf0e10cSrcweir void SetActivateHdl( const Link& rLink ) { maActivateHdl = rLink; } GetActivateHdl() const89cdf0e10cSrcweir const Link& GetActivateHdl() const { return maActivateHdl; } SetSelectHdl(const Link & rLink)90cdf0e10cSrcweir void SetSelectHdl( const Link& rLink ) { maSelectHdl = rLink; } GetSelectHdl() const91cdf0e10cSrcweir const Link& GetSelectHdl() const { return maSelectHdl; } 92cdf0e10cSrcweir }; 93cdf0e10cSrcweir 94cdf0e10cSrcweir #endif // _SV_MENUBTN_HXX 95*e1beba7dSHerbert Dürr 96