14d3ebaccSStephan Aßmus /* 2c5f8afb9SStephan Aßmus * Copyright 2008-2010, Haiku, Inc. All rights reserved. 34d3ebaccSStephan Aßmus * Distributed under the terms of the MIT License. 44d3ebaccSStephan Aßmus * 54d3ebaccSStephan Aßmus * Authors: 64d3ebaccSStephan Aßmus * Fredrik Modéen <fredrik@modeen.se> 7c5f8afb9SStephan Aßmus * Stephan Aßmus <superstippi@gmx.de> 84d3ebaccSStephan Aßmus */ 94d3ebaccSStephan Aßmus 10*e65a6eb2SStephan Aßmus 114d3ebaccSStephan Aßmus #include "SettingsWindow.h" 124d3ebaccSStephan Aßmus 134d3ebaccSStephan Aßmus #include <stdio.h> 144d3ebaccSStephan Aßmus 154d3ebaccSStephan Aßmus #include <Box.h> 164d3ebaccSStephan Aßmus #include <Button.h> 17b6d5916aSStephan Aßmus #include <CheckBox.h> 1826e9cdb7SStephan Aßmus #include <GridLayoutBuilder.h> 1926e9cdb7SStephan Aßmus #include <GroupLayoutBuilder.h> 20*e65a6eb2SStephan Aßmus #include <OptionPopUp.h> 2126e9cdb7SStephan Aßmus #include <SpaceLayoutItem.h> 22b6d5916aSStephan Aßmus #include <String.h> 23b6d5916aSStephan Aßmus #include <StringView.h> 24b6d5916aSStephan Aßmus #include <RadioButton.h> 25b6d5916aSStephan Aßmus #include <View.h> 2626e9cdb7SStephan Aßmus 27*e65a6eb2SStephan Aßmus 284d3ebaccSStephan Aßmus enum { 29*e65a6eb2SStephan Aßmus M_SETTINGS_CHANGED = 0x3000, 3026e9cdb7SStephan Aßmus 314d3ebaccSStephan Aßmus M_SETTINGS_SAVE, 324d3ebaccSStephan Aßmus M_SETTINGS_CANCEL, 3326e9cdb7SStephan Aßmus M_SETTINGS_REVERT 344d3ebaccSStephan Aßmus }; 354d3ebaccSStephan Aßmus 36*e65a6eb2SStephan Aßmus 374d3ebaccSStephan Aßmus #define SPACE 10 384d3ebaccSStephan Aßmus #define SPACEING 7 394d3ebaccSStephan Aßmus #define BUTTONHEIGHT 20 404d3ebaccSStephan Aßmus 41*e65a6eb2SStephan Aßmus 424d3ebaccSStephan Aßmus SettingsWindow::SettingsWindow(BRect frame) 43*e65a6eb2SStephan Aßmus : 44*e65a6eb2SStephan Aßmus BWindow(frame, "MediaPlayer settings", B_FLOATING_WINDOW_LOOK, 454ddc254cSStephan Aßmus B_FLOATING_APP_WINDOW_FEEL, 4626e9cdb7SStephan Aßmus B_ASYNCHRONOUS_CONTROLS | B_NOT_ZOOMABLE | B_NOT_RESIZABLE 4726e9cdb7SStephan Aßmus | B_AUTO_UPDATE_SIZE_LIMITS) 484d3ebaccSStephan Aßmus { 4926e9cdb7SStephan Aßmus BBox* settingsBox = new BBox(B_PLAIN_BORDER, NULL); 5026e9cdb7SStephan Aßmus BGroupLayout* settingsLayout = new BGroupLayout(B_VERTICAL, 5); 5126e9cdb7SStephan Aßmus settingsBox->SetLayout(settingsLayout); 5226e9cdb7SStephan Aßmus BBox* buttonBox = new BBox(B_PLAIN_BORDER, NULL); 5326e9cdb7SStephan Aßmus BGroupLayout* buttonLayout = new BGroupLayout(B_HORIZONTAL, 5); 5426e9cdb7SStephan Aßmus buttonBox->SetLayout(buttonLayout); 5526e9cdb7SStephan Aßmus 5626e9cdb7SStephan Aßmus BStringView* playModeLabel = new BStringView("stringViewPlayMode", 5726e9cdb7SStephan Aßmus "Play mode"); 5826e9cdb7SStephan Aßmus BStringView* viewOptionsLabel = new BStringView("stringViewViewOpions", 5926e9cdb7SStephan Aßmus "View options"); 6026e9cdb7SStephan Aßmus BStringView* bgMoviesModeLabel = new BStringView("stringViewPlayBackg", 614ddc254cSStephan Aßmus "Play background clips at"); 6226e9cdb7SStephan Aßmus BAlignment alignment(B_ALIGN_LEFT, B_ALIGN_VERTICAL_CENTER); 6326e9cdb7SStephan Aßmus playModeLabel->SetExplicitAlignment(alignment); 6426e9cdb7SStephan Aßmus playModeLabel->SetFont(be_bold_font); 6526e9cdb7SStephan Aßmus viewOptionsLabel->SetExplicitAlignment(alignment); 6626e9cdb7SStephan Aßmus viewOptionsLabel->SetFont(be_bold_font); 6726e9cdb7SStephan Aßmus bgMoviesModeLabel->SetExplicitAlignment(alignment); 6826e9cdb7SStephan Aßmus bgMoviesModeLabel->SetFont(be_bold_font); 6926e9cdb7SStephan Aßmus 7026e9cdb7SStephan Aßmus fAutostartCB = new BCheckBox("chkboxAutostart", 71*e65a6eb2SStephan Aßmus "Automatically start playing", new BMessage(M_SETTINGS_CHANGED)); 7226e9cdb7SStephan Aßmus 7326e9cdb7SStephan Aßmus fCloseWindowMoviesCB = new BCheckBox("chkBoxCloseWindowMovies", 7426e9cdb7SStephan Aßmus "Close window when done playing movies", 75*e65a6eb2SStephan Aßmus new BMessage(M_SETTINGS_CHANGED)); 7626e9cdb7SStephan Aßmus fCloseWindowSoundsCB = new BCheckBox("chkBoxCloseWindowSounds", 7726e9cdb7SStephan Aßmus "Close window when done playing sounds", 78*e65a6eb2SStephan Aßmus new BMessage(M_SETTINGS_CHANGED)); 7926e9cdb7SStephan Aßmus 8026e9cdb7SStephan Aßmus fLoopMoviesCB = new BCheckBox("chkBoxLoopMovie", 81*e65a6eb2SStephan Aßmus "Loop movies by default", new BMessage(M_SETTINGS_CHANGED)); 8226e9cdb7SStephan Aßmus fLoopSoundsCB = new BCheckBox("chkBoxLoopSounds", 83*e65a6eb2SStephan Aßmus "Loop sounds by default", new BMessage(M_SETTINGS_CHANGED)); 8426e9cdb7SStephan Aßmus 8526e9cdb7SStephan Aßmus fUseOverlaysCB = new BCheckBox("chkBoxUseOverlays", 8626e9cdb7SStephan Aßmus "Use hardware video overlays if available", 87*e65a6eb2SStephan Aßmus new BMessage(M_SETTINGS_CHANGED)); 8826e9cdb7SStephan Aßmus fScaleBilinearCB = new BCheckBox("chkBoxScaleBilinear", 8926e9cdb7SStephan Aßmus "Scale movies smoothly (non-overlay mode)", 90*e65a6eb2SStephan Aßmus new BMessage(M_SETTINGS_CHANGED)); 9126e9cdb7SStephan Aßmus 92341ea11eSStephan Aßmus fScaleFullscreenControlsCB = new BCheckBox("chkBoxScaleControls", 93341ea11eSStephan Aßmus "Scale controls in full-screen mode", 94*e65a6eb2SStephan Aßmus new BMessage(M_SETTINGS_CHANGED)); 95*e65a6eb2SStephan Aßmus 96*e65a6eb2SStephan Aßmus fSubtitleSizeOP = new BOptionPopUp("subtitleSize", 97*e65a6eb2SStephan Aßmus "Subtitle size", new BMessage(M_SETTINGS_CHANGED)); 98*e65a6eb2SStephan Aßmus fSubtitleSizeOP->AddOption("Small", mpSettings::SUBTITLE_SIZE_SMALL); 99*e65a6eb2SStephan Aßmus fSubtitleSizeOP->AddOption("Medium", mpSettings::SUBTITLE_SIZE_MEDIUM); 100*e65a6eb2SStephan Aßmus fSubtitleSizeOP->AddOption("Large", mpSettings::SUBTITLE_SIZE_LARGE); 101*e65a6eb2SStephan Aßmus 102*e65a6eb2SStephan Aßmus fSubtitlePlacementOP = new BOptionPopUp("subtitlePlacement", 103*e65a6eb2SStephan Aßmus "Subtitle placement", new BMessage(M_SETTINGS_CHANGED)); 104*e65a6eb2SStephan Aßmus fSubtitlePlacementOP->AddOption("Bottom of video", 105*e65a6eb2SStephan Aßmus mpSettings::SUBTITLE_PLACEMENT_BOTTOM_OF_VIDEO); 106*e65a6eb2SStephan Aßmus fSubtitlePlacementOP->AddOption("Bottom of screen", 107*e65a6eb2SStephan Aßmus mpSettings::SUBTITLE_PLACEMENT_BOTTOM_OF_SCREEN); 108341ea11eSStephan Aßmus 10926e9cdb7SStephan Aßmus fFullVolumeBGMoviesRB = new BRadioButton("rdbtnfullvolume", 110*e65a6eb2SStephan Aßmus "Full volume", new BMessage(M_SETTINGS_CHANGED)); 11126e9cdb7SStephan Aßmus 11226e9cdb7SStephan Aßmus fHalfVolumeBGMoviesRB = new BRadioButton("rdbtnhalfvolume", 113*e65a6eb2SStephan Aßmus "Low volume", new BMessage(M_SETTINGS_CHANGED)); 11426e9cdb7SStephan Aßmus 11526e9cdb7SStephan Aßmus fMutedVolumeBGMoviesRB = new BRadioButton("rdbtnfullvolume", 116*e65a6eb2SStephan Aßmus "Muted", new BMessage(M_SETTINGS_CHANGED)); 11726e9cdb7SStephan Aßmus 118613ecaf5SStephan Aßmus fRevertB = new BButton("revert", "Revert", 11926e9cdb7SStephan Aßmus new BMessage(M_SETTINGS_REVERT)); 12026e9cdb7SStephan Aßmus 12126e9cdb7SStephan Aßmus BButton* cancelButton = new BButton("cancel", "Cancel", 12226e9cdb7SStephan Aßmus new BMessage(M_SETTINGS_CANCEL)); 12326e9cdb7SStephan Aßmus 1247974d3dcSStephan Aßmus BButton* okButton = new BButton("ok", "OK", 12526e9cdb7SStephan Aßmus new BMessage(M_SETTINGS_SAVE)); 12626e9cdb7SStephan Aßmus okButton->MakeDefault(true); 12726e9cdb7SStephan Aßmus 12826e9cdb7SStephan Aßmus 12926e9cdb7SStephan Aßmus // Build the layout 13026e9cdb7SStephan Aßmus SetLayout(new BGroupLayout(B_HORIZONTAL)); 13126e9cdb7SStephan Aßmus 13226e9cdb7SStephan Aßmus AddChild(BGroupLayoutBuilder(B_VERTICAL, 0) 13326e9cdb7SStephan Aßmus .Add(BGroupLayoutBuilder(settingsLayout) 13426e9cdb7SStephan Aßmus .Add(playModeLabel) 13526e9cdb7SStephan Aßmus .Add(BGroupLayoutBuilder(B_HORIZONTAL, 0) 13626e9cdb7SStephan Aßmus .Add(BSpaceLayoutItem::CreateHorizontalStrut(10)) 13726e9cdb7SStephan Aßmus .Add(BGroupLayoutBuilder(B_VERTICAL, 0) 13826e9cdb7SStephan Aßmus .Add(fAutostartCB) 13926e9cdb7SStephan Aßmus .Add(BGridLayoutBuilder(5, 0) 14026e9cdb7SStephan Aßmus .Add(BSpaceLayoutItem::CreateHorizontalStrut(10), 0, 0) 14126e9cdb7SStephan Aßmus .Add(fCloseWindowMoviesCB, 1, 0) 14226e9cdb7SStephan Aßmus .Add(BSpaceLayoutItem::CreateHorizontalStrut(10), 0, 1) 14326e9cdb7SStephan Aßmus .Add(fCloseWindowSoundsCB, 1, 1) 14426e9cdb7SStephan Aßmus ) 14526e9cdb7SStephan Aßmus .Add(fLoopMoviesCB) 14626e9cdb7SStephan Aßmus .Add(fLoopSoundsCB) 14726e9cdb7SStephan Aßmus ) 14826e9cdb7SStephan Aßmus ) 14926e9cdb7SStephan Aßmus .Add(BSpaceLayoutItem::CreateVerticalStrut(5)) 15026e9cdb7SStephan Aßmus 15126e9cdb7SStephan Aßmus .Add(viewOptionsLabel) 15226e9cdb7SStephan Aßmus .Add(BGroupLayoutBuilder(B_HORIZONTAL, 0) 15326e9cdb7SStephan Aßmus .Add(BSpaceLayoutItem::CreateHorizontalStrut(10)) 15426e9cdb7SStephan Aßmus .Add(BGroupLayoutBuilder(B_VERTICAL, 0) 15526e9cdb7SStephan Aßmus .Add(fUseOverlaysCB) 15626e9cdb7SStephan Aßmus .Add(fScaleBilinearCB) 157341ea11eSStephan Aßmus .Add(fScaleFullscreenControlsCB) 158*e65a6eb2SStephan Aßmus .Add(fSubtitleSizeOP) 159*e65a6eb2SStephan Aßmus .Add(fSubtitlePlacementOP) 16026e9cdb7SStephan Aßmus ) 16126e9cdb7SStephan Aßmus ) 16226e9cdb7SStephan Aßmus .Add(BSpaceLayoutItem::CreateVerticalStrut(5)) 16326e9cdb7SStephan Aßmus 16426e9cdb7SStephan Aßmus .Add(bgMoviesModeLabel) 16526e9cdb7SStephan Aßmus .Add(BGroupLayoutBuilder(B_HORIZONTAL, 0) 16626e9cdb7SStephan Aßmus .Add(BSpaceLayoutItem::CreateHorizontalStrut(10)) 16726e9cdb7SStephan Aßmus .Add(BGroupLayoutBuilder(B_VERTICAL, 0) 16826e9cdb7SStephan Aßmus .Add(fFullVolumeBGMoviesRB) 16926e9cdb7SStephan Aßmus .Add(fHalfVolumeBGMoviesRB) 17026e9cdb7SStephan Aßmus .Add(fMutedVolumeBGMoviesRB) 17126e9cdb7SStephan Aßmus ) 17226e9cdb7SStephan Aßmus ) 17326e9cdb7SStephan Aßmus .Add(BSpaceLayoutItem::CreateVerticalStrut(5)) 17426e9cdb7SStephan Aßmus 17526e9cdb7SStephan Aßmus .SetInsets(5, 5, 15, 5) 17626e9cdb7SStephan Aßmus ) 17726e9cdb7SStephan Aßmus .Add(BGroupLayoutBuilder(buttonLayout) 178613ecaf5SStephan Aßmus .Add(fRevertB) 17926e9cdb7SStephan Aßmus .AddGlue() 18026e9cdb7SStephan Aßmus .Add(cancelButton) 18126e9cdb7SStephan Aßmus .Add(okButton) 18226e9cdb7SStephan Aßmus .SetInsets(5, 5, 5, 5) 18326e9cdb7SStephan Aßmus ) 18426e9cdb7SStephan Aßmus ); 1854d3ebaccSStephan Aßmus } 1864d3ebaccSStephan Aßmus 1874d3ebaccSStephan Aßmus 1884d3ebaccSStephan Aßmus SettingsWindow::~SettingsWindow() 1894d3ebaccSStephan Aßmus { 1904d3ebaccSStephan Aßmus } 1914d3ebaccSStephan Aßmus 1924d3ebaccSStephan Aßmus 1934d3ebaccSStephan Aßmus void 19426e9cdb7SStephan Aßmus SettingsWindow::Show() 1954d3ebaccSStephan Aßmus { 196ac6b0fc9SStephan Aßmus // The Settings that we want to be able to revert to is the state at which 197ac6b0fc9SStephan Aßmus // the SettingsWindow was shown. So the current settings are stored in 198ac6b0fc9SStephan Aßmus // fLastSettings. 19926e9cdb7SStephan Aßmus Settings::Default()->LoadSettings(fLastSettings); 20026e9cdb7SStephan Aßmus fSettings = fLastSettings; 20126e9cdb7SStephan Aßmus AdoptSettings(); 20226e9cdb7SStephan Aßmus 20326e9cdb7SStephan Aßmus BWindow::Show(); 2044d3ebaccSStephan Aßmus } 2054d3ebaccSStephan Aßmus 2064d3ebaccSStephan Aßmus 2074d3ebaccSStephan Aßmus bool 2084d3ebaccSStephan Aßmus SettingsWindow::QuitRequested() 2094d3ebaccSStephan Aßmus { 2104d3ebaccSStephan Aßmus Hide(); 2114d3ebaccSStephan Aßmus return false; 2124d3ebaccSStephan Aßmus } 2134d3ebaccSStephan Aßmus 2144d3ebaccSStephan Aßmus 2154d3ebaccSStephan Aßmus void 2164d3ebaccSStephan Aßmus SettingsWindow::MessageReceived(BMessage* message) 2174d3ebaccSStephan Aßmus { 2184d3ebaccSStephan Aßmus switch (message->what) { 219*e65a6eb2SStephan Aßmus case M_SETTINGS_CHANGED: 22026e9cdb7SStephan Aßmus ApplySettings(); 22126e9cdb7SStephan Aßmus break; 22226e9cdb7SStephan Aßmus 2234d3ebaccSStephan Aßmus case B_KEY_DOWN: 2244d3ebaccSStephan Aßmus int32 index; 22526e9cdb7SStephan Aßmus if (message->FindInt32("key", &index) == B_OK && index == 1) 2264d3ebaccSStephan Aßmus PostMessage(B_QUIT_REQUESTED); 2274d3ebaccSStephan Aßmus break; 22826e9cdb7SStephan Aßmus 22926e9cdb7SStephan Aßmus case M_SETTINGS_REVERT: 23026e9cdb7SStephan Aßmus Revert(); 23126e9cdb7SStephan Aßmus break; 23226e9cdb7SStephan Aßmus 2334d3ebaccSStephan Aßmus case M_SETTINGS_CANCEL: 23426e9cdb7SStephan Aßmus Revert(); 23526e9cdb7SStephan Aßmus // fall through 23626e9cdb7SStephan Aßmus case M_SETTINGS_SAVE: 2374d3ebaccSStephan Aßmus PostMessage(B_QUIT_REQUESTED); 2384d3ebaccSStephan Aßmus break; 23926e9cdb7SStephan Aßmus 2404d3ebaccSStephan Aßmus default: 2414d3ebaccSStephan Aßmus BWindow::MessageReceived(message); 2424d3ebaccSStephan Aßmus break; 2434d3ebaccSStephan Aßmus } 2444d3ebaccSStephan Aßmus } 24526e9cdb7SStephan Aßmus 24626e9cdb7SStephan Aßmus 24726e9cdb7SStephan Aßmus void 24826e9cdb7SStephan Aßmus SettingsWindow::AdoptSettings() 24926e9cdb7SStephan Aßmus { 25026e9cdb7SStephan Aßmus fAutostartCB->SetValue(fSettings.autostart); 25126e9cdb7SStephan Aßmus fCloseWindowMoviesCB->SetValue(fSettings.closeWhenDonePlayingMovie); 25226e9cdb7SStephan Aßmus fCloseWindowSoundsCB->SetValue(fSettings.closeWhenDonePlayingSound); 25326e9cdb7SStephan Aßmus fLoopMoviesCB->SetValue(fSettings.loopMovie); 25426e9cdb7SStephan Aßmus fLoopSoundsCB->SetValue(fSettings.loopSound); 25526e9cdb7SStephan Aßmus 25626e9cdb7SStephan Aßmus fUseOverlaysCB->SetValue(fSettings.useOverlays); 25726e9cdb7SStephan Aßmus fScaleBilinearCB->SetValue(fSettings.scaleBilinear); 258341ea11eSStephan Aßmus fScaleFullscreenControlsCB->SetValue(fSettings.scaleFullscreenControls); 25926e9cdb7SStephan Aßmus 260*e65a6eb2SStephan Aßmus fSubtitleSizeOP->SetValue(fSettings.subtitleSize); 261*e65a6eb2SStephan Aßmus fSubtitlePlacementOP->SetValue(fSettings.subtitlePlacement); 262*e65a6eb2SStephan Aßmus 26326e9cdb7SStephan Aßmus fFullVolumeBGMoviesRB->SetValue(fSettings.backgroundMovieVolumeMode 26426e9cdb7SStephan Aßmus == mpSettings::BG_MOVIES_FULL_VOLUME); 26526e9cdb7SStephan Aßmus fHalfVolumeBGMoviesRB->SetValue(fSettings.backgroundMovieVolumeMode 26626e9cdb7SStephan Aßmus == mpSettings::BG_MOVIES_HALF_VLUME); 26726e9cdb7SStephan Aßmus fMutedVolumeBGMoviesRB->SetValue(fSettings.backgroundMovieVolumeMode 26826e9cdb7SStephan Aßmus == mpSettings::BG_MOVIES_MUTED); 269613ecaf5SStephan Aßmus 270613ecaf5SStephan Aßmus fRevertB->SetEnabled(IsRevertable()); 27126e9cdb7SStephan Aßmus } 27226e9cdb7SStephan Aßmus 27326e9cdb7SStephan Aßmus 27426e9cdb7SStephan Aßmus void 27526e9cdb7SStephan Aßmus SettingsWindow::ApplySettings() 27626e9cdb7SStephan Aßmus { 27726e9cdb7SStephan Aßmus fSettings.autostart = fAutostartCB->Value() == B_CONTROL_ON; 27826e9cdb7SStephan Aßmus fSettings.closeWhenDonePlayingMovie 27926e9cdb7SStephan Aßmus = fCloseWindowMoviesCB->Value() == B_CONTROL_ON; 28026e9cdb7SStephan Aßmus fSettings.closeWhenDonePlayingSound 28126e9cdb7SStephan Aßmus = fCloseWindowSoundsCB->Value() == B_CONTROL_ON; 28226e9cdb7SStephan Aßmus fSettings.loopMovie = fLoopMoviesCB->Value() == B_CONTROL_ON; 28326e9cdb7SStephan Aßmus fSettings.loopSound = fLoopSoundsCB->Value() == B_CONTROL_ON; 28426e9cdb7SStephan Aßmus 28526e9cdb7SStephan Aßmus fSettings.useOverlays = fUseOverlaysCB->Value() == B_CONTROL_ON; 28626e9cdb7SStephan Aßmus fSettings.scaleBilinear = fScaleBilinearCB->Value() == B_CONTROL_ON; 287341ea11eSStephan Aßmus fSettings.scaleFullscreenControls 288341ea11eSStephan Aßmus = fScaleFullscreenControlsCB->Value() == B_CONTROL_ON; 28926e9cdb7SStephan Aßmus 290*e65a6eb2SStephan Aßmus fSettings.subtitleSize = fSubtitleSizeOP->Value(); 291*e65a6eb2SStephan Aßmus fSettings.subtitlePlacement = fSubtitlePlacementOP->Value(); 292*e65a6eb2SStephan Aßmus 29326e9cdb7SStephan Aßmus if (fFullVolumeBGMoviesRB->Value() == B_CONTROL_ON) { 29426e9cdb7SStephan Aßmus fSettings.backgroundMovieVolumeMode 29526e9cdb7SStephan Aßmus = mpSettings::BG_MOVIES_FULL_VOLUME; 29626e9cdb7SStephan Aßmus } else if (fHalfVolumeBGMoviesRB->Value() == B_CONTROL_ON) { 29726e9cdb7SStephan Aßmus fSettings.backgroundMovieVolumeMode 29826e9cdb7SStephan Aßmus = mpSettings::BG_MOVIES_HALF_VLUME; 29926e9cdb7SStephan Aßmus } else if (fMutedVolumeBGMoviesRB->Value() == B_CONTROL_ON) { 30026e9cdb7SStephan Aßmus fSettings.backgroundMovieVolumeMode 30126e9cdb7SStephan Aßmus = mpSettings::BG_MOVIES_MUTED; 30226e9cdb7SStephan Aßmus } 30326e9cdb7SStephan Aßmus 30426e9cdb7SStephan Aßmus Settings::Default()->SaveSettings(fSettings); 305613ecaf5SStephan Aßmus 306613ecaf5SStephan Aßmus fRevertB->SetEnabled(IsRevertable()); 30726e9cdb7SStephan Aßmus } 30826e9cdb7SStephan Aßmus 30926e9cdb7SStephan Aßmus 31026e9cdb7SStephan Aßmus void 31126e9cdb7SStephan Aßmus SettingsWindow::Revert() 31226e9cdb7SStephan Aßmus { 31326e9cdb7SStephan Aßmus fSettings = fLastSettings; 31426e9cdb7SStephan Aßmus AdoptSettings(); 31526e9cdb7SStephan Aßmus Settings::Default()->SaveSettings(fSettings); 31626e9cdb7SStephan Aßmus } 31726e9cdb7SStephan Aßmus 318613ecaf5SStephan Aßmus 319613ecaf5SStephan Aßmus bool 320613ecaf5SStephan Aßmus SettingsWindow::IsRevertable() const 321613ecaf5SStephan Aßmus { 322613ecaf5SStephan Aßmus return fSettings != fLastSettings; 323613ecaf5SStephan Aßmus } 324613ecaf5SStephan Aßmus 325