Exemplo n.º 1
0
        /// <summary>
        /// Invoked when the user selects to rename a playlist item.
        /// </summary>
        /// <param name="sender">The sender of the event</param>
        /// <param name="e">The event data</param>
        public void RenamePlaylist_Clicked(object sender, RoutedEventArgs e)
        {
            EditableTextBlock etb = sender as EditableTextBlock;

            if (etb == null && sender is TreeViewItem)
            {
                etb = Tvi2Etb(sender as TreeViewItem);
            }
            if (etb == null)
            {
                etb = Tvi2Etb(NavigationTree.SelectedItem as TreeViewItem);
            }
            if (etb == null || !etb.IsEditable)
            {
                return;
            }
            var playlist = PlaylistManager.FindPlaylist(etb.Text);

            // do not rename playlists we don't own
            if (PlaylistManager.IsSomeoneElses(playlist))
            {
                return;
            }

            etb.IsInEditMode = true;
        }
Exemplo n.º 2
0
        /// <summary>
        /// Invoked when the control has been fully loaded.
        /// </summary>
        /// <param name="sender">The sender of the event</param>
        /// <param name="e">The event data</param>
        private void Navigation_Loaded(object sender, RoutedEventArgs e)
        {
            if (SettingsManager.CurrentSelectedNavigation.StartsWith("Playlist:"))
            {
                if (PlaylistManager.FindPlaylist(SettingsManager.CurrentSelectedNavigation.Split(new[] { ':' }, 2)[1]) == null)
                {
                    SettingsManager.CurrentSelectedNavigation = "Files";
                }
            }

            if (System.Windows.Forms.VisualStyles.VisualStyleInformation.DisplayName == "")
            {
                NavigationTree.ItemContainerStyle = (Style)TryFindResource("ClassicNavigationStyle");
                NowPlaying.ItemContainerStyle     = (Style)TryFindResource("ClassicNavigationStyle");
                Music.ItemContainerStyle          = (Style)TryFindResource("ClassicNavigationStyle");
                Playlists.ItemContainerStyle      = (Style)TryFindResource("ClassicNavigationStyle");
            }
            else
            {
                NavigationTree.ItemContainerStyle = (Style)TryFindResource("AeroNavigationStyle");
                NowPlaying.ItemContainerStyle     = (Style)TryFindResource("AeroNavigationStyle");
                Music.ItemContainerStyle          = (Style)TryFindResource("AeroNavigationStyle");
                Playlists.ItemContainerStyle      = (Style)TryFindResource("AeroNavigationStyle");
            }

            AddToPlaylistQueue = new List <object>();
        }
Exemplo n.º 3
0
        /// <summary>
        /// Invoked when the user clicks "Generate".
        /// </summary>
        /// <remarks>
        /// Will verify the name and generate a playlist.
        /// </remarks>
        /// <param name="sender">The sender of the event</param>
        /// <param name="e">The event data</param>
        private void Generate_Click(object sender, RoutedEventArgs e)
        {
            Regex alphaNumPattern = new Regex("[^a-zA-Z0-9 ]");

            if (alphaNumPattern.IsMatch(ListName.Text))
            {
                ErrorMessage.Text       = U.T("DialogNameInvalidError");
                ErrorMessage.Visibility = System.Windows.Visibility.Visible;
            }
            else if (ListName.Text == "")
            {
                ErrorMessage.Text       = U.T("DialogNameEmptyError");
                ErrorMessage.Visibility = System.Windows.Visibility.Visible;
            }
            else if (PlaylistManager.FindPlaylist(ListName.Text) != null)
            {
                ErrorMessage.Text       = U.T("DialogNameExistsError");
                ErrorMessage.Visibility = System.Windows.Visibility.Visible;
            }
            else
            {
                // copy tracks to temporary list
                List <TrackData> tracks = new List <TrackData>();
                string           filter = GetFilter();
                foreach (TrackData t in GetTracks())
                {
                    if (!(bool)DoFilter.IsChecked || filterMatches(t, filter))
                    {
                        tracks.Add(t);
                    }
                }

                int n = GetNumber();
                if (n < 0)
                {
                    return;
                }

                if (tracks.Count > 0)
                {
                    // create empty playlist
                    PlaylistData p = PlaylistManager.CreatePlaylist(ListName.Text);
                    if (p != null)
                    {
                        // move tracks from temporary list into playlist
                        for (int i = 0; i < n && tracks.Count > 0; i++)
                        {
                            Random    r = new Random();
                            int       x = r.Next(tracks.Count - 1);
                            TrackData t = tracks[x];
                            p.Tracks.Add(t);
                            tracks.RemoveAt(x);
                        }
                    }
                }

                Close();
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// Returns the playlist corresponding to a TreeViewItem if possible
        /// </summary>
        /// <param name="tvi">The playlist item in the TreeView</param>
        /// <returns>The corresponding playlist if such could be found, otherwise null</returns>
        private PlaylistData Tvi2Pl(TreeViewItem tvi)
        {
            EditableTextBlock etb = Tvi2Etb(tvi);

            if (etb == null)
            {
                return(null);
            }
            return(PlaylistManager.FindPlaylist(etb.Text));
        }
Exemplo n.º 5
0
 /// <summary>
 /// Gets the corresponding collection of tracks given the selected list.
 /// </summary>
 /// <returns>The collection of tracks corresponding to the selected list</returns>
 private ObservableCollection <TrackData> GetTracks()
 {
     if (Lists.SelectedIndex > 0)
     {
         ComboBoxItem cbi = Lists.SelectedItem as ComboBoxItem;
         PlaylistData p   = PlaylistManager.FindPlaylist((string)cbi.Content);
         if (p != null)
         {
             return(p.Tracks);
         }
         else
         {
             return(new ObservableCollection <TrackData>());
         }
     }
     else
     {
         return(SettingsManager.FileTracks);
     }
 }
Exemplo n.º 6
0
 /// <summary>
 /// Gets the corresponding filter given the selected list.
 /// </summary>
 /// <returns>The filter corresponding to the selected list</returns>
 private string GetFilter()
 {
     if (Lists.SelectedIndex > 0)
     {
         ComboBoxItem cbi = Lists.SelectedItem as ComboBoxItem;
         PlaylistData p   = PlaylistManager.FindPlaylist((string)cbi.Content);
         if (p != null)
         {
             return(p.ListConfig.Filter);
         }
         else
         {
             return("");
         }
     }
     else
     {
         return(SettingsManager.FileListConfig.Filter);
     }
 }
Exemplo n.º 7
0
        /// <summary>
        /// Invoked when the user right-clicks on a playlist
        /// </summary>
        /// <param name="sender">The sender of the event</param>
        /// <param name="e">The event data</param>
        public void Playlist_ContextMenuOpening(object sender, ContextMenuEventArgs e)
        {
            TreeViewItem tvi = sender as TreeViewItem;

            if (tvi == null)
            {
                return;
            }
            if (!tvi.IsSelected)
            {
                rightClickedTvi = tvi;
                tvi.IsSelected  = true;
            }

            playlistMenuRename.Visibility = Visibility.Visible;

            var dp = tvi.Header as DockPanel;

            if (dp == null)
            {
                return;
            }
            var etb = dp.Children[1] as EditableTextBlock;

            if (etb == null)
            {
                return;
            }
            var pl = PlaylistManager.FindPlaylist(etb.Text);

            if (pl == null)
            {
                return;
            }

            // do not rename playlists we don't own
            if (PlaylistManager.IsSomeoneElses(pl))
            {
                playlistMenuRename.Visibility = Visibility.Collapsed;
            }
        }