private void SaveSettings() { try { Settings.RemoteKeyDialogContextMenu = cbRemoteKey.SelectedIndex; Settings.DefaultPlaybackDevice = cbStartupPlaybackDevices.Text; Settings.LAVaudioDelayControlsInContextMenu = chkEnableLavAudioDelayControl.Checked; Settings.LAVbitstreamAlwaysShowToggleInContextMenu = chkAlwaysShowLavBitstreamToggle.Checked; Settings.LAVbitstreamPerDevice = chkEnableLAVbitstreamPerDevice.Checked; string formatedBitStreamPropertiesList = ""; if (lvBitstreamDevices.Items.Count > 0) { foreach (ListViewItem item in lvBitstreamDevices.Items) { if (string.IsNullOrEmpty(formatedBitStreamPropertiesList)) { formatedBitStreamPropertiesList = string.Format("{0}^{1}^{2}", item.Text, item.SubItems[1].Text, item.SubItems[2].Text); } else { formatedBitStreamPropertiesList = string.Format("{0}|{1}^{2}^{3}", formatedBitStreamPropertiesList, item.Text, item.SubItems[1].Text, item.SubItems[2].Text); } } } Settings.LAVbitstreamPropertyList = formatedBitStreamPropertiesList; Settings.SaveSettings(); Close(); } catch (Exception ex) { MessageBox.Show("Error occured during SaveSettings()"); MessageBox.Show(ex.Message); } }
private void DialogContextMenu() { try { // Showing context menu var dlg = (GUIDialogMenu)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_MENU); dlg.Reset(); dlg.SetHeading("Audio switcher"); dlg.Add(new GUIListItem("Change playback device")); if (Settings.LAVbitstreamPerDevice || Settings.LAVbitstreamAlwaysShowToggleInContextMenu) { bool bitstreamingIsEnabled = Convert.ToBoolean(Convert.ToInt16(IsLavBitstreamingEnabled())); dlg.Add(bitstreamingIsEnabled ? new GUIListItem("Disable LAV bitstreaming") : new GUIListItem("Enable LAV bitstreaming")); } if (Settings.LAVaudioDelayControlsInContextMenu) { ReadAllLavDelaySettings(); if (!Settings.LAVaudioDelayEnabled) { dlg.Add(new GUIListItem("Enable LAV audio delay")); } else { dlg.Add(new GUIListItem(string.Format("Change LAV audio delay ( {0}ms )", Settings.LAVaudioDelay))); dlg.Add(new GUIListItem("Disable LAV audio delay")); } } dlg.SelectedLabel = 0; dlg.DoModal(GUIWindowManager.ActiveWindow); if (dlg.SelectedLabelText == "Change playback device") { var devices = GetPlaybackDevices(); var dlgSetPlaybackDevice = (GUIDialogMenu)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_MENU); dlgSetPlaybackDevice.Reset(); dlgSetPlaybackDevice.SetHeading("Select playback device"); dlgSetPlaybackDevice.SelectedLabel = 0; var i = 0; if (devices != null) { foreach (var device in devices) { dlgSetPlaybackDevice.Add(device.FullName); if (device.IsDefaultDevice) { dlgSetPlaybackDevice.SelectedLabel = i; } i++; } } else { dlgSetPlaybackDevice.Add("No playback devices found!"); } dlgSetPlaybackDevice.DoModal(GUIWindowManager.ActiveWindow); if (dlgSetPlaybackDevice.SelectedLabel >= 0) { var selectedDevice = dlgSetPlaybackDevice.SelectedLabelText; if (selectedDevice != "No playback devices found!" && !string.IsNullOrEmpty(selectedDevice)) { var device = devices.ElementAt(dlgSetPlaybackDevice.SelectedLabel); SetPlaybackDevice(device); } } } if (dlg.SelectedLabelText == "Enable LAV bitstreaming") { ToggleLAVBitstreaming(true, "", true); } if (dlg.SelectedLabelText == "Disable LAV bitstreaming") { ToggleLAVBitstreaming(false, "", true); } if (dlg.SelectedLabelText.StartsWith("Disable LAV audio delay")) { SetLavAudioDelay(false, ""); RestartVideoPlayback(false, ""); } if (dlg.SelectedLabelText == "Enable LAV audio delay" || dlg.SelectedLabelText.StartsWith("Change LAV audio delay")) { SelectLavAudioDelay(); } // Save settings Settings.SaveSettings(); } catch (Exception ex) { Log.Error("Error occured during DialogContextMenu()"); Log.Error(ex.Message); } }