diff options
author | Moshe Piekarski <dev.rockbox@melachim.net> | 2021-10-31 02:56:46 -0400 |
---|---|---|
committer | Moshe Piekarski <dev.rockbox@melachim.net> | 2021-11-05 09:20:04 -0400 |
commit | 13ac48562544eada909ee39a63d5b87afe51b219 (patch) | |
tree | ef8440cca0535d2a15eb3b9e764095345c7ce7b7 /apps | |
parent | 22c2e0a7c2be5bdc4a8ca0662c561454f5fb623a (diff) | |
download | rockbox-13ac48562544eada909ee39a63d5b87afe51b219.tar.gz rockbox-13ac48562544eada909ee39a63d5b87afe51b219.zip |
Add single playback mode
(FS#482)
Change-Id: I8b4c3e4ffb6975122153e82f2b9848c382195163
Diffstat (limited to 'apps')
-rw-r--r-- | apps/lang/english-us.lang | 14 | ||||
-rw-r--r-- | apps/lang/english.lang | 14 | ||||
-rw-r--r-- | apps/lang/hebrew.lang | 14 | ||||
-rw-r--r-- | apps/menus/playback_menu.c | 3 | ||||
-rw-r--r-- | apps/pcmbuf.c | 3 | ||||
-rw-r--r-- | apps/playback.c | 8 | ||||
-rw-r--r-- | apps/settings.h | 1 | ||||
-rw-r--r-- | apps/settings_list.c | 1 |
8 files changed, 57 insertions, 1 deletions
diff --git a/apps/lang/english-us.lang b/apps/lang/english-us.lang index 618ee114fd..6fac22c381 100644 --- a/apps/lang/english-us.lang +++ b/apps/lang/english-us.lang | |||
@@ -1300,6 +1300,20 @@ | |||
1300 | </voice> | 1300 | </voice> |
1301 | </phrase> | 1301 | </phrase> |
1302 | <phrase> | 1302 | <phrase> |
1303 | id: LANG_SINGLE_MODE | ||
1304 | desc: single mode | ||
1305 | user: core | ||
1306 | <source> | ||
1307 | *: "Single Mode" | ||
1308 | </source> | ||
1309 | <dest> | ||
1310 | *: "Single Mode" | ||
1311 | </dest> | ||
1312 | <voice> | ||
1313 | *: "Single Mode" | ||
1314 | </voice> | ||
1315 | </phrase> | ||
1316 | <phrase> | ||
1303 | id: LANG_PARTY_MODE | 1317 | id: LANG_PARTY_MODE |
1304 | desc: party mode | 1318 | desc: party mode |
1305 | user: core | 1319 | user: core |
diff --git a/apps/lang/english.lang b/apps/lang/english.lang index dab9ed8508..69542b6627 100644 --- a/apps/lang/english.lang +++ b/apps/lang/english.lang | |||
@@ -1376,6 +1376,20 @@ | |||
1376 | </voice> | 1376 | </voice> |
1377 | </phrase> | 1377 | </phrase> |
1378 | <phrase> | 1378 | <phrase> |
1379 | id: LANG_SINGLE_MODE | ||
1380 | desc: single mode | ||
1381 | user: core | ||
1382 | <source> | ||
1383 | *: "Single Mode" | ||
1384 | </source> | ||
1385 | <dest> | ||
1386 | *: "Single Mode" | ||
1387 | </dest> | ||
1388 | <voice> | ||
1389 | *: "Single Mode" | ||
1390 | </voice> | ||
1391 | </phrase> | ||
1392 | <phrase> | ||
1379 | id: LANG_PARTY_MODE | 1393 | id: LANG_PARTY_MODE |
1380 | desc: party mode | 1394 | desc: party mode |
1381 | user: core | 1395 | user: core |
diff --git a/apps/lang/hebrew.lang b/apps/lang/hebrew.lang index 2f732f0eef..d4da2443b8 100644 --- a/apps/lang/hebrew.lang +++ b/apps/lang/hebrew.lang | |||
@@ -1461,6 +1461,20 @@ | |||
1461 | </voice> | 1461 | </voice> |
1462 | </phrase> | 1462 | </phrase> |
1463 | <phrase> | 1463 | <phrase> |
1464 | id: LANG_SINGLE_MODE | ||
1465 | desc: single mode | ||
1466 | user: core | ||
1467 | <source> | ||
1468 | *: "Single Mode" | ||
1469 | </source> | ||
1470 | <dest> | ||
1471 | *: "מצב יחדי" | ||
1472 | </dest> | ||
1473 | <voice> | ||
1474 | *: "מצב יחדי" | ||
1475 | </voice> | ||
1476 | </phrase> | ||
1477 | <phrase> | ||
1464 | id: LANG_PARTY_MODE | 1478 | id: LANG_PARTY_MODE |
1465 | desc: party mode | 1479 | desc: party mode |
1466 | user: core | 1480 | user: core |
diff --git a/apps/menus/playback_menu.c b/apps/menus/playback_menu.c index 41c738725c..5f9479fae3 100644 --- a/apps/menus/playback_menu.c +++ b/apps/menus/playback_menu.c | |||
@@ -92,6 +92,7 @@ MENUITEM_SETTING(buffer_margin, &global_settings.buffer_margin, | |||
92 | buffermargin_callback); | 92 | buffermargin_callback); |
93 | #endif /*HAVE_DISK_STORAGE */ | 93 | #endif /*HAVE_DISK_STORAGE */ |
94 | MENUITEM_SETTING(fade_on_stop, &global_settings.fade_on_stop, NULL); | 94 | MENUITEM_SETTING(fade_on_stop, &global_settings.fade_on_stop, NULL); |
95 | MENUITEM_SETTING(single_mode, &global_settings.single_mode, NULL); | ||
95 | MENUITEM_SETTING(party_mode, &global_settings.party_mode, NULL); | 96 | MENUITEM_SETTING(party_mode, &global_settings.party_mode, NULL); |
96 | 97 | ||
97 | #ifdef HAVE_CROSSFADE | 98 | #ifdef HAVE_CROSSFADE |
@@ -208,7 +209,7 @@ MAKE_MENU(playback_settings,ID2P(LANG_PLAYBACK),0, | |||
208 | #ifdef HAVE_DISK_STORAGE | 209 | #ifdef HAVE_DISK_STORAGE |
209 | &buffer_margin, | 210 | &buffer_margin, |
210 | #endif | 211 | #endif |
211 | &fade_on_stop, &party_mode, | 212 | &fade_on_stop, &single_mode, &party_mode, |
212 | 213 | ||
213 | #if defined(HAVE_CROSSFADE) | 214 | #if defined(HAVE_CROSSFADE) |
214 | &crossfade_settings_menu, | 215 | &crossfade_settings_menu, |
diff --git a/apps/pcmbuf.c b/apps/pcmbuf.c index 773e97cce0..c4164c3b4b 100644 --- a/apps/pcmbuf.c +++ b/apps/pcmbuf.c | |||
@@ -741,6 +741,9 @@ void pcmbuf_start_track_change(enum pcm_track_change_type type) | |||
741 | } | 741 | } |
742 | } | 742 | } |
743 | 743 | ||
744 | if (auto_skip && global_settings.single_mode && !global_settings.party_mode) | ||
745 | crossfade = false; | ||
746 | |||
744 | if (crossfade) | 747 | if (crossfade) |
745 | { | 748 | { |
746 | logf("crossfade track change"); | 749 | logf("crossfade track change"); |
diff --git a/apps/playback.c b/apps/playback.c index 5a6f18735b..1c5a7a4c9d 100644 --- a/apps/playback.c +++ b/apps/playback.c | |||
@@ -2396,6 +2396,14 @@ static void audio_finalise_track_change(void) | |||
2396 | 2396 | ||
2397 | id3_write(PLAYING_ID3, track_id3); | 2397 | id3_write(PLAYING_ID3, track_id3); |
2398 | 2398 | ||
2399 | if (global_settings.single_mode) | ||
2400 | if ( ((skip_pending == TRACK_SKIP_AUTO) || (skip_pending == TRACK_SKIP_AUTO_NEW_PLAYLIST)) | ||
2401 | && (global_settings.party_mode == 0) ) | ||
2402 | { | ||
2403 | play_status = PLAY_PAUSED; | ||
2404 | pcmbuf_pause(true); | ||
2405 | } | ||
2406 | |||
2399 | /* The skip is technically over */ | 2407 | /* The skip is technically over */ |
2400 | skip_pending = TRACK_SKIP_NONE; | 2408 | skip_pending = TRACK_SKIP_NONE; |
2401 | 2409 | ||
diff --git a/apps/settings.h b/apps/settings.h index fedec8e025..9b4c56467d 100644 --- a/apps/settings.h +++ b/apps/settings.h | |||
@@ -476,6 +476,7 @@ struct user_settings | |||
476 | int default_codepage; /* set default codepage for tag conversion */ | 476 | int default_codepage; /* set default codepage for tag conversion */ |
477 | bool hold_lr_for_scroll_in_list; /* hold L/R scrolls the list left/right */ | 477 | bool hold_lr_for_scroll_in_list; /* hold L/R scrolls the list left/right */ |
478 | bool play_selected; /* Plays selected file even in shuffle mode */ | 478 | bool play_selected; /* Plays selected file even in shuffle mode */ |
479 | bool single_mode; /* single mode - stop after every track */ | ||
479 | bool party_mode; /* party mode - unstoppable music */ | 480 | bool party_mode; /* party mode - unstoppable music */ |
480 | bool audioscrobbler; /* Audioscrobbler logging */ | 481 | bool audioscrobbler; /* Audioscrobbler logging */ |
481 | bool cuesheet; | 482 | bool cuesheet; |
diff --git a/apps/settings_list.c b/apps/settings_list.c index d9ffd8cf3e..4758c27113 100644 --- a/apps/settings_list.c +++ b/apps/settings_list.c | |||
@@ -1238,6 +1238,7 @@ const struct settings_list settings[] = { | |||
1238 | #endif | 1238 | #endif |
1239 | /* more playback */ | 1239 | /* more playback */ |
1240 | OFFON_SETTING(0,play_selected,LANG_PLAY_SELECTED,true,"play selected",NULL), | 1240 | OFFON_SETTING(0,play_selected,LANG_PLAY_SELECTED,true,"play selected",NULL), |
1241 | OFFON_SETTING(0,single_mode,LANG_SINGLE_MODE,false,"single mode",NULL), | ||
1241 | OFFON_SETTING(0,party_mode,LANG_PARTY_MODE,false,"party mode",NULL), | 1242 | OFFON_SETTING(0,party_mode,LANG_PARTY_MODE,false,"party mode",NULL), |
1242 | OFFON_SETTING(0,fade_on_stop,LANG_FADE_ON_STOP,true,"volume fade",NULL), | 1243 | OFFON_SETTING(0,fade_on_stop,LANG_FADE_ON_STOP,true,"volume fade",NULL), |
1243 | INT_SETTING(F_TIME_SETTING, ff_rewind_min_step, LANG_FFRW_STEP, 1, | 1244 | INT_SETTING(F_TIME_SETTING, ff_rewind_min_step, LANG_FFRW_STEP, 1, |