diff options
4 files changed, 17 insertions, 1 deletions
diff --git a/app/src/main/java/github/daneren2005/dsub/fragments/SubsonicFragment.java b/app/src/main/java/github/daneren2005/dsub/fragments/SubsonicFragment.java index fc619001..0a822483 100644 --- a/app/src/main/java/github/daneren2005/dsub/fragments/SubsonicFragment.java +++ b/app/src/main/java/github/daneren2005/dsub/fragments/SubsonicFragment.java @@ -897,13 +897,18 @@ public class SubsonicFragment extends Fragment implements SwipeRefreshLayout.OnR root = musicService.getPlaylist(true, id, name, context, this); } - if(shuffle) { + boolean shuffleByAlbum = Util.getPreferences(context).getBoolean(Constants.PREFERENCES_KEY_SHUFFLE_BY_ALBUM, true); + if(shuffle && shuffleByAlbum) { Collections.shuffle(root.getChildren()); } songs = new LinkedList<Entry>(); getSongsRecursively(root, songs); + if(shuffle && !shuffleByAlbum) { + Collections.shuffle(songs); + } + DownloadService downloadService = getDownloadService(); boolean transition = false; if (!songs.isEmpty() && downloadService != null) { diff --git a/app/src/main/java/github/daneren2005/dsub/util/Constants.java b/app/src/main/java/github/daneren2005/dsub/util/Constants.java index e9e668f7..cc02b709 100644 --- a/app/src/main/java/github/daneren2005/dsub/util/Constants.java +++ b/app/src/main/java/github/daneren2005/dsub/util/Constants.java @@ -160,6 +160,7 @@ public final class Constants { public static final String PREFERENCES_KEY_FIRST_LEVEL_ARTIST = "firstLevelArtist"; public static final String PREFERENCES_KEY_START_ON_HEADPHONES = "startOnHeadphones"; public static final String PREFERENCES_KEY_COLOR_ACTION_BAR = "colorActionBar"; + public static final String PREFERENCES_KEY_SHUFFLE_BY_ALBUM = "shuffleByAlbum"; public static final String OFFLINE_SCROBBLE_COUNT = "scrobbleCount"; public static final String OFFLINE_SCROBBLE_ID = "scrobbleID"; diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 453cfdb1..d87dbf69 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -459,6 +459,9 @@ <string name="settings.start_on_headphones_summary">Start when headphones are plugged in. This requires the use of a service which starts on boot up to check for the headphone plug event even when DSub is not running.</string> <string name="settings.color_action_bar">Color Action Bar</string> <string name="settings.color_action_bar.summary">Color the action bar and status bar or leave them alone</string> + <string name="settings.shuffle_by_album">Shuffle By Album</string> + <string name="settings.shuffle_by_album.true">Shuffle order of albums</string> + <string name="settings.shuffle_by_album.false">Shuffle all songs together</string> <string name="shuffle.title">Shuffle By</string> <string name="shuffle.startYear">Start Year:</string> diff --git a/app/src/main/res/xml/settings.xml b/app/src/main/res/xml/settings.xml index b30d59fd..dec8d928 100644 --- a/app/src/main/res/xml/settings.xml +++ b/app/src/main/res/xml/settings.xml @@ -436,6 +436,13 @@ android:title="@string/settings.other_title"> <CheckBoxPreference + android:title="@string/settings.shuffle_by_album" + android:key="shuffleByAlbum" + android:defaultValue="true" + android:summaryOn="@string/settings.shuffle_by_album.true" + android:summaryOff="@string/settings.shuffle_by_album.false"/> + + <CheckBoxPreference android:title="@string/settings.scrobble_title" android:summary="@string/settings.scrobble_summary" android:key="scrobble" |