xref: /haiku/src/servers/app/DesktopSettings.h (revision 629397f222d0a225d0fdd757c6b01545b0c5967c)
1 /*
2  * Copyright 2001-2015, Haiku.
3  * Distributed under the terms of the MIT License.
4  *
5  * Authors:
6  *		Axel Dörfler, axeld@pinc-software.de
7  *		Andrej Spielmann, <andrej.spielmann@seh.ox.ac.uk>
8  *		Joseph Groover <looncraz@looncraz.net>
9  */
10 #ifndef DESKTOP_SETTINGS_H
11 #define DESKTOP_SETTINGS_H
12 
13 
14 #include <InterfaceDefs.h>
15 #include <Menu.h>
16 #include <Message.h>
17 
18 #include <ServerProtocolStructs.h>
19 
20 
21 class Desktop;
22 class DesktopSettingsPrivate;
23 class ServerFont;
24 
25 
26 static const int32 kMaxWorkspaces = 32;
27 
28 enum {
29 	kAllSettings		= 0xff,
30 	kWorkspacesSettings	= 0x01,
31 	kFontSettings		= 0x02,
32 	kAppearanceSettings	= 0x04,
33 	kMouseSettings		= 0x08,
34 	kDraggerSettings	= 0x10,
35 };
36 
37 
38 class DesktopSettings {
39 public:
40 								DesktopSettings(Desktop* desktop);
41 
42 			status_t			Save(uint32 mask = kAllSettings);
43 
44 			void				GetDefaultPlainFont(ServerFont& font) const;
45 			void				GetDefaultBoldFont(ServerFont& font) const;
46 			void				GetDefaultFixedFont(ServerFont& font) const;
47 
48 			void				GetScrollBarInfo(scroll_bar_info& info) const;
49 			void				GetMenuInfo(menu_info& info) const;
50 
51 			mode_mouse			MouseMode() const;
52 			mode_focus_follows_mouse FocusFollowsMouseMode() const;
53 
NormalMouse()54 			bool				NormalMouse() const
55 									{ return MouseMode() == B_NORMAL_MOUSE; }
FocusFollowsMouse()56 			bool				FocusFollowsMouse() const
57 									{ return MouseMode()
58 										== B_FOCUS_FOLLOWS_MOUSE; }
ClickToFocusMouse()59 			bool				ClickToFocusMouse() const
60 									{ return MouseMode()
61 										== B_CLICK_TO_FOCUS_MOUSE; }
62 
63 			bool				AcceptFirstClick() const;
64 
65 			bool				ShowAllDraggers() const;
66 
67 			int32				WorkspacesCount() const;
68 			int32				WorkspacesColumns() const;
69 			int32				WorkspacesRows() const;
70 			const BMessage*		WorkspacesMessage(int32 index) const;
71 
72 			rgb_color			UIColor(color_which which) const;
73 
74 			bool				SubpixelAntialiasing() const;
75 			uint8				Hinting() const;
76 			uint8				SubpixelAverageWeight() const;
77 			bool				IsSubpixelOrderingRegular() const;
78 
79 			const BString&		ControlLook() const;
80 
81 protected:
82 			DesktopSettingsPrivate*	fSettings;
83 };
84 
85 
86 class LockedDesktopSettings : public DesktopSettings {
87 public:
88 								LockedDesktopSettings(Desktop* desktop);
89 								~LockedDesktopSettings();
90 
91 			void				SetDefaultPlainFont(const ServerFont& font);
92 			void				SetDefaultBoldFont(const ServerFont& font);
93 			void				SetDefaultFixedFont(const ServerFont& font);
94 
95 			void				SetScrollBarInfo(const scroll_bar_info& info);
96 			void				SetMenuInfo(const menu_info& info);
97 
98 			void				SetMouseMode(mode_mouse mode);
99 			void				SetFocusFollowsMouseMode(
100 									mode_focus_follows_mouse mode);
101 			void				SetAcceptFirstClick(bool acceptFirstClick);
102 
103 			void				SetShowAllDraggers(bool show);
104 
105 			void				SetUIColors(const BMessage& colors,
106 									bool* changed = NULL);
107 
108 			void				SetSubpixelAntialiasing(bool subpix);
109 			void				SetHinting(uint8 hinting);
110 			void				SetSubpixelAverageWeight(uint8 averageWeight);
111 			void				SetSubpixelOrderingRegular(
112 									bool subpixelOrdering);
113 
114 			status_t			SetControlLook(const char* path);
115 
116 private:
117 			Desktop*			fDesktop;
118 };
119 
120 
121 #endif	/* DESKTOP_SETTINGS_H */
122