From 8068fc7478741a41695fe063df54990e595ff35d Mon Sep 17 00:00:00 2001 From: Scott Jackson Date: Tue, 1 Jan 2013 21:33:11 -0800 Subject: Fix shuffle buffer being cleared on every shuffle --- .../dsub/activity/SubsonicTabActivity.java | 12 +++++---- .../daneren2005/dsub/service/DownloadService.java | 2 -- .../dsub/service/DownloadServiceImpl.java | 5 ---- .../daneren2005/dsub/service/RESTMusicService.java | 8 +++--- .../daneren2005/dsub/util/ShufflePlayBuffer.java | 29 ++++++++++------------ 5 files changed, 24 insertions(+), 32 deletions(-) diff --git a/subsonic-android/src/github/daneren2005/dsub/activity/SubsonicTabActivity.java b/subsonic-android/src/github/daneren2005/dsub/activity/SubsonicTabActivity.java index 250417e7..5f889e67 100644 --- a/subsonic-android/src/github/daneren2005/dsub/activity/SubsonicTabActivity.java +++ b/subsonic-android/src/github/daneren2005/dsub/activity/SubsonicTabActivity.java @@ -455,9 +455,13 @@ public class SubsonicTabActivity extends SherlockActivity { final EditText genreBox = (EditText)dialogView.findViewById(R.id.genre); final SharedPreferences prefs = Util.getPreferences(SubsonicTabActivity.this); - startYearBox.setText(prefs.getString(Constants.PREFERENCES_KEY_SHUFFLE_START_YEAR, "")); - endYearBox.setText(prefs.getString(Constants.PREFERENCES_KEY_SHUFFLE_END_YEAR, "")); - genreBox.setText(prefs.getString(Constants.PREFERENCES_KEY_SHUFFLE_GENRE, "")); + final String oldStartYear = prefs.getString(Constants.PREFERENCES_KEY_SHUFFLE_START_YEAR, ""); + final String oldEndYear = prefs.getString(Constants.PREFERENCES_KEY_SHUFFLE_END_YEAR, ""); + final String oldGenre = prefs.getString(Constants.PREFERENCES_KEY_SHUFFLE_GENRE, ""); + + startYearBox.setText(oldStartYear); + endYearBox.setText(oldEndYear); + genreBox.setText(oldGenre); AlertDialog.Builder builder = new AlertDialog.Builder(SubsonicTabActivity.this); builder.setTitle("Shuffle By") @@ -470,8 +474,6 @@ public class SubsonicTabActivity extends SherlockActivity { String genre = genreBox.getText().toString(); String startYear = startYearBox.getText().toString(); String endYear = endYearBox.getText().toString(); - getDownloadService().setShuffleParams((genre.length() == 0) ? null : genre, - (startYear.length() == 0) ? null : startYear, (endYear.length() == 0) ? null : endYear); SharedPreferences.Editor editor = prefs.edit(); editor.putString(Constants.PREFERENCES_KEY_SHUFFLE_START_YEAR, startYear); diff --git a/subsonic-android/src/github/daneren2005/dsub/service/DownloadService.java b/subsonic-android/src/github/daneren2005/dsub/service/DownloadService.java index 4f5d2f17..663a6e6c 100644 --- a/subsonic-android/src/github/daneren2005/dsub/service/DownloadService.java +++ b/subsonic-android/src/github/daneren2005/dsub/service/DownloadService.java @@ -38,8 +38,6 @@ public interface DownloadService { void setShufflePlayEnabled(boolean enabled); boolean isShufflePlayEnabled(); - - void setShuffleParams(String genre, String startYear, String endYear); void shuffle(); diff --git a/subsonic-android/src/github/daneren2005/dsub/service/DownloadServiceImpl.java b/subsonic-android/src/github/daneren2005/dsub/service/DownloadServiceImpl.java index 7e6a0070..b1b4c01b 100644 --- a/subsonic-android/src/github/daneren2005/dsub/service/DownloadServiceImpl.java +++ b/subsonic-android/src/github/daneren2005/dsub/service/DownloadServiceImpl.java @@ -312,11 +312,6 @@ public class DownloadServiceImpl extends Service implements DownloadService { public synchronized boolean isShufflePlayEnabled() { return shufflePlay; } - - @Override - public void setShuffleParams(String genre, String startYear, String endYear) { - shufflePlayBuffer.setOptions(genre, startYear, endYear); - } @Override public synchronized void shuffle() { diff --git a/subsonic-android/src/github/daneren2005/dsub/service/RESTMusicService.java b/subsonic-android/src/github/daneren2005/dsub/service/RESTMusicService.java index bc54ac36..47f92bde 100644 --- a/subsonic-android/src/github/daneren2005/dsub/service/RESTMusicService.java +++ b/subsonic-android/src/github/daneren2005/dsub/service/RESTMusicService.java @@ -502,19 +502,19 @@ public class RESTMusicService implements MusicService { names.add("size"); values.add(size); - if (musicFolderId != null) { + if (musicFolderId != null && musicFolderId != "") { names.add("musicFolderId"); values.add(musicFolderId); } - if(genre != null) { + if(genre != null && genre != "") { names.add("genre"); values.add(genre); } - if(startYear != null) { + if(startYear != null && startYear != "") { names.add("fromYear"); values.add(startYear); } - if(endYear != null) { + if(endYear != null && endYear != "") { names.add("toYear"); values.add(endYear); } diff --git a/subsonic-android/src/github/daneren2005/dsub/util/ShufflePlayBuffer.java b/subsonic-android/src/github/daneren2005/dsub/util/ShufflePlayBuffer.java index c82f0708..3c9ccc58 100644 --- a/subsonic-android/src/github/daneren2005/dsub/util/ShufflePlayBuffer.java +++ b/subsonic-android/src/github/daneren2005/dsub/util/ShufflePlayBuffer.java @@ -25,7 +25,9 @@ import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import android.content.Context; +import android.content.SharedPreferences; import android.util.Log; +import github.daneren2005.dsub.activity.SubsonicTabActivity; import github.daneren2005.dsub.domain.MusicDirectory; import github.daneren2005.dsub.service.MusicService; import github.daneren2005.dsub.service.MusicServiceFactory; @@ -46,12 +48,12 @@ public class ShufflePlayBuffer { private int currentServer; private String currentFolder; - private String genre; - private String startYear; - private String endYear; + private String genre = ""; + private String startYear = ""; + private String endYear = ""; public ShufflePlayBuffer(Context context) { - this.context = context; + this.context = context; executorService = Executors.newSingleThreadScheduledExecutor(); Runnable runnable = new Runnable() { @Override @@ -105,22 +107,17 @@ public class ShufflePlayBuffer { private void clearBufferIfnecessary() { synchronized (buffer) { - if (currentServer != Util.getActiveServer(context) || currentFolder != Util.getSelectedMusicFolderId(context)) { + final SharedPreferences prefs = Util.getPreferences(context); + if (currentServer != Util.getActiveServer(context) || currentFolder != Util.getSelectedMusicFolderId(context) + || genre != prefs.getString(Constants.PREFERENCES_KEY_SHUFFLE_GENRE, "") || startYear != prefs.getString(Constants.PREFERENCES_KEY_SHUFFLE_START_YEAR, "") + || endYear != prefs.getString(Constants.PREFERENCES_KEY_SHUFFLE_END_YEAR, "")) { currentServer = Util.getActiveServer(context); currentFolder = Util.getSelectedMusicFolderId(context); + genre = prefs.getString(Constants.PREFERENCES_KEY_SHUFFLE_GENRE, ""); + startYear = prefs.getString(Constants.PREFERENCES_KEY_SHUFFLE_START_YEAR, ""); + endYear = prefs.getString(Constants.PREFERENCES_KEY_SHUFFLE_END_YEAR, ""); buffer.clear(); } } } - - public void setOptions(String genre, String startYear, String endYear) { - this.genre = genre; - this.startYear = startYear; - this.endYear = endYear; - - synchronized (buffer) { - buffer.clear(); - } - } - } -- cgit v1.2.3