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
47class BBitmap;
48class TBarView;
49class TWindowMenuItem;
50
51class TTeamMenuItem : public TTruncatableMenuItem {
52public:
53								TTeamMenuItem(BList* team, BBitmap* icon,
54									char* name, char* signature,
55									float width = -1.0f, float height = -1.0f);
56								TTeamMenuItem(float width = -1.0f,
57									float height = -1.0f);
58	virtual						~TTeamMenuItem();
59
60			status_t			Invoke(BMessage* message = NULL);
61
62			void				SetOverrideWidth(float width)
63									{ fOverrideWidth = width; };
64			void				SetOverrideHeight(float height)
65									{ fOverrideHeight = height; };
66			void				SetOverrideSelected(bool selected);
67
68			int32				ArrowDirection() const
69									{ return fArrowDirection; };
70			void				SetArrowDirection(int32 direction)
71									{ fArrowDirection = direction; };
72
73			BBitmap*			Icon() const { return fIcon; };
74			void				SetIcon(BBitmap* icon);
75
76			bool				IsExpanded() const { return fExpanded; };
77			void				ToggleExpandState(bool resizeWindow);
78
79			BRect				ExpanderBounds() const;
80			TWindowMenuItem*	ExpandedWindowItem(int32 id);
81
82			float				LabelWidth() const { return fLabelWidth; };
83			BList*				Teams() const { return fTeam; };
84			const char*			Signature() const { return fSignature; };
85
86protected:
87			void				GetContentSize(float* width, float* height);
88			void				Draw();
89			void				DrawContent();
90			void				DrawExpanderArrow();
91
92private:
93			void				_Init(BList* team, BBitmap* icon,
94									char* name, char* signature,
95									float width = -1.0f, float height = -1.0f);
96
97			bool				_IsSelected() const;
98
99private:
100			BList*				fTeam;
101			BBitmap*			fIcon;
102			char*				fSignature;
103
104			float				fOverrideWidth;
105			float				fOverrideHeight;
106
107			TBarView*			fBarView;
108			float				fLabelWidth;
109			float				fLabelAscent;
110			float				fLabelDescent;
111
112			bool				fOverriddenSelected;
113
114			bool				fExpanded;
115			int32				fArrowDirection;
116};
117
118
119#endif	// TEAM_MENU_ITEM_H
120