diff --git a/Screenbox.Core/ViewModels/PlaylistViewModel.cs b/Screenbox.Core/ViewModels/PlaylistViewModel.cs index 5f15b8ee7..4b55606e1 100644 --- a/Screenbox.Core/ViewModels/PlaylistViewModel.cs +++ b/Screenbox.Core/ViewModels/PlaylistViewModel.cs @@ -76,6 +76,14 @@ partial void OnEnableMultiSelectChanged(bool value) private static bool HasSelection(IList? selectedItems) => selectedItems?.Count > 0; + private bool IsSelectedItemNotFirst(IList? selectedItems) => + selectedItems?.Count == 1 && + Playlist.Items.Count > 0 && Playlist.Items[0] != selectedItems[0]; + + private bool IsSelectedItemNotLast(IList? selectedItems) => + selectedItems?.Count == 1 && + Playlist.Items.Count > 0 && Playlist.Items[Playlist.Items.Count - 1] != selectedItems[0]; + private bool IsItemNotFirst(MediaViewModel item) => Playlist.Items.Count > 0 && Playlist.Items[0] != item; private bool IsItemNotLast(MediaViewModel item) => Playlist.Items.Count > 0 && Playlist.Items[Playlist.Items.Count - 1] != item; @@ -134,10 +142,10 @@ private void PlayNext(MediaViewModel item) Playlist.Items.Insert(Playlist.CurrentIndex + 1, new MediaViewModel(item)); } - [RelayCommand(CanExecute = nameof(HasSelection))] + [RelayCommand(CanExecute = nameof(IsSelectedItemNotFirst))] private void MoveSelectedItemUp(IList? selectedItems) { - if (selectedItems == null || selectedItems.Count != 1) return; + if (selectedItems is not { Count: 1 }) return; MediaViewModel item = (MediaViewModel)selectedItems[0]; MoveItemUp(item); @@ -156,10 +164,10 @@ private void MoveItemUp(MediaViewModel item) Playlist.Items.Insert(index - 1, item); } - [RelayCommand(CanExecute = nameof(HasSelection))] + [RelayCommand(CanExecute = nameof(IsSelectedItemNotLast))] private void MoveSelectedItemDown(IList? selectedItems) { - if (selectedItems == null || selectedItems.Count != 1) return; + if (selectedItems is not { Count: 1 }) return; MediaViewModel item = (MediaViewModel)selectedItems[0]; MoveItemDown(item); diff --git a/Screenbox/Controls/MediaListViewItem.xaml b/Screenbox/Controls/MediaListViewItem.xaml index ad74409bd..94c0be113 100644 --- a/Screenbox/Controls/MediaListViewItem.xaml +++ b/Screenbox/Controls/MediaListViewItem.xaml @@ -267,14 +267,12 @@ - - diff --git a/Screenbox/Controls/PlaylistView.xaml b/Screenbox/Controls/PlaylistView.xaml index f097d3436..8764d0599 100644 --- a/Screenbox/Controls/PlaylistView.xaml +++ b/Screenbox/Controls/PlaylistView.xaml @@ -4,7 +4,6 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:commands="using:Screenbox.Commands" xmlns:controls="using:Screenbox.Controls" - xmlns:core="using:Microsoft.Xaml.Interactions.Core" xmlns:ctAnimations="using:CommunityToolkit.WinUI.Animations" xmlns:ctConverters="using:CommunityToolkit.WinUI.Converters" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" @@ -206,23 +205,18 @@ - - - - - + + @@ -351,16 +345,6 @@ - - - - - - - - - - diff --git a/Screenbox/Controls/PlaylistView.xaml.cs b/Screenbox/Controls/PlaylistView.xaml.cs index 9eca68e5d..343304a8b 100644 --- a/Screenbox/Controls/PlaylistView.xaml.cs +++ b/Screenbox/Controls/PlaylistView.xaml.cs @@ -64,8 +64,7 @@ private void PlaylistListView_OnSelectionChanged(object sender, SelectionChanged SelectionCheckBox.IsChecked = PlaylistListView.SelectedItems.Count == ViewModel.Playlist.Items.Count; if (ViewModel.EnableMultiSelect) { - VisualStateManager.GoToState(this, - PlaylistListView.SelectedItems.Count == 1 ? "MultipleSingleSelected" : "Multiple", true); + VisualStateManager.GoToState(this, "Multiple", true); } ViewModel.SelectionCount = PlaylistListView.SelectedItems.Count;