diff options
author | Scott Jackson <daneren2005@gmail.com> | 2014-05-19 20:35:39 -0700 |
---|---|---|
committer | Scott Jackson <daneren2005@gmail.com> | 2014-05-19 20:35:39 -0700 |
commit | ac24bc917cfd790b3f4ac011ebb8b4c963801230 (patch) | |
tree | d21cc5a622ddcf9c035b944eb2f83b76b6aacbb3 | |
parent | e05723218aa289bf2892b3f9edf999b859f18689 (diff) | |
download | dsub-ac24bc917cfd790b3f4ac011ebb8b4c963801230.tar.gz dsub-ac24bc917cfd790b3f4ac011ebb8b4c963801230.tar.bz2 dsub-ac24bc917cfd790b3f4ac011ebb8b4c963801230.zip |
#309 Add option to remove songs after they are played
-rw-r--r-- | res/menu/nowplaying.xml | 5 | ||||
-rw-r--r-- | res/values/strings.xml | 1 | ||||
-rw-r--r-- | src/github/daneren2005/dsub/fragments/NowPlayingFragment.java | 11 | ||||
-rw-r--r-- | src/github/daneren2005/dsub/service/DownloadService.java | 28 | ||||
-rw-r--r-- | src/github/daneren2005/dsub/util/Constants.java | 1 |
5 files changed, 46 insertions, 0 deletions
diff --git a/res/menu/nowplaying.xml b/res/menu/nowplaying.xml index bc87f0c4..48528b43 100644 --- a/res/menu/nowplaying.xml +++ b/res/menu/nowplaying.xml @@ -32,6 +32,11 @@ android:id="@+id/menu_screen_on_off" android:title="@string/download.menu_screen_on" android:checkable="true"/> + + <item + android:id="@+id/menu_remove_played" + android:title="@string/download.menu_remove_played_songs" + android:checkable="true"/> <item android:id="@+id/menu_toggle_timer" diff --git a/res/values/strings.xml b/res/values/strings.xml index 638df57a..8824085c 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -168,6 +168,7 @@ <string name="download.menu_toggle">Toggle</string>
<string name="download.menu_save">Save playlist</string>
<string name="download.menu_shuffle_notification">Playlist was shuffled</string>
+ <string name="download.menu_remove_played_songs">Remove played songs</string>
<string name="download.playlist_title">Save playlist</string>
<string name="download.playlist_name">Enter the playlist name:</string>
<string name="download.playlist_saving">Saving playlist \"%s\"...</string>
diff --git a/src/github/daneren2005/dsub/fragments/NowPlayingFragment.java b/src/github/daneren2005/dsub/fragments/NowPlayingFragment.java index a2086133..13bfd53d 100644 --- a/src/github/daneren2005/dsub/fragments/NowPlayingFragment.java +++ b/src/github/daneren2005/dsub/fragments/NowPlayingFragment.java @@ -515,6 +515,9 @@ public class NowPlayingFragment extends SubsonicFragment implements OnGestureLis if(downloadService != null && downloadService.getKeepScreenOn()) {
menu.findItem(R.id.menu_screen_on_off).setChecked(true);
}
+ if(downloadService != null && downloadService.isRemovePlayed()) {
+ menu.findItem(R.id.menu_remove_played).setChecked(true);
+ }
if(downloadService != null) {
MenuItem mediaRouteItem = menu.findItem(R.id.menu_mediaroute);
if(mediaRouteItem != null) {
@@ -692,6 +695,14 @@ public class NowPlayingFragment extends SubsonicFragment implements OnGestureLis }
context.supportInvalidateOptionsMenu();
return true;
+ case R.id.menu_remove_played:
+ if (getDownloadService().isRemovePlayed()) {
+ getDownloadService().setRemovePlayed(false);
+ } else {
+ getDownloadService().setRemovePlayed(true);
+ }
+ context.supportInvalidateOptionsMenu();
+ return true;
case R.id.menu_shuffle:
new SilentBackgroundTask<Void>(context) {
@Override
diff --git a/src/github/daneren2005/dsub/service/DownloadService.java b/src/github/daneren2005/dsub/service/DownloadService.java index 4fdc4dc9..9aba5201 100644 --- a/src/github/daneren2005/dsub/service/DownloadService.java +++ b/src/github/daneren2005/dsub/service/DownloadService.java @@ -118,6 +118,7 @@ public class DownloadService extends Service { private SilentBackgroundTask nextPlayingTask; private PlayerState playerState = IDLE; private PlayerState nextPlayerState = IDLE; + private boolean removePlayed; private boolean shufflePlay; private long revision; private static DownloadService instance; @@ -376,6 +377,9 @@ public class DownloadService extends Service { String id = prefs.getString(Constants.PREFERENCES_KEY_CONTROL_ID, null); setRemoteState(remoteState, null, id); } + if(prefs.getBoolean(Constants.PREFERENCES_KEY_REMOVE_PLAYED, false)) { + removePlayed = true; + } boolean startShufflePlay = prefs.getBoolean(Constants.PREFERENCES_KEY_SHUFFLE_MODE, false); download(songs, false, false, false, false); if(startShufflePlay) { @@ -400,6 +404,19 @@ public class DownloadService extends Service { } } + public synchronized void setRemovePlayed(boolean enabled) { + removePlayed = enabled; + if(removePlayed) { + checkDownloads(); + } + SharedPreferences.Editor editor = Util.getPreferences(this).edit(); + editor.putBoolean(Constants.PREFERENCES_KEY_REMOVE_PLAYED, enabled); + editor.commit(); + } + public boolean isRemovePlayed() { + return removePlayed; + } + public synchronized void setShufflePlayEnabled(boolean enabled) { shufflePlay = enabled; if (shufflePlay) { @@ -1569,6 +1586,9 @@ public class DownloadService extends Service { return; } + if(removePlayed) { + checkRemovePlayed(); + } if (shufflePlay) { checkShufflePlay(); } @@ -1658,6 +1678,14 @@ public class DownloadService extends Service { cleanup(); } + private synchronized void checkRemovePlayed() { + while(currentPlayingIndex > 0) { + downloadList.remove(0); + currentPlayingIndex = downloadList.indexOf(currentPlaying); + revision++; + } + } + private synchronized void checkShufflePlay() { // Get users desired random playlist size diff --git a/src/github/daneren2005/dsub/util/Constants.java b/src/github/daneren2005/dsub/util/Constants.java index ab57bcd0..2b7f8757 100644 --- a/src/github/daneren2005/dsub/util/Constants.java +++ b/src/github/daneren2005/dsub/util/Constants.java @@ -113,6 +113,7 @@ public final class Constants { public static final String PREFERENCES_EQUALIZER_SETTINGS = "equalizerSettings"; public static final String PREFERENCES_KEY_PERSISTENT_NOTIFICATION = "persistentNotification"; public static final String PREFERENCES_KEY_GAPLESS_PLAYBACK = "gaplessPlayback"; + public static final String PREFERENCES_KEY_REMOVE_PLAYED = "removePlayed"; public static final String PREFERENCES_KEY_SHUFFLE_MODE = "shuffleMode"; public static final String PREFERENCES_KEY_CHAT_REFRESH = "chatRefreshRate"; public static final String PREFERENCES_KEY_CHAT_ENABLED = "chatEnabled"; |