1/*
2Open Tracker License
3
4Terms and Conditions
5
6Copyright (c) 1991-2000, Be Incorporated. All rights reserved.
7
8Permission is hereby granted, free of charge, to any person obtaining a copy of
9this software and associated documentation files (the "Software"), to deal in
10the Software without restriction, including without limitation the rights to
11use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
12of the Software, and to permit persons to whom the Software is furnished to do
13so, subject to the following conditions:
14
15The above copyright notice and this permission notice applies to all licensees
16and shall be included in all copies or substantial portions of the Software.
17
18THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF TITLE, MERCHANTABILITY,
20FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
21BE INCORPORATED BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
22AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF, OR IN CONNECTION
23WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24
25Except as contained in this notice, the name of Be Incorporated shall not be
26used in advertising or otherwise to promote the sale, use or other dealings in
27this Software without prior written authorization from Be Incorporated.
28
29Tracker(TM), Be(R), BeOS(R), and BeIA(TM) are trademarks or registered
30trademarks of Be Incorporated in the United States and other countries. Other
31brand product names are registered trademarks or trademarks of their respective
32holders.
33All rights reserved.
34*/
35#ifndef TEAM_MENU_ITEM_H
36#define TEAM_MENU_ITEM_H
37
38
39//	Individual team/application listing
40//	item for TeamMenu in mini/vertical mode
41//	item for ExpandoMenuBar in vertical or horizontal expanded mode
42
43
44#include "TruncatableMenuItem.h"
45
46
47const float kSwitchWidth = 12.0f;
48
49const uint32 kMinimizeTeam = 'mntm';
50const uint32 kBringTeamToFront = 'bftm';
51
52
53class BBitmap;
54class TBarView;
55class TWindowMenuItem;
56
57class TTeamMenuItem : public TTruncatableMenuItem {
58public:
59								TTeamMenuItem(BList* team, BBitmap* icon,
60									char* name, char* signature,
61									float width = -1.0f, float height = -1.0f);
62								TTeamMenuItem(float width = -1.0f,
63									float height = -1.0f);
64	virtual						~TTeamMenuItem();
65
66			bool				HandleMouseDown(BPoint where);
67			status_t			Invoke(BMessage* message = NULL);
68
69			void				SetOverrideWidth(float width)
70									{ fOverrideWidth = width; };
71			void				SetOverrideHeight(float height)
72									{ fOverrideHeight = height; };
73			void				SetOverrideSelected(bool selected);
74
75			int32				ArrowDirection() const
76									{ return fArrowDirection; };
77			void				SetArrowDirection(int32 direction)
78									{ fArrowDirection = direction; };
79
80			BBitmap*			Icon() const { return fIcon; };
81			void				SetIcon(BBitmap* icon);
82
83			bool				IsExpanded() const { return fExpanded; };
84			void				ToggleExpandState(bool resizeWindow);
85
86			BRect				ExpanderBounds() const;
87			TWindowMenuItem*	ExpandedWindowItem(int32 id);
88
89			float				LabelWidth() const { return fLabelWidth; };
90			BList*				Teams() const { return fTeam; };
91			const char*			Signature() const { return fSignature; };
92
93protected:
94			void				GetContentSize(float* width, float* height);
95			void				Draw();
96			void				DrawContent();
97			void				DrawExpanderArrow();
98
99private:
100			void				_Init(BList* team, BBitmap* icon,
101									char* name, char* signature,
102									float width = -1.0f, float height = -1.0f);
103
104			bool				_IsSelected() const;
105
106private:
107			BList*				fTeam;
108			BBitmap*			fIcon;
109			char*				fSignature;
110
111			float				fOverrideWidth;
112			float				fOverrideHeight;
113
114			TBarView*			fBarView;
115			float				fLabelWidth;
116			float				fLabelAscent;
117			float				fLabelDescent;
118			float				fLabelHeight;
119
120			bool				fOverriddenSelected;
121
122			bool				fExpanded;
123			int32				fArrowDirection;
124};
125
126
127#endif	// TEAM_MENU_ITEM_H
128