xref: /haiku/src/servers/app/DesktopSettings.cpp (revision ef8810f2adeb29b35fc895347011ad39bd591bd1)
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 
15 
16 DesktopSettings::Private::Private()
17 	: BLocker("desktop settings")
18 {
19 	// if the on-disk settings are not complete, the defaults will be kept
20 	_SetDefaults();
21 	_Load();
22 }
23 
24 
25 DesktopSettings::Private::~Private()
26 {
27 }
28 
29 
30 void
31 DesktopSettings::Private::_SetDefaults()
32 {
33 	fMouseMode = B_NORMAL_MOUSE;
34 
35 	// init scrollbar info
36 	fScrollBarInfo.proportional = true;
37 	fScrollBarInfo.double_arrows = false;
38 	// look of the knob (R5: (0, 1, 2), 1 = default)
39 	fScrollBarInfo.knob = 1;
40 	fScrollBarInfo.min_knob_size = 15;
41 
42 	// init menu info
43 	fMenuInfo.font_size = 12.0;
44 // TODO: ...
45 //	fMenuInfo.f_family;
46 //	fMenuInfo.f_style;
47 //	fMenuInfo.background_color = gColorSet->menu_background;
48 	// look of the separator (R5: (0, 1, 2), default ?)
49 	fMenuInfo.separator = 0;
50 	fMenuInfo.click_to_open = true;
51 	fMenuInfo.triggers_always_shown = false;
52 
53 	fWorkspacesCount = 1;
54 }
55 
56 
57 status_t
58 DesktopSettings::Private::_Load()
59 {
60 	// TODO: add support for old app_server_settings file as well
61 	return B_ERROR;
62 }
63 
64 
65 status_t
66 DesktopSettings::Private::Save()
67 {
68 	return B_ERROR;
69 }
70 
71 
72 void
73 DesktopSettings::Private::SetScrollBarInfo(const scroll_bar_info& info)
74 {
75 	fScrollBarInfo = info;
76 }
77 
78 
79 const scroll_bar_info&
80 DesktopSettings::Private::ScrollBarInfo() const
81 {
82 	return fScrollBarInfo;
83 }
84 
85 
86 void
87 DesktopSettings::Private::SetMenuInfo(const menu_info& info)
88 {
89 	fMenuInfo = info;
90 }
91 
92 
93 const menu_info&
94 DesktopSettings::Private::MenuInfo() const
95 {
96 	return fMenuInfo;
97 }
98 
99 
100 void
101 DesktopSettings::Private::SetMouseMode(const mode_mouse mode)
102 {
103 	fMouseMode = mode;
104 }
105 
106 
107 mode_mouse
108 DesktopSettings::Private::MouseMode() const
109 {
110 	return fMouseMode;
111 }
112 
113 
114 bool
115 DesktopSettings::Private::FocusFollowsMouse() const
116 {
117 	return MouseMode() != B_NORMAL_MOUSE;
118 }
119 
120 
121 void
122 DesktopSettings::Private::SetWorkspacesCount(int32 number)
123 {
124 	if (number < 1)
125 		number = 1;
126 	else if (number > kMaxWorkspaces)
127 		number = kMaxWorkspaces;
128 
129 	fWorkspacesCount = number;
130 }
131 
132 
133 int32
134 DesktopSettings::Private::WorkspacesCount() const
135 {
136 	return fWorkspacesCount;
137 }
138 
139 
140 void
141 DesktopSettings::Private::SetWorkspacesMessage(int32 index, BMessage& message)
142 {
143 	if (index < 0 || index > kMaxWorkspaces)
144 		return;
145 
146 	fWorkspaceMessages[index] = message;
147 }
148 
149 
150 const BMessage*
151 DesktopSettings::Private::WorkspacesMessage(int32 index) const
152 {
153 	if (index < 0 || index > kMaxWorkspaces)
154 		return NULL;
155 
156 	return &fWorkspaceMessages[index];
157 }
158 
159 
160 
161 //	#pragma mark -
162 
163 
164 DesktopSettings::DesktopSettings(Desktop* desktop)
165 {
166 	fSettings = desktop->fSettings;
167 	fSettings->Lock();
168 }
169 
170 
171 DesktopSettings::~DesktopSettings()
172 {
173 	fSettings->Unlock();
174 }
175 
176 
177 void
178 DesktopSettings::SetScrollBarInfo(const scroll_bar_info& info)
179 {
180 	fSettings->SetScrollBarInfo(info);
181 }
182 
183 
184 void
185 DesktopSettings::GetScrollBarInfo(scroll_bar_info& info) const
186 {
187 	info = fSettings->ScrollBarInfo();
188 }
189 
190 
191 void
192 DesktopSettings::SetMenuInfo(const menu_info& info)
193 {
194 	fSettings->SetMenuInfo(info);
195 }
196 
197 
198 void
199 DesktopSettings::GetMenuInfo(menu_info& info) const
200 {
201 	info = fSettings->MenuInfo();
202 }
203 
204 
205 void
206 DesktopSettings::SetMouseMode(const mode_mouse mode)
207 {
208 	fSettings->SetMouseMode(mode);
209 }
210 
211 
212 mode_mouse
213 DesktopSettings::MouseMode() const
214 {
215 	return fSettings->MouseMode();
216 }
217 
218 
219 bool
220 DesktopSettings::FocusFollowsMouse() const
221 {
222 	return fSettings->FocusFollowsMouse();
223 }
224 
225 
226 void
227 DesktopSettings::SetWorkspacesCount(int32 number)
228 {
229 	fSettings->SetWorkspacesCount(number);
230 }
231 
232 
233 int32
234 DesktopSettings::WorkspacesCount() const
235 {
236 	return fSettings->WorkspacesCount();
237 }
238 
239 
240 void
241 DesktopSettings::SetWorkspacesMessage(int32 index, BMessage& message)
242 {
243 	fSettings->SetWorkspacesMessage(index, message);
244 }
245 
246 
247 const BMessage*
248 DesktopSettings::WorkspacesMessage(int32 index) const
249 {
250 	return fSettings->WorkspacesMessage(index);
251 }
252 
253