From abb9518d145574f15ede2d7d83bd2db39084b508 Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Sat, 9 Sep 2017 14:13:10 +0200 Subject: [PATCH] Normalized playlist menus --- .../gramophone/helper/M3UWriter.java | 9 ++++-- .../helper/menu/PlaylistMenuHelper.java | 7 +++++ .../ui/activities/PlaylistDetailActivity.java | 26 +++++++++------- app/src/main/res/menu/menu_item_playlist.xml | 6 ++++ .../res/menu/menu_item_smart_playlist.xml | 12 +++++++ .../main/res/menu/menu_playlist_detail.xml | 8 ++++- .../res/menu/menu_smart_playlist_detail.xml | 31 +++++++++++++++++++ 7 files changed, 84 insertions(+), 15 deletions(-) create mode 100644 app/src/main/res/menu/menu_smart_playlist_detail.xml diff --git a/app/src/main/java/com/kabouzeid/gramophone/helper/M3UWriter.java b/app/src/main/java/com/kabouzeid/gramophone/helper/M3UWriter.java index e15ad94c..d137143e 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/helper/M3UWriter.java +++ b/app/src/main/java/com/kabouzeid/gramophone/helper/M3UWriter.java @@ -3,8 +3,8 @@ package com.kabouzeid.gramophone.helper; import android.content.Context; import com.kabouzeid.gramophone.loader.PlaylistSongLoader; +import com.kabouzeid.gramophone.model.AbsCustomPlaylist; import com.kabouzeid.gramophone.model.Playlist; -import com.kabouzeid.gramophone.model.PlaylistSong; import com.kabouzeid.gramophone.model.Song; import java.io.BufferedWriter; @@ -21,7 +21,12 @@ public class M3UWriter implements M3UConstants { dir.mkdirs(); File file = new File(dir, playlist.name.concat("." + EXTENSION)); - ArrayList songs = PlaylistSongLoader.getPlaylistSongList(context, playlist.id); + ArrayList songs; + if (playlist instanceof AbsCustomPlaylist) { + songs = ((AbsCustomPlaylist) playlist).getSongs(context); + } else { + songs = PlaylistSongLoader.getPlaylistSongList(context, playlist.id); + } if (songs.size() > 0) { BufferedWriter bw = new BufferedWriter(new FileWriter(file)); diff --git a/app/src/main/java/com/kabouzeid/gramophone/helper/menu/PlaylistMenuHelper.java b/app/src/main/java/com/kabouzeid/gramophone/helper/menu/PlaylistMenuHelper.java index 7ef920ea..7a73ac5b 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/helper/menu/PlaylistMenuHelper.java +++ b/app/src/main/java/com/kabouzeid/gramophone/helper/menu/PlaylistMenuHelper.java @@ -10,6 +10,7 @@ import android.view.MenuItem; import android.widget.Toast; import com.kabouzeid.gramophone.R; +import com.kabouzeid.gramophone.dialogs.AddToPlaylistDialog; import com.kabouzeid.gramophone.dialogs.DeletePlaylistDialog; import com.kabouzeid.gramophone.dialogs.RenamePlaylistDialog; import com.kabouzeid.gramophone.helper.MusicPlayerRemote; @@ -33,9 +34,15 @@ public class PlaylistMenuHelper { case R.id.action_play: MusicPlayerRemote.openQueue(new ArrayList<>(getPlaylistSongs(activity, playlist)), 0, true); return true; + case R.id.action_play_next: + MusicPlayerRemote.playNext(new ArrayList<>(getPlaylistSongs(activity, playlist))); + return true; case R.id.action_add_to_current_playing: MusicPlayerRemote.enqueue(new ArrayList<>(getPlaylistSongs(activity, playlist))); return true; + case R.id.action_add_to_playlist: + AddToPlaylistDialog.create(new ArrayList<>(getPlaylistSongs(activity, playlist))).show(activity.getSupportFragmentManager(), "ADD_PLAYLIST"); + return true; case R.id.action_rename_playlist: RenamePlaylistDialog.create(playlist.id).show(activity.getSupportFragmentManager(), "RENAME_PLAYLIST"); return true; diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/PlaylistDetailActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/PlaylistDetailActivity.java index 20d3b021..8f4c498a 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/PlaylistDetailActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/PlaylistDetailActivity.java @@ -20,8 +20,8 @@ import com.h6ah4i.android.widget.advrecyclerview.draggable.RecyclerViewDragDropM import com.h6ah4i.android.widget.advrecyclerview.utils.WrapperAdapterUtils; import com.kabouzeid.appthemehelper.ThemeStore; import com.kabouzeid.gramophone.R; -import com.kabouzeid.gramophone.adapter.song.PlaylistSongAdapter; import com.kabouzeid.gramophone.adapter.song.OrderablePlaylistSongAdapter; +import com.kabouzeid.gramophone.adapter.song.PlaylistSongAdapter; import com.kabouzeid.gramophone.adapter.song.SongAdapter; import com.kabouzeid.gramophone.helper.MusicPlayerRemote; import com.kabouzeid.gramophone.helper.menu.PlaylistMenuHelper; @@ -145,7 +145,7 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme @Override public boolean onCreateOptionsMenu(Menu menu) { - getMenuInflater().inflate(R.menu.menu_playlist_detail, menu); + getMenuInflater().inflate(playlist instanceof AbsCustomPlaylist ? R.menu.menu_smart_playlist_detail : R.menu.menu_playlist_detail, menu); return super.onCreateOptionsMenu(menu); } @@ -188,17 +188,19 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme public void onMediaStoreChanged() { super.onMediaStoreChanged(); - // Playlist deleted - if (!PlaylistsUtil.doesPlaylistExist(this, playlist.id)) { - onBackPressed(); - return; - } + if (!(playlist instanceof AbsCustomPlaylist)) { + // Playlist deleted + if (!PlaylistsUtil.doesPlaylistExist(this, playlist.id)) { + finish(); + return; + } - // Playlist renamed - final String playlistName = PlaylistsUtil.getNameForPlaylist(this, playlist.id); - if (!playlistName.equals(playlist.name)) { - playlist = PlaylistLoader.getPlaylist(this, playlist.id); - setToolbarTitle(playlist.name); + // Playlist renamed + final String playlistName = PlaylistsUtil.getNameForPlaylist(this, playlist.id); + if (!playlistName.equals(playlist.name)) { + playlist = PlaylistLoader.getPlaylist(this, playlist.id); + setToolbarTitle(playlist.name); + } } getSupportLoaderManager().restartLoader(LOADER_ID, null, this); diff --git a/app/src/main/res/menu/menu_item_playlist.xml b/app/src/main/res/menu/menu_item_playlist.xml index ef1ea9bb..92b913b3 100644 --- a/app/src/main/res/menu/menu_item_playlist.xml +++ b/app/src/main/res/menu/menu_item_playlist.xml @@ -4,9 +4,15 @@ + + diff --git a/app/src/main/res/menu/menu_item_smart_playlist.xml b/app/src/main/res/menu/menu_item_smart_playlist.xml index cea1bc73..92d8ed72 100644 --- a/app/src/main/res/menu/menu_item_smart_playlist.xml +++ b/app/src/main/res/menu/menu_item_smart_playlist.xml @@ -5,11 +5,23 @@ android:id="@+id/action_play" android:title="@string/action_play" /> + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/menu_playlist_detail.xml b/app/src/main/res/menu/menu_playlist_detail.xml index 5f655d63..11cea60c 100644 --- a/app/src/main/res/menu/menu_playlist_detail.xml +++ b/app/src/main/res/menu/menu_playlist_detail.xml @@ -8,15 +8,21 @@ android:icon="@drawable/ic_shuffle_white_24dp" android:title="@string/action_shuffle_playlist" app:showAsAction="ifRoom" /> - + + + + + + + + + + +