void SettingsWindow::MessageReceived(BMessage* message) { switch (message->what) { case MSG_APPLY: _ApplySettings(); break; case MSG_CANCEL: _RevertSettings(); PostMessage(B_QUIT_REQUESTED); break; case MSG_REVERT: _RevertSettings(); break; case MSG_STANDARD_FONT_SIZE_SELECTED: { int32 size = _SizesMenuValue(fStandardSizesMenu->Menu()); fStandardFontView->SetSize(size); fSerifFontView->SetSize(size); fSansSerifFontView->SetSize(size); _ValidateControlsEnabledStatus(); break; } case MSG_FIXED_FONT_SIZE_SELECTED: { int32 size = _SizesMenuValue(fFixedSizesMenu->Menu()); fFixedFontView->SetSize(size); _ValidateControlsEnabledStatus(); break; } case MSG_START_PAGE_CHANGED: case MSG_SEARCH_PAGE_CHANGED: case MSG_DOWNLOAD_FOLDER_CHANGED: case MSG_NEW_WINDOWS_BEHAVIOR_CHANGED: case MSG_NEW_TABS_BEHAVIOR_CHANGED: case MSG_HISTORY_MENU_DAYS_CHANGED: case MSG_TAB_DISPLAY_BEHAVIOR_CHANGED: case MSG_AUTO_HIDE_INTERFACE_BEHAVIOR_CHANGED: case MSG_AUTO_HIDE_POINTER_BEHAVIOR_CHANGED: case MSG_SHOW_HOME_BUTTON_CHANGED: case MSG_STANDARD_FONT_CHANGED: case MSG_SERIF_FONT_CHANGED: case MSG_SANS_SERIF_FONT_CHANGED: case MSG_FIXED_FONT_CHANGED: case MSG_USE_PROXY_CHANGED: case MSG_PROXY_ADDRESS_CHANGED: case MSG_PROXY_PORT_CHANGED: // TODO: Some settings could change live, some others not? _ValidateControlsEnabledStatus(); break; default: BWindow::MessageReceived(message); break; } }
void SettingsWindow::_ApplySettings() { // Store general settings int32 maxHistoryAge = _MaxHistoryAge(); BString text; text << maxHistoryAge; fDaysInHistoryMenuControl->SetText(text.String()); BrowsingHistory::DefaultInstance()->SetMaxHistoryItemAge(maxHistoryAge); fSettings->SetValue(kSettingsKeyStartPageURL, fStartPageControl->Text()); fSettings->SetValue(kSettingsKeySearchPageURL, fSearchPageControl->Text()); fSettings->SetValue(kSettingsKeyDownloadPath, fDownloadFolderControl->Text()); fSettings->SetValue(kSettingsKeyShowTabsIfSinglePageOpen, fShowTabsIfOnlyOnePage->Value() == B_CONTROL_ON); fSettings->SetValue(kSettingsKeyAutoHideInterfaceInFullscreenMode, fAutoHideInterfaceInFullscreenMode->Value() == B_CONTROL_ON); fSettings->SetValue(kSettingsKeyAutoHidePointer, fAutoHidePointer->Value() == B_CONTROL_ON); fSettings->SetValue(kSettingsKeyShowHomeButton, fShowHomeButton->Value() == B_CONTROL_ON); // New page policies fSettings->SetValue(kSettingsKeyNewWindowPolicy, _NewWindowPolicy()); fSettings->SetValue(kSettingsKeyNewTabPolicy, _NewTabPolicy()); // Store fond settings fSettings->SetValue("standard font", fStandardFontView->Font()); fSettings->SetValue("serif font", fSerifFontView->Font()); fSettings->SetValue("sans serif font", fSansSerifFontView->Font()); fSettings->SetValue("fixed font", fFixedFontView->Font()); int32 standardFontSize = _SizesMenuValue(fStandardSizesMenu->Menu()); int32 fixedFontSize = _SizesMenuValue(fFixedSizesMenu->Menu()); fSettings->SetValue("standard font size", standardFontSize); fSettings->SetValue("fixed font size", fixedFontSize); // Store proxy settings fSettings->SetValue(kSettingsKeyUseProxy, fUseProxyCheckBox->Value() == B_CONTROL_ON); fSettings->SetValue(kSettingsKeyProxyAddress, fProxyAddressControl->Text()); uint32 proxyPort = _ProxyPort(); fSettings->SetValue(kSettingsKeyProxyPort, proxyPort); fSettings->SetValue(kSettingsKeyUseProxyAuth, fUseProxyAuthCheckBox->Value() == B_CONTROL_ON); fSettings->SetValue(kSettingsKeyProxyUsername, fProxyUsernameControl->Text()); fSettings->SetValue(kSettingsKeyProxyPassword, fProxyPasswordControl->Text()); fSettings->Save(); // Apply settings to default web page settings. BWebSettings::Default()->SetStandardFont(fStandardFontView->Font()); BWebSettings::Default()->SetSerifFont(fSerifFontView->Font()); BWebSettings::Default()->SetSansSerifFont(fSansSerifFontView->Font()); BWebSettings::Default()->SetFixedFont(fFixedFontView->Font()); BWebSettings::Default()->SetDefaultStandardFontSize(standardFontSize); BWebSettings::Default()->SetDefaultFixedFontSize(fixedFontSize); if (fUseProxyCheckBox->Value() == B_CONTROL_ON) { if (fUseProxyAuthCheckBox->Value() == B_CONTROL_ON) { BWebSettings::Default()->SetProxyInfo(fProxyAddressControl->Text(), proxyPort, B_PROXY_TYPE_HTTP, fProxyUsernameControl->Text(), fProxyPasswordControl->Text()); } else { BWebSettings::Default()->SetProxyInfo(fProxyAddressControl->Text(), proxyPort, B_PROXY_TYPE_HTTP, "", ""); } } else BWebSettings::Default()->SetProxyInfo(); // This will find all currently instantiated page settings and apply // the default values, unless the page settings have local overrides. BWebSettings::Default()->Apply(); _ValidateControlsEnabledStatus(); }
bool SettingsWindow::_CanApplySettings() const { bool canApply = false; // General settings canApply = canApply || (strcmp(fStartPageControl->Text(), fSettings->GetValue(kSettingsKeyStartPageURL, kDefaultStartPageURL)) != 0); canApply = canApply || (strcmp(fSearchPageControl->Text(), fSettings->GetValue(kSettingsKeySearchPageURL, kDefaultSearchPageURL)) != 0); canApply = canApply || (strcmp(fDownloadFolderControl->Text(), fSettings->GetValue(kSettingsKeyDownloadPath, kDefaultDownloadPath)) != 0); canApply = canApply || ((fShowTabsIfOnlyOnePage->Value() == B_CONTROL_ON) != fSettings->GetValue(kSettingsKeyShowTabsIfSinglePageOpen, true)); canApply = canApply || ( (fAutoHideInterfaceInFullscreenMode->Value() == B_CONTROL_ON) != fSettings->GetValue(kSettingsKeyAutoHideInterfaceInFullscreenMode, false)); canApply = canApply || ( (fAutoHidePointer->Value() == B_CONTROL_ON) != fSettings->GetValue(kSettingsKeyAutoHidePointer, false)); canApply = canApply || ((fShowHomeButton->Value() == B_CONTROL_ON) != fSettings->GetValue(kSettingsKeyShowHomeButton, true)); canApply = canApply || (_MaxHistoryAge() != BrowsingHistory::DefaultInstance()->MaxHistoryItemAge()); // New window policy canApply = canApply || (_NewWindowPolicy() != fSettings->GetValue(kSettingsKeyNewWindowPolicy, (uint32)OpenStartPage)); // New tab policy canApply = canApply || (_NewTabPolicy() != fSettings->GetValue(kSettingsKeyNewTabPolicy, (uint32)OpenBlankPage)); // Font settings canApply = canApply || (fStandardFontView->Font() != fSettings->GetValue("standard font", *be_plain_font)); canApply = canApply || (fSerifFontView->Font() != fSettings->GetValue("serif font", _FindDefaultSerifFont())); canApply = canApply || (fSansSerifFontView->Font() != fSettings->GetValue("sans serif font", *be_plain_font)); canApply = canApply || (fFixedFontView->Font() != fSettings->GetValue("fixed font", *be_fixed_font)); canApply = canApply || (_SizesMenuValue(fStandardSizesMenu->Menu()) != fSettings->GetValue("standard font size", kDefaultFontSize)); canApply = canApply || (_SizesMenuValue(fFixedSizesMenu->Menu()) != fSettings->GetValue("fixed font size", kDefaultFontSize)); // Proxy settings canApply = canApply || ((fUseProxyCheckBox->Value() == B_CONTROL_ON) != fSettings->GetValue(kSettingsKeyUseProxy, false)); canApply = canApply || (strcmp(fProxyAddressControl->Text(), fSettings->GetValue(kSettingsKeyProxyAddress, "")) != 0); canApply = canApply || (_ProxyPort() != fSettings->GetValue(kSettingsKeyProxyPort, (uint32)0)); canApply = canApply || ((fUseProxyAuthCheckBox->Value() == B_CONTROL_ON) != fSettings->GetValue(kSettingsKeyUseProxyAuth, false)); canApply = canApply || (strcmp(fProxyUsernameControl->Text(), fSettings->GetValue(kSettingsKeyProxyUsername, "")) != 0); canApply = canApply || (strcmp(fProxyPasswordControl->Text(), fSettings->GetValue(kSettingsKeyProxyPassword, "")) != 0); return canApply; }