xref: /haiku/headers/os/interface/Alert.h (revision 820dca4df6c7bf955c46e8f6521b9408f50b2900)
1 /*
2  * Copyright 2001-2006, Haiku, Inc. All rights reserved.
3  * Distributed under the terms of the MIT License.
4  */
5 #ifndef	_ALERT_H
6 #define	_ALERT_H
7 
8 
9 #include <Window.h>
10 
11 
12 class BBitmap;
13 class BButton;
14 class BInvoker;
15 class BTextView;
16 
17 // enum for flavors of alert
18 enum alert_type {
19 	B_EMPTY_ALERT = 0,
20 	B_INFO_ALERT,
21 	B_IDEA_ALERT,
22 	B_WARNING_ALERT,
23 	B_STOP_ALERT
24 };
25 
26 enum button_spacing {
27 	B_EVEN_SPACING = 0,
28 	B_OFFSET_SPACING
29 };
30 
31 
32 class BAlert : public BWindow {
33 	public:
34 							BAlert(const char* title, const char* text,
35 								const char* button1, const char* button2 = NULL,
36 								const char* button3 = NULL,
37 								button_width width = B_WIDTH_AS_USUAL,
38 								alert_type type = B_INFO_ALERT);
39 							BAlert(const char *title, const char *text,
40 								const char *button1, const char *button2,
41 								const char *button3, button_width width,
42 								button_spacing spacing,
43 								alert_type type = B_INFO_ALERT);
44 		virtual				~BAlert();
45 
46 		// Archiving
47 							BAlert(BMessage *data);
48 		static	BArchivable	*Instantiate(BMessage *data);
49 		virtual	status_t	Archive(BMessage *data, bool deep = true) const;
50 
51 		// BAlert guts
52 				void		SetShortcut(int32 button_index, char key);
53 				char		Shortcut(int32 button_index) const;
54 
55 				int32		Go();
56 				status_t	Go(BInvoker *invoker);
57 
58 		virtual	void		MessageReceived(BMessage *an_event);
59 		virtual	void		FrameResized(float new_width, float new_height);
60 				BButton*	ButtonAt(int32 index) const;
61 				BTextView*	TextView() const;
62 
63 		virtual BHandler*	ResolveSpecifier(BMessage* message, int32 index,
64 								BMessage* specifier, int32 form,
65 								const char* property);
66 		virtual	status_t	GetSupportedSuites(BMessage *data);
67 
68 		virtual void		DispatchMessage(BMessage* message, BHandler* handler);
69 		virtual	void		Quit();
70 		virtual	bool		QuitRequested();
71 
72 		static	BPoint		AlertPosition(float width, float height);
73 
74 		virtual status_t	Perform(perform_code d, void *arg);
75 
76 	private:
77 		friend class _BAlertFilter_;
78 
79 		virtual	void		_ReservedAlert1();
80 		virtual	void		_ReservedAlert2();
81 		virtual	void		_ReservedAlert3();
82 
83 				void		_InitObject(const char* text, const char* button1,
84 								const char* button2 = NULL,
85 								const char* button3 = NULL,
86 								button_width width = B_WIDTH_AS_USUAL,
87 								button_spacing spacing = B_EVEN_SPACING,
88 								alert_type type = B_INFO_ALERT);
89 				BBitmap*	_InitIcon();
90 				BButton*	_CreateButton(int32 which, const char* label);
91 
92 		sem_id				fAlertSem;
93 		int32				fAlertValue;
94 		BButton*			fButtons[3];
95 		BTextView*			fTextView;
96 		char				fKeys[3];
97 		alert_type			fMsgType;
98 		button_width		fButtonWidth;
99 		BInvoker*			fInvoker;
100 		uint32				_reserved[4];
101 };
102 
103 #endif	// _ALERT_H
104