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.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;

View File

@ -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);
}

View File

@ -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);
}
}
}

View File

@ -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));
}