1/* 2 * Copyright 2008, Stephan A��mus <superstippi@gmx.de>. 3 * Copyright 1998, Eric Shepherd. 4 * All rights reserved. Distributed under the terms of the Be Sample Code 5 * license. 6 */ 7 8//! Be Newsletter Volume II, Issue 35; September 2, 1998 (Eric Shepherd) 9 10#include "SettingsMessage.h" 11 12#include <Entry.h> 13#include <File.h> 14#include <String.h> 15 16 17SettingsMessage::SettingsMessage(directory_which directory, 18 const char* filename) 19 : BMessage('pref') 20{ 21 fStatus = find_directory(directory, &fPath); 22 23 if (fStatus == B_OK) 24 fStatus = fPath.Append(filename); 25 26 if (fStatus == B_OK) 27 fStatus = Load(); 28} 29 30 31SettingsMessage::~SettingsMessage() 32{ 33 Save(); 34} 35 36 37status_t 38SettingsMessage::InitCheck() const 39{ 40 return fStatus; 41} 42 43 44status_t 45SettingsMessage::Load() 46{ 47 BFile file(fPath.Path(), B_READ_ONLY); 48 status_t status = file.InitCheck(); 49 50 if (status == B_OK) 51 status = Unflatten(&file); 52 53 return status; 54} 55 56 57status_t 58SettingsMessage::Save() const 59{ 60 BFile file(fPath.Path(), B_WRITE_ONLY | B_CREATE_FILE | B_ERASE_FILE); 61 status_t status = file.InitCheck(); 62 63 if (status == B_OK) 64 status = Flatten(&file); 65 66 return status; 67} 68 69 70// #pragma mark - 71 72 73status_t 74SettingsMessage::SetValue(const char* name, bool value) 75{ 76 if (ReplaceBool(name, value) == B_OK) 77 return B_OK; 78 return AddBool(name, value); 79} 80 81 82status_t 83SettingsMessage::SetValue(const char* name, int8 value) 84{ 85 if (ReplaceInt8(name, value) == B_OK) 86 return B_OK; 87 return AddInt8(name, value); 88} 89 90 91status_t 92SettingsMessage::SetValue(const char* name, int16 value) 93{ 94 if (ReplaceInt16(name, value) == B_OK) 95 return B_OK; 96 return AddInt16(name, value); 97} 98 99 100status_t 101SettingsMessage::SetValue(const char* name, int32 value) 102{ 103 if (ReplaceInt32(name, value) == B_OK) 104 return B_OK; 105 return AddInt32(name, value); 106} 107 108 109status_t 110SettingsMessage::SetValue(const char* name, uint32 value) 111{ 112 if (ReplaceInt32(name, (int32)value) == B_OK) 113 return B_OK; 114 return AddInt32(name, (int32)value); 115} 116 117 118status_t 119SettingsMessage::SetValue(const char* name, int64 value) 120{ 121 if (ReplaceInt64(name, value) == B_OK) 122 return B_OK; 123 return AddInt64(name, value); 124} 125 126 127status_t 128SettingsMessage::SetValue(const char* name, float value) 129{ 130 if (ReplaceFloat(name, value) == B_OK) 131 return B_OK; 132 return AddFloat(name, value); 133} 134 135 136status_t 137SettingsMessage::SetValue(const char* name, double value) 138{ 139 if (ReplaceDouble(name, value) == B_OK) 140 return B_OK; 141 return AddDouble(name, value); 142} 143 144 145status_t 146SettingsMessage::SetValue(const char* name, const char* value) 147{ 148 if (ReplaceString(name, value) == B_OK) 149 return B_OK; 150 return AddString(name, value); 151} 152 153 154status_t 155SettingsMessage::SetValue(const char* name, const BString& value) 156{ 157 return SetValue(name, value.String()); 158} 159 160 161status_t 162SettingsMessage::SetValue(const char* name, const BPoint& value) 163{ 164 if (ReplacePoint(name, value) == B_OK) 165 return B_OK; 166 return AddPoint(name, value); 167} 168 169 170status_t 171SettingsMessage::SetValue(const char* name, const BRect& value) 172{ 173 if (ReplaceRect(name, value) == B_OK) 174 return B_OK; 175 return AddRect(name, value); 176} 177 178 179status_t 180SettingsMessage::SetValue(const char* name, const entry_ref& value) 181{ 182 if (ReplaceRef(name, &value) == B_OK) 183 return B_OK; 184 return AddRef(name, &value); 185} 186 187 188status_t 189SettingsMessage::SetValue(const char* name, const BMessage* value) 190{ 191 if (ReplaceMessage(name, value) == B_OK) 192 return B_OK; 193 return AddMessage(name, value); 194} 195 196 197status_t 198SettingsMessage::SetValue(const char* name, const BFlattenable* value) 199{ 200 if (ReplaceFlat(name, const_cast<BFlattenable*>(value)) == B_OK) 201 return B_OK; 202 return AddFlat(name, const_cast<BFlattenable*>(value)); 203} 204 205 206// #pragma mark - 207 208bool 209SettingsMessage::GetValue(const char* name, bool defaultValue) const 210{ 211 bool value; 212 if (FindBool(name, &value) != B_OK) 213 return defaultValue; 214 return value; 215} 216 217 218int8 219SettingsMessage::GetValue(const char* name, int8 defaultValue) const 220{ 221 int8 value; 222 if (FindInt8(name, &value) != B_OK) 223 return defaultValue; 224 return value; 225} 226 227 228int16 229SettingsMessage::GetValue(const char* name, int16 defaultValue) const 230{ 231 int16 value; 232 if (FindInt16(name, &value) != B_OK) 233 return defaultValue; 234 return value; 235} 236 237 238int32 239SettingsMessage::GetValue(const char* name, int32 defaultValue) const 240{ 241 int32 value; 242 if (FindInt32(name, &value) != B_OK) 243 return defaultValue; 244 return value; 245} 246 247 248uint32 249SettingsMessage::GetValue(const char* name, uint32 defaultValue) const 250{ 251 int32 value; 252 if (FindInt32(name, &value) != B_OK) 253 return defaultValue; 254 return (uint32)value; 255} 256 257 258int64 259SettingsMessage::GetValue(const char* name, int64 defaultValue) const 260{ 261 int64 value; 262 if (FindInt64(name, &value) != B_OK) 263 return defaultValue; 264 return value; 265} 266 267 268float 269SettingsMessage::GetValue(const char* name, float defaultValue) const 270{ 271 float value; 272 if (FindFloat(name, &value) != B_OK) 273 return defaultValue; 274 return value; 275} 276 277 278double 279SettingsMessage::GetValue(const char* name, double defaultValue) const 280{ 281 double value; 282 if (FindDouble(name, &value) != B_OK) 283 return defaultValue; 284 return value; 285} 286 287 288BString 289SettingsMessage::GetValue(const char* name, const BString& defaultValue) const 290{ 291 BString value; 292 if (FindString(name, &value) != B_OK) 293 return defaultValue; 294 return value; 295} 296 297 298BPoint 299SettingsMessage::GetValue(const char *name, BPoint defaultValue) const 300{ 301 BPoint value; 302 if (FindPoint(name, &value) != B_OK) 303 return defaultValue; 304 return value; 305} 306 307 308BRect 309SettingsMessage::GetValue(const char* name, BRect defaultValue) const 310{ 311 BRect value; 312 if (FindRect(name, &value) != B_OK) 313 return defaultValue; 314 return value; 315} 316 317 318entry_ref 319SettingsMessage::GetValue(const char* name, const entry_ref& defaultValue) const 320{ 321 entry_ref value; 322 if (FindRef(name, &value) != B_OK) 323 return defaultValue; 324 return value; 325} 326 327 328BMessage 329SettingsMessage::GetValue(const char* name, const BMessage& defaultValue) const 330{ 331 BMessage value; 332 if (FindMessage(name, &value) != B_OK) 333 return defaultValue; 334 return value; 335} 336 337