void TBarWindow::MenusBeginning() { BPath path; entry_ref ref; BEntry entry; if (GetDeskbarSettingsDirectory(path) == B_OK && path.Append(kDeskbarMenuEntriesFileName) == B_OK && entry.SetTo(path.Path(), true) == B_OK && entry.Exists() && entry.GetRef(&ref) == B_OK) { sDeskbarMenu->SetNavDir(&ref); } else if (GetDeskbarDataDirectory(path) == B_OK && path.Append(kDeskbarMenuEntriesFileName) == B_OK && entry.SetTo(path.Path(), true) == B_OK && entry.Exists() && entry.GetRef(&ref) == B_OK) { sDeskbarMenu->SetNavDir(&ref); } else { // this really should never happen TRESPASS(); return; } sDeskbarMenu->ResetTargets(); fShowingMenu = true; BWindow::MenusBeginning(); }
void TBarApp::InitSettings() { desk_settings settings; settings.vertical = fDefaultSettings.vertical = true; settings.left = fDefaultSettings.left = false; settings.top = fDefaultSettings.top = true; settings.state = fDefaultSettings.state = kExpandoState; settings.width = fDefaultSettings.width = 0; settings.switcherLoc = fDefaultSettings.switcherLoc = BPoint(5000, 5000); settings.showClock = fDefaultSettings.showClock = true; // applications settings.trackerAlwaysFirst = fDefaultSettings.trackerAlwaysFirst = false; settings.sortRunningApps = fDefaultSettings.sortRunningApps = false; settings.superExpando = fDefaultSettings.superExpando = false; settings.expandNewTeams = fDefaultSettings.expandNewTeams = false; settings.hideLabels = fDefaultSettings.hideLabels = false; settings.iconSize = fDefaultSettings.iconSize = kMinimumIconSize; // recent items settings.recentDocsEnabled = fDefaultSettings.recentDocsEnabled = true; settings.recentFoldersEnabled = fDefaultSettings.recentFoldersEnabled = true; settings.recentAppsEnabled = fDefaultSettings.recentAppsEnabled = true; settings.recentDocsCount = fDefaultSettings.recentDocsCount = 10; settings.recentFoldersCount = fDefaultSettings.recentFoldersCount = 10; settings.recentAppsCount = fDefaultSettings.recentAppsCount = 10; // window settings.alwaysOnTop = fDefaultSettings.alwaysOnTop = false; settings.autoRaise = fDefaultSettings.autoRaise = false; settings.autoHide = fDefaultSettings.autoHide = false; clock_settings clock; clock.showSeconds = false; clock.showDayOfWeek = false; clock.showTimeZone = false; BPath dirPath; const char* settingsFileName = "settings"; const char* clockSettingsFileName = "clock_settings"; find_directory(B_USER_DESKBAR_DIRECTORY, &dirPath, true); // just make it if (GetDeskbarSettingsDirectory(dirPath, true) == B_OK) { BPath filePath = dirPath; filePath.Append(settingsFileName); fSettingsFile = new BFile(filePath.Path(), O_RDWR); if (fSettingsFile->InitCheck() != B_OK) { BDirectory theDir(dirPath.Path()); if (theDir.InitCheck() == B_OK) theDir.CreateFile(settingsFileName, fSettingsFile); } BMessage prefs; if (fSettingsFile->InitCheck() == B_OK && prefs.Unflatten(fSettingsFile) == B_OK) { settings.vertical = prefs.GetBool("vertical", fDefaultSettings.vertical); settings.left = prefs.GetBool("left", fDefaultSettings.left); settings.top = prefs.GetBool("top", fDefaultSettings.top); settings.state = prefs.GetInt32("state", fDefaultSettings.state); settings.width = prefs.GetFloat("width", fDefaultSettings.width); settings.switcherLoc = prefs.GetPoint("switcherLoc", fDefaultSettings.switcherLoc); settings.showClock = prefs.GetBool("showClock", fDefaultSettings.showClock); // applications settings.trackerAlwaysFirst = prefs.GetBool("trackerAlwaysFirst", fDefaultSettings.trackerAlwaysFirst); settings.sortRunningApps = prefs.GetBool("sortRunningApps", fDefaultSettings.sortRunningApps); settings.superExpando = prefs.GetBool("superExpando", fDefaultSettings.superExpando); settings.expandNewTeams = prefs.GetBool("expandNewTeams", fDefaultSettings.expandNewTeams); settings.hideLabels = prefs.GetBool("hideLabels", fDefaultSettings.hideLabels); settings.iconSize = prefs.GetInt32("iconSize", fDefaultSettings.iconSize); // recent items settings.recentDocsEnabled = prefs.GetBool("recentDocsEnabled", fDefaultSettings.recentDocsEnabled); settings.recentFoldersEnabled = prefs.GetBool("recentFoldersEnabled", fDefaultSettings.recentFoldersEnabled); settings.recentAppsEnabled = prefs.GetBool("recentAppsEnabled", fDefaultSettings.recentAppsEnabled); settings.recentDocsCount = prefs.GetInt32("recentDocsCount", fDefaultSettings.recentDocsCount); settings.recentFoldersCount = prefs.GetInt32("recentFoldersCount", fDefaultSettings.recentFoldersCount); settings.recentAppsCount = prefs.GetInt32("recentAppsCount", fDefaultSettings.recentAppsCount); // window settings.alwaysOnTop = prefs.GetBool("alwaysOnTop", fDefaultSettings.alwaysOnTop); settings.autoRaise = prefs.GetBool("autoRaise", fDefaultSettings.autoRaise); settings.autoHide = prefs.GetBool("autoHide", fDefaultSettings.autoHide); } filePath = dirPath; filePath.Append(clockSettingsFileName); fClockSettingsFile = new BFile(filePath.Path(), O_RDWR); if (fClockSettingsFile->InitCheck() != B_OK) { BDirectory theDir(dirPath.Path()); if (theDir.InitCheck() == B_OK) theDir.CreateFile(clockSettingsFileName, fClockSettingsFile); } if (fClockSettingsFile->InitCheck() == B_OK && prefs.Unflatten(fClockSettingsFile) == B_OK) { clock.showSeconds = prefs.GetBool("showSeconds", false); clock.showDayOfWeek = prefs.GetBool("showDayOfWeek", false); clock.showTimeZone = prefs.GetBool("showTimeZone", false); } } fSettings = settings; fClockSettings = clock; }