xref: /aoo42x/main/vcl/inc/vcl/menubtn.hxx (revision e1beba7d)
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