From c20262eb035c5cfdf09b2aaecc65297580664a2a Mon Sep 17 00:00:00 2001 From: Eugene Cheung Date: Thu, 1 Jun 2017 14:39:36 -0400 Subject: [PATCH] Add last added playlist interval preference (#107) --- .../gramophone/adapter/PlaylistAdapter.java | 8 +- .../gramophone/loader/LastAddedLoader.java | 7 +- .../smartplaylist/LastAddedPlaylist.java | 1 - .../ui/activities/SettingsActivity.java | 1 + .../gramophone/util/CalendarUtil.java | 100 ++++++++++++++++++ .../gramophone/util/PreferenceUtil.java | 37 +++++-- app/src/main/res/values/strings.xml | 7 ++ .../res/values/strings_activity_settings.xml | 16 +++ app/src/main/res/xml/pref_playlists.xml | 16 +++ 9 files changed, 175 insertions(+), 18 deletions(-) create mode 100644 app/src/main/java/com/kabouzeid/gramophone/util/CalendarUtil.java create mode 100644 app/src/main/res/xml/pref_playlists.xml 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 868f4448..9a9b73e1 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/adapter/PlaylistAdapter.java +++ b/app/src/main/java/com/kabouzeid/gramophone/adapter/PlaylistAdapter.java @@ -26,6 +26,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.util.MusicUtil; import com.kabouzeid.gramophone.util.NavigationUtil; @@ -192,13 +193,16 @@ public class PlaylistAdapter extends AbsMultiSelectAdapter Calendar.JANUARY) { + final Calendar monthCal = new GregorianCalendar(calendar.get(Calendar.YEAR), month, 1); + final int daysInMonth = monthCal.getActualMaximum(Calendar.DAY_OF_MONTH); + + elapsed += daysInMonth * MS_PER_DAY; + + month--; + } + + return elapsed; + } +} diff --git a/app/src/main/java/com/kabouzeid/gramophone/util/PreferenceUtil.java b/app/src/main/java/com/kabouzeid/gramophone/util/PreferenceUtil.java index 63deb986..ac251027 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/util/PreferenceUtil.java +++ b/app/src/main/java/com/kabouzeid/gramophone/util/PreferenceUtil.java @@ -49,7 +49,7 @@ public final class PreferenceUtil { public static final String AUDIO_DUCKING = "audio_ducking"; public static final String GAPLESS_PLAYBACK = "gapless_playback"; - public static final String LAST_ADDED_CUTOFF_TIMESTAMP = "last_added_cutoff_timestamp"; + public static final String LAST_ADDED_CUTOFF = "last_added_interval"; public static final String ALBUM_ART_ON_LOCKSCREEN = "album_art_on_lockscreen"; public static final String BLURRED_ALBUM_ART = "blurred_album_art"; @@ -206,15 +206,34 @@ public final class PreferenceUtil { return mPreferences.getString(SONG_SORT_ORDER, SortOrder.SongSortOrder.SONG_A_Z); } - public long getLastAddedCutOffTimestamp() { - return mPreferences.getLong(LAST_ADDED_CUTOFF_TIMESTAMP, 0L); - } + public long getLastAddedCutoff() { + final CalendarUtil calendarUtil = new CalendarUtil(); + long interval; - @SuppressLint("CommitPrefEdits") - public void setLastAddedCutoffTimestamp(final long timestamp) { - final SharedPreferences.Editor editor = mPreferences.edit(); - editor.putLong(LAST_ADDED_CUTOFF_TIMESTAMP, timestamp); - editor.commit(); + switch (mPreferences.getString(LAST_ADDED_CUTOFF, "")) { + case "today": + interval = calendarUtil.getElapsedToday(); + break; + + case "this_week": + interval = calendarUtil.getElapsedWeek(); + break; + + case "past_three_months": + interval = calendarUtil.getElapsedMonths(3); + break; + + case "this_year": + interval = calendarUtil.getElapsedYear(); + break; + + case "this_month": + default: + interval = calendarUtil.getElapsedMonth(); + break; + } + + return (System.currentTimeMillis() - interval) / 1000; } public int getLastSleepTimerValue() { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a515cb50..c62a79db 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -110,6 +110,11 @@ Always Only on Wi-Fi Never + Today + This week + This month + Past 3 months + This year Equalizer Colors Now playing @@ -118,6 +123,7 @@ General Images Lockscreen + Playlists Colored navigation bar Colored app shortcuts Start page @@ -135,6 +141,7 @@ Show card below playback controls Colored playback controls Reduce volume on focus loss + Last added playlist interval No equalizer found. "Play a song first, then try again." Delete diff --git a/app/src/main/res/values/strings_activity_settings.xml b/app/src/main/res/values/strings_activity_settings.xml index 33eba14a..2f35d635 100644 --- a/app/src/main/res/values/strings_activity_settings.xml +++ b/app/src/main/res/values/strings_activity_settings.xml @@ -39,4 +39,20 @@ never + + @string/today + @string/this_week + @string/this_month + @string/past_three_months + @string/this_year + + + + today + this_week + this_month + past_three_months + this_year + + diff --git a/app/src/main/res/xml/pref_playlists.xml b/app/src/main/res/xml/pref_playlists.xml new file mode 100644 index 00000000..8ad96828 --- /dev/null +++ b/app/src/main/res/xml/pref_playlists.xml @@ -0,0 +1,16 @@ + + + + + + + + +