roll CustomPlaylist class into SmartPlaylist
This commit is contained in:
parent
0891555785
commit
4089cb31cd
14 changed files with 38 additions and 63 deletions
|
|
@ -26,11 +26,10 @@ import com.kabouzeid.gramophone.helper.menu.SongsMenuHelper;
|
|||
import com.kabouzeid.gramophone.interfaces.CabHolder;
|
||||
import com.kabouzeid.gramophone.loader.PlaylistSongLoader;
|
||||
import com.kabouzeid.gramophone.misc.WeakContextAsyncTask;
|
||||
import com.kabouzeid.gramophone.model.AbsCustomPlaylist;
|
||||
import com.kabouzeid.gramophone.model.Playlist;
|
||||
import com.kabouzeid.gramophone.model.Song;
|
||||
import com.kabouzeid.gramophone.model.smartplaylist.AbsSmartPlaylist;
|
||||
import com.kabouzeid.gramophone.model.smartplaylist.LatestPlaylist;
|
||||
import com.kabouzeid.gramophone.model.playlist.AbsSmartPlaylist;
|
||||
import com.kabouzeid.gramophone.model.playlist.LatestPlaylist;
|
||||
import com.kabouzeid.gramophone.util.MusicUtil;
|
||||
import com.kabouzeid.gramophone.util.NavigationUtil;
|
||||
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) {
|
||||
final List<Song> songs = new ArrayList<>();
|
||||
for (Playlist playlist : playlists) {
|
||||
if (playlist instanceof AbsCustomPlaylist) {
|
||||
songs.addAll(((AbsCustomPlaylist) playlist).getSongs(activity));
|
||||
if (playlist instanceof AbsSmartPlaylist) {
|
||||
songs.addAll(((AbsSmartPlaylist) playlist).getSongs(activity));
|
||||
} else {
|
||||
songs.addAll(PlaylistSongLoader.getPlaylistSongList(activity, playlist.id));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import android.text.Html;
|
|||
|
||||
import com.afollestad.materialdialogs.MaterialDialog;
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.model.smartplaylist.AbsSmartPlaylist;
|
||||
import com.kabouzeid.gramophone.model.playlist.AbsSmartPlaylist;
|
||||
|
||||
/**
|
||||
* @author Karim Abou Zeid (kabouzeid)
|
||||
|
|
|
|||
|
|
@ -3,15 +3,14 @@ package com.kabouzeid.gramophone.helper;
|
|||
import android.content.Context;
|
||||
|
||||
import com.kabouzeid.gramophone.loader.PlaylistSongLoader;
|
||||
import com.kabouzeid.gramophone.model.AbsCustomPlaylist;
|
||||
import com.kabouzeid.gramophone.model.Playlist;
|
||||
import com.kabouzeid.gramophone.model.Song;
|
||||
import com.kabouzeid.gramophone.model.playlist.AbsSmartPlaylist;
|
||||
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.File;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class M3UWriter implements M3UConstants {
|
||||
|
|
@ -22,8 +21,8 @@ public class M3UWriter implements M3UConstants {
|
|||
File file = new File(dir, playlist.name.concat("." + EXTENSION));
|
||||
|
||||
List<? extends Song> songs;
|
||||
if (playlist instanceof AbsCustomPlaylist) {
|
||||
songs = ((AbsCustomPlaylist) playlist).getSongs(context);
|
||||
if (playlist instanceof AbsSmartPlaylist) {
|
||||
songs = ((AbsSmartPlaylist) playlist).getSongs(context);
|
||||
} else {
|
||||
songs = PlaylistSongLoader.getPlaylistSongList(context, playlist.id);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,9 +15,9 @@ import com.kabouzeid.gramophone.dialogs.RenamePlaylistDialog;
|
|||
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
|
||||
import com.kabouzeid.gramophone.loader.PlaylistSongLoader;
|
||||
import com.kabouzeid.gramophone.misc.WeakContextAsyncTask;
|
||||
import com.kabouzeid.gramophone.model.AbsCustomPlaylist;
|
||||
import com.kabouzeid.gramophone.model.Playlist;
|
||||
import com.kabouzeid.gramophone.model.Song;
|
||||
import com.kabouzeid.gramophone.model.playlist.AbsSmartPlaylist;
|
||||
import com.kabouzeid.gramophone.util.PlaylistsUtil;
|
||||
|
||||
import java.io.IOException;
|
||||
|
|
@ -57,8 +57,8 @@ public class PlaylistMenuHelper {
|
|||
|
||||
@NonNull
|
||||
private static List<? extends Song> getPlaylistSongs(@NonNull Activity activity, Playlist playlist) {
|
||||
return playlist instanceof AbsCustomPlaylist ?
|
||||
((AbsCustomPlaylist) playlist).getSongs(activity) :
|
||||
return playlist instanceof AbsSmartPlaylist ?
|
||||
((AbsSmartPlaylist) playlist).getSongs(activity) :
|
||||
PlaylistSongLoader.getPlaylistSongList(activity, playlist.id);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.kabouzeid.gramophone.model.smartplaylist;
|
||||
package com.kabouzeid.gramophone.model.playlist;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Parcel;
|
||||
|
|
@ -6,12 +6,15 @@ import androidx.annotation.DrawableRes;
|
|||
import androidx.annotation.Nullable;
|
||||
|
||||
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)
|
||||
*/
|
||||
public abstract class AbsSmartPlaylist extends AbsCustomPlaylist {
|
||||
public abstract class AbsSmartPlaylist extends Playlist {
|
||||
@DrawableRes
|
||||
public final int iconRes;
|
||||
|
||||
|
|
@ -27,6 +30,8 @@ public abstract class AbsSmartPlaylist extends AbsCustomPlaylist {
|
|||
|
||||
public abstract void clear(Context context);
|
||||
|
||||
public abstract List<Song> getSongs(Context context);
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
final int prime = 31;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.kabouzeid.gramophone.model.smartplaylist;
|
||||
package com.kabouzeid.gramophone.model.playlist;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Parcel;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.kabouzeid.gramophone.model.smartplaylist;
|
||||
package com.kabouzeid.gramophone.model.playlist;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Parcel;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.kabouzeid.gramophone.model.smartplaylist;
|
||||
package com.kabouzeid.gramophone.model.playlist;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Parcel;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.kabouzeid.gramophone.model.smartplaylist;
|
||||
package com.kabouzeid.gramophone.model.playlist;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Parcel;
|
||||
|
|
@ -40,6 +40,7 @@ import com.bumptech.glide.Glide;
|
|||
import com.bumptech.glide.request.animation.GlideAnimation;
|
||||
import com.bumptech.glide.request.target.SimpleTarget;
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.model.playlist.AbsSmartPlaylist;
|
||||
import com.kabouzeid.gramophone.widgets.AppWidgetBig;
|
||||
import com.kabouzeid.gramophone.widgets.AppWidgetCard;
|
||||
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.StopWatch;
|
||||
import com.kabouzeid.gramophone.loader.PlaylistSongLoader;
|
||||
import com.kabouzeid.gramophone.model.AbsCustomPlaylist;
|
||||
import com.kabouzeid.gramophone.model.Playlist;
|
||||
import com.kabouzeid.gramophone.model.Song;
|
||||
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());
|
||||
if (playlist != null) {
|
||||
List<Song> playlistSongs;
|
||||
if (playlist instanceof AbsCustomPlaylist) {
|
||||
playlistSongs = ((AbsCustomPlaylist) playlist).getSongs(getApplicationContext());
|
||||
if (playlist instanceof AbsSmartPlaylist) {
|
||||
playlistSongs = ((AbsSmartPlaylist) playlist).getSongs(getApplicationContext());
|
||||
} else {
|
||||
//noinspection unchecked
|
||||
playlistSongs = (List) PlaylistSongLoader.getPlaylistSongList(getApplicationContext(), playlist.id);
|
||||
|
|
|
|||
|
|
@ -8,9 +8,9 @@ import com.kabouzeid.gramophone.shortcuts.shortcuttype.LatestShortcutType;
|
|||
import com.kabouzeid.gramophone.shortcuts.shortcuttype.ShuffleShortcutType;
|
||||
import com.kabouzeid.gramophone.shortcuts.shortcuttype.FrequentShortcutType;
|
||||
import com.kabouzeid.gramophone.model.Playlist;
|
||||
import com.kabouzeid.gramophone.model.smartplaylist.LatestPlaylist;
|
||||
import com.kabouzeid.gramophone.model.smartplaylist.FrequentPlaylist;
|
||||
import com.kabouzeid.gramophone.model.smartplaylist.ShufflePlaylist;
|
||||
import com.kabouzeid.gramophone.model.playlist.LatestPlaylist;
|
||||
import com.kabouzeid.gramophone.model.playlist.FrequentPlaylist;
|
||||
import com.kabouzeid.gramophone.model.playlist.ShufflePlaylist;
|
||||
import com.kabouzeid.gramophone.service.MusicService;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -31,9 +31,9 @@ import com.kabouzeid.gramophone.interfaces.LoaderIds;
|
|||
import com.kabouzeid.gramophone.loader.PlaylistLoader;
|
||||
import com.kabouzeid.gramophone.loader.PlaylistSongLoader;
|
||||
import com.kabouzeid.gramophone.misc.WrappedAsyncTaskLoader;
|
||||
import com.kabouzeid.gramophone.model.AbsCustomPlaylist;
|
||||
import com.kabouzeid.gramophone.model.Playlist;
|
||||
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.util.PhonographColorUtil;
|
||||
import com.kabouzeid.gramophone.util.PlaylistsUtil;
|
||||
|
|
@ -95,7 +95,7 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme
|
|||
private void setUpRecyclerView() {
|
||||
ViewUtil.setUpFastScrollRecyclerViewColor(this, ((FastScrollRecyclerView) recyclerView), ThemeStore.accentColor(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);
|
||||
recyclerView.setAdapter(adapter);
|
||||
} else {
|
||||
|
|
@ -140,7 +140,7 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme
|
|||
|
||||
@Override
|
||||
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);
|
||||
}
|
||||
|
||||
|
|
@ -183,7 +183,7 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme
|
|||
public void onMediaStoreChanged() {
|
||||
super.onMediaStoreChanged();
|
||||
|
||||
if (!(playlist instanceof AbsCustomPlaylist)) {
|
||||
if (!(playlist instanceof AbsSmartPlaylist)) {
|
||||
// Playlist deleted
|
||||
if (!PlaylistsUtil.doesPlaylistExist(this, playlist.id)) {
|
||||
finish();
|
||||
|
|
@ -264,8 +264,8 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme
|
|||
|
||||
@Override
|
||||
public List<Song> loadInBackground() {
|
||||
if (playlist instanceof AbsCustomPlaylist) {
|
||||
return ((AbsCustomPlaylist) playlist).getSongs(getContext());
|
||||
if (playlist instanceof AbsSmartPlaylist) {
|
||||
return ((AbsSmartPlaylist) playlist).getSongs(getContext());
|
||||
} else {
|
||||
//noinspection unchecked
|
||||
return (List) PlaylistSongLoader.getPlaylistSongList(getContext(), playlist.id);
|
||||
|
|
|
|||
|
|
@ -14,9 +14,9 @@ import com.kabouzeid.gramophone.interfaces.LoaderIds;
|
|||
import com.kabouzeid.gramophone.loader.PlaylistLoader;
|
||||
import com.kabouzeid.gramophone.misc.WrappedAsyncTaskLoader;
|
||||
import com.kabouzeid.gramophone.model.Playlist;
|
||||
import com.kabouzeid.gramophone.model.smartplaylist.RecentPlaylist;
|
||||
import com.kabouzeid.gramophone.model.smartplaylist.LatestPlaylist;
|
||||
import com.kabouzeid.gramophone.model.smartplaylist.FrequentPlaylist;
|
||||
import com.kabouzeid.gramophone.model.playlist.RecentPlaylist;
|
||||
import com.kabouzeid.gramophone.model.playlist.LatestPlaylist;
|
||||
import com.kabouzeid.gramophone.model.playlist.FrequentPlaylist;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue