roll CustomPlaylist class into SmartPlaylist

This commit is contained in:
dkanada 2019-07-17 02:05:17 -07:00
commit 4089cb31cd
14 changed files with 38 additions and 63 deletions

View file

@ -26,11 +26,10 @@ import com.kabouzeid.gramophone.helper.menu.SongsMenuHelper;
import com.kabouzeid.gramophone.interfaces.CabHolder; import com.kabouzeid.gramophone.interfaces.CabHolder;
import com.kabouzeid.gramophone.loader.PlaylistSongLoader; import com.kabouzeid.gramophone.loader.PlaylistSongLoader;
import com.kabouzeid.gramophone.misc.WeakContextAsyncTask; import com.kabouzeid.gramophone.misc.WeakContextAsyncTask;
import com.kabouzeid.gramophone.model.AbsCustomPlaylist;
import com.kabouzeid.gramophone.model.Playlist; import com.kabouzeid.gramophone.model.Playlist;
import com.kabouzeid.gramophone.model.Song; import com.kabouzeid.gramophone.model.Song;
import com.kabouzeid.gramophone.model.smartplaylist.AbsSmartPlaylist; import com.kabouzeid.gramophone.model.playlist.AbsSmartPlaylist;
import com.kabouzeid.gramophone.model.smartplaylist.LatestPlaylist; import com.kabouzeid.gramophone.model.playlist.LatestPlaylist;
import com.kabouzeid.gramophone.util.MusicUtil; import com.kabouzeid.gramophone.util.MusicUtil;
import com.kabouzeid.gramophone.util.NavigationUtil; import com.kabouzeid.gramophone.util.NavigationUtil;
import com.kabouzeid.gramophone.util.PlaylistsUtil; import com.kabouzeid.gramophone.util.PlaylistsUtil;
@ -207,8 +206,8 @@ public class PlaylistAdapter extends AbsMultiSelectAdapter<PlaylistAdapter.ViewH
private List<Song> getSongList(@NonNull List<Playlist> playlists) { private List<Song> getSongList(@NonNull List<Playlist> playlists) {
final List<Song> songs = new ArrayList<>(); final List<Song> songs = new ArrayList<>();
for (Playlist playlist : playlists) { for (Playlist playlist : playlists) {
if (playlist instanceof AbsCustomPlaylist) { if (playlist instanceof AbsSmartPlaylist) {
songs.addAll(((AbsCustomPlaylist) playlist).getSongs(activity)); songs.addAll(((AbsSmartPlaylist) playlist).getSongs(activity));
} else { } else {
songs.addAll(PlaylistSongLoader.getPlaylistSongList(activity, playlist.id)); songs.addAll(PlaylistSongLoader.getPlaylistSongList(activity, playlist.id));
} }

View file

@ -8,7 +8,7 @@ import android.text.Html;
import com.afollestad.materialdialogs.MaterialDialog; import com.afollestad.materialdialogs.MaterialDialog;
import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.model.smartplaylist.AbsSmartPlaylist; import com.kabouzeid.gramophone.model.playlist.AbsSmartPlaylist;
/** /**
* @author Karim Abou Zeid (kabouzeid) * @author Karim Abou Zeid (kabouzeid)

View file

@ -3,15 +3,14 @@ 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.Song; import com.kabouzeid.gramophone.model.Song;
import com.kabouzeid.gramophone.model.playlist.AbsSmartPlaylist;
import java.io.BufferedWriter; import java.io.BufferedWriter;
import java.io.File; import java.io.File;
import java.io.FileWriter; import java.io.FileWriter;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList;
import java.util.List; import java.util.List;
public class M3UWriter implements M3UConstants { public class M3UWriter implements M3UConstants {
@ -22,8 +21,8 @@ public class M3UWriter implements M3UConstants {
File file = new File(dir, playlist.name.concat("." + EXTENSION)); File file = new File(dir, playlist.name.concat("." + EXTENSION));
List<? extends Song> songs; List<? extends Song> songs;
if (playlist instanceof AbsCustomPlaylist) { if (playlist instanceof AbsSmartPlaylist) {
songs = ((AbsCustomPlaylist) playlist).getSongs(context); songs = ((AbsSmartPlaylist) playlist).getSongs(context);
} else { } else {
songs = PlaylistSongLoader.getPlaylistSongList(context, playlist.id); songs = PlaylistSongLoader.getPlaylistSongList(context, playlist.id);
} }

View file

@ -15,9 +15,9 @@ import com.kabouzeid.gramophone.dialogs.RenamePlaylistDialog;
import com.kabouzeid.gramophone.helper.MusicPlayerRemote; import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
import com.kabouzeid.gramophone.loader.PlaylistSongLoader; import com.kabouzeid.gramophone.loader.PlaylistSongLoader;
import com.kabouzeid.gramophone.misc.WeakContextAsyncTask; import com.kabouzeid.gramophone.misc.WeakContextAsyncTask;
import com.kabouzeid.gramophone.model.AbsCustomPlaylist;
import com.kabouzeid.gramophone.model.Playlist; import com.kabouzeid.gramophone.model.Playlist;
import com.kabouzeid.gramophone.model.Song; import com.kabouzeid.gramophone.model.Song;
import com.kabouzeid.gramophone.model.playlist.AbsSmartPlaylist;
import com.kabouzeid.gramophone.util.PlaylistsUtil; import com.kabouzeid.gramophone.util.PlaylistsUtil;
import java.io.IOException; import java.io.IOException;
@ -57,8 +57,8 @@ public class PlaylistMenuHelper {
@NonNull @NonNull
private static List<? extends Song> getPlaylistSongs(@NonNull Activity activity, Playlist playlist) { private static List<? extends Song> getPlaylistSongs(@NonNull Activity activity, Playlist playlist) {
return playlist instanceof AbsCustomPlaylist ? return playlist instanceof AbsSmartPlaylist ?
((AbsCustomPlaylist) playlist).getSongs(activity) : ((AbsSmartPlaylist) playlist).getSongs(activity) :
PlaylistSongLoader.getPlaylistSongList(activity, playlist.id); PlaylistSongLoader.getPlaylistSongList(activity, playlist.id);
} }

View file

@ -1,28 +0,0 @@
package com.kabouzeid.gramophone.model;
import android.content.Context;
import android.os.Parcel;
import androidx.annotation.NonNull;
import java.util.ArrayList;
import java.util.List;
/**
* @author Karim Abou Zeid (kabouzeid)
*/
public abstract class AbsCustomPlaylist extends Playlist {
public AbsCustomPlaylist(int id, String name) {
super(id, name);
}
public AbsCustomPlaylist() {
}
public AbsCustomPlaylist(Parcel in) {
super(in);
}
@NonNull
public abstract List<Song> getSongs(Context context);
}

View file

@ -1,4 +1,4 @@
package com.kabouzeid.gramophone.model.smartplaylist; package com.kabouzeid.gramophone.model.playlist;
import android.content.Context; import android.content.Context;
import android.os.Parcel; import android.os.Parcel;
@ -6,12 +6,15 @@ import androidx.annotation.DrawableRes;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.model.AbsCustomPlaylist; import com.kabouzeid.gramophone.model.Playlist;
import com.kabouzeid.gramophone.model.Song;
import java.util.List;
/** /**
* @author Karim Abou Zeid (kabouzeid) * @author Karim Abou Zeid (kabouzeid)
*/ */
public abstract class AbsSmartPlaylist extends AbsCustomPlaylist { public abstract class AbsSmartPlaylist extends Playlist {
@DrawableRes @DrawableRes
public final int iconRes; public final int iconRes;
@ -27,6 +30,8 @@ public abstract class AbsSmartPlaylist extends AbsCustomPlaylist {
public abstract void clear(Context context); public abstract void clear(Context context);
public abstract List<Song> getSongs(Context context);
@Override @Override
public int hashCode() { public int hashCode() {
final int prime = 31; final int prime = 31;

View file

@ -1,4 +1,4 @@
package com.kabouzeid.gramophone.model.smartplaylist; package com.kabouzeid.gramophone.model.playlist;
import android.content.Context; import android.content.Context;
import android.os.Parcel; import android.os.Parcel;

View file

@ -1,4 +1,4 @@
package com.kabouzeid.gramophone.model.smartplaylist; package com.kabouzeid.gramophone.model.playlist;
import android.content.Context; import android.content.Context;
import android.os.Parcel; import android.os.Parcel;

View file

@ -1,4 +1,4 @@
package com.kabouzeid.gramophone.model.smartplaylist; package com.kabouzeid.gramophone.model.playlist;
import android.content.Context; import android.content.Context;
import android.os.Parcel; import android.os.Parcel;

View file

@ -1,4 +1,4 @@
package com.kabouzeid.gramophone.model.smartplaylist; package com.kabouzeid.gramophone.model.playlist;
import android.content.Context; import android.content.Context;
import android.os.Parcel; import android.os.Parcel;

View file

@ -40,6 +40,7 @@ import com.bumptech.glide.Glide;
import com.bumptech.glide.request.animation.GlideAnimation; import com.bumptech.glide.request.animation.GlideAnimation;
import com.bumptech.glide.request.target.SimpleTarget; import com.bumptech.glide.request.target.SimpleTarget;
import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.model.playlist.AbsSmartPlaylist;
import com.kabouzeid.gramophone.widgets.AppWidgetBig; import com.kabouzeid.gramophone.widgets.AppWidgetBig;
import com.kabouzeid.gramophone.widgets.AppWidgetCard; import com.kabouzeid.gramophone.widgets.AppWidgetCard;
import com.kabouzeid.gramophone.widgets.AppWidgetClassic; import com.kabouzeid.gramophone.widgets.AppWidgetClassic;
@ -49,7 +50,6 @@ import com.kabouzeid.gramophone.glide.SongGlideRequest;
import com.kabouzeid.gramophone.helper.ShuffleHelper; import com.kabouzeid.gramophone.helper.ShuffleHelper;
import com.kabouzeid.gramophone.helper.StopWatch; import com.kabouzeid.gramophone.helper.StopWatch;
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.Song; import com.kabouzeid.gramophone.model.Song;
import com.kabouzeid.gramophone.provider.HistoryStore; import com.kabouzeid.gramophone.provider.HistoryStore;
@ -307,8 +307,8 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
int shuffleMode = intent.getIntExtra(INTENT_EXTRA_SHUFFLE_MODE, getShuffleMode()); int shuffleMode = intent.getIntExtra(INTENT_EXTRA_SHUFFLE_MODE, getShuffleMode());
if (playlist != null) { if (playlist != null) {
List<Song> playlistSongs; List<Song> playlistSongs;
if (playlist instanceof AbsCustomPlaylist) { if (playlist instanceof AbsSmartPlaylist) {
playlistSongs = ((AbsCustomPlaylist) playlist).getSongs(getApplicationContext()); playlistSongs = ((AbsSmartPlaylist) playlist).getSongs(getApplicationContext());
} else { } else {
//noinspection unchecked //noinspection unchecked
playlistSongs = (List) PlaylistSongLoader.getPlaylistSongList(getApplicationContext(), playlist.id); playlistSongs = (List) PlaylistSongLoader.getPlaylistSongList(getApplicationContext(), playlist.id);

View file

@ -8,9 +8,9 @@ import com.kabouzeid.gramophone.shortcuts.shortcuttype.LatestShortcutType;
import com.kabouzeid.gramophone.shortcuts.shortcuttype.ShuffleShortcutType; import com.kabouzeid.gramophone.shortcuts.shortcuttype.ShuffleShortcutType;
import com.kabouzeid.gramophone.shortcuts.shortcuttype.FrequentShortcutType; import com.kabouzeid.gramophone.shortcuts.shortcuttype.FrequentShortcutType;
import com.kabouzeid.gramophone.model.Playlist; import com.kabouzeid.gramophone.model.Playlist;
import com.kabouzeid.gramophone.model.smartplaylist.LatestPlaylist; import com.kabouzeid.gramophone.model.playlist.LatestPlaylist;
import com.kabouzeid.gramophone.model.smartplaylist.FrequentPlaylist; import com.kabouzeid.gramophone.model.playlist.FrequentPlaylist;
import com.kabouzeid.gramophone.model.smartplaylist.ShufflePlaylist; import com.kabouzeid.gramophone.model.playlist.ShufflePlaylist;
import com.kabouzeid.gramophone.service.MusicService; import com.kabouzeid.gramophone.service.MusicService;
/** /**

View file

@ -31,9 +31,9 @@ import com.kabouzeid.gramophone.interfaces.LoaderIds;
import com.kabouzeid.gramophone.loader.PlaylistLoader; import com.kabouzeid.gramophone.loader.PlaylistLoader;
import com.kabouzeid.gramophone.loader.PlaylistSongLoader; import com.kabouzeid.gramophone.loader.PlaylistSongLoader;
import com.kabouzeid.gramophone.misc.WrappedAsyncTaskLoader; import com.kabouzeid.gramophone.misc.WrappedAsyncTaskLoader;
import com.kabouzeid.gramophone.model.AbsCustomPlaylist;
import com.kabouzeid.gramophone.model.Playlist; import com.kabouzeid.gramophone.model.Playlist;
import com.kabouzeid.gramophone.model.Song; import com.kabouzeid.gramophone.model.Song;
import com.kabouzeid.gramophone.model.playlist.AbsSmartPlaylist;
import com.kabouzeid.gramophone.ui.activities.base.AbsSlidingMusicPanelActivity; import com.kabouzeid.gramophone.ui.activities.base.AbsSlidingMusicPanelActivity;
import com.kabouzeid.gramophone.util.PhonographColorUtil; import com.kabouzeid.gramophone.util.PhonographColorUtil;
import com.kabouzeid.gramophone.util.PlaylistsUtil; import com.kabouzeid.gramophone.util.PlaylistsUtil;
@ -95,7 +95,7 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme
private void setUpRecyclerView() { private void setUpRecyclerView() {
ViewUtil.setUpFastScrollRecyclerViewColor(this, ((FastScrollRecyclerView) recyclerView), ThemeStore.accentColor(this)); ViewUtil.setUpFastScrollRecyclerViewColor(this, ((FastScrollRecyclerView) recyclerView), ThemeStore.accentColor(this));
recyclerView.setLayoutManager(new LinearLayoutManager(this)); recyclerView.setLayoutManager(new LinearLayoutManager(this));
if (playlist instanceof AbsCustomPlaylist) { if (playlist instanceof AbsSmartPlaylist) {
adapter = new PlaylistSongAdapter(this, new ArrayList<>(), R.layout.item_list, false, this); adapter = new PlaylistSongAdapter(this, new ArrayList<>(), R.layout.item_list, false, this);
recyclerView.setAdapter(adapter); recyclerView.setAdapter(adapter);
} else { } else {
@ -140,7 +140,7 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme
@Override @Override
public boolean onCreateOptionsMenu(Menu menu) { public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(playlist instanceof AbsCustomPlaylist ? R.menu.menu_smart_playlist_detail : R.menu.menu_playlist_detail, menu); getMenuInflater().inflate(playlist instanceof AbsSmartPlaylist ? R.menu.menu_smart_playlist_detail : R.menu.menu_playlist_detail, menu);
return super.onCreateOptionsMenu(menu); return super.onCreateOptionsMenu(menu);
} }
@ -183,7 +183,7 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme
public void onMediaStoreChanged() { public void onMediaStoreChanged() {
super.onMediaStoreChanged(); super.onMediaStoreChanged();
if (!(playlist instanceof AbsCustomPlaylist)) { if (!(playlist instanceof AbsSmartPlaylist)) {
// Playlist deleted // Playlist deleted
if (!PlaylistsUtil.doesPlaylistExist(this, playlist.id)) { if (!PlaylistsUtil.doesPlaylistExist(this, playlist.id)) {
finish(); finish();
@ -264,8 +264,8 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme
@Override @Override
public List<Song> loadInBackground() { public List<Song> loadInBackground() {
if (playlist instanceof AbsCustomPlaylist) { if (playlist instanceof AbsSmartPlaylist) {
return ((AbsCustomPlaylist) playlist).getSongs(getContext()); return ((AbsSmartPlaylist) playlist).getSongs(getContext());
} else { } else {
//noinspection unchecked //noinspection unchecked
return (List) PlaylistSongLoader.getPlaylistSongList(getContext(), playlist.id); return (List) PlaylistSongLoader.getPlaylistSongList(getContext(), playlist.id);

View file

@ -14,9 +14,9 @@ import com.kabouzeid.gramophone.interfaces.LoaderIds;
import com.kabouzeid.gramophone.loader.PlaylistLoader; import com.kabouzeid.gramophone.loader.PlaylistLoader;
import com.kabouzeid.gramophone.misc.WrappedAsyncTaskLoader; import com.kabouzeid.gramophone.misc.WrappedAsyncTaskLoader;
import com.kabouzeid.gramophone.model.Playlist; import com.kabouzeid.gramophone.model.Playlist;
import com.kabouzeid.gramophone.model.smartplaylist.RecentPlaylist; import com.kabouzeid.gramophone.model.playlist.RecentPlaylist;
import com.kabouzeid.gramophone.model.smartplaylist.LatestPlaylist; import com.kabouzeid.gramophone.model.playlist.LatestPlaylist;
import com.kabouzeid.gramophone.model.smartplaylist.FrequentPlaylist; import com.kabouzeid.gramophone.model.playlist.FrequentPlaylist;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;