fix 'add to playlist' for library headers

This commit is contained in:
Adrian Ulrich 2016-07-23 16:59:11 +02:00
parent d1a2bab400
commit 7c7fd78499
4 changed files with 21 additions and 11 deletions

View File

@ -348,7 +348,7 @@ public class FullPlaybackActivity extends SlidingPlaybackActivity
Intent intent = new Intent(); Intent intent = new Intent();
intent.putExtra("type", MediaUtils.TYPE_SONG); intent.putExtra("type", MediaUtils.TYPE_SONG);
intent.putExtra("id", song.id); intent.putExtra("id", song.id);
PlaylistDialog dialog = new PlaylistDialog(this, intent); PlaylistDialog dialog = new PlaylistDialog(this, intent, null);
dialog.show(getFragmentManager(), "PlaylistDialog"); dialog.show(getFragmentManager(), "PlaylistDialog");
} }
break; break;

View File

@ -718,6 +718,11 @@ public class LibraryActivity
setLimiter(MediaUtils.TYPE_ALBUM, "_id=" + intent.getLongExtra(LibraryAdapter.DATA_ID, LibraryAdapter.INVALID_ID)); setLimiter(MediaUtils.TYPE_ALBUM, "_id=" + intent.getLongExtra(LibraryAdapter.DATA_ID, LibraryAdapter.INVALID_ID));
updateLimiterViews(); updateLimiterViews();
break; 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: default:
return super.onContextItemSelected(item); return super.onContextItemSelected(item);
} }

View File

@ -43,6 +43,10 @@ public class PlaylistDialog extends DialogFragment
* The intent to act on * The intent to act on
*/ */
private Intent mIntent; 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 * Array of all found playlist names
*/ */
@ -60,14 +64,15 @@ public class PlaylistDialog extends DialogFragment
* Our callback interface * Our callback interface
*/ */
public interface Callback { public interface Callback {
void appendToPlaylistFromIntent(Intent intent); void appendToPlaylistFromIntent(Intent intent, MediaAdapter allSource);
void createNewPlaylistFromIntent(Intent intent); void createNewPlaylistFromIntent(Intent intent, MediaAdapter allSource);
} }
PlaylistDialog(Callback callback, Intent intent) { PlaylistDialog(Callback callback, Intent intent, MediaAdapter allSource) {
mCallback = callback; mCallback = callback;
mIntent = intent; mIntent = intent;
mAllSrc = allSource;
} }
@Override @Override
@ -100,12 +105,12 @@ public class PlaylistDialog extends DialogFragment
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
if (mItemValue[which] == VALUE_CREATE_PLAYLIST) { if (mItemValue[which] == VALUE_CREATE_PLAYLIST) {
mCallback.createNewPlaylistFromIntent(mIntent); mCallback.createNewPlaylistFromIntent(mIntent, mAllSrc);
} else { } else {
Intent copy = new Intent(mIntent); Intent copy = new Intent(mIntent);
copy.putExtra("playlist", mItemValue[which]); copy.putExtra("playlist", mItemValue[which]);
copy.putExtra("playlistName", mItemName[which]); copy.putExtra("playlistName", mItemName[which]);
mCallback.appendToPlaylistFromIntent(copy); mCallback.appendToPlaylistFromIntent(copy, mAllSrc);
} }
} }
} }

View File

@ -156,7 +156,7 @@ public class SlidingPlaybackActivity extends PlaybackActivity
final Intent intent = item.getIntent(); final Intent intent = item.getIntent();
switch (item.getItemId()) { switch (item.getItemId()) {
case CTX_MENU_ADD_TO_PLAYLIST: { case CTX_MENU_ADD_TO_PLAYLIST: {
PlaylistDialog dialog = new PlaylistDialog(this, intent); PlaylistDialog dialog = new PlaylistDialog(this, intent, null);
dialog.show(getFragmentManager(), "PlaylistDialog"); dialog.show(getFragmentManager(), "PlaylistDialog");
break; break;
} }
@ -172,9 +172,9 @@ public class SlidingPlaybackActivity extends PlaybackActivity
* *
* @param intent The intent holding the selected data * @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 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); NewPlaylistDialog dialog = new NewPlaylistDialog(this, null, R.string.create, playlistTask);
dialog.setDismissMessage(mHandler.obtainMessage(MSG_NEW_PLAYLIST, dialog)); dialog.setDismissMessage(mHandler.obtainMessage(MSG_NEW_PLAYLIST, dialog));
dialog.show(); dialog.show();
@ -186,11 +186,11 @@ public class SlidingPlaybackActivity extends PlaybackActivity
* *
* @param intent The intent holding the selected data * @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); long playlistId = intent.getLongExtra("playlist", -1);
String playlistName = intent.getStringExtra("playlistName"); String playlistName = intent.getStringExtra("playlistName");
PlaylistTask playlistTask = new PlaylistTask(playlistId, 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)); mHandler.sendMessage(mHandler.obtainMessage(MSG_ADD_TO_PLAYLIST, playlistTask));
} }