status_t CharacterWindow::_LoadSettings(BMessage& settings) { BFile file; status_t status = _OpenSettings(file, B_READ_ONLY); if (status < B_OK) return status; return settings.Unflatten(&file); }
status_t CharacterWindow::_SaveSettings() { BFile file; status_t status = _OpenSettings(file, B_WRITE_ONLY | B_CREATE_FILE | B_ERASE_FILE); if (status < B_OK) return status; BMessage settings('chrm'); status = settings.AddRect("window frame", Frame()); if (status != B_OK) return status; if (status == B_OK) { status = settings.AddBool("show private blocks", fCharacterView->IsShowingPrivateBlocks()); } if (status == B_OK) { status = settings.AddBool("show contained blocks only", fCharacterView->IsShowingContainedBlocksOnly()); } if (status == B_OK) { BFont font = fCharacterView->CharacterFont(); status = settings.AddInt32("font size", font.Size()); font_family family; font_style style; if (status == B_OK) font.GetFamilyAndStyle(&family, &style); if (status == B_OK) status = settings.AddString("font family", family); if (status == B_OK) status = settings.AddString("font style", style); } if (status == B_OK) status = settings.Flatten(&file); return status; }
status_t ActivityWindow::_SaveSettings() { BFile file; status_t status = _OpenSettings(file, B_WRITE_ONLY | B_CREATE_FILE | B_ERASE_FILE); if (status < B_OK) return status; BMessage settings('actm'); status = settings.AddRect("window frame", Frame()); if (status != B_OK) return status; status = settings.SetBool("always on top", fAlwaysOnTop->IsMarked()); if (status != B_OK) return status; #ifdef __HAIKU__ BView* top = fLayout->View(); #else BView* top = ChildAt(0); #endif int32 count = top->CountChildren(); for (int32 i = 0; i < count; i++) { ActivityView* view = dynamic_cast<ActivityView*>(top->ChildAt(i)); if (view == NULL) continue; BMessage viewState; status = view->SaveState(viewState); if (status == B_OK) status = settings.AddMessage("activity view", &viewState); if (status != B_OK) break; } if (status == B_OK) status = settings.Flatten(&file); return status; }
status_t TeamsWindow::_SaveSettings() { BFile file; status_t status = _OpenSettings(file, B_WRITE_ONLY | B_CREATE_FILE | B_ERASE_FILE); if (status < B_OK) return status; BMessage settings('hdbg'); status = settings.AddRect("teams window frame", Frame()); if (status != B_OK) return status; if (status == B_OK) status = settings.Flatten(&file); return status; }
status_t SudokuWindow::_SaveSettings() { BFile file; status_t status = _OpenSettings(file, B_WRITE_ONLY | B_CREATE_FILE | B_ERASE_FILE); if (status != B_OK) return status; BMessage settings('sudo'); status = settings.AddRect("window frame", Frame()); if (status == B_OK) status = fSudokuView->SaveState(settings); if (status == B_OK && fStoredState != NULL) status = settings.AddMessage("stored state", fStoredState); if (status == B_OK) status = settings.AddInt32("level", _Level()); if (status == B_OK) status = settings.Flatten(&file); return status; }
CAbstractSettings::CAbstractSettings () { m_pCache = NULL; TCHAR szSettingsLocation[256]; if (!GetSettingsLocation (szSettingsLocation, sizeof (szSettingsLocation))) { LOGWARN (TEXT ("Couldn't get settings location, error ") << GetLastError ()); return; } #ifdef _WIN32 m_hkeyGlobal = NULL; m_hkeyLocal = NULL; HKEY hkey; LOGDEBUG ("Opening registry keys"); HRESULT hr; if ((hr = RegOpenKeyEx (HKEY_LOCAL_MACHINE, TEXT ("SOFTWARE"), 0, KEY_READ, &hkey)) == ERROR_SUCCESS) { if ((hr = RegOpenKeyEx (hkey, szSettingsLocation, 0, KEY_READ, &m_hkeyGlobal)) != ERROR_SUCCESS) { LOGDEBUG ("Couldn't find machine global configuration settings, error " << hr); } RegCloseKey (hkey); } else { LOGWARN ("Couldn't open HKEY_LOCAL_MACHINE\\SOFTWARE registry key, error " << hr); } if ((hr = RegOpenKeyEx (HKEY_CURRENT_USER, TEXT ("SOFTWARE"), 0, KEY_READ, &hkey)) == ERROR_SUCCESS) { if ((hr = RegOpenKeyEx (hkey, szSettingsLocation, 0, KEY_READ, &m_hkeyLocal)) != ERROR_SUCCESS) { LOGDEBUG ("Couldn't find user local configuration settings, error " << hr); } RegCloseKey (hkey); } else { LOGWARN ("Couldn't open HKEY_CURRENT_USER\\Software registry key, error " << hr); } #else /* ifdef _WIN32 */ #ifndef DEFAULT_CONFIG_FOLDER #define DEFAULT_CONFIG_FOLDER "/etc/" #endif /* ifndef DEFAULT_CONFIG_FOLDER */ #ifndef DEFAULT_CONFIG_BASE #define DEFAULT_CONFIG_BASE "/usr/local" #endif /* ifndef DEFAULT_CONFIG_BASE */ FILE *f = _OpenSettings (szSettingsLocation, getenv ("HOME"), TEXT (DEFAULT_CONFIG_FOLDER)); if (!f) { f = _OpenSettings (szSettingsLocation, TEXT (DEFAULT_CONFIG_BASE), TEXT (DEFAULT_CONFIG_FOLDER)); if (!f) { f = _OpenSettings (szSettingsLocation, TEXT (""), TEXT (DEFAULT_CONFIG_FOLDER)); if (!f) { LOGWARN (TEXT ("Couldn't open configuration file")); return; } } } int nLine = 0; while (fgets (szSettingsLocation, sizeof (szSettingsLocation), f)) { nLine++; TCHAR *psz = szSettingsLocation; while (isspace (*psz)) psz++; if (!*psz || (*psz == '#') || !strtok (psz, "\r\n")) continue; TCHAR *pszKey = strtok (psz, "="); if (!pszKey) { // This shouldn't happen LOGFATAL (TEXT ("Bad line ") << nLine); continue; } TCHAR *pszValue = strtok (NULL, ""); if (!pszValue) { LOGWARN (TEXT ("Bad line ") << nLine); continue; } LOGDEBUG (TEXT ("Key=") << pszKey << TEXT (", Value=") << pszValue); CachePut (pszKey, pszValue); } fclose (f); LOGDEBUG (TEXT ("Configuration file read, ") << nLine << TEXT (" lines")); #endif /* ifdef _WIN32 */ }