mirror of
https://github.com/Royce551/FRESHMusicPlayer.git
synced 2025-01-23 03:11:49 -05:00
Queue management improvements
This commit is contained in:
parent
d90cfb0613
commit
a22458ab4c
3 changed files with 29 additions and 17 deletions
|
@ -83,7 +83,7 @@
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
<Image x:Name="CoverArtBox" Margin="-64,10,5,0" VerticalAlignment="Top" Height="64" Width="64" HorizontalAlignment="Right" RenderOptions.BitmapScalingMode="HighQuality" MouseLeftButtonDown="TrackTitle_MouseLeftButtonDown" MouseRightButtonDown="TrackTitle_MouseRightButtonDown" Cursor="Hand"/>
|
<Image x:Name="CoverArtBox" Margin="-64,10,5,0" VerticalAlignment="Top" Height="64" Width="64" HorizontalAlignment="Right" RenderOptions.BitmapScalingMode="HighQuality" MouseLeftButtonDown="TrackTitle_MouseLeftButtonDown" MouseRightButtonDown="TrackTitle_MouseRightButtonDown" Cursor="Hand"/>
|
||||||
<TextBlock x:Name="TitleLabel" HorizontalAlignment="Stretch" Margin="5,5,10,0" TextWrapping="NoWrap" Text="Nothing Playing" VerticalAlignment="Top" FontWeight="Bold" FontSize="22" Grid.Column="1" Height="30" Foreground="{StaticResource PrimaryTextColor}" TextTrimming="CharacterEllipsis" MouseLeftButtonDown="TrackTitle_MouseLeftButtonDown" MouseRightButtonDown="TrackTitle_MouseRightButtonDown" Cursor="Hand"/>
|
<TextBlock x:Name="TitleLabel" HorizontalAlignment="Stretch" Margin="5,5,10,0" TextWrapping="NoWrap" Text="Nothing Playing" VerticalAlignment="Top" FontWeight="Bold" FontSize="22" Grid.Column="1" Height="30" Foreground="{StaticResource PrimaryTextColor}" TextTrimming="CharacterEllipsis" MouseLeftButtonDown="TrackTitle_MouseLeftButtonDown" MouseRightButtonDown="TrackTitle_MouseRightButtonDown" Cursor="Hand"/>
|
||||||
<Slider x:Name="ProgressBar" Grid.Column="1" HorizontalAlignment="Stretch" Margin="37,54,45,0" VerticalAlignment="Top" Height="21" Style="{StaticResource Progress_Slider}" Value="9.8" Thumb.DragStarted="ProgressBar_DragStarted" Thumb.DragCompleted="ProgressBar_DragCompleted" ValueChanged="ProgressBar_ValueChanged" IsMoveToPointEnabled="True"/>
|
<Slider x:Name="ProgressBar" Grid.Column="1" HorizontalAlignment="Stretch" Margin="37,54,45,0" VerticalAlignment="Top" Height="21" Style="{StaticResource Progress_Slider}" Value="9.8" Thumb.DragStarted="ProgressBar_DragStarted" Thumb.DragCompleted="ProgressBar_DragCompleted" ValueChanged="ProgressBar_ValueChanged" IsMoveToPointEnabled="True" MouseLeftButtonUp="ProgressBar_MouseLeftButtonUp"/>
|
||||||
<TextBlock x:Name="ProgressIndicator1" Grid.Column="1" Margin="5,56,0,0" TextWrapping="NoWrap" Text="10:00" Foreground="{StaticResource SecondaryTextColor}" Height="15" VerticalAlignment="Top" HorizontalAlignment="Left" Width="28"/>
|
<TextBlock x:Name="ProgressIndicator1" Grid.Column="1" Margin="5,56,0,0" TextWrapping="NoWrap" Text="10:00" Foreground="{StaticResource SecondaryTextColor}" Height="15" VerticalAlignment="Top" HorizontalAlignment="Left" Width="28"/>
|
||||||
<TextBlock x:Name="ProgressIndicator2" Grid.Column="1" Margin="0,0,10,13" TextWrapping="NoWrap" Text="10:00" Foreground="{StaticResource SecondaryTextColor}" Height="15" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="30"/>
|
<TextBlock x:Name="ProgressIndicator2" Grid.Column="1" Margin="0,0,10,13" TextWrapping="NoWrap" Text="10:00" Foreground="{StaticResource SecondaryTextColor}" Height="15" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="30"/>
|
||||||
<TextBlock x:Name="ArtistLabel" HorizontalAlignment="Stretch" Margin="5,35,10,0" TextWrapping="NoWrap" Text="Nothing Playing" VerticalAlignment="Top" Grid.Column="1" Height="20" Foreground="{StaticResource SecondaryTextColor}" TextTrimming="CharacterEllipsis"/>
|
<TextBlock x:Name="ArtistLabel" HorizontalAlignment="Stretch" Margin="5,35,10,0" TextWrapping="NoWrap" Text="Nothing Playing" VerticalAlignment="Top" Grid.Column="1" Height="20" Foreground="{StaticResource SecondaryTextColor}" TextTrimming="CharacterEllipsis"/>
|
||||||
|
|
|
@ -6,11 +6,9 @@ using FRESHMusicPlayer.Handlers.Configuration;
|
||||||
using FRESHMusicPlayer.Handlers.Notifications;
|
using FRESHMusicPlayer.Handlers.Notifications;
|
||||||
using FRESHMusicPlayer.Utilities;
|
using FRESHMusicPlayer.Utilities;
|
||||||
using LiteDB;
|
using LiteDB;
|
||||||
using Microsoft.Win32;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Runtime.InteropServices.WindowsRuntime;
|
using System.Runtime.InteropServices.WindowsRuntime;
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
using System.Windows.Input;
|
using System.Windows.Input;
|
||||||
|
@ -345,10 +343,18 @@ namespace FRESHMusicPlayer
|
||||||
private void StopButton_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) => StopMethod();
|
private void StopButton_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) => StopMethod();
|
||||||
private void NextTrackButton_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) => NextTrackMethod();
|
private void NextTrackButton_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) => NextTrackMethod();
|
||||||
private bool isDragging = false;
|
private bool isDragging = false;
|
||||||
private void ProgressBar_DragStarted(object sender, System.Windows.Controls.Primitives.DragStartedEventArgs e) => isDragging = true;
|
private void ProgressBar_DragStarted(object sender, System.Windows.Controls.Primitives.DragStartedEventArgs e)
|
||||||
|
{
|
||||||
|
isDragging = true;
|
||||||
|
progressTimer.Stop();
|
||||||
|
}
|
||||||
private void ProgressBar_DragCompleted(object sender, System.Windows.Controls.Primitives.DragCompletedEventArgs e)
|
private void ProgressBar_DragCompleted(object sender, System.Windows.Controls.Primitives.DragCompletedEventArgs e)
|
||||||
{
|
{
|
||||||
if (Player.Playing) Player.RepositionMusic((int)ProgressBar.Value);
|
if (Player.Playing)
|
||||||
|
{
|
||||||
|
Player.RepositionMusic((int)ProgressBar.Value);
|
||||||
|
progressTimer.Start();
|
||||||
|
}
|
||||||
isDragging = false;
|
isDragging = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -360,6 +366,11 @@ namespace FRESHMusicPlayer
|
||||||
ProgressTick();
|
ProgressTick();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
private void ProgressBar_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
|
||||||
|
{
|
||||||
|
if (Player.Playing && !isDragging) Player.RepositionMusic((int)ProgressBar.Value);
|
||||||
|
ProgressTick();
|
||||||
|
}
|
||||||
private void VolumeBar_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
|
private void VolumeBar_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
|
||||||
{
|
{
|
||||||
Player.CurrentVolume = (float)(VolumeBar.Value / 100);
|
Player.CurrentVolume = (float)(VolumeBar.Value / 100);
|
||||||
|
@ -614,5 +625,7 @@ namespace FRESHMusicPlayer
|
||||||
VolumeBar.Value += e.Delta / 100 * 3;
|
VolumeBar.Value += e.Delta / 100 * 3;
|
||||||
if (Player.Playing && Player.CurrentVolume >= 0 && Player.CurrentVolume <= 1) Player.UpdateSettings();
|
if (Player.Playing && Player.CurrentVolume >= 0 && Player.CurrentVolume <= 1) Player.UpdateSettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
using ATL;
|
using ATL.Playlist;
|
||||||
using ATL.Playlist;
|
|
||||||
using FRESHMusicPlayer.Handlers.Notifications;
|
using FRESHMusicPlayer.Handlers.Notifications;
|
||||||
using FRESHMusicPlayer.Utilities;
|
using FRESHMusicPlayer.Utilities;
|
||||||
using Microsoft.Win32;
|
using Microsoft.Win32;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
|
@ -25,11 +25,12 @@ namespace FRESHMusicPlayer.Pages
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
PopulateList();
|
PopulateList();
|
||||||
MainWindow.Player.QueueChanged += Player_QueueChanged;
|
MainWindow.Player.QueueChanged += Player_QueueChanged;
|
||||||
|
MainWindow.Player.SongStopped += Player_SongStopped;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PopulateList() // God have mercy on future me/others.
|
public void PopulateList()
|
||||||
{
|
{
|
||||||
displayqueue.Enqueue(MainWindow.Player.Queue);
|
displayqueue.Enqueue(MainWindow.Player.Queue); // Queue of pending queue management updates
|
||||||
async void GetResults()
|
async void GetResults()
|
||||||
{
|
{
|
||||||
var list = displayqueue.Dequeue();
|
var list = displayqueue.Dequeue();
|
||||||
|
@ -37,7 +38,7 @@ namespace FRESHMusicPlayer.Pages
|
||||||
int number = 1;
|
int number = 1;
|
||||||
SetControlEnabled(false);
|
SetControlEnabled(false);
|
||||||
QueueList.Items.Clear();
|
QueueList.Items.Clear();
|
||||||
await Task.Run(() =>
|
await Task.Run(() => // Display controls
|
||||||
{
|
{
|
||||||
foreach (var song in list)
|
foreach (var song in list)
|
||||||
{
|
{
|
||||||
|
@ -48,10 +49,11 @@ namespace FRESHMusicPlayer.Pages
|
||||||
Dispatcher.Invoke(() => QueueList.Items.Add(entry));
|
Dispatcher.Invoke(() => QueueList.Items.Add(entry));
|
||||||
if (entry.Index + 1 == MainWindow.Player.QueuePosition) currentIndex = entry.Index;
|
if (entry.Index + 1 == MainWindow.Player.QueuePosition) currentIndex = entry.Index;
|
||||||
if (MainWindow.Player.QueuePosition < number) nextlength += dbTrack.Length;
|
if (MainWindow.Player.QueuePosition < number) nextlength += dbTrack.Length;
|
||||||
|
if (number % 25 == 0) Thread.Sleep(1); // Apply a slight delay once in a while to let the UI catch up
|
||||||
number++;
|
number++;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
if (QueueList.Items.Count > 0) (QueueList.Items[currentIndex] as QueueEntry).BringIntoView();
|
if (QueueList.Items.Count > 0) (QueueList.Items[currentIndex] as QueueEntry).BringIntoView(); // Bring current track into view
|
||||||
RemainingTimeLabel.Text = Properties.Resources.QUEUEMANAGEMENT_REMAININGTIME + new TimeSpan(0, 0, 0, nextlength).ToString(@"hh\:mm\:ss");
|
RemainingTimeLabel.Text = Properties.Resources.QUEUEMANAGEMENT_REMAININGTIME + new TimeSpan(0, 0, 0, nextlength).ToString(@"hh\:mm\:ss");
|
||||||
SetControlEnabled(true);
|
SetControlEnabled(true);
|
||||||
taskisrunning = false;
|
taskisrunning = false;
|
||||||
|
@ -70,15 +72,12 @@ namespace FRESHMusicPlayer.Pages
|
||||||
AddPlaylistButton.IsEnabled = enabled;
|
AddPlaylistButton.IsEnabled = enabled;
|
||||||
ClearQueueButton.IsEnabled = enabled;
|
ClearQueueButton.IsEnabled = enabled;
|
||||||
}
|
}
|
||||||
private void Player_QueueChanged(object sender, EventArgs e)
|
private void Player_QueueChanged(object sender, EventArgs e) => PopulateList();
|
||||||
{
|
private void Player_SongStopped(object sender, EventArgs e) => PopulateList();
|
||||||
|
|
||||||
PopulateList();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Page_Unloaded(object sender, RoutedEventArgs e)
|
private void Page_Unloaded(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
MainWindow.Player.QueueChanged -= Player_QueueChanged;
|
MainWindow.Player.QueueChanged -= Player_QueueChanged;
|
||||||
|
MainWindow.Player.SongStopped -= Player_SongStopped;
|
||||||
QueueList.Items.Clear();
|
QueueList.Items.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue