1/*
2 * Copyright 2023 Haiku, Inc. All rights reserved.
3 * Distributed under the terms of the MIT License.
4 *
5 * Authors:
6 *		John Scipione, jscipione@gmail.com
7 */
8#ifndef STATUS_MENU_FIELD_H
9#define STATUS_MENU_FIELD_H
10
11
12#include <MenuField.h>
13#include <MenuItem.h>
14#include <String.h>
15
16
17class BBitmap;
18
19
20class StatusMenuItem : public BMenuItem {
21public:
22								StatusMenuItem(const char* name, BMessage* message = NULL);
23								StatusMenuItem(BMessage* archive);
24
25	static	BArchivable*		Instantiate(BMessage* archive);
26	virtual	status_t			Archive(BMessage* archive,
27									bool deep = true) const;
28
29	virtual	void				DrawContent();
30	virtual	void				GetContentSize(float* _width, float* _height);
31
32			BBitmap*			Icon();
33	virtual	void				SetIcon(BBitmap* icon);
34
35			BRect				IconRect();
36			BSize				IconSize();
37			float				Spacing();
38
39private:
40			BBitmap*			fIcon;
41};
42
43
44class StatusMenuField : public BMenuField {
45public:
46								StatusMenuField(const char*, BMenu*);
47								~StatusMenuField();
48
49	virtual	void				SetDuplicate(bool on);
50	virtual	void				SetUnmatched(bool on);
51
52			BString				Status() { return fStatus; };
53	virtual	void				ClearStatus();
54	virtual	void				SetStatus(BString status);
55
56protected:
57	virtual	void				ShowStopIcon(bool show);
58	virtual	void				ShowWarnIcon(bool show);
59
60private:
61			void				_FillIcons();
62			BRect				_IconRect();
63
64private:
65			BString				fStatus;
66
67			BBitmap*			fStopIcon;
68			BBitmap*			fWarnIcon;
69};
70
71
72#endif	// STATUS_MENU_FIELD_H
73