Normalized playlist menus

This commit is contained in:
Karim Abou Zeid 2017-09-09 14:13:10 +02:00
commit abb9518d14
7 changed files with 84 additions and 15 deletions

View file

@ -3,8 +3,8 @@ package com.kabouzeid.gramophone.helper;
import android.content.Context; import android.content.Context;
import com.kabouzeid.gramophone.loader.PlaylistSongLoader; import com.kabouzeid.gramophone.loader.PlaylistSongLoader;
import com.kabouzeid.gramophone.model.AbsCustomPlaylist;
import com.kabouzeid.gramophone.model.Playlist; import com.kabouzeid.gramophone.model.Playlist;
import com.kabouzeid.gramophone.model.PlaylistSong;
import com.kabouzeid.gramophone.model.Song; import com.kabouzeid.gramophone.model.Song;
import java.io.BufferedWriter; import java.io.BufferedWriter;
@ -21,7 +21,12 @@ public class M3UWriter implements M3UConstants {
dir.mkdirs(); dir.mkdirs();
File file = new File(dir, playlist.name.concat("." + EXTENSION)); File file = new File(dir, playlist.name.concat("." + EXTENSION));
ArrayList<PlaylistSong> songs = PlaylistSongLoader.getPlaylistSongList(context, playlist.id); ArrayList<? extends Song> songs;
if (playlist instanceof AbsCustomPlaylist) {
songs = ((AbsCustomPlaylist) playlist).getSongs(context);
} else {
songs = PlaylistSongLoader.getPlaylistSongList(context, playlist.id);
}
if (songs.size() > 0) { if (songs.size() > 0) {
BufferedWriter bw = new BufferedWriter(new FileWriter(file)); BufferedWriter bw = new BufferedWriter(new FileWriter(file));

View file

@ -10,6 +10,7 @@ import android.view.MenuItem;
import android.widget.Toast; import android.widget.Toast;
import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.dialogs.AddToPlaylistDialog;
import com.kabouzeid.gramophone.dialogs.DeletePlaylistDialog; import com.kabouzeid.gramophone.dialogs.DeletePlaylistDialog;
import com.kabouzeid.gramophone.dialogs.RenamePlaylistDialog; import com.kabouzeid.gramophone.dialogs.RenamePlaylistDialog;
import com.kabouzeid.gramophone.helper.MusicPlayerRemote; import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
@ -33,9 +34,15 @@ public class PlaylistMenuHelper {
case R.id.action_play: case R.id.action_play:
MusicPlayerRemote.openQueue(new ArrayList<>(getPlaylistSongs(activity, playlist)), 0, true); MusicPlayerRemote.openQueue(new ArrayList<>(getPlaylistSongs(activity, playlist)), 0, true);
return true; return true;
case R.id.action_play_next:
MusicPlayerRemote.playNext(new ArrayList<>(getPlaylistSongs(activity, playlist)));
return true;
case R.id.action_add_to_current_playing: case R.id.action_add_to_current_playing:
MusicPlayerRemote.enqueue(new ArrayList<>(getPlaylistSongs(activity, playlist))); MusicPlayerRemote.enqueue(new ArrayList<>(getPlaylistSongs(activity, playlist)));
return true; return true;
case R.id.action_add_to_playlist:
AddToPlaylistDialog.create(new ArrayList<>(getPlaylistSongs(activity, playlist))).show(activity.getSupportFragmentManager(), "ADD_PLAYLIST");
return true;
case R.id.action_rename_playlist: case R.id.action_rename_playlist:
RenamePlaylistDialog.create(playlist.id).show(activity.getSupportFragmentManager(), "RENAME_PLAYLIST"); RenamePlaylistDialog.create(playlist.id).show(activity.getSupportFragmentManager(), "RENAME_PLAYLIST");
return true; return true;

View file

@ -20,8 +20,8 @@ import com.h6ah4i.android.widget.advrecyclerview.draggable.RecyclerViewDragDropM
import com.h6ah4i.android.widget.advrecyclerview.utils.WrapperAdapterUtils; import com.h6ah4i.android.widget.advrecyclerview.utils.WrapperAdapterUtils;
import com.kabouzeid.appthemehelper.ThemeStore; import com.kabouzeid.appthemehelper.ThemeStore;
import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.adapter.song.PlaylistSongAdapter;
import com.kabouzeid.gramophone.adapter.song.OrderablePlaylistSongAdapter; import com.kabouzeid.gramophone.adapter.song.OrderablePlaylistSongAdapter;
import com.kabouzeid.gramophone.adapter.song.PlaylistSongAdapter;
import com.kabouzeid.gramophone.adapter.song.SongAdapter; import com.kabouzeid.gramophone.adapter.song.SongAdapter;
import com.kabouzeid.gramophone.helper.MusicPlayerRemote; import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
import com.kabouzeid.gramophone.helper.menu.PlaylistMenuHelper; import com.kabouzeid.gramophone.helper.menu.PlaylistMenuHelper;
@ -145,7 +145,7 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme
@Override @Override
public boolean onCreateOptionsMenu(Menu menu) { public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_playlist_detail, menu); getMenuInflater().inflate(playlist instanceof AbsCustomPlaylist ? R.menu.menu_smart_playlist_detail : R.menu.menu_playlist_detail, menu);
return super.onCreateOptionsMenu(menu); return super.onCreateOptionsMenu(menu);
} }
@ -188,17 +188,19 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme
public void onMediaStoreChanged() { public void onMediaStoreChanged() {
super.onMediaStoreChanged(); super.onMediaStoreChanged();
// Playlist deleted if (!(playlist instanceof AbsCustomPlaylist)) {
if (!PlaylistsUtil.doesPlaylistExist(this, playlist.id)) { // Playlist deleted
onBackPressed(); if (!PlaylistsUtil.doesPlaylistExist(this, playlist.id)) {
return; finish();
} return;
}
// Playlist renamed // Playlist renamed
final String playlistName = PlaylistsUtil.getNameForPlaylist(this, playlist.id); final String playlistName = PlaylistsUtil.getNameForPlaylist(this, playlist.id);
if (!playlistName.equals(playlist.name)) { if (!playlistName.equals(playlist.name)) {
playlist = PlaylistLoader.getPlaylist(this, playlist.id); playlist = PlaylistLoader.getPlaylist(this, playlist.id);
setToolbarTitle(playlist.name); setToolbarTitle(playlist.name);
}
} }
getSupportLoaderManager().restartLoader(LOADER_ID, null, this); getSupportLoaderManager().restartLoader(LOADER_ID, null, this);

View file

@ -4,9 +4,15 @@
<item <item
android:id="@+id/action_play" android:id="@+id/action_play"
android:title="@string/action_play" /> android:title="@string/action_play" />
<item
android:id="@+id/action_play_next"
android:title="@string/action_play_next" />
<item <item
android:id="@+id/action_add_to_current_playing" android:id="@+id/action_add_to_current_playing"
android:title="@string/action_add_to_playing_queue" /> android:title="@string/action_add_to_playing_queue" />
<item
android:id="@+id/action_add_to_playlist"
android:title="@string/action_add_to_playlist" />
<item <item
android:id="@+id/action_rename_playlist" android:id="@+id/action_rename_playlist"
android:title="@string/action_rename" /> android:title="@string/action_rename" />

View file

@ -5,11 +5,23 @@
android:id="@+id/action_play" android:id="@+id/action_play"
android:title="@string/action_play" /> android:title="@string/action_play" />
<item
android:id="@+id/action_play_next"
android:title="@string/action_play_next" />
<item <item
android:id="@+id/action_add_to_current_playing" android:id="@+id/action_add_to_current_playing"
android:title="@string/action_add_to_playing_queue" /> android:title="@string/action_add_to_playing_queue" />
<item
android:id="@+id/action_add_to_playlist"
android:title="@string/action_add_to_playlist" />
<item <item
android:id="@+id/action_clear_playlist" android:id="@+id/action_clear_playlist"
android:title="@string/action_clear_playlist" /> android:title="@string/action_clear_playlist" />
<item
android:id="@+id/action_save_playlist"
android:title="@string/save_playlist_title" />
</menu> </menu>

View file

@ -8,15 +8,21 @@
android:icon="@drawable/ic_shuffle_white_24dp" android:icon="@drawable/ic_shuffle_white_24dp"
android:title="@string/action_shuffle_playlist" android:title="@string/action_shuffle_playlist"
app:showAsAction="ifRoom" /> app:showAsAction="ifRoom" />
<item <item
android:id="@+id/action_play" android:id="@+id/action_play"
android:title="@string/action_play" android:title="@string/action_play"
app:showAsAction="never" /> app:showAsAction="never" />
<item
android:id="@+id/action_play_next"
android:title="@string/action_play_next"
app:showAsAction="never" />
<item <item
android:id="@+id/action_add_to_current_playing" android:id="@+id/action_add_to_current_playing"
android:title="@string/action_add_to_playing_queue" android:title="@string/action_add_to_playing_queue"
app:showAsAction="never" /> app:showAsAction="never" />
<item
android:id="@+id/action_add_to_playlist"
android:title="@string/action_add_to_playlist" />
<item <item
android:id="@+id/action_rename_playlist" android:id="@+id/action_rename_playlist"
android:title="@string/action_rename" android:title="@string/action_rename"

View file

@ -0,0 +1,31 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.kabouzeid.gramophone.ui.activities.PlaylistDetailActivity">
<item
android:id="@+id/action_shuffle_playlist"
android:icon="@drawable/ic_shuffle_white_24dp"
android:title="@string/action_shuffle_playlist"
app:showAsAction="ifRoom" />
<item
android:id="@+id/action_play"
android:title="@string/action_play"
app:showAsAction="never" />
<item
android:id="@+id/action_play_next"
android:title="@string/action_play_next"
app:showAsAction="never" />
<item
android:id="@+id/action_add_to_current_playing"
android:title="@string/action_add_to_playing_queue"
app:showAsAction="never" />
<item
android:id="@+id/action_add_to_playlist"
android:title="@string/action_add_to_playlist" />
<item
android:id="@+id/action_save_playlist"
android:title="@string/save_playlist_title"
app:showAsAction="never" />
</menu>