xref: /haiku/src/servers/app/DesktopSettings.cpp (revision 974dd00c857f8a8a89798b3a15293d1ed815408d)
1 /*
2  * Copyright 2005, Haiku.
3  * Distributed under the terms of the MIT License.
4  *
5  * Authors:
6  *		Stephan Aßmus <superstippi@gmx.de>
7  *		Axel Dörfler, axeld@pinc-software.de
8  */
9 
10 
11 #include "DesktopSettings.h"
12 #include "DesktopSettingsPrivate.h"
13 #include "Desktop.h"
14 #include "FontManager.h"
15 #include "ServerConfig.h"
16 
17 
18 DesktopSettings::Private::Private()
19 	: BLocker("DesktopSettings_Private")
20 {
21 	// if the on-disk settings are not complete, the defaults will be kept
22 	_SetDefaults();
23 	_Load();
24 }
25 
26 
27 DesktopSettings::Private::~Private()
28 {
29 }
30 
31 
32 void
33 DesktopSettings::Private::_SetDefaults()
34 {
35 	fPlainFont = *gFontManager->DefaultPlainFont();
36 	fBoldFont = *gFontManager->DefaultBoldFont();
37 	fFixedFont = *gFontManager->DefaultFixedFont();
38 
39 	fMouseMode = B_NORMAL_MOUSE;
40 
41 	// init scrollbar info
42 	fScrollBarInfo.proportional = true;
43 	fScrollBarInfo.double_arrows = false;
44 	// look of the knob (R5: (0, 1, 2), 1 = default)
45 	fScrollBarInfo.knob = 1;
46 	fScrollBarInfo.min_knob_size = 15;
47 
48 	// init menu info
49 	fMenuInfo.font_size = 12.0;
50 // TODO: ...
51 //	fMenuInfo.f_family;
52 //	fMenuInfo.f_style;
53 //	fMenuInfo.background_color = gColorSet->menu_background;
54 	// look of the separator (R5: (0, 1, 2), default ?)
55 	fMenuInfo.separator = 0;
56 	fMenuInfo.click_to_open = true;
57 	fMenuInfo.triggers_always_shown = false;
58 
59 	fWorkspacesCount = 1;
60 }
61 
62 
63 status_t
64 DesktopSettings::Private::_Load()
65 {
66 	// TODO: add support for old app_server_settings file as well
67 	return B_ERROR;
68 }
69 
70 
71 status_t
72 DesktopSettings::Private::Save()
73 {
74 	return B_ERROR;
75 }
76 
77 
78 void
79 DesktopSettings::Private::SetDefaultPlainFont(const ServerFont &font)
80 {
81 	fPlainFont = font;
82 }
83 
84 
85 const ServerFont &
86 DesktopSettings::Private::DefaultPlainFont() const
87 {
88 	return fPlainFont;
89 }
90 
91 
92 void
93 DesktopSettings::Private::SetDefaultBoldFont(const ServerFont &font)
94 {
95 	fBoldFont = font;
96 }
97 
98 
99 const ServerFont &
100 DesktopSettings::Private::DefaultBoldFont() const
101 {
102 	return fBoldFont;
103 }
104 
105 
106 void
107 DesktopSettings::Private::SetDefaultFixedFont(const ServerFont &font)
108 {
109 	fFixedFont = font;
110 }
111 
112 
113 const ServerFont &
114 DesktopSettings::Private::DefaultFixedFont() const
115 {
116 	return fFixedFont;
117 }
118 
119 
120 void
121 DesktopSettings::Private::SetScrollBarInfo(const scroll_bar_info& info)
122 {
123 	fScrollBarInfo = info;
124 }
125 
126 
127 const scroll_bar_info&
128 DesktopSettings::Private::ScrollBarInfo() const
129 {
130 	return fScrollBarInfo;
131 }
132 
133 
134 void
135 DesktopSettings::Private::SetMenuInfo(const menu_info& info)
136 {
137 	fMenuInfo = info;
138 }
139 
140 
141 const menu_info&
142 DesktopSettings::Private::MenuInfo() const
143 {
144 	return fMenuInfo;
145 }
146 
147 
148 void
149 DesktopSettings::Private::SetMouseMode(const mode_mouse mode)
150 {
151 	fMouseMode = mode;
152 }
153 
154 
155 mode_mouse
156 DesktopSettings::Private::MouseMode() const
157 {
158 	return fMouseMode;
159 }
160 
161 
162 bool
163 DesktopSettings::Private::FocusFollowsMouse() const
164 {
165 	return MouseMode() != B_NORMAL_MOUSE;
166 }
167 
168 
169 void
170 DesktopSettings::Private::SetWorkspacesCount(int32 number)
171 {
172 	if (number < 1)
173 		number = 1;
174 	else if (number > kMaxWorkspaces)
175 		number = kMaxWorkspaces;
176 
177 	fWorkspacesCount = number;
178 }
179 
180 
181 int32
182 DesktopSettings::Private::WorkspacesCount() const
183 {
184 	return fWorkspacesCount;
185 }
186 
187 
188 void
189 DesktopSettings::Private::SetWorkspacesMessage(int32 index, BMessage& message)
190 {
191 	if (index < 0 || index > kMaxWorkspaces)
192 		return;
193 
194 	fWorkspaceMessages[index] = message;
195 }
196 
197 
198 const BMessage*
199 DesktopSettings::Private::WorkspacesMessage(int32 index) const
200 {
201 	if (index < 0 || index > kMaxWorkspaces)
202 		return NULL;
203 
204 	return &fWorkspaceMessages[index];
205 }
206 
207 
208 
209 //	#pragma mark -
210 
211 
212 DesktopSettings::DesktopSettings(Desktop* desktop)
213 {
214 	fSettings = desktop->fSettings;
215 	fSettings->Lock();
216 }
217 
218 
219 DesktopSettings::~DesktopSettings()
220 {
221 	fSettings->Unlock();
222 }
223 
224 
225 void
226 DesktopSettings::SetDefaultPlainFont(const ServerFont &font)
227 {
228 	fSettings->SetDefaultPlainFont(font);
229 }
230 
231 
232 void
233 DesktopSettings::GetDefaultPlainFont(ServerFont &font) const
234 {
235 	font = fSettings->DefaultPlainFont();
236 }
237 
238 
239 void
240 DesktopSettings::SetDefaultBoldFont(const ServerFont &font)
241 {
242 	fSettings->SetDefaultBoldFont(font);
243 }
244 
245 
246 void
247 DesktopSettings::GetDefaultBoldFont(ServerFont &font) const
248 {
249 	font = fSettings->DefaultBoldFont();
250 }
251 
252 
253 void
254 DesktopSettings::SetDefaultFixedFont(const ServerFont &font)
255 {
256 	fSettings->SetDefaultFixedFont(font);
257 }
258 
259 
260 void
261 DesktopSettings::GetDefaultFixedFont(ServerFont &font) const
262 {
263 	font = fSettings->DefaultFixedFont();
264 }
265 
266 
267 void
268 DesktopSettings::SetScrollBarInfo(const scroll_bar_info& info)
269 {
270 	fSettings->SetScrollBarInfo(info);
271 }
272 
273 
274 void
275 DesktopSettings::GetScrollBarInfo(scroll_bar_info& info) const
276 {
277 	info = fSettings->ScrollBarInfo();
278 }
279 
280 
281 void
282 DesktopSettings::SetMenuInfo(const menu_info& info)
283 {
284 	fSettings->SetMenuInfo(info);
285 }
286 
287 
288 void
289 DesktopSettings::GetMenuInfo(menu_info& info) const
290 {
291 	info = fSettings->MenuInfo();
292 }
293 
294 
295 void
296 DesktopSettings::SetMouseMode(const mode_mouse mode)
297 {
298 	fSettings->SetMouseMode(mode);
299 }
300 
301 
302 mode_mouse
303 DesktopSettings::MouseMode() const
304 {
305 	return fSettings->MouseMode();
306 }
307 
308 
309 bool
310 DesktopSettings::FocusFollowsMouse() const
311 {
312 	return fSettings->FocusFollowsMouse();
313 }
314 
315 
316 void
317 DesktopSettings::SetWorkspacesCount(int32 number)
318 {
319 	fSettings->SetWorkspacesCount(number);
320 }
321 
322 
323 int32
324 DesktopSettings::WorkspacesCount() const
325 {
326 	return fSettings->WorkspacesCount();
327 }
328 
329 
330 void
331 DesktopSettings::SetWorkspacesMessage(int32 index, BMessage& message)
332 {
333 	fSettings->SetWorkspacesMessage(index, message);
334 }
335 
336 
337 const BMessage*
338 DesktopSettings::WorkspacesMessage(int32 index) const
339 {
340 	return fSettings->WorkspacesMessage(index);
341 }
342 
343