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; } }
SettingsWindow::SettingsWindow(BRect frame, SettingsMessage* settings) : BWindow(frame, B_TRANSLATE("Settings"), B_TITLED_WINDOW_LOOK, B_NORMAL_WINDOW_FEEL, B_AUTO_UPDATE_SIZE_LIMITS | B_ASYNCHRONOUS_CONTROLS | B_NOT_ZOOMABLE), fSettings(settings) { fApplyButton = new BButton(B_TRANSLATE("Apply"), new BMessage(MSG_APPLY)); fCancelButton = new BButton(B_TRANSLATE("Cancel"), new BMessage(MSG_CANCEL)); fRevertButton = new BButton(B_TRANSLATE("Revert"), new BMessage(MSG_REVERT)); fOpenFilePanel = NULL; float spacing = be_control_look->DefaultItemSpacing(); BTabView* tabView = new BTabView("settings pages", B_WIDTH_FROM_LABEL); tabView->SetBorder(B_NO_BORDER); BLayoutBuilder::Group<>(this, B_VERTICAL, 0) .SetInsets(0, B_USE_DEFAULT_SPACING, 0, B_USE_WINDOW_SPACING) .Add(tabView) .Add(new BSeparatorView(B_HORIZONTAL)) .AddGroup(B_HORIZONTAL) .SetInsets(B_USE_WINDOW_SPACING, B_USE_DEFAULT_SPACING, B_USE_WINDOW_SPACING, 0) .Add(fRevertButton) .AddGlue() .Add(fCancelButton) .Add(fApplyButton); tabView->AddTab(_CreateGeneralPage(spacing)); tabView->AddTab(_CreateFontsPage(spacing)); tabView->AddTab(_CreateProxyPage(spacing)); _SetupFontSelectionView(fStandardFontView, new BMessage(MSG_STANDARD_FONT_CHANGED)); _SetupFontSelectionView(fSerifFontView, new BMessage(MSG_SERIF_FONT_CHANGED)); _SetupFontSelectionView(fSansSerifFontView, new BMessage(MSG_SANS_SERIF_FONT_CHANGED)); _SetupFontSelectionView(fFixedFontView, new BMessage(MSG_FIXED_FONT_CHANGED)); fApplyButton->MakeDefault(true); if (!frame.IsValid()) CenterOnScreen(); // load settings from disk _RevertSettings(); // apply to WebKit _ApplySettings(); // Start hidden Hide(); Show(); }
void SettingsWindow::Show() { // When showing the window, the this is always the // point to which we can revert the settings. _RevertSettings(); BWindow::Show(); }