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