1/*
2 * Copyright 2001-2014 Haiku, Inc. All rights reserved.
3 * Distributed under the terms of the MIT License.
4 *
5 * Authors:
6 *		Stefano Ceccherini, burton666@libero.it
7 *		Axel D��rfler, axeld@pinc-software.de
8 *		Thomas Kurschel
9 *		Rafael Romo
10 *		John Scipione, jscipione@gmail.com
11 */
12#ifndef SCREEN_WINDOW_H
13#define SCREEN_WINDOW_H
14
15
16#include <Window.h>
17
18#include "ScreenMode.h"
19
20
21class BBox;
22class BPopUpMenu;
23class BMenuField;
24class BSlider;
25class BSpinner;
26class BStringView;
27
28class RefreshWindow;
29class MonitorView;
30class ScreenSettings;
31
32
33class ScreenWindow : public BWindow {
34public:
35							ScreenWindow(ScreenSettings *settings);
36	virtual					~ScreenWindow();
37
38	virtual	bool			QuitRequested();
39	virtual	void			MessageReceived(BMessage *message);
40	virtual	void			WorkspaceActivated(int32 ws, bool state);
41	virtual	void			ScreenChanged(BRect frame, color_space mode);
42
43private:
44			void			_BuildSupportedColorSpaces();
45
46			void			_CheckApplyEnabled();
47			void			_CheckResolutionMenu();
48			void			_CheckColorMenu();
49			void			_CheckRefreshMenu();
50
51			void			_UpdateActiveMode();
52			void			_UpdateActiveMode(int32 workspace);
53			void			_UpdateWorkspaceButtons();
54			void			_UpdateRefreshControl();
55			void			_UpdateMonitorView();
56			void			_UpdateControls();
57			void			_UpdateOriginal();
58			void			_UpdateMonitor();
59			void			_UpdateColorLabel();
60
61			void			_Apply();
62
63			status_t		_WriteVesaModeFile(const screen_mode& mode) const;
64			bool			_IsVesa() const { return fIsVesa; }
65
66private:
67			ScreenSettings*	fSettings;
68			bool			fIsVesa;
69			bool			fBootWorkspaceApplied;
70
71			BBox*			fScreenBox;
72			BStringView*	fDeviceInfo;
73			MonitorView*	fMonitorView;
74			BMenuItem*		fAllWorkspacesItem;
75
76			BSpinner*		fColumnsControl;
77			BSpinner*		fRowsControl;
78
79			uint32			fSupportedColorSpaces;
80			BMenuItem*		fUserSelectedColorSpace;
81
82			BPopUpMenu*		fResolutionMenu;
83			BMenuField*		fResolutionField;
84			BPopUpMenu*		fColorsMenu;
85			BMenuField*		fColorsField;
86			BPopUpMenu*		fRefreshMenu;
87			BMenuField*		fRefreshField;
88			BMenuItem*		fOtherRefresh;
89
90			BPopUpMenu*		fCombineMenu;
91			BMenuField*		fCombineField;
92			BPopUpMenu*		fSwapDisplaysMenu;
93			BMenuField*		fSwapDisplaysField;
94			BPopUpMenu*		fUseLaptopPanelMenu;
95			BMenuField*		fUseLaptopPanelField;
96			BPopUpMenu*		fTVStandardMenu;
97			BMenuField*		fTVStandardField;
98
99			BSlider*		fBrightnessSlider;
100
101			BButton*		fDefaultsButton;
102			BButton*		fApplyButton;
103			BButton*		fRevertButton;
104
105			ScreenMode		fScreenMode;
106			ScreenMode		fUndoScreenMode;
107				// screen modes for all workspaces
108
109			screen_mode		fActive, fSelected, fOriginal;
110				// screen modes for the current workspace
111
112			uint32			fOriginalWorkspacesColumns;
113			uint32			fOriginalWorkspacesRows;
114			float			fOriginalBrightness;
115			bool			fModified;
116};
117
118#endif	/* SCREEN_WINDOW_H */
119