/// <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; }
/// <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>(); }
/// <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(); } }
/// <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)); }
/// <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); } }
/// <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); } }
/// <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; } }