xref: /haiku/src/apps/launchbox/MainWindow.h (revision ed24eb5ff12640d052171c6a7feba37fab8a75d1)
1 /*
2  * Copyright 2006-2011, Stephan Aßmus <superstippi@gmx.de>.
3  * All rights reserved. Distributed under the terms of the MIT License.
4  */
5 #ifndef MAIN_WINDOW_H
6 #define MAIN_WINDOW_H
7 
8 #include <Window.h>
9 
10 
11 class PadView;
12 
13 enum {
14 	MSG_SHOW_BORDER				= 'shbr',
15 	MSG_HIDE_BORDER				= 'hdbr',
16 
17 	MSG_TOGGLE_AUTORAISE		= 'tgar',
18 	MSG_SHOW_ON_ALL_WORKSPACES	= 'awrk',
19 
20 	MSG_SET_DESCRIPTION			= 'dscr',
21 
22 	MSG_ADD_WINDOW				= 'addw',
23 	MSG_SETTINGS_CHANGED		= 'stch',
24 	MSG_TOGGLE_AUTOSTART		= 'tast'
25 };
26 
27 
28 class MainWindow : public BWindow {
29 public:
30 								MainWindow(const char* name, BRect frame,
31 									bool addDefaultButtons = false);
32 								MainWindow(const char* name, BRect frame,
33 									BMessage* settings);
34 	virtual						~MainWindow();
35 
36 	// BWindow interface
37 	virtual	bool				QuitRequested();
38 	virtual	void				MessageReceived(BMessage* message);
39 
40 	virtual	void				Show();
41 	virtual	void				ScreenChanged(BRect frame, color_space format);
42 	virtual void				WorkspaceActivated(int32 workspace, bool active);
43 	virtual	void				FrameMoved(BPoint origin);
44 	virtual	void				FrameResized(float width,  float height);
45 
46 	// MainWindow
47 			void				ToggleAutoRaise();
48 			bool				AutoRaise() const
49 									{ return fAutoRaise; }
50 			bool				ShowOnAllWorkspaces() const
51 									{ return fShowOnAllWorkspaces; }
52 
53 			BPoint				ScreenPosition() const
54 									{ return fScreenPosition; }
55 
56 			bool				LoadSettings(const BMessage* message);
57 			void				SaveSettings(BMessage* message);
58 			BMessage*			Settings() const
59 									{ return fSettings; }
60 
61 private:
62  			void				_GetLocation();
63 			void				_AdjustLocation(BRect frame);
64 			void				_AddDefaultButtons();
65 			void				_AddEmptyButtons();
66 
67 			void				_NotifySettingsChanged();
68 
69 private:
70 			BMessage*			fSettings;
71 			PadView*			fPadView;
72 
73 			float				fBorderDist;
74 			BPoint				fScreenPosition;
75 				// not really the position, 0...1 = left...right
76 
77 			bool				fAutoRaise;
78 			bool				fShowOnAllWorkspaces;
79 };
80 
81 #endif // MAIN_WINDOW_H