コード例 #1
0
        private void TrackButton_Click(object sender, RoutedEventArgs e)
        {
            var index = ItemsControlHelper.FindIndexByItemChild(panelTracks, sender as DependencyObject);

            if (index == -1)
            {
                return;
            }

            var playQueue = PlayQueueManager.GetInstance();
            var track     = playQueue.FromTracks(Tracks.ToArray(), index);

            playQueue.AddPlayedIndex();

            var playback = PlaybackManager.GetInstance();

            playback.Play(track);

            var app = (App)Application.Current;

            app.config.LastPlaylist = Playlist.MetadataUrl;

            var mainWindow = MainWindow.GetInstance();

            mainWindow.GoToPlayQueue();
        }
コード例 #2
0
        private async void TrackButton_DeleteClick(object sender, RoutedEventArgs e)
        {
            var index = ItemsControlHelper.FindIndexByItemChild(panelTracks, sender as DependencyObject);

            if (index == -1)
            {
                return;
            }

            var track = Tracks[index];

            if (MessageBox.Show("Do you really want to remove it from your playlist?", "PlexFlux", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
            {
                var app = (App)Application.Current;

                try
                {
                    Playlist = await app.plexClient.DeleteTrackFromPlaylist(track, Playlist);
                }
                catch (WebException exception)
                {
                    MessageBox.Show("Could not send data to remote server.\n" + exception.Message, "PlexFlux", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                }
                finally
                {
                    Page_Loaded(sender, e);
                }
            }
        }
コード例 #3
0
        private void TrackButton_DeleteClick(object sender, RoutedEventArgs e)
        {
            var index = ItemsControlHelper.FindIndexByItemChild(panelTracks, sender as DependencyObject);

            if (index == -1)
            {
                return;
            }

            var playQueue = PlayQueueManager.GetInstance();

            playQueue.Remove(index);
        }
コード例 #4
0
        void IDropTarget.Drop(IDropInfo dropInfo)
        {
            var source    = (Component.TrackButton)VisualTreeHelper.GetChild(dropInfo.DragInfo.VisualSourceItem, 0);
            int sourceIdx = ItemsControlHelper.FindIndexByItemChild(panelTracks, source);
            int targetIdx = dropInfo.InsertIndex;

            if (sourceIdx == targetIdx || sourceIdx == -1 || targetIdx == -1)
            {
                return;
            }

            var playQueue = PlayQueueManager.GetInstance();

            playQueue.Rearrange(sourceIdx, targetIdx);
        }
コード例 #5
0
        private void TrackButton_Click(object sender, RoutedEventArgs e)
        {
            var index = ItemsControlHelper.FindIndexByItemChild(panelTracks, sender as DependencyObject);

            if (index == -1)
            {
                return;
            }

            var upcomings = UpcomingManager.GetInstance();
            var track     = upcomings.Remove(index);

            var playback = PlaybackManager.GetInstance();

            playback.Play(track);
        }
コード例 #6
0
        private void MenuItem_Play_Click(object sender, RoutedEventArgs e)
        {
            var button = (Component.TrackButton)((ContextMenu)((MenuItem)e.Source).Parent).PlacementTarget;
            var index  = ItemsControlHelper.FindIndexByItemChild(panelTracks, button);

            var playQueue = PlayQueueManager.GetInstance();
            var track     = playQueue.FromTracks(Tracks, index);

            playQueue.AddPlayedIndex();

            var playback = PlaybackManager.GetInstance();

            playback.Play(track);

            var mainWindow = MainWindow.GetInstance();

            mainWindow.GoToPlayQueue();
        }
コード例 #7
0
        async void IDropTarget.Drop(IDropInfo dropInfo)
        {
            var source    = (Component.TrackButton)VisualTreeHelper.GetChild(dropInfo.DragInfo.VisualSourceItem, 0);
            int sourceIdx = ItemsControlHelper.FindIndexByItemChild(panelTracks, source);
            int targetIdx = dropInfo.InsertIndex - 1;

            // nothing need to work
            if (sourceIdx == targetIdx)
            {
                return;
            }

            if (sourceIdx > targetIdx)
            {
                targetIdx--;
            }

            var sourceItem = dropInfo.Data as PlexTrack;
            var targetItem = targetIdx == -1 ? null : ((Component.TrackButton)ItemsControlHelper.GetItemChildByIndex(panelTracks, targetIdx)).Track;

            // move it
            panelTracks.IsEnabled = false;

            var app = (App)Application.Current;

            try
            {
                await app.plexClient.MoveTrackInPlaylist(Playlist, sourceItem, targetItem);

                // update UI
                Tracks.Remove(sourceItem);
                Tracks.Insert(targetIdx == -1 ? 0 : targetIdx, sourceItem);
            }
            catch
            {
                MessageBox.Show("Failed to update data in the remote server.", "PlexFlux", MessageBoxButton.OK, MessageBoxImage.Exclamation);
            }
            finally
            {
                panelTracks.IsEnabled = true;
            }
        }
コード例 #8
0
        private void TrackButton_Click(object sender, RoutedEventArgs e)
        {
            var button = (Component.TrackButton)sender;

            var index = ItemsControlHelper.FindIndexByItemChild(panelTracks, button);

            if (index == -1)
            {
                return;
            }

            skipNextCurrentChanged = true;

            var playQueue = PlayQueueManager.GetInstance();

            playQueue.Play(index);

            var playback = PlaybackManager.GetInstance();

            playback.Play(button.Track);
        }