From 92441128dfe76527ef6cbce3823f5a17e8e0fe87 Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Sun, 21 Jun 2015 14:14:37 +0200 Subject: [PATCH] Everything is prepared to add smart playlists --- .../gramophone/adapter/PlaylistAdapter.java | 21 +++++++- .../dialogs/ClearSmartPlaylistDialog.java | 51 +++++++++++++++++++ .../dialogs/DeletePlaylistDialog.java | 1 + .../smartplaylist/LastAddedPlaylist.java | 6 ++- .../res/menu/menu_item_smart_playlist.xml | 5 ++ .../main/res/menu/menu_playlist_detail.xml | 5 -- app/src/main/res/values/strings.xml | 3 ++ 7 files changed, 85 insertions(+), 7 deletions(-) create mode 100644 app/src/main/java/com/kabouzeid/gramophone/dialogs/ClearSmartPlaylistDialog.java diff --git a/app/src/main/java/com/kabouzeid/gramophone/adapter/PlaylistAdapter.java b/app/src/main/java/com/kabouzeid/gramophone/adapter/PlaylistAdapter.java index 86c99e20..63f9752b 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/adapter/PlaylistAdapter.java +++ b/app/src/main/java/com/kabouzeid/gramophone/adapter/PlaylistAdapter.java @@ -15,6 +15,7 @@ import android.widget.TextView; import com.kabouzeid.gramophone.App; import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.dialogs.AddToPlaylistDialog; +import com.kabouzeid.gramophone.dialogs.ClearSmartPlaylistDialog; import com.kabouzeid.gramophone.dialogs.DeletePlaylistDialog; import com.kabouzeid.gramophone.helper.MenuItemClickHelper; import com.kabouzeid.gramophone.helper.MusicPlayerRemote; @@ -106,7 +107,18 @@ public class PlaylistAdapter extends AbsMultiSelectAdapter selection) { switch (menuItem.getItemId()) { case R.id.action_delete_playlist: - DeletePlaylistDialog.create(selection).show(activity.getSupportFragmentManager(), "DELETE_PLAYLIST"); + for (int i = 0; i < selection.size(); i++) { + Playlist playlist = selection.get(i); + if (playlist instanceof SmartPlaylist) { + SmartPlaylist smartPlaylist = (SmartPlaylist) playlist; + ClearSmartPlaylistDialog.create(smartPlaylist).show(activity.getSupportFragmentManager(), "CLEAR_PLAYLIST_" + smartPlaylist.name); + selection.remove(playlist); + i--; + } + } + if (selection.size() > 0) { + DeletePlaylistDialog.create(selection).show(activity.getSupportFragmentManager(), "DELETE_PLAYLIST"); + } break; case R.id.action_add_to_playlist: AddToPlaylistDialog.create(getSongList(selection)).show(activity.getSupportFragmentManager(), "ADD_PLAYLIST"); @@ -152,6 +164,13 @@ public class PlaylistAdapter extends AbsMultiSelectAdapter playlists = (ArrayList) getArguments().getSerializable("playlists"); int title; CharSequence content; + //noinspection ConstantConditions if (playlists.size() > 1) { title = R.string.delete_playlists_title; content = Html.fromHtml(getString(R.string.delete_x_playlists, playlists.size())); diff --git a/app/src/main/java/com/kabouzeid/gramophone/model/smartplaylist/LastAddedPlaylist.java b/app/src/main/java/com/kabouzeid/gramophone/model/smartplaylist/LastAddedPlaylist.java index 7e7121ee..cf51ed53 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/model/smartplaylist/LastAddedPlaylist.java +++ b/app/src/main/java/com/kabouzeid/gramophone/model/smartplaylist/LastAddedPlaylist.java @@ -4,12 +4,15 @@ import android.content.Context; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; +import com.kabouzeid.gramophone.App; import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.adapter.songadapter.smartplaylist.CannotDeleteSingleSongsSongAdapter; import com.kabouzeid.gramophone.adapter.songadapter.smartplaylist.SmartPlaylistSongAdapter; import com.kabouzeid.gramophone.interfaces.CabHolder; import com.kabouzeid.gramophone.loader.LastAddedLoader; +import com.kabouzeid.gramophone.model.DataBaseChangedEvent; import com.kabouzeid.gramophone.model.Song; +import com.kabouzeid.gramophone.util.PreferenceUtils; import java.util.ArrayList; @@ -34,6 +37,7 @@ public class LastAddedPlaylist extends SmartPlaylist { @Override public void clear(Context context) { - // TODO + PreferenceUtils.getInstance(context).setLastAddedCutoffTimestamp(System.currentTimeMillis()); + App.bus.post(new DataBaseChangedEvent(DataBaseChangedEvent.PLAYLISTS_CHANGED)); } } 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 5a11aaf7..cea1bc73 100644 --- a/app/src/main/res/menu/menu_item_smart_playlist.xml +++ b/app/src/main/res/menu/menu_item_smart_playlist.xml @@ -4,7 +4,12 @@ + + + \ 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 88a9fdd1..eb30fa3e 100644 --- a/app/src/main/res/menu/menu_playlist_detail.xml +++ b/app/src/main/res/menu/menu_playlist_detail.xml @@ -14,11 +14,6 @@ android:title="@string/action_playing_queue" app:showAsAction="never" /> - - Deleted playlist %1$s Could not create playlist %1$s %1$s?]]> + %1$s? This cannot be undone!]]> %1$d playlists?]]> %1$s?]]> %1$d songs?]]> @@ -81,6 +82,7 @@ Rename Playlist Delete Playlist Delete Playlists + Clear Playlist "Add to Playlist" New Playlist "Warning: This operation can not be undone." @@ -118,6 +120,7 @@ Open navigation drawer "Close navigation drawer" Delete + Clear Remove Rename Create