Load and save settings
This commit is contained in:
		
							
								
								
									
										86
									
								
								Properties/Settings.Designer.cs
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								Properties/Settings.Designer.cs
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,86 @@ | ||||
| //------------------------------------------------------------------------------ | ||||
| // <auto-generated> | ||||
| //     This code was generated by a tool. | ||||
| //     Runtime Version:4.0.30319.42000 | ||||
| // | ||||
| //     Changes to this file may cause incorrect behavior and will be lost if | ||||
| //     the code is regenerated. | ||||
| // </auto-generated> | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| namespace unison.Properties { | ||||
|      | ||||
|      | ||||
|     [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] | ||||
|     [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")] | ||||
|     internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { | ||||
|          | ||||
|         private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); | ||||
|          | ||||
|         public static Settings Default { | ||||
|             get { | ||||
|                 return defaultInstance; | ||||
|             } | ||||
|         } | ||||
|          | ||||
|         [global::System.Configuration.UserScopedSettingAttribute()] | ||||
|         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] | ||||
|         [global::System.Configuration.DefaultSettingValueAttribute("192.168.0.1")] | ||||
|         public string mpd_host { | ||||
|             get { | ||||
|                 return ((string)(this["mpd_host"])); | ||||
|             } | ||||
|             set { | ||||
|                 this["mpd_host"] = value; | ||||
|             } | ||||
|         } | ||||
|          | ||||
|         [global::System.Configuration.UserScopedSettingAttribute()] | ||||
|         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] | ||||
|         [global::System.Configuration.DefaultSettingValueAttribute("6600")] | ||||
|         public int mpd_port { | ||||
|             get { | ||||
|                 return ((int)(this["mpd_port"])); | ||||
|             } | ||||
|             set { | ||||
|                 this["mpd_port"] = value; | ||||
|             } | ||||
|         } | ||||
|          | ||||
|         [global::System.Configuration.UserScopedSettingAttribute()] | ||||
|         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] | ||||
|         [global::System.Configuration.DefaultSettingValueAttribute("")] | ||||
|         public string mpd_password { | ||||
|             get { | ||||
|                 return ((string)(this["mpd_password"])); | ||||
|             } | ||||
|             set { | ||||
|                 this["mpd_password"] = value; | ||||
|             } | ||||
|         } | ||||
|          | ||||
|         [global::System.Configuration.UserScopedSettingAttribute()] | ||||
|         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] | ||||
|         [global::System.Configuration.DefaultSettingValueAttribute("False")] | ||||
|         public bool snapcast_startup { | ||||
|             get { | ||||
|                 return ((bool)(this["snapcast_startup"])); | ||||
|             } | ||||
|             set { | ||||
|                 this["snapcast_startup"] = value; | ||||
|             } | ||||
|         } | ||||
|          | ||||
|         [global::System.Configuration.UserScopedSettingAttribute()] | ||||
|         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] | ||||
|         [global::System.Configuration.DefaultSettingValueAttribute("snapclient_0.25.0-1_win64")] | ||||
|         public string snapcast_path { | ||||
|             get { | ||||
|                 return ((string)(this["snapcast_path"])); | ||||
|             } | ||||
|             set { | ||||
|                 this["snapcast_path"] = value; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
							
								
								
									
										21
									
								
								Properties/Settings.settings
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								Properties/Settings.settings
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | ||||
| <?xml version='1.0' encoding='utf-8'?> | ||||
| <SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="unison.Properties" GeneratedClassName="Settings"> | ||||
|   <Profiles /> | ||||
|   <Settings> | ||||
|     <Setting Name="mpd_host" Type="System.String" Scope="User"> | ||||
|       <Value Profile="(Default)">192.168.0.1</Value> | ||||
|     </Setting> | ||||
|     <Setting Name="mpd_port" Type="System.Int32" Scope="User"> | ||||
|       <Value Profile="(Default)">6600</Value> | ||||
|     </Setting> | ||||
|     <Setting Name="mpd_password" Type="System.String" Scope="User"> | ||||
|       <Value Profile="(Default)" /> | ||||
|     </Setting> | ||||
|     <Setting Name="snapcast_startup" Type="System.Boolean" Scope="User"> | ||||
|       <Value Profile="(Default)">False</Value> | ||||
|     </Setting> | ||||
|     <Setting Name="snapcast_path" Type="System.String" Scope="User"> | ||||
|       <Value Profile="(Default)">snapclient_0.25.0-1_win64</Value> | ||||
|     </Setting> | ||||
|   </Settings> | ||||
| </SettingsFile> | ||||
| @@ -22,17 +22,17 @@ | ||||
|                                 <StackPanel> | ||||
|                                     <StackPanel> | ||||
|                                         <TextBlock Text="Host" TextWrapping="Wrap" Margin="5,0,0,0"/> | ||||
|                                         <TextBox Text="192.168.0.1" TextWrapping="Wrap" Width="250" Margin="10,2,0,0"/> | ||||
|                                         <TextBox x:Name="MpdHost" TextWrapping="Wrap" Width="250" Margin="10,2,0,0"/> | ||||
|                                     </StackPanel> | ||||
|  | ||||
|                                     <StackPanel Margin="0,5,0,0"> | ||||
|                                         <TextBlock Text="Port" TextWrapping="Wrap" Margin="5,0,0,0"/> | ||||
|                                         <TextBox Text="6600" TextWrapping="Wrap" Width="250" Margin="10,2,0,0"/> | ||||
|                                         <TextBox x:Name="MpdPort" MaxLength="5" PreviewTextInput="NumberValidationTextBox" TextWrapping="Wrap" Width="250" Margin="10,2,0,0"/> | ||||
|                                     </StackPanel> | ||||
|  | ||||
|                                     <StackPanel Margin="0,5,0,0"> | ||||
|                                         <TextBlock Text="Password" TextWrapping="Wrap" Margin="5,0,0,0"/> | ||||
|                                         <TextBox Text="" TextWrapping="Wrap" Width="250" Margin="10,2,0,0"/> | ||||
|                                         <TextBox x:Name="MpdPassword" TextWrapping="Wrap" Width="250" Margin="10,2,0,0"/> | ||||
|                                     </StackPanel> | ||||
|                                     <Button Content="Connect" Margin="0,10,0,0" Width="120"/> | ||||
|                                 </StackPanel> | ||||
| @@ -52,15 +52,15 @@ | ||||
|                             <Grid VerticalAlignment="Top"> | ||||
|                                 <StackPanel> | ||||
|                                     <StackPanel> | ||||
|                                         <CheckBox Margin="5, 5, 0, 0"> | ||||
|                                         <CheckBox x:Name="SnapcastStartup" Margin="5, 5, 0, 0"> | ||||
|                                             <TextBlock Text="Launch at startup" TextWrapping="Wrap"/> | ||||
|                                         </CheckBox> | ||||
|                                         <TextBlock Text="Executable path" TextWrapping="Wrap" Margin="5,5,0,0"/> | ||||
|                                         <TextBox Text="snapclient_0.25.0-1_win64" TextWrapping="Wrap" Width="250" Margin="10,2,0,0"/> | ||||
|                                         <TextBlock TextWrapping="Wrap" Margin="5,5,0,0" TextAlignment="Left" Width="250"> | ||||
|                                         <TextBox x:Name="SnapcastPath" TextWrapping="Wrap" Width="350" Margin="10,2,5,0"/> | ||||
|                                         <TextBlock TextWrapping="Wrap" Margin="5,5,0,0" TextAlignment="Left" Width="350"> | ||||
|                                             You can change to your own locally installed version of the Snapcast client with an <Run FontStyle="Italic" FontWeight="DemiBold">absolute</Run> path. | ||||
|                                         </TextBlock> | ||||
|                                         <Button Content="Reset" Margin="0,10,0,0" Width="120"/> | ||||
|                                         <Button Content="Reset" Margin="0,10,0,0" Width="120" Click="SnapcastReset_Clicked"/> | ||||
|                                     </StackPanel> | ||||
|                                 </StackPanel> | ||||
|                             </Grid> | ||||
|   | ||||
| @@ -2,16 +2,20 @@ | ||||
| using System.Diagnostics; | ||||
| using System.IO; | ||||
| using System.Reflection; | ||||
| using System.Text.RegularExpressions; | ||||
| using System.Windows; | ||||
| using System.Windows.Input; | ||||
| using System.Windows.Navigation; | ||||
|  | ||||
| namespace unison | ||||
| { | ||||
|     public partial class Settings : Window | ||||
|     { | ||||
|         public string GetVersion => Assembly.GetEntryAssembly().GetCustomAttribute<AssemblyInformationalVersionAttribute>().InformationalVersion; | ||||
|         private string defaultSnapcast = "snapclient_0.25.0-1_win64"; | ||||
|  | ||||
|         public string GetLicense | ||||
|         public static string GetVersion => Assembly.GetEntryAssembly().GetCustomAttribute<AssemblyInformationalVersionAttribute>().InformationalVersion; | ||||
|  | ||||
|         public static string GetLicense | ||||
|         { | ||||
|             get | ||||
|             { | ||||
| @@ -19,7 +23,7 @@ namespace unison | ||||
|                 { | ||||
|                     StreamReader Reader = new("LICENSE"); | ||||
|                     string file = ""; | ||||
|                     file = file + Reader.ReadToEnd(); | ||||
|                     file += Reader.ReadToEnd(); | ||||
|                     return file; | ||||
|                 } | ||||
|                 catch (IOException e) | ||||
| @@ -35,6 +39,18 @@ namespace unison | ||||
|             DataContext = this; | ||||
|  | ||||
|             WindowState = WindowState.Minimized; | ||||
|  | ||||
|             MpdHost.Text = Properties.Settings.Default.mpd_host; | ||||
|             MpdPort.Text = Properties.Settings.Default.mpd_port.ToString(); | ||||
|             MpdPassword.Text = Properties.Settings.Default.mpd_password; | ||||
|             SnapcastStartup.IsChecked = Properties.Settings.Default.snapcast_startup; | ||||
|             SnapcastPath.Text = Properties.Settings.Default.snapcast_path; | ||||
|         } | ||||
|  | ||||
|         private void NumberValidationTextBox(object sender, TextCompositionEventArgs e) | ||||
|         { | ||||
|             Regex regex = new Regex("[^0-9]+"); | ||||
|             e.Handled = regex.IsMatch(e.Text); | ||||
|         } | ||||
|  | ||||
|         private void Hyperlink_RequestNavigate(object sender, RequestNavigateEventArgs e) | ||||
| @@ -45,9 +61,22 @@ namespace unison | ||||
|             e.Handled = true; | ||||
|         } | ||||
|  | ||||
|         private void SnapcastReset_Clicked(object sender, RoutedEventArgs e) | ||||
|         { | ||||
|             SnapcastPath.Text = defaultSnapcast; | ||||
|         } | ||||
|  | ||||
|         private void Window_Closing(object sender, CancelEventArgs e) | ||||
|         { | ||||
|             e.Cancel = true; | ||||
|  | ||||
|             Properties.Settings.Default.mpd_host = MpdHost.Text; | ||||
|             Properties.Settings.Default.mpd_port = int.Parse(MpdPort.Text); | ||||
|             Properties.Settings.Default.mpd_password = MpdPassword.Text; | ||||
|             Properties.Settings.Default.snapcast_startup = (bool)SnapcastStartup.IsChecked; | ||||
|             Properties.Settings.Default.snapcast_path = SnapcastPath.Text; | ||||
|             Properties.Settings.Default.Save(); | ||||
|  | ||||
|             WindowState = WindowState.Minimized; | ||||
|             Hide(); | ||||
|         } | ||||
|   | ||||
| @@ -8,9 +8,9 @@ namespace unison | ||||
| { | ||||
|     public class SystrayViewModel : INotifyPropertyChanged | ||||
|     { | ||||
|         public string GetAppText => "unison v" + Assembly.GetEntryAssembly().GetCustomAttribute<AssemblyInformationalVersionAttribute>().InformationalVersion; | ||||
|         public static string GetAppText => "unison v" + Assembly.GetEntryAssembly().GetCustomAttribute<AssemblyInformationalVersionAttribute>().InformationalVersion; | ||||
|  | ||||
|         public ICommand ShowWindowCommand => new DelegateCommand | ||||
|         public static ICommand ShowWindowCommand => new DelegateCommand | ||||
|         { | ||||
|             CommandAction = () => | ||||
|             { | ||||
| @@ -24,7 +24,7 @@ namespace unison | ||||
|             CanExecuteFunc = () => true | ||||
|         }; | ||||
|  | ||||
|         public ICommand ExitApplicationCommand => new DelegateCommand | ||||
|         public static ICommand ExitApplicationCommand => new DelegateCommand | ||||
|         { | ||||
|             CommandAction = () => | ||||
|             { | ||||
| @@ -33,7 +33,7 @@ namespace unison | ||||
|             CanExecuteFunc = () => true | ||||
|         }; | ||||
|  | ||||
|         public string SnapcastText | ||||
|         public static string SnapcastText | ||||
|         { | ||||
|             get | ||||
|             { | ||||
| @@ -77,8 +77,7 @@ namespace unison | ||||
|  | ||||
|         protected virtual void OnPropertyChanged(string propertyName) | ||||
|         { | ||||
|             PropertyChangedEventHandler handler = PropertyChanged; | ||||
|             if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName)); | ||||
|             PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -65,4 +65,19 @@ | ||||
|     <PackageReference Include="Hardcodet.NotifyIcon.Wpf" Version="1.1.0" /> | ||||
|   </ItemGroup> | ||||
|  | ||||
|   <ItemGroup> | ||||
|     <Compile Update="Properties\Settings.Designer.cs"> | ||||
|       <DesignTimeSharedInput>True</DesignTimeSharedInput> | ||||
|       <AutoGen>True</AutoGen> | ||||
|       <DependentUpon>Settings.settings</DependentUpon> | ||||
|     </Compile> | ||||
|   </ItemGroup> | ||||
|  | ||||
|   <ItemGroup> | ||||
|     <None Update="Properties\Settings.settings"> | ||||
|       <Generator>SettingsSingleFileGenerator</Generator> | ||||
|       <LastGenOutput>Settings.Designer.cs</LastGenOutput> | ||||
|     </None> | ||||
|   </ItemGroup> | ||||
|  | ||||
| </Project> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user