public override void SaveSettings() { using (Settings xmlwriter = new MPSettings()) { #region Player Settings xmlwriter.SetValue("audioplayer", "playerId", audioPlayerComboBox.SelectedIndex); xmlwriter.SetValue("audioplayer", "sounddevice", (soundDeviceComboBox.SelectedItem as SoundDeviceItem).Name); xmlwriter.SetValue("audioplayer", "sounddeviceid", (soundDeviceComboBox.SelectedItem as SoundDeviceItem).ID); xmlwriter.SetValue("audioplayer", "crossfade", trackBarCrossfade.Value); xmlwriter.SetValue("audioplayer", "buffering", trackBarBuffering.Value); xmlwriter.SetValueAsBool("audioplayer", "useSkipSteps", UseSkipStepsCheckBox.Checked); xmlwriter.SetValueAsBool("audioplayer", "fadeOnStartStop", FadeOnStartStopChkbox.Checked); xmlwriter.SetValueAsBool("audioplayer", "gaplessPlayback", GaplessPlaybackChkBox.Checked); xmlwriter.SetValueAsBool("audioplayer", "enableReplayGain", EnableReplayGainChkBox.Checked); xmlwriter.SetValueAsBool("audioplayer", "enableAlbumReplayGain", EnableAlbumReplayGainChkBox.Checked); xmlwriter.SetValue("audioplayer", "streamOutputLevel", StreamOutputLevelNud.Value); xmlwriter.SetValue("audioplayer", "asiobalance", hScrollBarBalance.Value); xmlwriter.SetValueAsBool("audioplayer", "wasapiExclusive", WasapiExclusiveModeCkBox.Checked); xmlwriter.SetValue("audioplayer", "wasApiSpeakers", WasApiSpeakersCombo.SelectedIndex); xmlwriter.SetValue("audioplayer", "upMixMono", cbUpmixMono.SelectedIndex); xmlwriter.SetValue("audioplayer", "upMixStereo", cbUpmixStereo.SelectedIndex); xmlwriter.SetValue("audioplayer", "upMixQuadro", cbUpmixQuadro.SelectedIndex); xmlwriter.SetValue("audioplayer", "upMixFiveDotOne", cbUpmixFiveDotOne.SelectedIndex); xmlwriter.SetValueAsBool("audioplayer", "enableResume", chkEnableResumeSupport.Checked); xmlwriter.SetValue("audioplayer", "resumeAfter", tbResumeAfter.Text); xmlwriter.SetValue("audioplayer", "resumeSelect", cbResumeSelect.Text); xmlwriter.SetValue("audioplayer", "resumeSearch", tbResumeSearchValue.Text); #endregion #region Visualization Settings if (IVizMgr != null && VisualizationsCmbBox.SelectedIndex > 0) // Something else than "None" selected { List <VisualizationInfo> vizPluginsInfo = IVizMgr.VisualizationPluginsInfo; int selIndex = VisualizationsCmbBox.SelectedIndex; if (selIndex < 0 || selIndex >= vizPluginsInfo.Count) { selIndex = 0; } xmlwriter.SetValue("musicvisualization", "name", vizPluginsInfo[selIndex].Name); xmlwriter.SetValue("musicvisualization", "vizType", ((int)vizPluginsInfo[selIndex].VisualizationType).ToString()); xmlwriter.SetValue("musicvisualization", "path", vizPluginsInfo[selIndex].FilePath); xmlwriter.SetValue("musicvisualization", "clsid", vizPluginsInfo[selIndex].CLSID); xmlwriter.SetValue("musicvisualization", "preset", vizPluginsInfo[selIndex].PresetIndex.ToString()); xmlwriter.SetValueAsBool("musicvisualization", "useOpenGL", ckUseOpenGL.Checked); xmlwriter.SetValueAsBool("musicvisualization", "useCover", ckUseCover.Checked); xmlwriter.SetValue("musicvisualization", "renderTiming", soniqueRenderTiming.Value.ToString()); xmlwriter.SetValue("musicvisualization", "fftSensitivity", winampFFTsensitivity.Value.ToString()); xmlwriter.SetValue("musicvisualization", "viewPort", comboViewPortSizes.SelectedIndex.ToString()); xmlwriter.SetValueAsBool("musicfiles", "doVisualisation", true); } else if (VizPluginInfo.VisualizationType != VisualizationInfo.PluginType.None) // This is the case, when we started Config without activating the Vis Tab { xmlwriter.SetValue("musicvisualization", "name", VizPluginInfo.Name); xmlwriter.SetValue("musicvisualization", "vizType", ((int)VizPluginInfo.VisualizationType).ToString()); xmlwriter.SetValue("musicvisualization", "path", VizPluginInfo.FilePath); xmlwriter.SetValue("musicvisualization", "clsid", VizPluginInfo.CLSID); xmlwriter.SetValue("musicvisualization", "preset", VizPluginInfo.PresetIndex.ToString()); xmlwriter.SetValueAsBool("musicvisualization", "useOpenGL", ckUseOpenGL.Checked); xmlwriter.SetValueAsBool("musicvisualization", "useCover", ckUseCover.Checked); xmlwriter.SetValue("musicvisualization", "renderTiming", soniqueRenderTiming.Value.ToString()); xmlwriter.SetValue("musicvisualization", "fftSensitivity", winampFFTsensitivity.Value.ToString()); xmlwriter.SetValue("musicvisualization", "viewPort", comboViewPortSizes.SelectedIndex.ToString()); xmlwriter.SetValueAsBool("musicfiles", "doVisualisation", true); } else { xmlwriter.SetValue("musicvisualization", "name", ""); xmlwriter.SetValue("musicvisualization", "vizType", 0); xmlwriter.SetValue("musicvisualization", "path", ""); xmlwriter.SetValue("musicvisualization", "clsid", ""); xmlwriter.SetValue("musicvisualization", "preset", ""); xmlwriter.SetValueAsBool("musicvisualization", "useOpenGL", false); xmlwriter.SetValueAsBool("musicvisualization", "useCover", false); xmlwriter.SetValue("musicvisualization", "renderTiming", ""); xmlwriter.SetValue("musicvisualization", "fftSensitivity", ""); xmlwriter.SetValue("musicvisualization", "viewPort", ""); xmlwriter.SetValueAsBool("musicfiles", "doVisualisation", false); } xmlwriter.SetValue("musicvisualization", "fps", VisualizationFpsNud.Value); xmlwriter.SetValueAsBool("musicvisualization", "enableStatusOverlays", EnableStatusOverlaysChkBox.Checked); xmlwriter.SetValueAsBool("musicvisualization", "showTrackInfo", ShowTrackInfoChkBox.Checked); #endregion #region Playlist Settings xmlwriter.SetValue("music", "playlists", playlistFolderTextBox.Text); xmlwriter.SetValueAsBool("musicfiles", "repeat", repeatPlaylistCheckBox.Checked); xmlwriter.SetValueAsBool("musicfiles", "autoshuffle", autoShuffleCheckBox.Checked); xmlwriter.SetValueAsBool("musicfiles", "savePlaylistOnExit", SavePlaylistOnExitChkBox.Checked); xmlwriter.SetValueAsBool("musicfiles", "resumePlaylistOnMusicEnter", ResumePlaylistChkBox.Checked); xmlwriter.SetValueAsBool("musicfiles", "playlistIsCurrent", PlaylistCurrentCheckBox.Checked); //Play behaviour xmlwriter.SetValue("musicfiles", "selectOption", cmbSelectOption.Text.ToLowerInvariant()); xmlwriter.SetValueAsBool("musicfiles", "addall", chkAddAllTracks.Checked); #endregion #region Misc Settings string playNowJumpTo = string.Empty; switch (PlayNowJumpToCmbBox.Text) { case JumpToOption0: playNowJumpTo = JumpToValue0; break; case JumpToOption1: playNowJumpTo = JumpToValue1; break; case JumpToOption2: playNowJumpTo = JumpToValue2; break; case JumpToOption3: playNowJumpTo = JumpToValue3; break; case JumpToOption4: playNowJumpTo = JumpToValue4; break; case JumpToOption5: playNowJumpTo = JumpToValue5; break; case JumpToOption6: playNowJumpTo = JumpToValue6; break; default: playNowJumpTo = JumpToValue0; break; } xmlwriter.SetValue("music", "playnowjumpto", playNowJumpTo); xmlwriter.SetValueAsBool("musicmisc", "showVisInNowPlaying", ShowVizInNowPlayingChkBox.Checked); xmlwriter.SetValueAsBool("musicmisc", "lookupSimilarTracks", !chkDisableSimilarTrackLookups.Checked); string vuMeter = VUMeterValue0; if (radioButtonVUAnalog.Checked) { vuMeter = VUMeterValue1; } else if (radioButtonVULed.Checked) { vuMeter = VUMeterValue2; } xmlwriter.SetValue("musicmisc", "vumeter", vuMeter); #endregion } // Make sure we shut down the viz engine if (IVizMgr != null) { IVizMgr.Stop(); IVizMgr.ShutDown(); } }