mirror of
https://github.com/Royce551/FRESHMusicPlayer.git
synced 2025-01-22 10:51:52 -05:00
a few updates
This commit is contained in:
parent
80f2d3b9b8
commit
81b43a37be
4 changed files with 71 additions and 34 deletions
|
@ -16,6 +16,8 @@ namespace FRESHMusicPlayer.Handlers
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class GUILibrary : Library
|
public class GUILibrary : Library
|
||||||
{
|
{
|
||||||
|
public event EventHandler LibraryChanged;
|
||||||
|
|
||||||
private readonly NotificationHandler notificationHandler;
|
private readonly NotificationHandler notificationHandler;
|
||||||
private readonly Dispatcher dispatcher;
|
private readonly Dispatcher dispatcher;
|
||||||
public GUILibrary(LiteDatabase library, NotificationHandler notificationHandler, Dispatcher dispatcher) : base(library)
|
public GUILibrary(LiteDatabase library, NotificationHandler notificationHandler, Dispatcher dispatcher) : base(library)
|
||||||
|
@ -29,7 +31,11 @@ namespace FRESHMusicPlayer.Handlers
|
||||||
var notification = new Notification { ContentText = $"Importing {tracks.Count} tracks" };
|
var notification = new Notification { ContentText = $"Importing {tracks.Count} tracks" };
|
||||||
dispatcher.Invoke(() => notificationHandler.Add(notification));
|
dispatcher.Invoke(() => notificationHandler.Add(notification));
|
||||||
base.Import(tracks);
|
base.Import(tracks);
|
||||||
dispatcher.Invoke(() => notificationHandler.Remove(notification));
|
dispatcher.Invoke(() =>
|
||||||
|
{
|
||||||
|
notificationHandler.Remove(notification);
|
||||||
|
LibraryChanged?.Invoke(null, EventArgs.Empty);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Import(string[] tracks)
|
public override void Import(string[] tracks)
|
||||||
|
@ -37,7 +43,11 @@ namespace FRESHMusicPlayer.Handlers
|
||||||
var notification = new Notification { ContentText = $"Importing {tracks.Length} tracks" };
|
var notification = new Notification { ContentText = $"Importing {tracks.Length} tracks" };
|
||||||
dispatcher.Invoke(() => notificationHandler.Add(notification));
|
dispatcher.Invoke(() => notificationHandler.Add(notification));
|
||||||
base.Import(tracks);
|
base.Import(tracks);
|
||||||
dispatcher.Invoke(() => notificationHandler.Remove(notification));
|
dispatcher.Invoke(() =>
|
||||||
|
{
|
||||||
|
notificationHandler.Remove(notification);
|
||||||
|
LibraryChanged?.Invoke(null, EventArgs.Empty);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Nuke(bool nukePlaylists = true)
|
public override void Nuke(bool nukePlaylists = true)
|
||||||
|
@ -50,8 +60,8 @@ namespace FRESHMusicPlayer.Handlers
|
||||||
ContentText = Properties.Resources.NOTIFICATION_CLEARSUCCESS,
|
ContentText = Properties.Resources.NOTIFICATION_CLEARSUCCESS,
|
||||||
Type = NotificationType.Success
|
Type = NotificationType.Success
|
||||||
});
|
});
|
||||||
|
LibraryChanged?.Invoke(null, EventArgs.Empty);
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//public List<DatabaseQueue> GetAllQueues() FMP 10.2
|
//public List<DatabaseQueue> GetAllQueues() FMP 10.2
|
||||||
|
|
|
@ -204,38 +204,54 @@ namespace FRESHMusicPlayer
|
||||||
public async void ShowAuxilliaryPane(Pane pane, int width = 235, bool openleft = false)
|
public async void ShowAuxilliaryPane(Pane pane, int width = 235, bool openleft = false)
|
||||||
{
|
{
|
||||||
LoggingHandler.Log($"Showing pane --> {pane}");
|
LoggingHandler.Log($"Showing pane --> {pane}");
|
||||||
|
|
||||||
|
UserControl GetPageForPane(Pane panex)
|
||||||
|
{
|
||||||
|
switch (panex)
|
||||||
|
{
|
||||||
|
case Pane.Settings:
|
||||||
|
return new SettingsPage(this);
|
||||||
|
case Pane.QueueManagement:
|
||||||
|
return new QueueManagement(this);
|
||||||
|
case Pane.Search:
|
||||||
|
return new SearchPage(this);
|
||||||
|
case Pane.Notifications:
|
||||||
|
return new NotificationPage(this);
|
||||||
|
case Pane.TrackInfo:
|
||||||
|
return new TrackInfoPage(this);
|
||||||
|
case Pane.Lyrics:
|
||||||
|
return new LyricsPage(this);
|
||||||
|
default:
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Keyboard.IsKeyDown(Key.LeftShift))
|
||||||
|
{
|
||||||
|
new Window
|
||||||
|
{
|
||||||
|
Content = GetPageForPane(pane),
|
||||||
|
Width = 600,
|
||||||
|
Height = 500,
|
||||||
|
Topmost = true,
|
||||||
|
ShowInTaskbar = false,
|
||||||
|
Owner = this,
|
||||||
|
WindowStartupLocation = WindowStartupLocation.CenterOwner
|
||||||
|
}.Show();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (CurrentPane == pane)
|
if (CurrentPane == pane)
|
||||||
{
|
{
|
||||||
await HideAuxilliaryPane();
|
await HideAuxilliaryPane();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (CurrentPane != Pane.None) await HideAuxilliaryPane(true);
|
if (CurrentPane != Pane.None) await HideAuxilliaryPane(true);
|
||||||
switch (pane)
|
|
||||||
{
|
|
||||||
case Pane.Settings:
|
|
||||||
RightFrame.Content = new SettingsPage(this);
|
|
||||||
break;
|
|
||||||
case Pane.QueueManagement:
|
|
||||||
RightFrame.Content = new QueueManagement(this);
|
|
||||||
break;
|
|
||||||
case Pane.Search:
|
|
||||||
RightFrame.Content = new SearchPage(this);
|
|
||||||
break;
|
|
||||||
case Pane.Notifications:
|
|
||||||
RightFrame.Content = new NotificationPage(this);
|
|
||||||
break;
|
|
||||||
case Pane.TrackInfo:
|
|
||||||
RightFrame.Content = new TrackInfoPage(this);
|
|
||||||
break;
|
|
||||||
case Pane.Lyrics:
|
|
||||||
RightFrame.Content = new LyricsPage(this);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (!openleft) DockPanel.SetDock(RightFrame, Dock.Right); else DockPanel.SetDock(RightFrame, Dock.Left);
|
if (!openleft) DockPanel.SetDock(RightFrame, Dock.Right); else DockPanel.SetDock(RightFrame, Dock.Left);
|
||||||
RightFrame.Visibility = Visibility.Visible;
|
RightFrame.Visibility = Visibility.Visible;
|
||||||
RightFrame.Width = width;
|
RightFrame.Width = width;
|
||||||
|
RightFrame.Content = GetPageForPane(pane);
|
||||||
|
|
||||||
var sb = InterfaceUtils.GetThicknessAnimation(
|
var sb = InterfaceUtils.GetThicknessAnimation(
|
||||||
openleft ? new Thickness(width * -1 /*negate*/, 0, 0, 0) : new Thickness(0, 0, width * -1 /*negate*/, 0),
|
openleft ? new Thickness(width * -1 /*negate*/, 0, 0, 0) : new Thickness(0, 0, width * -1 /*negate*/, 0),
|
||||||
|
|
|
@ -20,6 +20,7 @@ namespace FRESHMusicPlayer.Pages.Library
|
||||||
public LibraryPage(MainWindow window, string search = null)
|
public LibraryPage(MainWindow window, string search = null)
|
||||||
{
|
{
|
||||||
this.window = window;
|
this.window = window;
|
||||||
|
window.Library.LibraryChanged += Library_LibraryChanged;
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
LoadLibrary();
|
LoadLibrary();
|
||||||
CategoryPanel.Focus();
|
CategoryPanel.Focus();
|
||||||
|
@ -30,6 +31,14 @@ namespace FRESHMusicPlayer.Pages.Library
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void Library_LibraryChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
var selectedItem = CategoryPanel.SelectedItem;
|
||||||
|
LoadLibrary();
|
||||||
|
Thread.Sleep(10);
|
||||||
|
CategoryPanel.SelectedItem = selectedItem;
|
||||||
|
}
|
||||||
|
|
||||||
public async void LoadLibrary() // TODO: figure out how to make this not async void
|
public async void LoadLibrary() // TODO: figure out how to make this not async void
|
||||||
{
|
{
|
||||||
TracksPanel.Items.Clear();
|
TracksPanel.Items.Clear();
|
||||||
|
@ -177,6 +186,7 @@ namespace FRESHMusicPlayer.Pages.Library
|
||||||
|
|
||||||
private void Page_Unloaded(object sender, RoutedEventArgs e)
|
private void Page_Unloaded(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
|
window.Library.LibraryChanged -= Library_LibraryChanged;
|
||||||
CategoryPanel.Items.Clear();
|
CategoryPanel.Items.Clear();
|
||||||
TracksPanel.Items.Clear();
|
TracksPanel.Items.Clear();
|
||||||
}
|
}
|
||||||
|
@ -191,10 +201,10 @@ namespace FRESHMusicPlayer.Pages.Library
|
||||||
window.Player.Queue.Clear();
|
window.Player.Queue.Clear();
|
||||||
InterfaceUtils.DoDragDrop((string[])e.Data.GetData(DataFormats.FileDrop), window.Player, window.Library);
|
InterfaceUtils.DoDragDrop((string[])e.Data.GetData(DataFormats.FileDrop), window.Player, window.Library);
|
||||||
await window.Player.PlayAsync();
|
await window.Player.PlayAsync();
|
||||||
var selectedItem = CategoryPanel.SelectedItem;
|
//var selectedItem = CategoryPanel.SelectedItem;
|
||||||
LoadLibrary();
|
//LoadLibrary();
|
||||||
Thread.Sleep(10);
|
//Thread.Sleep(10);
|
||||||
CategoryPanel.SelectedItem = selectedItem;
|
//CategoryPanel.SelectedItem = selectedItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void QueueAllButton_Click(object sender, RoutedEventArgs e)
|
private void QueueAllButton_Click(object sender, RoutedEventArgs e)
|
||||||
|
|
|
@ -37,11 +37,11 @@
|
||||||
<DoubleAnimation
|
<DoubleAnimation
|
||||||
Storyboard.TargetName="buttonScaleTransform"
|
Storyboard.TargetName="buttonScaleTransform"
|
||||||
Storyboard.TargetProperty="ScaleX"
|
Storyboard.TargetProperty="ScaleX"
|
||||||
To="0.9" Duration="0:0:.10" AutoReverse="True"/>
|
To="0.95" Duration="0:0:.10" AutoReverse="True"/>
|
||||||
<DoubleAnimation
|
<DoubleAnimation
|
||||||
Storyboard.TargetName="buttonScaleTransform"
|
Storyboard.TargetName="buttonScaleTransform"
|
||||||
Storyboard.TargetProperty="ScaleY"
|
Storyboard.TargetProperty="ScaleY"
|
||||||
To="0.9" Duration="0:0:.10" AutoReverse="True"/>
|
To="0.95" Duration="0:0:.10" AutoReverse="True"/>
|
||||||
</Storyboard>
|
</Storyboard>
|
||||||
</BeginStoryboard>
|
</BeginStoryboard>
|
||||||
</EventTrigger>
|
</EventTrigger>
|
||||||
|
@ -457,15 +457,16 @@
|
||||||
|
|
||||||
<Style x:Key="{x:Type TextBox}" TargetType="{x:Type TextBox}">
|
<Style x:Key="{x:Type TextBox}" TargetType="{x:Type TextBox}">
|
||||||
<Setter Property="SnapsToDevicePixels" Value="True"/>
|
<Setter Property="SnapsToDevicePixels" Value="True"/>
|
||||||
|
<Setter Property="CaretBrush" Value="#FF338BC1"/>
|
||||||
<Setter Property="Template">
|
<Setter Property="Template">
|
||||||
<Setter.Value>
|
<Setter.Value>
|
||||||
<ControlTemplate TargetType="{x:Type TextBoxBase}">
|
<ControlTemplate TargetType="{x:Type TextBoxBase}">
|
||||||
<Border x:Name="TextBorder" CornerRadius="2" Background="{x:Null}" BorderBrush="{StaticResource SecondaryTextColor}" BorderThickness="1">
|
<Border x:Name="TextBorder" CornerRadius="2" Background="{StaticResource ForegroundColor}" BorderBrush="{StaticResource ForegroundColor}" BorderThickness="2">
|
||||||
<ScrollViewer Margin="0" x:Name="PART_ContentHost" />
|
<ScrollViewer Margin="0" x:Name="PART_ContentHost" />
|
||||||
</Border>
|
</Border>
|
||||||
<ControlTemplate.Triggers>
|
<ControlTemplate.Triggers>
|
||||||
<Trigger Property="IsMouseOver" Value="true">
|
<Trigger Property="IsMouseOver" Value="true">
|
||||||
<Setter TargetName="TextBorder" Property="BorderBrush" Value="{StaticResource PrimaryTextColor}"/>
|
<Setter TargetName="TextBorder" Property="BorderBrush" Value="#FF338BC1"/>
|
||||||
</Trigger>
|
</Trigger>
|
||||||
<Trigger Property="IsFocused" Value="true">
|
<Trigger Property="IsFocused" Value="true">
|
||||||
<Setter TargetName="TextBorder" Property="BorderBrush" Value="#FF338BC1"/>
|
<Setter TargetName="TextBorder" Property="BorderBrush" Value="#FF338BC1"/>
|
||||||
|
|
Loading…
Reference in a new issue