void ScreenSaverWindow::_UpdateStatus() { DisableUpdates(); bool enabled = fEnableCheckBox->Value() == B_CONTROL_ON; fPasswordCheckBox->SetEnabled(enabled); fTurnOffCheckBox->SetEnabled(enabled && fTurnOffScreenFlags != 0); fRunSlider->SetEnabled(enabled); fTurnOffSlider->SetEnabled(enabled && fTurnOffCheckBox->Value()); fPasswordSlider->SetEnabled(enabled && fPasswordCheckBox->Value()); fPasswordButton->SetEnabled(enabled && fPasswordCheckBox->Value()); EnableUpdates(); // Update the saved preferences fSettings.SetWindowFrame(Frame()); fSettings.SetWindowTab(fTabView->Selection()); fSettings.SetTimeFlags((enabled ? ENABLE_SAVER : 0) | (fTurnOffCheckBox->Value() ? fTurnOffScreenFlags : 0)); fSettings.SetBlankTime(fRunSlider->Time()); bigtime_t offTime = fTurnOffSlider->Time() - fSettings.BlankTime(); fSettings.SetOffTime(offTime); fSettings.SetSuspendTime(offTime); fSettings.SetStandByTime(offTime); fSettings.SetBlankCorner(fFadeNow->Corner()); fSettings.SetNeverBlankCorner(fFadeNever->Corner()); fSettings.SetLockEnable(fPasswordCheckBox->Value()); fSettings.SetPasswordTime(fPasswordSlider->Time()); // TODO - Tell the password window to update its stuff }
//! Get the preferred languages from the settings. void LocaleWindow::_UpdatePreferredFromLocaleRoster() { DisableUpdates(); // Delete all existing items for (int32 index = fPreferredListView->CountItems(); index-- > 0; ) { delete fPreferredListView->ItemAt(index); } fPreferredListView->MakeEmpty(); // Add new ones from the locale roster BMessage preferredLanguages; be_locale_roster->GetPreferredLanguages(&preferredLanguages); BString languageID; for (int32 index = 0; preferredLanguages.FindString("language", index, &languageID) == B_OK; index++) { int32 listIndex; LanguageListItem* item = fLanguageListView->ItemForLanguageID(languageID.String(), &listIndex); if (item != NULL) { // We found the item we were looking for, now copy it to // the other list fPreferredListView->AddItem(new LanguageListItem(*item)); } } _EnableDisableLanguages(); EnableUpdates(); }
void LocaleWindow::_InsertPreferredLanguage(LanguageListItem* item, int32 atIndex) { if (item == NULL || fPreferredListView->ItemForLanguageID( item->ID().String()) != NULL) return; if (atIndex == -1) atIndex = fPreferredListView->CountItems(); BLanguage* language = NULL; be_locale_roster->GetLanguage(item->Code(), &language); LanguageListItem* baseItem = NULL; if (language != NULL) { baseItem = fPreferredListView->ItemForLanguageCode(language->Code(), &atIndex); delete language; } DisableUpdates(); fPreferredListView->AddItem(new LanguageListItem(*item), atIndex); // Replace other languages with the same base if (baseItem != NULL) { fPreferredListView->RemoveItem(baseItem); delete baseItem; } _PreferredLanguagesChanged(); EnableUpdates(); }
void LocaleWindow::_EnableDisableLanguages() { DisableUpdates(); for (int32 i = 0; i < fLanguageListView->FullListCountItems(); i++) { LanguageListItem* item = static_cast<LanguageListItem*>( fLanguageListView->FullListItemAt(i)); bool enable = fPreferredListView->ItemForLanguageID(item->ID()) == NULL; if (item->IsEnabled() != enable) { item->SetEnabled(enable); int32 visibleIndex = fLanguageListView->IndexOf(item); if (visibleIndex >= 0) { if (!enable) fLanguageListView->Deselect(visibleIndex); fLanguageListView->InvalidateItem(visibleIndex); } } } SettingsChanged(); EnableUpdates(); }
void MainWindow::UpdateTeams() { ThreadItem *thread_item; TeamItem *team_item; DisableUpdates(); if (!team_items_list) team_items_list = new Hashtable; app_info inf; thread_info thinf; int32 th_cookie, te_cookie; int32 i; team_info teinf; te_cookie = 0; iteration = (iteration + 1) % 2; total_CPU_diff = 0; int idle_CPU_diff = 0; for (i = 0; get_next_team_info(&te_cookie, &teinf) == B_NO_ERROR; i++) { if (!(team_item = (TeamItem *)team_items_list->get(teinf.team))) { team_item = new TeamItem(&teinf); team_item->refreshed = iteration; team_items_list->put(teinf.team, team_item); teamView->AddRow(team_item); team_item->CPU_diff = 0; for (th_cookie = 0; get_next_thread_info(team_item->team, &th_cookie, &thinf) == B_OK;) { thread_item = new ThreadItem(&thinf); thread_item->refreshed = iteration; team_item->thread_items_list->put(thinf.thread, thread_item); teamView->AddRow(thread_item, team_item); if (teinf.team != 1 || strncmp(thinf.name, "idle thread ", 12) != 0) { team_item->CPU_diff += thread_item->CPU_diff; } else idle_CPU_diff += thread_item->CPU_diff; } } // update team else { team_item->update(&teinf); team_item->refreshed = iteration; team_item->CPU_diff = 0; for (th_cookie = 0; get_next_thread_info(team_item->team, &th_cookie, &thinf) == B_OK;) { if (!(thread_item = (ThreadItem *)team_item->thread_items_list->get(thinf.thread))) { thread_item = new ThreadItem(&thinf); thread_item->refreshed = iteration; team_item->thread_items_list->put(thinf.thread, thread_item); teamView->AddRow(thread_item, team_item); } // update thread else { thread_item->update(&thinf); thread_item->refreshed = iteration; } if (teinf.team != 1 || strncmp(thinf.name, "idle thread ", 12) != 0) { team_item->CPU_diff += thread_item->CPU_diff; } else idle_CPU_diff += thread_item->CPU_diff; } } total_CPU_diff += team_item->CPU_diff; if (total_CPU_diff < 0) printf("Error. CPU diff out of bounds\n"); } total_CPU_diff += idle_CPU_diff; // division by zero && overflow handling if (total_CPU_diff <= 0) total_CPU_diff = 1; RemoveList.MakeEmpty(); teamView->FullListDoForEach(postlistproc, (void *)this); RemoveProcessItems(&RemoveList); EnableUpdates(); }