/// <summary> /// Called when a library has been selected. /// </summary> /// <param name="selectedLibrary"></param> private void NameEntered(string playlistName, NewPlaylistNameDialogFragment playlistNameFragment, bool _) { string alertText = ""; if (playlistName.Length == 0) { alertText = "An empty name is not valid."; } else if (playlistName == selectedObjects.Playlists[0].Name) { alertText = "Name not changed."; } else if (PlaylistsViewModel.PlaylistNames.Contains(playlistName) == true) { alertText = "A playlist with that name already exists."; } else { PlaylistsController.RenamePlaylist(selectedObjects.Playlists[0], playlistName); playlistNameFragment.Dismiss(); commandCallback.PerformAction(); } // Display an error message if the playlist name is not valid. Do not dismiss the dialog if (alertText.Length > 0) { NotificationDialogFragment.ShowFragment(CommandRouter.Manager, alertText); } }
/// <summary> /// When a menu item is clicked pass the songs or albums to the appropriate controller /// </summary> /// <param name="_"></param> /// <param name="args"></param> private void MenuItemClicked(object _, PopupMenu.MenuItemClickEventArgs args) { // Use the menu id to determine what has been selected int menuId = args.Item.ItemId; if (menuId < PlaylistsViewModel.SongPlaylists.Count) { // Add the selected songs to the selected playlist PlaylistsController.AddSongsToPlaylist(selectedObjects.Songs, PlaylistsViewModel.SongPlaylists[menuId]); commandCallback.PerformAction(); } else if (menuId < PlaylistsViewModel.Playlists.Count) { // Add the selected albumns to the selected playlist PlaylistsController.AddAlbumsToPlaylist(selectedObjects.Albums, PlaylistsViewModel.AlbumPlaylists[menuId - PlaylistsViewModel.SongPlaylists.Count]); commandCallback.PerformAction(); } else { // Finally check for a New SongPlaylist command if (menuId == PlaylistsViewModel.Playlists.Count) { // Display a NewPlaylistNameDialogFragment to request a playlist name // If complete albums have been selected then try to choose an appropriate name for the new album playlist string suggestedPlaylistName = ""; if (completeAlbums == true) { // If just a single album then suggest the name of the album if (selectedObjects.Albums.Count == 1) { suggestedPlaylistName = $"{selectedObjects.Albums[ 0 ].ArtistName} : {selectedObjects.Albums[ 0 ].Name}"; } else { // If all the albums are from the same artist then suggest the artist name string artistName = selectedObjects.Albums[0].ArtistName; if (selectedObjects.Albums.All(album => album.ArtistName == artistName) == true) { suggestedPlaylistName = artistName; } } } NewPlaylistNameDialogFragment.ShowFragment(CommandRouter.Manager, NameEntered, "New playlist", suggestedPlaylistName, completeAlbums == true, true); } } }
/// <summary> /// Called when a playlist name has been entered has been selected. /// </summary> /// <param name="selectedLibrary"></param> private async void NameEntered(string playlistName, NewPlaylistNameDialogFragment playlistNameFragment, bool isAlbum) { string alertText = ""; // An empty playlist name is not allowed if (playlistName.Length == 0) { alertText = EmptyNameError; } else { // Check for a duplicate if (PlaylistsViewModel.PlaylistNames.Contains(playlistName) == true) { alertText = DuplicatePlaylistError; } else { // Create a SongPlaylist or AlbumPlaylist as appropriate and add the Songs/Albums to it if (isAlbum == false) { // Create the playlist and add the songs to it // Need to wait for the playlist to be stored as we are going to access it's Id straight away SongPlaylist newPlaylist = await PlaylistsController.AddSongPlaylistAsync(playlistName); PlaylistsController.AddSongsToPlaylist(selectedObjects.Songs, newPlaylist); } else { AlbumPlaylist newPlaylist = await PlaylistsController.AddAlbumPlaylistAsync(playlistName); PlaylistsController.AddAlbumsToPlaylist(selectedObjects.Albums, newPlaylist); } } } // Display an error message if the playlist name is not valid. if (alertText.Length > 0) { NotificationDialogFragment.ShowFragment(CommandRouter.Manager, alertText); } else { // Dismiss the playlist name dialogue and finally perform the command callback (exit action mode) playlistNameFragment.Dismiss(); commandCallback.PerformAction(); } }
/// <summary> /// Called to handle the command. Show the NewPlaylistNameDialogFragment. /// </summary> /// <param name="commandIdentity"></param> public override void HandleCommand(int commandIdentity) => NewPlaylistNameDialogFragment.ShowFragment(CommandRouter.Manager, NameEntered, "Rename playlist", selectedObjects.Playlists[0].Name);