summaryrefslogtreecommitdiffstats
path: root/apps/settings_list.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/settings_list.c')
-rw-r--r--apps/settings_list.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/apps/settings_list.c b/apps/settings_list.c
index 96cc933ac3..134b93cf48 100644
--- a/apps/settings_list.c
+++ b/apps/settings_list.c
@@ -63,6 +63,7 @@
#include "onplay.h"
#include "misc.h" /* current activity */
#endif
+#include "playlist.h"
#include "voice_thread.h"
@@ -618,6 +619,19 @@ static void eq_set_default(void* setting, void* defaultval)
memcpy(setting, defaultval, sizeof(struct eq_band_setting));
}
+/* perform shuffle/unshuffle of the current playlist based on the boolean provided */
+static void shuffle_playlist_callback(bool shuffle)
+{
+ if (shuffle)
+ {
+ playlist_randomise(NULL, current_tick, true);
+ }
+ else
+ {
+ playlist_sort(NULL, true);
+ }
+}
+
#ifdef HAVE_QUICKSCREEN
static void qs_load_from_cfg(void *var, char *value)
{
@@ -898,7 +912,7 @@ const struct settings_list settings[] = {
#endif
/* playback */
- OFFON_SETTING(0, playlist_shuffle, LANG_SHUFFLE, false, "shuffle", NULL),
+ OFFON_SETTING(0, playlist_shuffle, LANG_SHUFFLE, false, "shuffle", shuffle_playlist_callback),
SYSTEM_SETTING(NVRAM(4), resume_index, -1),
SYSTEM_SETTING(NVRAM(4), resume_crc32, -1),
SYSTEM_SETTING(NVRAM(4), resume_elapsed, -1),