From 7c7fd78499abcaa417549b46deb5b3d19dcbf9cb Mon Sep 17 00:00:00 2001 From: Adrian Ulrich Date: Sat, 23 Jul 2016 16:59:11 +0200 Subject: [PATCH] fix 'add to playlist' for library headers --- .../android/vanilla/FullPlaybackActivity.java | 2 +- .../android/vanilla/LibraryActivity.java | 5 +++++ .../android/vanilla/PlaylistDialog.java | 15 ++++++++++----- .../android/vanilla/SlidingPlaybackActivity.java | 10 +++++----- 4 files changed, 21 insertions(+), 11 deletions(-) diff --git a/src/ch/blinkenlights/android/vanilla/FullPlaybackActivity.java b/src/ch/blinkenlights/android/vanilla/FullPlaybackActivity.java index 8f5400ab..57c02e69 100644 --- a/src/ch/blinkenlights/android/vanilla/FullPlaybackActivity.java +++ b/src/ch/blinkenlights/android/vanilla/FullPlaybackActivity.java @@ -348,7 +348,7 @@ public class FullPlaybackActivity extends SlidingPlaybackActivity Intent intent = new Intent(); intent.putExtra("type", MediaUtils.TYPE_SONG); intent.putExtra("id", song.id); - PlaylistDialog dialog = new PlaylistDialog(this, intent); + PlaylistDialog dialog = new PlaylistDialog(this, intent, null); dialog.show(getFragmentManager(), "PlaylistDialog"); } break; diff --git a/src/ch/blinkenlights/android/vanilla/LibraryActivity.java b/src/ch/blinkenlights/android/vanilla/LibraryActivity.java index 90aaffab..a59d367f 100644 --- a/src/ch/blinkenlights/android/vanilla/LibraryActivity.java +++ b/src/ch/blinkenlights/android/vanilla/LibraryActivity.java @@ -718,6 +718,11 @@ public class LibraryActivity setLimiter(MediaUtils.TYPE_ALBUM, "_id=" + intent.getLongExtra(LibraryAdapter.DATA_ID, LibraryAdapter.INVALID_ID)); updateLimiterViews(); break; + case CTX_MENU_ADD_TO_PLAYLIST: + long id = intent.getLongExtra("id", LibraryAdapter.INVALID_ID); + PlaylistDialog plDialog = new PlaylistDialog(this, intent, (id == LibraryAdapter.HEADER_ID ? (MediaAdapter)mCurrentAdapter : null)); + plDialog.show(getFragmentManager(), "PlaylistDialog"); + break; default: return super.onContextItemSelected(item); } diff --git a/src/ch/blinkenlights/android/vanilla/PlaylistDialog.java b/src/ch/blinkenlights/android/vanilla/PlaylistDialog.java index 27509e65..facb3e21 100644 --- a/src/ch/blinkenlights/android/vanilla/PlaylistDialog.java +++ b/src/ch/blinkenlights/android/vanilla/PlaylistDialog.java @@ -43,6 +43,10 @@ public class PlaylistDialog extends DialogFragment * The intent to act on */ private Intent mIntent; + /** + * The media adapter to pass on which will be used to query all songs + */ + private MediaAdapter mAllSrc; /** * Array of all found playlist names */ @@ -60,14 +64,15 @@ public class PlaylistDialog extends DialogFragment * Our callback interface */ public interface Callback { - void appendToPlaylistFromIntent(Intent intent); - void createNewPlaylistFromIntent(Intent intent); + void appendToPlaylistFromIntent(Intent intent, MediaAdapter allSource); + void createNewPlaylistFromIntent(Intent intent, MediaAdapter allSource); } - PlaylistDialog(Callback callback, Intent intent) { + PlaylistDialog(Callback callback, Intent intent, MediaAdapter allSource) { mCallback = callback; mIntent = intent; + mAllSrc = allSource; } @Override @@ -100,12 +105,12 @@ public class PlaylistDialog extends DialogFragment @Override public void onClick(DialogInterface dialog, int which) { if (mItemValue[which] == VALUE_CREATE_PLAYLIST) { - mCallback.createNewPlaylistFromIntent(mIntent); + mCallback.createNewPlaylistFromIntent(mIntent, mAllSrc); } else { Intent copy = new Intent(mIntent); copy.putExtra("playlist", mItemValue[which]); copy.putExtra("playlistName", mItemName[which]); - mCallback.appendToPlaylistFromIntent(copy); + mCallback.appendToPlaylistFromIntent(copy, mAllSrc); } } } diff --git a/src/ch/blinkenlights/android/vanilla/SlidingPlaybackActivity.java b/src/ch/blinkenlights/android/vanilla/SlidingPlaybackActivity.java index fc9f240d..1cc18dc8 100644 --- a/src/ch/blinkenlights/android/vanilla/SlidingPlaybackActivity.java +++ b/src/ch/blinkenlights/android/vanilla/SlidingPlaybackActivity.java @@ -156,7 +156,7 @@ public class SlidingPlaybackActivity extends PlaybackActivity final Intent intent = item.getIntent(); switch (item.getItemId()) { case CTX_MENU_ADD_TO_PLAYLIST: { - PlaylistDialog dialog = new PlaylistDialog(this, intent); + PlaylistDialog dialog = new PlaylistDialog(this, intent, null); dialog.show(getFragmentManager(), "PlaylistDialog"); break; } @@ -172,9 +172,9 @@ public class SlidingPlaybackActivity extends PlaybackActivity * * @param intent The intent holding the selected data */ - public void createNewPlaylistFromIntent(Intent intent) { + public void createNewPlaylistFromIntent(Intent intent, MediaAdapter allSource) { PlaylistTask playlistTask = new PlaylistTask(-1, null); - playlistTask.query = buildQueryFromIntent(intent, true, null); + playlistTask.query = buildQueryFromIntent(intent, true, allSource); NewPlaylistDialog dialog = new NewPlaylistDialog(this, null, R.string.create, playlistTask); dialog.setDismissMessage(mHandler.obtainMessage(MSG_NEW_PLAYLIST, dialog)); dialog.show(); @@ -186,11 +186,11 @@ public class SlidingPlaybackActivity extends PlaybackActivity * * @param intent The intent holding the selected data */ - public void appendToPlaylistFromIntent(Intent intent) { + public void appendToPlaylistFromIntent(Intent intent, MediaAdapter allSource) { long playlistId = intent.getLongExtra("playlist", -1); String playlistName = intent.getStringExtra("playlistName"); PlaylistTask playlistTask = new PlaylistTask(playlistId, playlistName); - playlistTask.query = buildQueryFromIntent(intent, true, null); + playlistTask.query = buildQueryFromIntent(intent, true, allSource); mHandler.sendMessage(mHandler.obtainMessage(MSG_ADD_TO_PLAYLIST, playlistTask)); }