xref: /haiku/src/preferences/screen/ScreenWindow.h (revision cfc3fa87da824bdf593eb8b817a83b6376e77935)
1 /*
2  * Copyright 2001-2008, Haiku.
3  * Distributed under the terms of the MIT License.
4  *
5  * Authors:
6  *		Rafael Romo
7  *		Stefano Ceccherini (burton666@libero.it)
8  *		Thomas Kurschel
9  *		Axel Dörfler, axeld@pinc-software.de
10  */
11 #ifndef SCREEN_WINDOW_H
12 #define SCREEN_WINDOW_H
13 
14 
15 #include <Window.h>
16 
17 #include "ScreenMode.h"
18 
19 class BBox;
20 class BPopUpMenu;
21 class BMenuField;
22 
23 
24 class RefreshWindow;
25 class MonitorView;
26 class ScreenSettings;
27 
28 
29 class ScreenWindow : public BWindow {
30 	public:
31 		ScreenWindow(ScreenSettings *settings);
32 		virtual ~ScreenWindow();
33 
34 		virtual	bool QuitRequested();
35 		virtual void MessageReceived(BMessage *message);
36 		virtual void WorkspaceActivated(int32 ws, bool state);
37 		virtual void ScreenChanged(BRect frame, color_space mode);
38 
39 	private:
40 		void _CheckApplyEnabled();
41 		void _CheckResolutionMenu();
42 		void _CheckColorMenu();
43 		void _CheckRefreshMenu();
44 
45 		void _UpdateActiveMode();
46 		void _UpdateRefreshControl();
47 		void _UpdateMonitorView();
48 		void _UpdateControls();
49 		void _UpdateOriginal();
50 
51 		void _Apply();
52 
53 		status_t _WriteVesaModeFile(const screen_mode& mode) const;
54 		status_t _ReadVesaModeFile(screen_mode& mode) const;
55 		bool _IsVesa() const { return fIsVesa; }
56 
57 		void _LayoutControls(uint32 flags);
58 		BRect _LayoutMenuFields(uint32 flags, bool sideBySide = false);
59 
60 		ScreenSettings*	fSettings;
61 		bool			fIsVesa;
62 		bool			fVesaApplied;
63 
64 		BBox*			fScreenBox;
65 		BBox*			fControlsBox;
66 
67 		MonitorView*	fMonitorView;
68 		BMenuItem*		fAllWorkspacesItem;
69 
70 		BMenuField*		fWorkspaceCountField;
71 
72 		BPopUpMenu*		fResolutionMenu;
73 		BMenuField*		fResolutionField;
74 		BPopUpMenu*		fColorsMenu;
75 		BMenuField*		fColorsField;
76 		BPopUpMenu*		fRefreshMenu;
77 		BMenuField*		fRefreshField;
78 		BMenuItem*		fOtherRefresh;
79 
80 		BPopUpMenu*		fCombineMenu;
81 		BMenuField*		fCombineField;
82 		BPopUpMenu*		fSwapDisplaysMenu;
83 		BMenuField*		fSwapDisplaysField;
84 		BPopUpMenu*		fUseLaptopPanelMenu;
85 		BMenuField*		fUseLaptopPanelField;
86 		BPopUpMenu*		fTVStandardMenu;
87 		BMenuField*		fTVStandardField;
88 
89 		BButton*		fDefaultsButton;
90 		BButton*		fApplyButton;
91 		BButton*		fRevertButton;
92 
93 		BButton*		fBackgroundsButton;
94 
95 		ScreenMode		fScreenMode, fTempScreenMode;
96 			// screen modes for all workspaces
97 		int32			fOriginalWorkspaceCount;
98 		screen_mode		fActive, fSelected, fOriginal;
99 			// screen modes for the current workspace
100 		bool			fModified;
101 };
102 
103 #endif	/* SCREEN_WINDOW_H */
104