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