From b85fab728b2df91d80decd3be62378d25aa8444d Mon Sep 17 00:00:00 2001 From: dkanada Date: Thu, 11 Jul 2019 15:55:58 -0700 Subject: [PATCH] separate frequent and recent playlists --- .../gramophone/adapter/PlaylistAdapter.java | 4 +- .../AppShortcutLauncherActivity.java | 36 +++---- .../appshortcuts/DynamicShortcutManager.java | 12 +-- ...cutType.java => FrequentShortcutType.java} | 6 +- ...rtcutType.java => LatestShortcutType.java} | 6 +- ...tcutType.java => ShuffleShortcutType.java} | 6 +- .../gramophone/loader/FrequentLoader.java | 102 ++++++++++++++++++ ...LastAddedLoader.java => LatestLoader.java} | 9 +- ...yedTracksLoader.java => RecentLoader.java} | 54 ++-------- ...cksPlaylist.java => FrequentPlaylist.java} | 21 ++-- ...AddedPlaylist.java => LatestPlaylist.java} | 22 ++-- ...storyPlaylist.java => RecentPlaylist.java} | 22 ++-- ...eAllPlaylist.java => ShufflePlaylist.java} | 17 ++- .../library/pager/PlaylistsFragment.java | 12 +-- 14 files changed, 192 insertions(+), 137 deletions(-) rename app/src/main/java/com/kabouzeid/gramophone/appshortcuts/shortcuttype/{TopTracksShortcutType.java => FrequentShortcutType.java} (86%) rename app/src/main/java/com/kabouzeid/gramophone/appshortcuts/shortcuttype/{LastAddedShortcutType.java => LatestShortcutType.java} (86%) rename app/src/main/java/com/kabouzeid/gramophone/appshortcuts/shortcuttype/{ShuffleAllShortcutType.java => ShuffleShortcutType.java} (86%) create mode 100644 app/src/main/java/com/kabouzeid/gramophone/loader/FrequentLoader.java rename app/src/main/java/com/kabouzeid/gramophone/loader/{LastAddedLoader.java => LatestLoader.java} (70%) rename app/src/main/java/com/kabouzeid/gramophone/loader/{TopAndRecentlyPlayedTracksLoader.java => RecentLoader.java} (61%) rename app/src/main/java/com/kabouzeid/gramophone/model/smartplaylist/{MyTopTracksPlaylist.java => FrequentPlaylist.java} (55%) rename app/src/main/java/com/kabouzeid/gramophone/model/smartplaylist/{LastAddedPlaylist.java => LatestPlaylist.java} (50%) rename app/src/main/java/com/kabouzeid/gramophone/model/smartplaylist/{HistoryPlaylist.java => RecentPlaylist.java} (53%) rename app/src/main/java/com/kabouzeid/gramophone/model/smartplaylist/{ShuffleAllPlaylist.java => ShufflePlaylist.java} (61%) diff --git a/app/src/main/java/com/kabouzeid/gramophone/adapter/PlaylistAdapter.java b/app/src/main/java/com/kabouzeid/gramophone/adapter/PlaylistAdapter.java index 01127601..bbe2f87c 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/adapter/PlaylistAdapter.java +++ b/app/src/main/java/com/kabouzeid/gramophone/adapter/PlaylistAdapter.java @@ -30,7 +30,7 @@ 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.LastAddedPlaylist; +import com.kabouzeid.gramophone.model.smartplaylist.LatestPlaylist; import com.kabouzeid.gramophone.util.MusicUtil; import com.kabouzeid.gramophone.util.NavigationUtil; import com.kabouzeid.gramophone.util.PlaylistsUtil; @@ -242,7 +242,7 @@ public class PlaylistAdapter extends AbsMultiSelectAdapter { diff --git a/app/src/main/java/com/kabouzeid/gramophone/appshortcuts/AppShortcutLauncherActivity.java b/app/src/main/java/com/kabouzeid/gramophone/appshortcuts/AppShortcutLauncherActivity.java index b2beae9c..fbd64b15 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/appshortcuts/AppShortcutLauncherActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/appshortcuts/AppShortcutLauncherActivity.java @@ -4,13 +4,13 @@ import android.app.Activity; import android.content.Intent; import android.os.Bundle; -import com.kabouzeid.gramophone.appshortcuts.shortcuttype.LastAddedShortcutType; -import com.kabouzeid.gramophone.appshortcuts.shortcuttype.ShuffleAllShortcutType; -import com.kabouzeid.gramophone.appshortcuts.shortcuttype.TopTracksShortcutType; +import com.kabouzeid.gramophone.appshortcuts.shortcuttype.LatestShortcutType; +import com.kabouzeid.gramophone.appshortcuts.shortcuttype.ShuffleShortcutType; +import com.kabouzeid.gramophone.appshortcuts.shortcuttype.FrequentShortcutType; import com.kabouzeid.gramophone.model.Playlist; -import com.kabouzeid.gramophone.model.smartplaylist.LastAddedPlaylist; -import com.kabouzeid.gramophone.model.smartplaylist.MyTopTracksPlaylist; -import com.kabouzeid.gramophone.model.smartplaylist.ShuffleAllPlaylist; +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.service.MusicService; /** @@ -20,9 +20,9 @@ import com.kabouzeid.gramophone.service.MusicService; public class AppShortcutLauncherActivity extends Activity { public static final String KEY_SHORTCUT_TYPE = "com.kabouzeid.gramophone.appshortcuts.ShortcutType"; - public static final int SHORTCUT_TYPE_SHUFFLE_ALL = 0; - public static final int SHORTCUT_TYPE_TOP_TRACKS = 1; - public static final int SHORTCUT_TYPE_LAST_ADDED = 2; + public static final int SHORTCUT_TYPE_SHUFFLE = 0; + public static final int SHORTCUT_TYPE_FREQUENT = 1; + public static final int SHORTCUT_TYPE_LATEST = 2; public static final int SHORTCUT_TYPE_NONE = 3; @Override @@ -39,20 +39,20 @@ public class AppShortcutLauncherActivity extends Activity { } switch (shortcutType) { - case SHORTCUT_TYPE_SHUFFLE_ALL: + case SHORTCUT_TYPE_SHUFFLE: startServiceWithPlaylist(MusicService.SHUFFLE_MODE_SHUFFLE, - new ShuffleAllPlaylist(getApplicationContext())); - DynamicShortcutManager.reportShortcutUsed(this, ShuffleAllShortcutType.getId()); + new ShufflePlaylist(getApplicationContext())); + DynamicShortcutManager.reportShortcutUsed(this, ShuffleShortcutType.getId()); break; - case SHORTCUT_TYPE_TOP_TRACKS: + case SHORTCUT_TYPE_FREQUENT: startServiceWithPlaylist(MusicService.SHUFFLE_MODE_NONE, - new MyTopTracksPlaylist(getApplicationContext())); - DynamicShortcutManager.reportShortcutUsed(this, TopTracksShortcutType.getId()); + new FrequentPlaylist(getApplicationContext())); + DynamicShortcutManager.reportShortcutUsed(this, FrequentShortcutType.getId()); break; - case SHORTCUT_TYPE_LAST_ADDED: + case SHORTCUT_TYPE_LATEST: startServiceWithPlaylist(MusicService.SHUFFLE_MODE_NONE, - new LastAddedPlaylist(getApplicationContext())); - DynamicShortcutManager.reportShortcutUsed(this, LastAddedShortcutType.getId()); + new LatestPlaylist(getApplicationContext())); + DynamicShortcutManager.reportShortcutUsed(this, LatestShortcutType.getId()); break; } diff --git a/app/src/main/java/com/kabouzeid/gramophone/appshortcuts/DynamicShortcutManager.java b/app/src/main/java/com/kabouzeid/gramophone/appshortcuts/DynamicShortcutManager.java index a3a77798..907da219 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/appshortcuts/DynamicShortcutManager.java +++ b/app/src/main/java/com/kabouzeid/gramophone/appshortcuts/DynamicShortcutManager.java @@ -8,9 +8,9 @@ import android.content.pm.ShortcutManager; import android.graphics.drawable.Icon; import android.os.Build; -import com.kabouzeid.gramophone.appshortcuts.shortcuttype.LastAddedShortcutType; -import com.kabouzeid.gramophone.appshortcuts.shortcuttype.ShuffleAllShortcutType; -import com.kabouzeid.gramophone.appshortcuts.shortcuttype.TopTracksShortcutType; +import com.kabouzeid.gramophone.appshortcuts.shortcuttype.LatestShortcutType; +import com.kabouzeid.gramophone.appshortcuts.shortcuttype.ShuffleShortcutType; +import com.kabouzeid.gramophone.appshortcuts.shortcuttype.FrequentShortcutType; import java.util.Arrays; import java.util.List; @@ -51,9 +51,9 @@ public class DynamicShortcutManager { public List getDefaultShortcuts() { return (Arrays.asList( - new ShuffleAllShortcutType(context).getShortcutInfo(), - new TopTracksShortcutType(context).getShortcutInfo(), - new LastAddedShortcutType(context).getShortcutInfo() + new ShuffleShortcutType(context).getShortcutInfo(), + new FrequentShortcutType(context).getShortcutInfo(), + new LatestShortcutType(context).getShortcutInfo() )); } diff --git a/app/src/main/java/com/kabouzeid/gramophone/appshortcuts/shortcuttype/TopTracksShortcutType.java b/app/src/main/java/com/kabouzeid/gramophone/appshortcuts/shortcuttype/FrequentShortcutType.java similarity index 86% rename from app/src/main/java/com/kabouzeid/gramophone/appshortcuts/shortcuttype/TopTracksShortcutType.java rename to app/src/main/java/com/kabouzeid/gramophone/appshortcuts/shortcuttype/FrequentShortcutType.java index 9d2973b7..e576754c 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/appshortcuts/shortcuttype/TopTracksShortcutType.java +++ b/app/src/main/java/com/kabouzeid/gramophone/appshortcuts/shortcuttype/FrequentShortcutType.java @@ -13,8 +13,8 @@ import com.kabouzeid.gramophone.appshortcuts.AppShortcutLauncherActivity; * @author Adrian Campos */ @TargetApi(Build.VERSION_CODES.N_MR1) -public final class TopTracksShortcutType extends BaseShortcutType { - public TopTracksShortcutType(Context context) { +public final class FrequentShortcutType extends BaseShortcutType { + public FrequentShortcutType(Context context) { super(context); } @@ -27,7 +27,7 @@ public final class TopTracksShortcutType extends BaseShortcutType { .setShortLabel(context.getString(R.string.app_shortcut_top_tracks_short)) .setLongLabel(context.getString(R.string.my_top_tracks)) .setIcon(AppShortcutIconGenerator.generateThemedIcon(context, R.drawable.ic_app_shortcut_top_tracks)) - .setIntent(getPlaySongsIntent(AppShortcutLauncherActivity.SHORTCUT_TYPE_TOP_TRACKS)) + .setIntent(getPlaySongsIntent(AppShortcutLauncherActivity.SHORTCUT_TYPE_FREQUENT)) .build(); } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/appshortcuts/shortcuttype/LastAddedShortcutType.java b/app/src/main/java/com/kabouzeid/gramophone/appshortcuts/shortcuttype/LatestShortcutType.java similarity index 86% rename from app/src/main/java/com/kabouzeid/gramophone/appshortcuts/shortcuttype/LastAddedShortcutType.java rename to app/src/main/java/com/kabouzeid/gramophone/appshortcuts/shortcuttype/LatestShortcutType.java index 508948dd..b4555210 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/appshortcuts/shortcuttype/LastAddedShortcutType.java +++ b/app/src/main/java/com/kabouzeid/gramophone/appshortcuts/shortcuttype/LatestShortcutType.java @@ -13,8 +13,8 @@ import com.kabouzeid.gramophone.appshortcuts.AppShortcutLauncherActivity; * @author Adrian Campos */ @TargetApi(Build.VERSION_CODES.N_MR1) -public final class LastAddedShortcutType extends BaseShortcutType { - public LastAddedShortcutType(Context context) { +public final class LatestShortcutType extends BaseShortcutType { + public LatestShortcutType(Context context) { super(context); } @@ -27,7 +27,7 @@ public final class LastAddedShortcutType extends BaseShortcutType { .setShortLabel(context.getString(R.string.app_shortcut_last_added_short)) .setLongLabel(context.getString(R.string.last_added)) .setIcon(AppShortcutIconGenerator.generateThemedIcon(context, R.drawable.ic_app_shortcut_last_added)) - .setIntent(getPlaySongsIntent(AppShortcutLauncherActivity.SHORTCUT_TYPE_LAST_ADDED)) + .setIntent(getPlaySongsIntent(AppShortcutLauncherActivity.SHORTCUT_TYPE_LATEST)) .build(); } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/appshortcuts/shortcuttype/ShuffleAllShortcutType.java b/app/src/main/java/com/kabouzeid/gramophone/appshortcuts/shortcuttype/ShuffleShortcutType.java similarity index 86% rename from app/src/main/java/com/kabouzeid/gramophone/appshortcuts/shortcuttype/ShuffleAllShortcutType.java rename to app/src/main/java/com/kabouzeid/gramophone/appshortcuts/shortcuttype/ShuffleShortcutType.java index 77103a56..3c8a241e 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/appshortcuts/shortcuttype/ShuffleAllShortcutType.java +++ b/app/src/main/java/com/kabouzeid/gramophone/appshortcuts/shortcuttype/ShuffleShortcutType.java @@ -13,8 +13,8 @@ import com.kabouzeid.gramophone.appshortcuts.AppShortcutLauncherActivity; * @author Adrian Campos */ @TargetApi(Build.VERSION_CODES.N_MR1) -public final class ShuffleAllShortcutType extends BaseShortcutType { - public ShuffleAllShortcutType(Context context) { +public final class ShuffleShortcutType extends BaseShortcutType { + public ShuffleShortcutType(Context context) { super(context); } @@ -27,7 +27,7 @@ public final class ShuffleAllShortcutType extends BaseShortcutType { .setShortLabel(context.getString(R.string.app_shortcut_shuffle_all_short)) .setLongLabel(context.getString(R.string.action_shuffle_all)) .setIcon(AppShortcutIconGenerator.generateThemedIcon(context, R.drawable.ic_app_shortcut_shuffle_all)) - .setIntent(getPlaySongsIntent(AppShortcutLauncherActivity.SHORTCUT_TYPE_SHUFFLE_ALL)) + .setIntent(getPlaySongsIntent(AppShortcutLauncherActivity.SHORTCUT_TYPE_SHUFFLE)) .build(); } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/loader/FrequentLoader.java b/app/src/main/java/com/kabouzeid/gramophone/loader/FrequentLoader.java new file mode 100644 index 00000000..638a8b13 --- /dev/null +++ b/app/src/main/java/com/kabouzeid/gramophone/loader/FrequentLoader.java @@ -0,0 +1,102 @@ +/* +* Copyright (C) 2014 The CyanogenMod Project +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +package com.kabouzeid.gramophone.loader; + +import android.content.Context; +import android.database.Cursor; +import android.provider.BaseColumns; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.kabouzeid.gramophone.model.Song; +import com.kabouzeid.gramophone.provider.SongPlayCountStore; + +import java.util.List; + +public class FrequentLoader { + @NonNull + public static List getFrequent(@NonNull Context context) { + return SongLoader.getSongs(makeFrequentCursorAndClearUpDatabase(context)); + } + + @Nullable + public static Cursor makeFrequentCursorAndClearUpDatabase(@NonNull final Context context) { + SortedLongCursor retCursor = makeFrequentCursorImpl(context); + + // clean up the databases with any ids not found + if (retCursor != null) { + List missingIds = retCursor.getMissingIds(); + if (missingIds != null && missingIds.size() > 0) { + for (long id : missingIds) { + SongPlayCountStore.getInstance(context).removeItem(id); + } + } + } + return retCursor; + } + + @Nullable + private static SortedLongCursor makeFrequentCursorImpl(@NonNull final Context context) { + // first get the top results ids from the internal database + Cursor songs = SongPlayCountStore.getInstance(context).getTopPlayedResults(100); + + try { + return makeSortedCursor(context, songs, + songs.getColumnIndex(SongPlayCountStore.SongPlayCountColumns.ID)); + } finally { + if (songs != null) { + songs.close(); + } + } + } + + @Nullable + private static SortedLongCursor makeSortedCursor(@NonNull final Context context, @Nullable final Cursor cursor, final int idColumn) { + if (cursor != null && cursor.moveToFirst()) { + // create the list of ids to select against + StringBuilder selection = new StringBuilder(); + selection.append(BaseColumns._ID); + selection.append(" IN ("); + + // this tracks the order of the ids + long[] order = new long[cursor.getCount()]; + + long id = cursor.getLong(idColumn); + selection.append(id); + order[cursor.getPosition()] = id; + + while (cursor.moveToNext()) { + selection.append(","); + + id = cursor.getLong(idColumn); + order[cursor.getPosition()] = id; + selection.append(String.valueOf(id)); + } + + selection.append(")"); + + // get a list of songs with the data given the selection statement + Cursor songCursor = SongLoader.makeSongCursor(context, selection.toString(), null); + if (songCursor != null) { + // now return the wrapped TopTracksCursor to handle sorting given order + return new SortedLongCursor(songCursor, order, BaseColumns._ID); + } + } + + return null; + } +} diff --git a/app/src/main/java/com/kabouzeid/gramophone/loader/LastAddedLoader.java b/app/src/main/java/com/kabouzeid/gramophone/loader/LatestLoader.java similarity index 70% rename from app/src/main/java/com/kabouzeid/gramophone/loader/LastAddedLoader.java rename to app/src/main/java/com/kabouzeid/gramophone/loader/LatestLoader.java index 2c3d4f9f..092fe28f 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/loader/LastAddedLoader.java +++ b/app/src/main/java/com/kabouzeid/gramophone/loader/LatestLoader.java @@ -8,17 +8,16 @@ import androidx.annotation.NonNull; import com.kabouzeid.gramophone.model.Song; import com.kabouzeid.gramophone.util.PreferenceUtil; -import java.util.ArrayList; import java.util.List; -public class LastAddedLoader { +public class LatestLoader { @NonNull - public static List getLastAddedSongs(@NonNull Context context) { - return SongLoader.getSongs(makeLastAddedCursor(context)); + public static List getLatest(@NonNull Context context) { + return SongLoader.getSongs(makeLatestCursor(context)); } - public static Cursor makeLastAddedCursor(@NonNull final Context context) { + public static Cursor makeLatestCursor(@NonNull final Context context) { long cutoff = PreferenceUtil.getInstance(context).getLastAddedCutoff(); return SongLoader.makeSongCursor( diff --git a/app/src/main/java/com/kabouzeid/gramophone/loader/TopAndRecentlyPlayedTracksLoader.java b/app/src/main/java/com/kabouzeid/gramophone/loader/RecentLoader.java similarity index 61% rename from app/src/main/java/com/kabouzeid/gramophone/loader/TopAndRecentlyPlayedTracksLoader.java rename to app/src/main/java/com/kabouzeid/gramophone/loader/RecentLoader.java index e5cdf8aa..a5a5b8bb 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/loader/TopAndRecentlyPlayedTracksLoader.java +++ b/app/src/main/java/com/kabouzeid/gramophone/loader/RecentLoader.java @@ -19,33 +19,24 @@ package com.kabouzeid.gramophone.loader; import android.content.Context; import android.database.Cursor; import android.provider.BaseColumns; -import android.provider.MediaStore; + import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.kabouzeid.gramophone.model.Song; import com.kabouzeid.gramophone.provider.HistoryStore; -import com.kabouzeid.gramophone.provider.SongPlayCountStore; -import java.util.ArrayList; import java.util.List; -public class TopAndRecentlyPlayedTracksLoader { - public static final int NUMBER_OF_TOP_TRACKS = 100; - +public class RecentLoader { @NonNull - public static List getRecentlyPlayedTracks(@NonNull Context context) { - return SongLoader.getSongs(makeRecentTracksCursorAndClearUpDatabase(context)); - } - - @NonNull - public static List getTopTracks(@NonNull Context context) { - return SongLoader.getSongs(makeTopTracksCursorAndClearUpDatabase(context)); + public static List getRecent(@NonNull Context context) { + return SongLoader.getSongs(makeRecentCursorAndClearUpDatabase(context)); } @Nullable - public static Cursor makeRecentTracksCursorAndClearUpDatabase(@NonNull final Context context) { - SortedLongCursor retCursor = makeRecentTracksCursorImpl(context); + public static Cursor makeRecentCursorAndClearUpDatabase(@NonNull final Context context) { + SortedLongCursor retCursor = makeRecentCursorImpl(context); // clean up the databases with any ids not found if (retCursor != null) { @@ -60,23 +51,7 @@ public class TopAndRecentlyPlayedTracksLoader { } @Nullable - public static Cursor makeTopTracksCursorAndClearUpDatabase(@NonNull final Context context) { - SortedLongCursor retCursor = makeTopTracksCursorImpl(context); - - // clean up the databases with any ids not found - if (retCursor != null) { - List missingIds = retCursor.getMissingIds(); - if (missingIds != null && missingIds.size() > 0) { - for (long id : missingIds) { - SongPlayCountStore.getInstance(context).removeItem(id); - } - } - } - return retCursor; - } - - @Nullable - private static SortedLongCursor makeRecentTracksCursorImpl(@NonNull final Context context) { + private static SortedLongCursor makeRecentCursorImpl(@NonNull final Context context) { // first get the top results ids from the internal database Cursor songs = HistoryStore.getInstance(context).queryRecentIds(); @@ -90,21 +65,6 @@ public class TopAndRecentlyPlayedTracksLoader { } } - @Nullable - private static SortedLongCursor makeTopTracksCursorImpl(@NonNull final Context context) { - // first get the top results ids from the internal database - Cursor songs = SongPlayCountStore.getInstance(context).getTopPlayedResults(NUMBER_OF_TOP_TRACKS); - - try { - return makeSortedCursor(context, songs, - songs.getColumnIndex(SongPlayCountStore.SongPlayCountColumns.ID)); - } finally { - if (songs != null) { - songs.close(); - } - } - } - @Nullable private static SortedLongCursor makeSortedCursor(@NonNull final Context context, @Nullable final Cursor cursor, final int idColumn) { if (cursor != null && cursor.moveToFirst()) { diff --git a/app/src/main/java/com/kabouzeid/gramophone/model/smartplaylist/MyTopTracksPlaylist.java b/app/src/main/java/com/kabouzeid/gramophone/model/smartplaylist/FrequentPlaylist.java similarity index 55% rename from app/src/main/java/com/kabouzeid/gramophone/model/smartplaylist/MyTopTracksPlaylist.java rename to app/src/main/java/com/kabouzeid/gramophone/model/smartplaylist/FrequentPlaylist.java index dbfe2f0e..b1ef6886 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/model/smartplaylist/MyTopTracksPlaylist.java +++ b/app/src/main/java/com/kabouzeid/gramophone/model/smartplaylist/FrequentPlaylist.java @@ -5,26 +5,25 @@ import android.os.Parcel; import androidx.annotation.NonNull; import com.kabouzeid.gramophone.R; -import com.kabouzeid.gramophone.loader.TopAndRecentlyPlayedTracksLoader; +import com.kabouzeid.gramophone.loader.FrequentLoader; import com.kabouzeid.gramophone.model.Song; import com.kabouzeid.gramophone.provider.SongPlayCountStore; -import java.util.ArrayList; import java.util.List; /** * @author Karim Abou Zeid (kabouzeid) */ -public class MyTopTracksPlaylist extends AbsSmartPlaylist { +public class FrequentPlaylist extends AbsSmartPlaylist { - public MyTopTracksPlaylist(@NonNull Context context) { + public FrequentPlaylist(@NonNull Context context) { super(context.getString(R.string.my_top_tracks), R.drawable.ic_trending_up_white_24dp); } @NonNull @Override public List getSongs(@NonNull Context context) { - return TopAndRecentlyPlayedTracksLoader.getTopTracks(context); + return FrequentLoader.getFrequent(context); } @Override @@ -38,17 +37,17 @@ public class MyTopTracksPlaylist extends AbsSmartPlaylist { return 0; } - protected MyTopTracksPlaylist(Parcel in) { + protected FrequentPlaylist(Parcel in) { super(in); } - public static final Creator CREATOR = new Creator() { - public MyTopTracksPlaylist createFromParcel(Parcel source) { - return new MyTopTracksPlaylist(source); + public static final Creator CREATOR = new Creator() { + public FrequentPlaylist createFromParcel(Parcel source) { + return new FrequentPlaylist(source); } - public MyTopTracksPlaylist[] newArray(int size) { - return new MyTopTracksPlaylist[size]; + public FrequentPlaylist[] newArray(int size) { + return new FrequentPlaylist[size]; } }; } diff --git a/app/src/main/java/com/kabouzeid/gramophone/model/smartplaylist/LastAddedPlaylist.java b/app/src/main/java/com/kabouzeid/gramophone/model/smartplaylist/LatestPlaylist.java similarity index 50% rename from app/src/main/java/com/kabouzeid/gramophone/model/smartplaylist/LastAddedPlaylist.java rename to app/src/main/java/com/kabouzeid/gramophone/model/smartplaylist/LatestPlaylist.java index b3d3550e..596ecbc3 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/model/smartplaylist/LastAddedPlaylist.java +++ b/app/src/main/java/com/kabouzeid/gramophone/model/smartplaylist/LatestPlaylist.java @@ -4,27 +4,25 @@ import android.content.Context; import android.os.Parcel; import androidx.annotation.NonNull; -import com.kabouzeid.gramophone.loader.LastAddedLoader; +import com.kabouzeid.gramophone.loader.LatestLoader; import com.kabouzeid.gramophone.model.Song; import com.kabouzeid.gramophone.R; -import com.kabouzeid.gramophone.util.PreferenceUtil; -import java.util.ArrayList; import java.util.List; /** * @author Karim Abou Zeid (kabouzeid) */ -public class LastAddedPlaylist extends AbsSmartPlaylist { +public class LatestPlaylist extends AbsSmartPlaylist { - public LastAddedPlaylist(@NonNull Context context) { + public LatestPlaylist(@NonNull Context context) { super(context.getString(R.string.last_added), R.drawable.ic_library_add_white_24dp); } @NonNull @Override public List getSongs(@NonNull Context context) { - return LastAddedLoader.getLastAddedSongs(context); + return LatestLoader.getLatest(context); } @Override @@ -37,17 +35,17 @@ public class LastAddedPlaylist extends AbsSmartPlaylist { return 0; } - protected LastAddedPlaylist(Parcel in) { + protected LatestPlaylist(Parcel in) { super(in); } - public static final Creator CREATOR = new Creator() { - public LastAddedPlaylist createFromParcel(Parcel source) { - return new LastAddedPlaylist(source); + public static final Creator CREATOR = new Creator() { + public LatestPlaylist createFromParcel(Parcel source) { + return new LatestPlaylist(source); } - public LastAddedPlaylist[] newArray(int size) { - return new LastAddedPlaylist[size]; + public LatestPlaylist[] newArray(int size) { + return new LatestPlaylist[size]; } }; } diff --git a/app/src/main/java/com/kabouzeid/gramophone/model/smartplaylist/HistoryPlaylist.java b/app/src/main/java/com/kabouzeid/gramophone/model/smartplaylist/RecentPlaylist.java similarity index 53% rename from app/src/main/java/com/kabouzeid/gramophone/model/smartplaylist/HistoryPlaylist.java rename to app/src/main/java/com/kabouzeid/gramophone/model/smartplaylist/RecentPlaylist.java index 07753636..7a65fef5 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/model/smartplaylist/HistoryPlaylist.java +++ b/app/src/main/java/com/kabouzeid/gramophone/model/smartplaylist/RecentPlaylist.java @@ -4,28 +4,26 @@ import android.content.Context; import android.os.Parcel; import androidx.annotation.NonNull; -import com.kabouzeid.gramophone.loader.TopAndRecentlyPlayedTracksLoader; +import com.kabouzeid.gramophone.loader.RecentLoader; import com.kabouzeid.gramophone.model.Song; import com.kabouzeid.gramophone.provider.HistoryStore; import com.kabouzeid.gramophone.R; -import com.kabouzeid.gramophone.util.PreferenceUtil; -import java.util.ArrayList; import java.util.List; /** * @author Karim Abou Zeid (kabouzeid) */ -public class HistoryPlaylist extends AbsSmartPlaylist { +public class RecentPlaylist extends AbsSmartPlaylist { - public HistoryPlaylist(@NonNull Context context) { + public RecentPlaylist(@NonNull Context context) { super(context.getString(R.string.history), R.drawable.ic_access_time_white_24dp); } @NonNull @Override public List getSongs(@NonNull Context context) { - return TopAndRecentlyPlayedTracksLoader.getRecentlyPlayedTracks(context); + return RecentLoader.getRecent(context); } @Override @@ -39,17 +37,17 @@ public class HistoryPlaylist extends AbsSmartPlaylist { return 0; } - protected HistoryPlaylist(Parcel in) { + protected RecentPlaylist(Parcel in) { super(in); } - public static final Creator CREATOR = new Creator() { - public HistoryPlaylist createFromParcel(Parcel source) { - return new HistoryPlaylist(source); + public static final Creator CREATOR = new Creator() { + public RecentPlaylist createFromParcel(Parcel source) { + return new RecentPlaylist(source); } - public HistoryPlaylist[] newArray(int size) { - return new HistoryPlaylist[size]; + public RecentPlaylist[] newArray(int size) { + return new RecentPlaylist[size]; } }; } diff --git a/app/src/main/java/com/kabouzeid/gramophone/model/smartplaylist/ShuffleAllPlaylist.java b/app/src/main/java/com/kabouzeid/gramophone/model/smartplaylist/ShufflePlaylist.java similarity index 61% rename from app/src/main/java/com/kabouzeid/gramophone/model/smartplaylist/ShuffleAllPlaylist.java rename to app/src/main/java/com/kabouzeid/gramophone/model/smartplaylist/ShufflePlaylist.java index f1c736ed..6acccb8f 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/model/smartplaylist/ShuffleAllPlaylist.java +++ b/app/src/main/java/com/kabouzeid/gramophone/model/smartplaylist/ShufflePlaylist.java @@ -8,12 +8,11 @@ import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.loader.SongLoader; import com.kabouzeid.gramophone.model.Song; -import java.util.ArrayList; import java.util.List; -public class ShuffleAllPlaylist extends AbsSmartPlaylist { +public class ShufflePlaylist extends AbsSmartPlaylist { - public ShuffleAllPlaylist(@NonNull Context context) { + public ShufflePlaylist(@NonNull Context context) { super(context.getString(R.string.action_shuffle_all), R.drawable.ic_shuffle_white_24dp); } @@ -33,17 +32,17 @@ public class ShuffleAllPlaylist extends AbsSmartPlaylist { return 0; } - protected ShuffleAllPlaylist(Parcel in) { + protected ShufflePlaylist(Parcel in) { super(in); } - public static final Creator CREATOR = new Creator() { - public ShuffleAllPlaylist createFromParcel(Parcel source) { - return new ShuffleAllPlaylist(source); + public static final Creator CREATOR = new Creator() { + public ShufflePlaylist createFromParcel(Parcel source) { + return new ShufflePlaylist(source); } - public ShuffleAllPlaylist[] newArray(int size) { - return new ShuffleAllPlaylist[size]; + public ShufflePlaylist[] newArray(int size) { + return new ShufflePlaylist[size]; } }; } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/library/pager/PlaylistsFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/library/pager/PlaylistsFragment.java index b69f4add..e731edfd 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/library/pager/PlaylistsFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/library/pager/PlaylistsFragment.java @@ -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.HistoryPlaylist; -import com.kabouzeid.gramophone.model.smartplaylist.LastAddedPlaylist; -import com.kabouzeid.gramophone.model.smartplaylist.MyTopTracksPlaylist; +import com.kabouzeid.gramophone.model.smartplaylist.RecentPlaylist; +import com.kabouzeid.gramophone.model.smartplaylist.LatestPlaylist; +import com.kabouzeid.gramophone.model.smartplaylist.FrequentPlaylist; import java.util.ArrayList; import java.util.List; @@ -80,9 +80,9 @@ public class PlaylistsFragment extends AbsLibraryPagerRecyclerViewFragment getAllPlaylists(Context context) { List playlists = new ArrayList<>(); - playlists.add(new LastAddedPlaylist(context)); - playlists.add(new HistoryPlaylist(context)); - playlists.add(new MyTopTracksPlaylist(context)); + playlists.add(new LatestPlaylist(context)); + playlists.add(new RecentPlaylist(context)); + playlists.add(new FrequentPlaylist(context)); playlists.addAll(PlaylistLoader.getAllPlaylists(context));