Snapcast port and auto start working
This commit is contained in:
		@@ -1,4 +1,6 @@
 | 
			
		||||
using System.Diagnostics;
 | 
			
		||||
using System;
 | 
			
		||||
using System.Diagnostics;
 | 
			
		||||
using System.Windows;
 | 
			
		||||
 | 
			
		||||
namespace unison
 | 
			
		||||
{
 | 
			
		||||
@@ -6,20 +8,34 @@ namespace unison
 | 
			
		||||
    {
 | 
			
		||||
        private readonly Process _snapcast = new();
 | 
			
		||||
        public bool Started { get; private set; }
 | 
			
		||||
        private string _snapcastVersion = "snapclient_0.25.0-1_win64";
 | 
			
		||||
        private string _snapcastPath;
 | 
			
		||||
 | 
			
		||||
        public SnapcastHandler()
 | 
			
		||||
        {
 | 
			
		||||
            // wip: this will have to be moved after the mpd connection, later on
 | 
			
		||||
            _snapcastPath = Properties.Settings.Default.snapcast_path;
 | 
			
		||||
            if (Properties.Settings.Default.snapcast_startup)
 | 
			
		||||
                Start();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void Start(string host)
 | 
			
		||||
        public void Start()
 | 
			
		||||
        {
 | 
			
		||||
            if (!Started)
 | 
			
		||||
            {
 | 
			
		||||
                _snapcast.StartInfo.FileName = _snapcastVersion + @"\snapclient.exe";
 | 
			
		||||
                _snapcast.StartInfo.Arguments = "--host " + host;
 | 
			
		||||
                _snapcast.StartInfo.FileName = _snapcastPath + @"\snapclient.exe";
 | 
			
		||||
                _snapcast.StartInfo.Arguments = $"--host {Properties.Settings.Default.mpd_host}";
 | 
			
		||||
                _snapcast.StartInfo.CreateNoWindow = true;
 | 
			
		||||
                try
 | 
			
		||||
                {
 | 
			
		||||
                    _snapcast.Start();
 | 
			
		||||
                }
 | 
			
		||||
                catch (Exception err)
 | 
			
		||||
                {
 | 
			
		||||
                    MessageBox.Show($"[Snapcast error]\nInvalid path: {err.Message}\n\nCurrent path: {_snapcastPath}\nYou can reset it in the settings if needed.",
 | 
			
		||||
                                    "unison", MessageBoxButton.OK, MessageBoxImage.Error);
 | 
			
		||||
                    Trace.WriteLine(err.Message);
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
                Started = true;
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										12
									
								
								Properties/Settings.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										12
									
								
								Properties/Settings.Designer.cs
									
									
									
										generated
									
									
									
								
							@@ -82,5 +82,17 @@ namespace unison.Properties {
 | 
			
		||||
                this["snapcast_path"] = value;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        [global::System.Configuration.UserScopedSettingAttribute()]
 | 
			
		||||
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
 | 
			
		||||
        [global::System.Configuration.DefaultSettingValueAttribute("1704")]
 | 
			
		||||
        public int snapcast_port {
 | 
			
		||||
            get {
 | 
			
		||||
                return ((int)(this["snapcast_port"]));
 | 
			
		||||
            }
 | 
			
		||||
            set {
 | 
			
		||||
                this["snapcast_port"] = value;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -17,5 +17,8 @@
 | 
			
		||||
    <Setting Name="snapcast_path" Type="System.String" Scope="User">
 | 
			
		||||
      <Value Profile="(Default)">snapclient_0.25.0-1_win64</Value>
 | 
			
		||||
    </Setting>
 | 
			
		||||
    <Setting Name="snapcast_port" Type="System.Int32" Scope="User">
 | 
			
		||||
      <Value Profile="(Default)">1704</Value>
 | 
			
		||||
    </Setting>
 | 
			
		||||
  </Settings>
 | 
			
		||||
</SettingsFile>
 | 
			
		||||
@@ -205,7 +205,7 @@ namespace unison
 | 
			
		||||
        {
 | 
			
		||||
            SnapcastHandler snapcast = (SnapcastHandler)Application.Current.Properties["snapcast"];
 | 
			
		||||
            if (!snapcast.Started)
 | 
			
		||||
                snapcast.Start(_mpd.MpdHost);
 | 
			
		||||
                snapcast.Start();
 | 
			
		||||
            else
 | 
			
		||||
                snapcast.Stop();
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -55,9 +55,11 @@
 | 
			
		||||
                                        <CheckBox x:Name="SnapcastStartup" Margin="5, 5, 0, 0">
 | 
			
		||||
                                            <TextBlock Text="Launch at startup" TextWrapping="Wrap"/>
 | 
			
		||||
                                        </CheckBox>
 | 
			
		||||
                                        <TextBlock Text="Port" TextWrapping="Wrap" Margin="5,5,0,0"/>
 | 
			
		||||
                                        <TextBox x:Name="SnapcastPort" MaxLength="5" PreviewTextInput="NumberValidationTextBox" TextWrapping="Wrap" Width="250" Margin="10,2,5,0" HorizontalAlignment="Left"/>
 | 
			
		||||
                                        <TextBlock Text="Executable path" TextWrapping="Wrap" Margin="5,5,0,0"/>
 | 
			
		||||
                                        <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">
 | 
			
		||||
                                        <TextBox x:Name="SnapcastPath" TextWrapping="Wrap" Width="250" Margin="10,2,5,0" HorizontalAlignment="Left"/>
 | 
			
		||||
                                        <TextBlock TextWrapping="Wrap" Margin="5,5,0,0" TextAlignment="Left" Width="250">
 | 
			
		||||
                                            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" Click="SnapcastReset_Clicked"/>
 | 
			
		||||
@@ -148,7 +150,7 @@
 | 
			
		||||
                                <emoji:TextBlock Text="📝 License"/>
 | 
			
		||||
                            </GroupBox.Header>
 | 
			
		||||
                            <Grid VerticalAlignment="Top">
 | 
			
		||||
                                <TextBlock Text="{Binding GetLicense, Mode = OneWay}" TextWrapping="Wrap" Width="400" TextAlignment="Justify" />
 | 
			
		||||
                                <TextBlock Text="{Binding GetLicense, Mode = OneWay}" TextWrapping="Wrap" Width="500" TextAlignment="Justify" />
 | 
			
		||||
                            </Grid>
 | 
			
		||||
                        </GroupBox>
 | 
			
		||||
                    </DockPanel>
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,8 @@ namespace unison
 | 
			
		||||
{
 | 
			
		||||
    public partial class Settings : Window
 | 
			
		||||
    {
 | 
			
		||||
        private string defaultSnapcast = "snapclient_0.25.0-1_win64";
 | 
			
		||||
        private string defaultSnapcastPath = "snapclient_0.25.0-1_win64";
 | 
			
		||||
        private string defaultSnapcastPort = "1704";
 | 
			
		||||
 | 
			
		||||
        public static string GetVersion => Assembly.GetEntryAssembly().GetCustomAttribute<AssemblyInformationalVersionAttribute>().InformationalVersion;
 | 
			
		||||
 | 
			
		||||
@@ -45,6 +46,7 @@ namespace unison
 | 
			
		||||
            MpdPassword.Text = Properties.Settings.Default.mpd_password;
 | 
			
		||||
            SnapcastStartup.IsChecked = Properties.Settings.Default.snapcast_startup;
 | 
			
		||||
            SnapcastPath.Text = Properties.Settings.Default.snapcast_path;
 | 
			
		||||
            SnapcastPort.Text = Properties.Settings.Default.snapcast_port.ToString();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void NumberValidationTextBox(object sender, TextCompositionEventArgs e)
 | 
			
		||||
@@ -63,7 +65,8 @@ namespace unison
 | 
			
		||||
 | 
			
		||||
        private void SnapcastReset_Clicked(object sender, RoutedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            SnapcastPath.Text = defaultSnapcast;
 | 
			
		||||
            SnapcastPath.Text = defaultSnapcastPath;
 | 
			
		||||
            SnapcastPort.Text = defaultSnapcastPort;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void Window_Closing(object sender, CancelEventArgs e)
 | 
			
		||||
@@ -75,6 +78,7 @@ namespace unison
 | 
			
		||||
            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.snapcast_port = int.Parse(SnapcastPort.Text);
 | 
			
		||||
            Properties.Settings.Default.Save();
 | 
			
		||||
 | 
			
		||||
            WindowState = WindowState.Minimized;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user