14d3ebaccSStephan Aßmus /* 2*a178983dSAxel Dörfler * Copyright 2008-2011, 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 10e65a6eb2SStephan 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> 17238df8fbSAdrien Destugues #include <Catalog.h> 18b6d5916aSStephan Aßmus #include <CheckBox.h> 1926e9cdb7SStephan Aßmus #include <GridLayoutBuilder.h> 2026e9cdb7SStephan Aßmus #include <GroupLayoutBuilder.h> 21238df8fbSAdrien Destugues #include <Locale.h> 22e65a6eb2SStephan Aßmus #include <OptionPopUp.h> 2326e9cdb7SStephan Aßmus #include <SpaceLayoutItem.h> 24b6d5916aSStephan Aßmus #include <String.h> 25b6d5916aSStephan Aßmus #include <StringView.h> 26b6d5916aSStephan Aßmus #include <RadioButton.h> 27b6d5916aSStephan Aßmus #include <View.h> 2826e9cdb7SStephan Aßmus 29e65a6eb2SStephan Aßmus 30238df8fbSAdrien Destugues #undef B_TRANSLATE_CONTEXT 31238df8fbSAdrien Destugues #define B_TRANSLATE_CONTEXT "MediaPlayer-SettingsWindow" 32238df8fbSAdrien Destugues 33238df8fbSAdrien Destugues 344d3ebaccSStephan Aßmus enum { 35e65a6eb2SStephan Aßmus M_SETTINGS_CHANGED = 0x3000, 3626e9cdb7SStephan Aßmus 374d3ebaccSStephan Aßmus M_SETTINGS_SAVE, 384d3ebaccSStephan Aßmus M_SETTINGS_CANCEL, 3926e9cdb7SStephan Aßmus M_SETTINGS_REVERT 404d3ebaccSStephan Aßmus }; 414d3ebaccSStephan Aßmus 42e65a6eb2SStephan Aßmus 434d3ebaccSStephan Aßmus #define SPACE 10 444d3ebaccSStephan Aßmus #define SPACEING 7 454d3ebaccSStephan Aßmus #define BUTTONHEIGHT 20 464d3ebaccSStephan Aßmus 47e65a6eb2SStephan Aßmus 484d3ebaccSStephan Aßmus SettingsWindow::SettingsWindow(BRect frame) 49e65a6eb2SStephan Aßmus : 50238df8fbSAdrien Destugues BWindow(frame, B_TRANSLATE("MediaPlayer settings"), B_FLOATING_WINDOW_LOOK, 514ddc254cSStephan Aßmus B_FLOATING_APP_WINDOW_FEEL, 5226e9cdb7SStephan Aßmus B_ASYNCHRONOUS_CONTROLS | B_NOT_ZOOMABLE | B_NOT_RESIZABLE 5326e9cdb7SStephan Aßmus | B_AUTO_UPDATE_SIZE_LIMITS) 544d3ebaccSStephan Aßmus { 5526e9cdb7SStephan Aßmus BBox* settingsBox = new BBox(B_PLAIN_BORDER, NULL); 5626e9cdb7SStephan Aßmus BGroupLayout* settingsLayout = new BGroupLayout(B_VERTICAL, 5); 5726e9cdb7SStephan Aßmus settingsBox->SetLayout(settingsLayout); 5826e9cdb7SStephan Aßmus BBox* buttonBox = new BBox(B_PLAIN_BORDER, NULL); 5926e9cdb7SStephan Aßmus BGroupLayout* buttonLayout = new BGroupLayout(B_HORIZONTAL, 5); 6026e9cdb7SStephan Aßmus buttonBox->SetLayout(buttonLayout); 6126e9cdb7SStephan Aßmus 6226e9cdb7SStephan Aßmus BStringView* playModeLabel = new BStringView("stringViewPlayMode", 63238df8fbSAdrien Destugues B_TRANSLATE("Play mode")); 6426e9cdb7SStephan Aßmus BStringView* viewOptionsLabel = new BStringView("stringViewViewOpions", 65238df8fbSAdrien Destugues B_TRANSLATE("View options")); 6626e9cdb7SStephan Aßmus BStringView* bgMoviesModeLabel = new BStringView("stringViewPlayBackg", 6761698f2dSPhilippe Houdoin B_TRANSLATE("Volume of background clips")); 6826e9cdb7SStephan Aßmus BAlignment alignment(B_ALIGN_LEFT, B_ALIGN_VERTICAL_CENTER); 6926e9cdb7SStephan Aßmus playModeLabel->SetExplicitAlignment(alignment); 7026e9cdb7SStephan Aßmus playModeLabel->SetFont(be_bold_font); 7126e9cdb7SStephan Aßmus viewOptionsLabel->SetExplicitAlignment(alignment); 7226e9cdb7SStephan Aßmus viewOptionsLabel->SetFont(be_bold_font); 7326e9cdb7SStephan Aßmus bgMoviesModeLabel->SetExplicitAlignment(alignment); 7426e9cdb7SStephan Aßmus bgMoviesModeLabel->SetFont(be_bold_font); 7526e9cdb7SStephan Aßmus 7626e9cdb7SStephan Aßmus fAutostartCB = new BCheckBox("chkboxAutostart", 77238df8fbSAdrien Destugues B_TRANSLATE("Automatically start playing"), 78238df8fbSAdrien Destugues new BMessage(M_SETTINGS_CHANGED)); 7926e9cdb7SStephan Aßmus 8026e9cdb7SStephan Aßmus fCloseWindowMoviesCB = new BCheckBox("chkBoxCloseWindowMovies", 81329daa44SJoachim Seemer B_TRANSLATE("Close window after playing video"), 82e65a6eb2SStephan Aßmus new BMessage(M_SETTINGS_CHANGED)); 8326e9cdb7SStephan Aßmus fCloseWindowSoundsCB = new BCheckBox("chkBoxCloseWindowSounds", 84329daa44SJoachim Seemer B_TRANSLATE("Close window after playing audio"), 85e65a6eb2SStephan Aßmus new BMessage(M_SETTINGS_CHANGED)); 8626e9cdb7SStephan Aßmus 8726e9cdb7SStephan Aßmus fLoopMoviesCB = new BCheckBox("chkBoxLoopMovie", 88329daa44SJoachim Seemer B_TRANSLATE("Loop video"), 89238df8fbSAdrien Destugues new BMessage(M_SETTINGS_CHANGED)); 9026e9cdb7SStephan Aßmus fLoopSoundsCB = new BCheckBox("chkBoxLoopSounds", 91329daa44SJoachim Seemer B_TRANSLATE("Loop audio"), 92238df8fbSAdrien Destugues new BMessage(M_SETTINGS_CHANGED)); 9326e9cdb7SStephan Aßmus 9426e9cdb7SStephan Aßmus fUseOverlaysCB = new BCheckBox("chkBoxUseOverlays", 95238df8fbSAdrien Destugues B_TRANSLATE("Use hardware video overlays if available"), 96e65a6eb2SStephan Aßmus new BMessage(M_SETTINGS_CHANGED)); 9726e9cdb7SStephan Aßmus fScaleBilinearCB = new BCheckBox("chkBoxScaleBilinear", 98238df8fbSAdrien Destugues B_TRANSLATE("Scale movies smoothly (non-overlay mode)"), 99e65a6eb2SStephan Aßmus new BMessage(M_SETTINGS_CHANGED)); 10026e9cdb7SStephan Aßmus 101341ea11eSStephan Aßmus fScaleFullscreenControlsCB = new BCheckBox("chkBoxScaleControls", 102329daa44SJoachim Seemer B_TRANSLATE("Scale controls in full screen mode"), 103e65a6eb2SStephan Aßmus new BMessage(M_SETTINGS_CHANGED)); 104e65a6eb2SStephan Aßmus 105e65a6eb2SStephan Aßmus fSubtitleSizeOP = new BOptionPopUp("subtitleSize", 10661698f2dSPhilippe Houdoin B_TRANSLATE("Subtitle size:"), new BMessage(M_SETTINGS_CHANGED)); 107238df8fbSAdrien Destugues fSubtitleSizeOP->AddOption( 108238df8fbSAdrien Destugues B_TRANSLATE("Small"), mpSettings::SUBTITLE_SIZE_SMALL); 109238df8fbSAdrien Destugues fSubtitleSizeOP->AddOption( 110238df8fbSAdrien Destugues B_TRANSLATE("Medium"), mpSettings::SUBTITLE_SIZE_MEDIUM); 111238df8fbSAdrien Destugues fSubtitleSizeOP->AddOption( 112238df8fbSAdrien Destugues B_TRANSLATE("Large"), mpSettings::SUBTITLE_SIZE_LARGE); 113e65a6eb2SStephan Aßmus 114e65a6eb2SStephan Aßmus fSubtitlePlacementOP = new BOptionPopUp("subtitlePlacement", 11561698f2dSPhilippe Houdoin B_TRANSLATE("Subtitle placement:"), new BMessage(M_SETTINGS_CHANGED)); 116238df8fbSAdrien Destugues fSubtitlePlacementOP->AddOption(B_TRANSLATE("Bottom of video"), 117e65a6eb2SStephan Aßmus mpSettings::SUBTITLE_PLACEMENT_BOTTOM_OF_VIDEO); 118238df8fbSAdrien Destugues fSubtitlePlacementOP->AddOption(B_TRANSLATE("Bottom of screen"), 119e65a6eb2SStephan Aßmus mpSettings::SUBTITLE_PLACEMENT_BOTTOM_OF_SCREEN); 120341ea11eSStephan Aßmus 12126e9cdb7SStephan Aßmus fFullVolumeBGMoviesRB = new BRadioButton("rdbtnfullvolume", 122238df8fbSAdrien Destugues B_TRANSLATE("Full volume"), new BMessage(M_SETTINGS_CHANGED)); 12326e9cdb7SStephan Aßmus 12426e9cdb7SStephan Aßmus fHalfVolumeBGMoviesRB = new BRadioButton("rdbtnhalfvolume", 125238df8fbSAdrien Destugues B_TRANSLATE("Low volume"), new BMessage(M_SETTINGS_CHANGED)); 12626e9cdb7SStephan Aßmus 12726e9cdb7SStephan Aßmus fMutedVolumeBGMoviesRB = new BRadioButton("rdbtnfullvolume", 128238df8fbSAdrien Destugues B_TRANSLATE("Muted"), new BMessage(M_SETTINGS_CHANGED)); 12926e9cdb7SStephan Aßmus 130238df8fbSAdrien Destugues fRevertB = new BButton("revert", B_TRANSLATE("Revert"), 13126e9cdb7SStephan Aßmus new BMessage(M_SETTINGS_REVERT)); 13226e9cdb7SStephan Aßmus 133238df8fbSAdrien Destugues BButton* cancelButton = new BButton("cancel", B_TRANSLATE("Cancel"), 13426e9cdb7SStephan Aßmus new BMessage(M_SETTINGS_CANCEL)); 13526e9cdb7SStephan Aßmus 136238df8fbSAdrien Destugues BButton* okButton = new BButton("ok", B_TRANSLATE("OK"), 13726e9cdb7SStephan Aßmus new BMessage(M_SETTINGS_SAVE)); 13826e9cdb7SStephan Aßmus okButton->MakeDefault(true); 13926e9cdb7SStephan Aßmus 14026e9cdb7SStephan Aßmus 14126e9cdb7SStephan Aßmus // Build the layout 14226e9cdb7SStephan Aßmus SetLayout(new BGroupLayout(B_HORIZONTAL)); 14326e9cdb7SStephan Aßmus 14426e9cdb7SStephan Aßmus AddChild(BGroupLayoutBuilder(B_VERTICAL, 0) 14526e9cdb7SStephan Aßmus .Add(BGroupLayoutBuilder(settingsLayout) 14626e9cdb7SStephan Aßmus .Add(playModeLabel) 14726e9cdb7SStephan Aßmus .Add(BGroupLayoutBuilder(B_HORIZONTAL, 0) 14826e9cdb7SStephan Aßmus .Add(BSpaceLayoutItem::CreateHorizontalStrut(10)) 14926e9cdb7SStephan Aßmus .Add(BGroupLayoutBuilder(B_VERTICAL, 0) 15026e9cdb7SStephan Aßmus .Add(fAutostartCB) 15126e9cdb7SStephan Aßmus .Add(BGridLayoutBuilder(5, 0) 15226e9cdb7SStephan Aßmus .Add(BSpaceLayoutItem::CreateHorizontalStrut(10), 0, 0) 15326e9cdb7SStephan Aßmus .Add(fCloseWindowMoviesCB, 1, 0) 15426e9cdb7SStephan Aßmus .Add(BSpaceLayoutItem::CreateHorizontalStrut(10), 0, 1) 15526e9cdb7SStephan Aßmus .Add(fCloseWindowSoundsCB, 1, 1) 15626e9cdb7SStephan Aßmus ) 15726e9cdb7SStephan Aßmus .Add(fLoopMoviesCB) 15826e9cdb7SStephan Aßmus .Add(fLoopSoundsCB) 15926e9cdb7SStephan Aßmus ) 16026e9cdb7SStephan Aßmus ) 16126e9cdb7SStephan Aßmus .Add(BSpaceLayoutItem::CreateVerticalStrut(5)) 16226e9cdb7SStephan Aßmus 16326e9cdb7SStephan Aßmus .Add(viewOptionsLabel) 16426e9cdb7SStephan Aßmus .Add(BGroupLayoutBuilder(B_HORIZONTAL, 0) 16526e9cdb7SStephan Aßmus .Add(BSpaceLayoutItem::CreateHorizontalStrut(10)) 16626e9cdb7SStephan Aßmus .Add(BGroupLayoutBuilder(B_VERTICAL, 0) 16726e9cdb7SStephan Aßmus .Add(fUseOverlaysCB) 16826e9cdb7SStephan Aßmus .Add(fScaleBilinearCB) 169341ea11eSStephan Aßmus .Add(fScaleFullscreenControlsCB) 170e65a6eb2SStephan Aßmus .Add(fSubtitleSizeOP) 171e65a6eb2SStephan Aßmus .Add(fSubtitlePlacementOP) 17226e9cdb7SStephan Aßmus ) 17326e9cdb7SStephan Aßmus ) 17426e9cdb7SStephan Aßmus .Add(BSpaceLayoutItem::CreateVerticalStrut(5)) 17526e9cdb7SStephan Aßmus 17626e9cdb7SStephan Aßmus .Add(bgMoviesModeLabel) 17726e9cdb7SStephan Aßmus .Add(BGroupLayoutBuilder(B_HORIZONTAL, 0) 17826e9cdb7SStephan Aßmus .Add(BSpaceLayoutItem::CreateHorizontalStrut(10)) 17926e9cdb7SStephan Aßmus .Add(BGroupLayoutBuilder(B_VERTICAL, 0) 18026e9cdb7SStephan Aßmus .Add(fFullVolumeBGMoviesRB) 18126e9cdb7SStephan Aßmus .Add(fHalfVolumeBGMoviesRB) 18226e9cdb7SStephan Aßmus .Add(fMutedVolumeBGMoviesRB) 18326e9cdb7SStephan Aßmus ) 18426e9cdb7SStephan Aßmus ) 18526e9cdb7SStephan Aßmus .Add(BSpaceLayoutItem::CreateVerticalStrut(5)) 18626e9cdb7SStephan Aßmus 18726e9cdb7SStephan Aßmus .SetInsets(5, 5, 15, 5) 18826e9cdb7SStephan Aßmus ) 18926e9cdb7SStephan Aßmus .Add(BGroupLayoutBuilder(buttonLayout) 190613ecaf5SStephan Aßmus .Add(fRevertB) 19126e9cdb7SStephan Aßmus .AddGlue() 19226e9cdb7SStephan Aßmus .Add(cancelButton) 19326e9cdb7SStephan Aßmus .Add(okButton) 19426e9cdb7SStephan Aßmus .SetInsets(5, 5, 5, 5) 19526e9cdb7SStephan Aßmus ) 19626e9cdb7SStephan Aßmus ); 1974d3ebaccSStephan Aßmus } 1984d3ebaccSStephan Aßmus 1994d3ebaccSStephan Aßmus 2004d3ebaccSStephan Aßmus SettingsWindow::~SettingsWindow() 2014d3ebaccSStephan Aßmus { 2024d3ebaccSStephan Aßmus } 2034d3ebaccSStephan Aßmus 2044d3ebaccSStephan Aßmus 2054d3ebaccSStephan Aßmus void 20626e9cdb7SStephan Aßmus SettingsWindow::Show() 2074d3ebaccSStephan Aßmus { 208ac6b0fc9SStephan Aßmus // The Settings that we want to be able to revert to is the state at which 209ac6b0fc9SStephan Aßmus // the SettingsWindow was shown. So the current settings are stored in 210ac6b0fc9SStephan Aßmus // fLastSettings. 211*a178983dSAxel Dörfler Settings::Default()->Get(fLastSettings); 21226e9cdb7SStephan Aßmus fSettings = fLastSettings; 21326e9cdb7SStephan Aßmus AdoptSettings(); 21426e9cdb7SStephan Aßmus 21526e9cdb7SStephan Aßmus BWindow::Show(); 2164d3ebaccSStephan Aßmus } 2174d3ebaccSStephan Aßmus 2184d3ebaccSStephan Aßmus 2194d3ebaccSStephan Aßmus bool 2204d3ebaccSStephan Aßmus SettingsWindow::QuitRequested() 2214d3ebaccSStephan Aßmus { 2224d3ebaccSStephan Aßmus Hide(); 2234d3ebaccSStephan Aßmus return false; 2244d3ebaccSStephan Aßmus } 2254d3ebaccSStephan Aßmus 2264d3ebaccSStephan Aßmus 2274d3ebaccSStephan Aßmus void 2284d3ebaccSStephan Aßmus SettingsWindow::MessageReceived(BMessage* message) 2294d3ebaccSStephan Aßmus { 2304d3ebaccSStephan Aßmus switch (message->what) { 231e65a6eb2SStephan Aßmus case M_SETTINGS_CHANGED: 23226e9cdb7SStephan Aßmus ApplySettings(); 23326e9cdb7SStephan Aßmus break; 23426e9cdb7SStephan Aßmus 2354d3ebaccSStephan Aßmus case B_KEY_DOWN: 2364d3ebaccSStephan Aßmus int32 index; 23726e9cdb7SStephan Aßmus if (message->FindInt32("key", &index) == B_OK && index == 1) 2384d3ebaccSStephan Aßmus PostMessage(B_QUIT_REQUESTED); 2394d3ebaccSStephan Aßmus break; 24026e9cdb7SStephan Aßmus 24126e9cdb7SStephan Aßmus case M_SETTINGS_REVERT: 24226e9cdb7SStephan Aßmus Revert(); 24326e9cdb7SStephan Aßmus break; 24426e9cdb7SStephan Aßmus 2454d3ebaccSStephan Aßmus case M_SETTINGS_CANCEL: 24626e9cdb7SStephan Aßmus Revert(); 24726e9cdb7SStephan Aßmus // fall through 24826e9cdb7SStephan Aßmus case M_SETTINGS_SAVE: 2494d3ebaccSStephan Aßmus PostMessage(B_QUIT_REQUESTED); 2504d3ebaccSStephan Aßmus break; 25126e9cdb7SStephan Aßmus 2524d3ebaccSStephan Aßmus default: 2534d3ebaccSStephan Aßmus BWindow::MessageReceived(message); 2544d3ebaccSStephan Aßmus break; 2554d3ebaccSStephan Aßmus } 2564d3ebaccSStephan Aßmus } 25726e9cdb7SStephan Aßmus 25826e9cdb7SStephan Aßmus 25926e9cdb7SStephan Aßmus void 26026e9cdb7SStephan Aßmus SettingsWindow::AdoptSettings() 26126e9cdb7SStephan Aßmus { 26226e9cdb7SStephan Aßmus fAutostartCB->SetValue(fSettings.autostart); 26326e9cdb7SStephan Aßmus fCloseWindowMoviesCB->SetValue(fSettings.closeWhenDonePlayingMovie); 26426e9cdb7SStephan Aßmus fCloseWindowSoundsCB->SetValue(fSettings.closeWhenDonePlayingSound); 26526e9cdb7SStephan Aßmus fLoopMoviesCB->SetValue(fSettings.loopMovie); 26626e9cdb7SStephan Aßmus fLoopSoundsCB->SetValue(fSettings.loopSound); 26726e9cdb7SStephan Aßmus 26826e9cdb7SStephan Aßmus fUseOverlaysCB->SetValue(fSettings.useOverlays); 26926e9cdb7SStephan Aßmus fScaleBilinearCB->SetValue(fSettings.scaleBilinear); 270341ea11eSStephan Aßmus fScaleFullscreenControlsCB->SetValue(fSettings.scaleFullscreenControls); 27126e9cdb7SStephan Aßmus 272e65a6eb2SStephan Aßmus fSubtitleSizeOP->SetValue(fSettings.subtitleSize); 273e65a6eb2SStephan Aßmus fSubtitlePlacementOP->SetValue(fSettings.subtitlePlacement); 274e65a6eb2SStephan Aßmus 27526e9cdb7SStephan Aßmus fFullVolumeBGMoviesRB->SetValue(fSettings.backgroundMovieVolumeMode 27626e9cdb7SStephan Aßmus == mpSettings::BG_MOVIES_FULL_VOLUME); 27726e9cdb7SStephan Aßmus fHalfVolumeBGMoviesRB->SetValue(fSettings.backgroundMovieVolumeMode 27826e9cdb7SStephan Aßmus == mpSettings::BG_MOVIES_HALF_VLUME); 27926e9cdb7SStephan Aßmus fMutedVolumeBGMoviesRB->SetValue(fSettings.backgroundMovieVolumeMode 28026e9cdb7SStephan Aßmus == mpSettings::BG_MOVIES_MUTED); 281613ecaf5SStephan Aßmus 282613ecaf5SStephan Aßmus fRevertB->SetEnabled(IsRevertable()); 28326e9cdb7SStephan Aßmus } 28426e9cdb7SStephan Aßmus 28526e9cdb7SStephan Aßmus 28626e9cdb7SStephan Aßmus void 28726e9cdb7SStephan Aßmus SettingsWindow::ApplySettings() 28826e9cdb7SStephan Aßmus { 28926e9cdb7SStephan Aßmus fSettings.autostart = fAutostartCB->Value() == B_CONTROL_ON; 29026e9cdb7SStephan Aßmus fSettings.closeWhenDonePlayingMovie 29126e9cdb7SStephan Aßmus = fCloseWindowMoviesCB->Value() == B_CONTROL_ON; 29226e9cdb7SStephan Aßmus fSettings.closeWhenDonePlayingSound 29326e9cdb7SStephan Aßmus = fCloseWindowSoundsCB->Value() == B_CONTROL_ON; 29426e9cdb7SStephan Aßmus fSettings.loopMovie = fLoopMoviesCB->Value() == B_CONTROL_ON; 29526e9cdb7SStephan Aßmus fSettings.loopSound = fLoopSoundsCB->Value() == B_CONTROL_ON; 29626e9cdb7SStephan Aßmus 29726e9cdb7SStephan Aßmus fSettings.useOverlays = fUseOverlaysCB->Value() == B_CONTROL_ON; 29826e9cdb7SStephan Aßmus fSettings.scaleBilinear = fScaleBilinearCB->Value() == B_CONTROL_ON; 299341ea11eSStephan Aßmus fSettings.scaleFullscreenControls 300341ea11eSStephan Aßmus = fScaleFullscreenControlsCB->Value() == B_CONTROL_ON; 30126e9cdb7SStephan Aßmus 302e65a6eb2SStephan Aßmus fSettings.subtitleSize = fSubtitleSizeOP->Value(); 303e65a6eb2SStephan Aßmus fSettings.subtitlePlacement = fSubtitlePlacementOP->Value(); 304e65a6eb2SStephan Aßmus 30526e9cdb7SStephan Aßmus if (fFullVolumeBGMoviesRB->Value() == B_CONTROL_ON) { 30626e9cdb7SStephan Aßmus fSettings.backgroundMovieVolumeMode 30726e9cdb7SStephan Aßmus = mpSettings::BG_MOVIES_FULL_VOLUME; 30826e9cdb7SStephan Aßmus } else if (fHalfVolumeBGMoviesRB->Value() == B_CONTROL_ON) { 30926e9cdb7SStephan Aßmus fSettings.backgroundMovieVolumeMode 31026e9cdb7SStephan Aßmus = mpSettings::BG_MOVIES_HALF_VLUME; 31126e9cdb7SStephan Aßmus } else if (fMutedVolumeBGMoviesRB->Value() == B_CONTROL_ON) { 31226e9cdb7SStephan Aßmus fSettings.backgroundMovieVolumeMode 31326e9cdb7SStephan Aßmus = mpSettings::BG_MOVIES_MUTED; 31426e9cdb7SStephan Aßmus } 31526e9cdb7SStephan Aßmus 316*a178983dSAxel Dörfler Settings::Default()->Update(fSettings); 317613ecaf5SStephan Aßmus 318613ecaf5SStephan Aßmus fRevertB->SetEnabled(IsRevertable()); 31926e9cdb7SStephan Aßmus } 32026e9cdb7SStephan Aßmus 32126e9cdb7SStephan Aßmus 32226e9cdb7SStephan Aßmus void 32326e9cdb7SStephan Aßmus SettingsWindow::Revert() 32426e9cdb7SStephan Aßmus { 32526e9cdb7SStephan Aßmus fSettings = fLastSettings; 32626e9cdb7SStephan Aßmus AdoptSettings(); 327*a178983dSAxel Dörfler Settings::Default()->Update(fSettings); 32826e9cdb7SStephan Aßmus } 32926e9cdb7SStephan Aßmus 330613ecaf5SStephan Aßmus 331613ecaf5SStephan Aßmus bool 332613ecaf5SStephan Aßmus SettingsWindow::IsRevertable() const 333613ecaf5SStephan Aßmus { 334613ecaf5SStephan Aßmus return fSettings != fLastSettings; 335613ecaf5SStephan Aßmus } 336613ecaf5SStephan Aßmus 337