Misc. fixes, added volume offset option

This commit is contained in:
Théo Marchal 2021-08-27 18:45:53 +02:00
parent 89ddb81840
commit 8896c13442
9 changed files with 99 additions and 41 deletions

View File

@ -1,12 +1,6 @@
using System.Windows;
using Hardcodet.Wpf.TaskbarNotification;
// todo:
//
// * show mpd version
// * change volume offset
// * fix window resize (if it still happens?)
namespace unison
{
public partial class App : Application

View File

@ -75,11 +75,15 @@ namespace unison
mpd.Prev();
break;
case VK_VOLUME_DOWN:
mpd._currentVolume -= 5;
mpd._currentVolume -= Properties.Settings.Default.volume_offset;
if (mpd._currentVolume < 0)
mpd._currentVolume = 0;
mpd.SetVolume(mpd._currentVolume);
break;
case VK_VOLUME_UP:
mpd._currentVolume += 5;
mpd._currentVolume += Properties.Settings.Default.volume_offset;
if (mpd._currentVolume > 100)
mpd._currentVolume = 100;
mpd.SetVolume(mpd._currentVolume);
break;
case VK_MEDIA_PLAY_PAUSE:
@ -93,10 +97,19 @@ namespace unison
AppWindow.WindowState = WindowState.Normal;
}
else
{
if (AppWindow.IsActive)
{
AppWindow.Hide();
AppWindow.WindowState = WindowState.Minimized;
}
else // not minimized but not in front
{
AppWindow.Show();
AppWindow.Activate();
AppWindow.WindowState = WindowState.Normal;
}
}
break;
}
handled = true;

View File

@ -59,7 +59,6 @@ namespace unison
_elapsedTimer = new System.Timers.Timer(500);
_elapsedTimer.Elapsed += new System.Timers.ElapsedEventHandler(ElapsedTimer);
DispatcherTimer timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromSeconds(2);
timer.Tick += QueryStatus;
@ -228,6 +227,7 @@ namespace unison
_elapsedTimer.Stop();
}
if (_currentSong != null)
await _mpd.MpdQueryAlbumArt(_currentSong.File, false);
}
@ -291,5 +291,10 @@ namespace unison
{
return _currentStatus?.MpdState == MPDCtrl.Models.Status.MpdPlayState.Play;
}
public string GetVersion()
{
return _mpd.MpdVerText;
}
}
}

View File

@ -94,5 +94,17 @@ namespace unison.Properties {
this["snapcast_port"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("5")]
public int volume_offset {
get {
return ((int)(this["volume_offset"]));
}
set {
this["volume_offset"] = value;
}
}
}
}

View File

@ -20,5 +20,8 @@
<Setting Name="snapcast_port" Type="System.Int32" Scope="User">
<Value Profile="(Default)">1704</Value>
</Setting>
<Setting Name="volume_offset" Type="System.Int32" Scope="User">
<Value Profile="(Default)">5</Value>
</Setting>
</Settings>
</SettingsFile>

View File

@ -9,7 +9,7 @@ namespace unison
{
public partial class MainWindow : Window, INotifyPropertyChanged
{
private readonly Settings SettingsWindow = new Settings();
public readonly Settings SettingsWindow = new Settings();
private MPDHandler mpd;

View File

@ -34,7 +34,9 @@
<TextBlock Text="Password" TextWrapping="Wrap" Margin="5,0,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" Click="MPDConnect_Clicked"/>
<TextBlock x:Name="ConnectionStatus" Text="Not connected." TextWrapping="Wrap" Margin="5,10,0,0"/>
<Button x:Name="ConnectButton" Content="Connect" Margin="0,10,0,0" Width="120" Click="MPDConnect_Clicked"/>
</StackPanel>
</Grid>
</GroupBox>
@ -79,7 +81,12 @@
</StackPanel>
</GroupBox.Header>
<Grid>
<Grid MinWidth="220">
<StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Text="Volume offset" TextWrapping="Wrap"/>
<TextBox x:Name="VolumeOffset" TextWrapping="Wrap" Width="25" PreviewTextInput="NumberValidationTextBox" Margin="8,2,0,0"/>
</StackPanel>
<Grid MinWidth="220" Margin="0,5,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
@ -106,6 +113,7 @@
<TextBlock Text="ctrl + volume_down" TextWrapping="Wrap" Grid.Column="1" Grid.Row="4" Margin="1" HorizontalAlignment="Right" FontWeight="Bold"/>
<TextBlock Text="ctrl + alt + enter" TextWrapping="Wrap" Grid.Column="1" Grid.Row="5" Margin="1" HorizontalAlignment="Right" FontWeight="Bold"/>
</Grid>
</StackPanel>
</Grid>
</GroupBox>
</DockPanel>

View File

@ -50,6 +50,7 @@ namespace unison
SnapcastStartup.IsChecked = Properties.Settings.Default.snapcast_startup;
SnapcastPath.Text = Properties.Settings.Default.snapcast_path;
SnapcastPort.Text = Properties.Settings.Default.snapcast_port.ToString();
VolumeOffset.Text = Properties.Settings.Default.volume_offset.ToString();
}
private void NumberValidationTextBox(object sender, TextCompositionEventArgs e)
@ -66,11 +67,22 @@ namespace unison
e.Handled = true;
}
public void UpdateConnectionStatus()
{
MPDHandler mpd = (MPDHandler)Application.Current.Properties["mpd"];
if (mpd._connected)
{
ConnectionStatus.Text = "Connected to MPD " + mpd.GetVersion() + ".";
ConnectButton.IsEnabled = false;
}
}
private void MPDConnect_Clicked(object sender, RoutedEventArgs e)
{
SaveSettings();
MPDHandler mpd = (MPDHandler)Application.Current.Properties["mpd"];
//mpd.Connect();
mpd.Start();
UpdateConnectionStatus();
}
private void SnapcastReset_Clicked(object sender, RoutedEventArgs e)
@ -87,6 +99,7 @@ namespace unison
Properties.Settings.Default.snapcast_startup = (bool)SnapcastStartup.IsChecked;
Properties.Settings.Default.snapcast_path = SnapcastPath.Text;
Properties.Settings.Default.snapcast_port = int.Parse(SnapcastPort.Text, CultureInfo.InvariantCulture);
Properties.Settings.Default.volume_offset = int.Parse(VolumeOffset.Text, CultureInfo.InvariantCulture);
Properties.Settings.Default.Save();
}

View File

@ -8,6 +8,12 @@
<Win32Resource></Win32Resource>
<StartupObject>unison.App</StartupObject>
<Version>0.0.1</Version>
<Company />
<Authors>Théo Marchal</Authors>
<PackageLicenseFile>LICENSE</PackageLicenseFile>
<PackageProjectUrl>https://git.n700.ovh/keb/unison</PackageProjectUrl>
<RepositoryUrl>https://git.n700.ovh/keb/unison</RepositoryUrl>
<Copyright>Théo Marchal</Copyright>
</PropertyGroup>
<ItemGroup>
@ -21,6 +27,10 @@
<None Remove="snapclient_0.25.0-1_win64\snapclient.exe" />
<None Remove="snapclient_0.25.0-1_win64\soxr.dll" />
<None Remove="snapclient_0.25.0-1_win64\vorbis.dll" />
<None Include="LICENSE">
<Pack>True</Pack>
<PackagePath></PackagePath>
</None>
</ItemGroup>
<ItemGroup>