Everything is prepared to add smart playlists
This commit is contained in:
parent
3bc0059989
commit
92441128df
7 changed files with 85 additions and 7 deletions
|
|
@ -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<PlaylistAdapter.ViewH
|
|||
protected void onMultipleItemAction(MenuItem menuItem, ArrayList<Playlist> 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<PlaylistAdapter.ViewH
|
|||
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
|
||||
@Override
|
||||
public boolean onMenuItemClick(MenuItem item) {
|
||||
if (item.getItemId() == R.id.action_clear_playlist) {
|
||||
Playlist playlist = dataSet.get(getAdapterPosition());
|
||||
if (playlist instanceof SmartPlaylist) {
|
||||
ClearSmartPlaylistDialog.create((SmartPlaylist) playlist).show(activity.getSupportFragmentManager(), "CLEAR_SMART_PLAYLIST_" + playlist.name);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return MenuItemClickHelper.handlePlaylistMenuClick(
|
||||
activity, dataSet.get(getAdapterPosition()), item);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,51 @@
|
|||
package com.kabouzeid.gramophone.dialogs;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v4.app.DialogFragment;
|
||||
import android.text.Html;
|
||||
|
||||
import com.afollestad.materialdialogs.MaterialDialog;
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.model.smartplaylist.SmartPlaylist;
|
||||
|
||||
/**
|
||||
* @author Karim Abou Zeid (kabouzeid)
|
||||
*/
|
||||
public class ClearSmartPlaylistDialog extends DialogFragment {
|
||||
|
||||
public static ClearSmartPlaylistDialog create(SmartPlaylist playlist) {
|
||||
ClearSmartPlaylistDialog dialog = new ClearSmartPlaylistDialog();
|
||||
Bundle args = new Bundle();
|
||||
args.putSerializable("playlist", playlist);
|
||||
dialog.setArguments(args);
|
||||
return dialog;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||
//noinspection unchecked
|
||||
final SmartPlaylist playlist = (SmartPlaylist) getArguments().getSerializable("playlist");
|
||||
int title = R.string.clear_playlist_title;
|
||||
//noinspection ConstantConditions
|
||||
CharSequence content = Html.fromHtml(getString(R.string.clear_playlist_x, playlist.name));
|
||||
|
||||
return new MaterialDialog.Builder(getActivity())
|
||||
.title(title)
|
||||
.content(content)
|
||||
.positiveText(R.string.clear_action)
|
||||
.negativeText(android.R.string.cancel)
|
||||
.callback(new MaterialDialog.ButtonCallback() {
|
||||
@Override
|
||||
public void onPositive(MaterialDialog dialog) {
|
||||
super.onPositive(dialog);
|
||||
if (getActivity() == null) {
|
||||
return;
|
||||
}
|
||||
playlist.clear(getActivity());
|
||||
}
|
||||
}).build();
|
||||
}
|
||||
}
|
||||
|
|
@ -39,6 +39,7 @@ public class DeletePlaylistDialog extends DialogFragment {
|
|||
final ArrayList<Playlist> playlists = (ArrayList<Playlist>) 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()));
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue