Everything is prepared to add smart playlists

This commit is contained in:
Karim Abou Zeid 2015-06-21 14:14:37 +02:00
commit 92441128df
7 changed files with 85 additions and 7 deletions

View file

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

View file

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

View file

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

View file

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