Fix crashes on home screen shortcuts and going to artist page

This commit is contained in:
h4h13 2019-03-05 08:10:57 +05:30
parent 240874f312
commit 263620310f
38 changed files with 214 additions and 222 deletions

View file

@ -12,14 +12,32 @@
* See the GNU General Public License for more details.
*/
package code.name.monkey.retromusic.model
package code.name.monkey.retromusic.model;
import android.content.Context
import io.reactivex.Observable
import java.util.*
import android.content.Context;
import android.os.Parcel;
abstract class AbsCustomPlaylist(id: Int, name: String) : Playlist(id, name) {
import java.util.ArrayList;
abstract fun getSongs(context: Context): Observable<ArrayList<Song>>
import androidx.annotation.NonNull;
import io.reactivex.Observable;
/**
* @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 Observable<ArrayList<Song>> getSongs(Context context);
}

View file

@ -16,15 +16,13 @@ package code.name.monkey.retromusic.model.smartplaylist;
import android.content.Context;
import android.os.Parcel;
import android.support.annotation.DrawableRes;
import android.support.annotation.Nullable;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.model.AbsCustomPlaylist;
import androidx.annotation.DrawableRes;
import androidx.annotation.Nullable;
import code.name.monkey.retromusic.R;
import code.name.monkey.retromusic.model.AbsCustomPlaylist;
/**
* @author Karim Abou Zeid (kabouzeid)
*/
public abstract class AbsSmartPlaylist extends AbsCustomPlaylist {
@DrawableRes
public final int iconRes;

View file

@ -16,45 +16,21 @@ package code.name.monkey.retromusic.model.smartplaylist;
import android.content.Context;
import android.os.Parcel;
import android.support.annotation.NonNull;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.loader.TopAndRecentlyPlayedTracksLoader;
import com.kabouzeid.gramophone.model.Song;
import com.kabouzeid.gramophone.provider.HistoryStore;
import java.util.ArrayList;
import androidx.annotation.NonNull;
import code.name.monkey.retromusic.R;
import code.name.monkey.retromusic.loaders.TopAndRecentlyPlayedTracksLoader;
import code.name.monkey.retromusic.model.Song;
import code.name.monkey.retromusic.providers.HistoryStore;
import io.reactivex.Observable;
/**
* @author Karim Abou Zeid (kabouzeid)
*/
public class HistoryPlaylist extends AbsSmartPlaylist {
public HistoryPlaylist(@NonNull Context context) {
super(context.getString(R.string.history), R.drawable.ic_access_time_white_24dp);
}
@NonNull
@Override
public ArrayList<Song> getSongs(@NonNull Context context) {
return TopAndRecentlyPlayedTracksLoader.getRecentlyPlayedTracks(context);
}
@Override
public void clear(@NonNull Context context) {
HistoryStore.getInstance(context).clear();
}
@Override
public int describeContents() {
return 0;
}
protected HistoryPlaylist(Parcel in) {
super(in);
}
public static final Creator<HistoryPlaylist> CREATOR = new Creator<HistoryPlaylist>() {
public HistoryPlaylist createFromParcel(Parcel source) {
return new HistoryPlaylist(source);
@ -64,4 +40,28 @@ public class HistoryPlaylist extends AbsSmartPlaylist {
return new HistoryPlaylist[size];
}
};
public HistoryPlaylist(@NonNull Context context) {
super(context.getString(R.string.history), R.drawable.ic_access_time_white_24dp);
}
protected HistoryPlaylist(Parcel in) {
super(in);
}
@NonNull
@Override
public Observable<ArrayList<Song>> getSongs(@NonNull Context context) {
return TopAndRecentlyPlayedTracksLoader.INSTANCE.getRecentlyPlayedTracks(context);
}
@Override
public void clear(@NonNull Context context) {
HistoryStore.getInstance(context).clear();
}
@Override
public int describeContents() {
return 0;
}
}

View file

@ -16,27 +16,40 @@ package code.name.monkey.retromusic.model.smartplaylist;
import android.content.Context;
import android.os.Parcel;
import android.support.annotation.NonNull;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.loader.LastAddedLoader;
import com.kabouzeid.gramophone.model.Song;
import java.util.ArrayList;
/**
* @author Karim Abou Zeid (kabouzeid)
*/
import androidx.annotation.NonNull;
import code.name.monkey.retromusic.R;
import code.name.monkey.retromusic.loaders.LastAddedSongsLoader;
import code.name.monkey.retromusic.model.Song;
import io.reactivex.Observable;
public class LastAddedPlaylist extends AbsSmartPlaylist {
public static final Creator<LastAddedPlaylist> CREATOR = new Creator<LastAddedPlaylist>() {
public LastAddedPlaylist createFromParcel(Parcel source) {
return new LastAddedPlaylist(source);
}
public LastAddedPlaylist[] newArray(int size) {
return new LastAddedPlaylist[size];
}
};
public LastAddedPlaylist(@NonNull Context context) {
super(context.getString(R.string.last_added), R.drawable.ic_library_add_white_24dp);
}
protected LastAddedPlaylist(Parcel in) {
super(in);
}
@NonNull
@Override
public ArrayList<Song> getSongs(@NonNull Context context) {
return LastAddedLoader.getLastAddedSongs(context);
public Observable<ArrayList<Song>> getSongs(@NonNull Context context) {
return LastAddedSongsLoader.INSTANCE.getLastAddedSongs(context);
}
@Override
@ -52,18 +65,4 @@ public class LastAddedPlaylist extends AbsSmartPlaylist {
public int describeContents() {
return 0;
}
protected LastAddedPlaylist(Parcel in) {
super(in);
}
public static final Creator<LastAddedPlaylist> CREATOR = new Creator<LastAddedPlaylist>() {
public LastAddedPlaylist createFromParcel(Parcel source) {
return new LastAddedPlaylist(source);
}
public LastAddedPlaylist[] newArray(int size) {
return new LastAddedPlaylist[size];
}
};
}

View file

@ -16,45 +16,21 @@ package code.name.monkey.retromusic.model.smartplaylist;
import android.content.Context;
import android.os.Parcel;
import android.support.annotation.NonNull;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.loader.TopAndRecentlyPlayedTracksLoader;
import com.kabouzeid.gramophone.model.Song;
import com.kabouzeid.gramophone.provider.SongPlayCountStore;
import java.util.ArrayList;
import androidx.annotation.NonNull;
import code.name.monkey.retromusic.R;
import code.name.monkey.retromusic.loaders.TopAndRecentlyPlayedTracksLoader;
import code.name.monkey.retromusic.model.Song;
import code.name.monkey.retromusic.providers.SongPlayCountStore;
import io.reactivex.Observable;
/**
* @author Karim Abou Zeid (kabouzeid)
*/
public class MyTopTracksPlaylist extends AbsSmartPlaylist {
public MyTopTracksPlaylist(@NonNull Context context) {
super(context.getString(R.string.my_top_tracks), R.drawable.ic_trending_up_white_24dp);
}
@NonNull
@Override
public ArrayList<Song> getSongs(@NonNull Context context) {
return TopAndRecentlyPlayedTracksLoader.getTopTracks(context);
}
@Override
public void clear(@NonNull Context context) {
SongPlayCountStore.getInstance(context).clear();
}
@Override
public int describeContents() {
return 0;
}
protected MyTopTracksPlaylist(Parcel in) {
super(in);
}
public static final Creator<MyTopTracksPlaylist> CREATOR = new Creator<MyTopTracksPlaylist>() {
public MyTopTracksPlaylist createFromParcel(Parcel source) {
return new MyTopTracksPlaylist(source);
@ -64,4 +40,28 @@ public class MyTopTracksPlaylist extends AbsSmartPlaylist {
return new MyTopTracksPlaylist[size];
}
};
public MyTopTracksPlaylist(@NonNull Context context) {
super(context.getString(R.string.my_top_tracks), R.drawable.ic_trending_up_white_24dp);
}
protected MyTopTracksPlaylist(Parcel in) {
super(in);
}
@NonNull
@Override
public Observable<ArrayList<Song>> getSongs(@NonNull Context context) {
return TopAndRecentlyPlayedTracksLoader.INSTANCE.getTopTracks(context);
}
@Override
public void clear(@NonNull Context context) {
SongPlayCountStore.getInstance(context).clear();
}
@Override
public int describeContents() {
return 0;
}
}

View file

@ -16,24 +16,39 @@ package code.name.monkey.retromusic.model.smartplaylist;
import android.content.Context;
import android.os.Parcel;
import android.support.annotation.NonNull;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.loader.SongLoader;
import com.kabouzeid.gramophone.model.Song;
import java.util.ArrayList;
import androidx.annotation.NonNull;
import code.name.monkey.retromusic.R;
import code.name.monkey.retromusic.loaders.SongLoader;
import code.name.monkey.retromusic.model.Song;
import io.reactivex.Observable;
public class ShuffleAllPlaylist extends AbsSmartPlaylist {
public static final Creator<ShuffleAllPlaylist> CREATOR = new Creator<ShuffleAllPlaylist>() {
public ShuffleAllPlaylist createFromParcel(Parcel source) {
return new ShuffleAllPlaylist(source);
}
public ShuffleAllPlaylist[] newArray(int size) {
return new ShuffleAllPlaylist[size];
}
};
public ShuffleAllPlaylist(@NonNull Context context) {
super(context.getString(R.string.action_shuffle_all), R.drawable.ic_shuffle_white_24dp);
}
protected ShuffleAllPlaylist(Parcel in) {
super(in);
}
@NonNull
@Override
public ArrayList<Song> getSongs(@NonNull Context context) {
return SongLoader.getAllSongs(context);
public Observable<ArrayList<Song>> getSongs(@NonNull Context context) {
return SongLoader.INSTANCE.getAllSongs(context);
}
@Override
@ -45,18 +60,4 @@ public class ShuffleAllPlaylist extends AbsSmartPlaylist {
public int describeContents() {
return 0;
}
protected ShuffleAllPlaylist(Parcel in) {
super(in);
}
public static final Creator<ShuffleAllPlaylist> CREATOR = new Creator<ShuffleAllPlaylist>() {
public ShuffleAllPlaylist createFromParcel(Parcel source) {
return new ShuffleAllPlaylist(source);
}
public ShuffleAllPlaylist[] newArray(int size) {
return new ShuffleAllPlaylist[size];
}
};
}