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));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,12 @@
|
|||
<item
|
||||
android:id="@+id/action_play"
|
||||
android:title="@string/action_play" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_add_to_current_playing"
|
||||
android:title="@string/action_add_to_playing_queue" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_clear_playlist"
|
||||
android:title="@string/action_clear_playlist" />
|
||||
</menu>
|
||||
|
|
@ -14,11 +14,6 @@
|
|||
android:title="@string/action_playing_queue"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_clear_playlist"
|
||||
android:title="@string/action_clear_playlist"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_equalizer"
|
||||
android:orderInCategory="99"
|
||||
|
|
|
|||
|
|
@ -69,6 +69,7 @@
|
|||
<string name="deleted_playlist_x">Deleted playlist %1$s</string>
|
||||
<string name="couldnot_create_playlist_x">Could not create playlist %1$s</string>
|
||||
<string name="delete_playlist_x"><![CDATA[Do you want to delete the playlist <b>%1$s</b>?]]></string>
|
||||
<string name="clear_playlist_x"><![CDATA[Do you really want to clear the playlist <b>%1$s</b>? This cannot be undone!]]></string>
|
||||
<string name="delete_x_playlists"><![CDATA[Do you want to delete <b>%1$d</b> playlists?]]></string>
|
||||
<string name="delete_song_x"><![CDATA[Do you want to delete the song <b>%1$s</b>?]]></string>
|
||||
<string name="delete_x_songs"><![CDATA[Do you want to delete <b>%1$d</b> songs?]]></string>
|
||||
|
|
@ -81,6 +82,7 @@
|
|||
<string name="rename_playlist_title">Rename Playlist</string>
|
||||
<string name="delete_playlist_title">Delete Playlist</string>
|
||||
<string name="delete_playlists_title">Delete Playlists</string>
|
||||
<string name="clear_playlist_title">Clear Playlist</string>
|
||||
<string name="add_playlist_title">"Add to Playlist"</string>
|
||||
<string name="new_playlist_title">New Playlist</string>
|
||||
<string name="delete_warning">"Warning: This operation can not be undone."</string>
|
||||
|
|
@ -118,6 +120,7 @@
|
|||
<string name="navigation_drawer_open">Open navigation drawer</string>
|
||||
<string name="navigation_drawer_close">"Close navigation drawer"</string>
|
||||
<string name="delete_action">Delete</string>
|
||||
<string name="clear_action">Clear</string>
|
||||
<string name="remove_action">Remove</string>
|
||||
<string name="rename_action">Rename</string>
|
||||
<string name="create_action">Create</string>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue