summaryrefslogtreecommitdiff
path: root/apps/gui
diff options
context:
space:
mode:
authorChristian Soffke <christian.soffke@gmail.com>2021-10-26 03:05:50 +0200
committerChristian Soffke <christian.soffke@gmail.com>2022-10-25 03:26:51 +0200
commit193ebb5a36374acbe379fe573317f9b668e65e4f (patch)
treec5163b68d97de8d3da4a4ddbf932dd933250c628 /apps/gui
parent498988d34a50bb5fe32cf1092f11e3c10a0ac821 (diff)
downloadrockbox-193ebb5a36374acbe379fe573317f9b668e65e4f.tar.gz
rockbox-193ebb5a36374acbe379fe573317f9b668e65e4f.zip
Enable access to Shortcuts Menu from QuickScreen
Offers a quick way of switching to the Shortcuts Menu by pressing the 'context menu' button while QuickScreen is active (e.g. long press Select on iPods and some other players) Change-Id: I38292c7070cf093a81e1db688809b1f0d6a8764a
Diffstat (limited to 'apps/gui')
-rw-r--r--apps/gui/quickscreen.c25
-rw-r--r--apps/gui/quickscreen.h7
-rw-r--r--apps/gui/wps.c20
3 files changed, 38 insertions, 14 deletions
diff --git a/apps/gui/quickscreen.c b/apps/gui/quickscreen.c
index e403e13e6c..141eb1a16b 100644
--- a/apps/gui/quickscreen.c
+++ b/apps/gui/quickscreen.c
@@ -320,13 +320,13 @@ static int quickscreen_touchscreen_button(void)
320} 320}
321#endif 321#endif
322 322
323static bool gui_syncquickscreen_run(struct gui_quickscreen * qs, int button_enter, bool *usb) 323static int gui_syncquickscreen_run(struct gui_quickscreen * qs, int button_enter, bool *usb)
324{ 324{
325 int button; 325 int button;
326 struct viewport parent[NB_SCREENS]; 326 struct viewport parent[NB_SCREENS];
327 struct viewport vps[NB_SCREENS][QUICKSCREEN_ITEM_COUNT]; 327 struct viewport vps[NB_SCREENS][QUICKSCREEN_ITEM_COUNT];
328 struct viewport vp_icons[NB_SCREENS]; 328 struct viewport vp_icons[NB_SCREENS];
329 bool changed = false; 329 int ret = QUICKSCREEN_OK;
330 /* To quit we need either : 330 /* To quit we need either :
331 * - a second press on the button that made us enter 331 * - a second press on the button that made us enter
332 * - an action taken while pressing the enter button, 332 * - an action taken while pressing the enter button,
@@ -367,7 +367,7 @@ static bool gui_syncquickscreen_run(struct gui_quickscreen * qs, int button_ente
367 } 367 }
368 if (gui_quickscreen_do_button(qs, button)) 368 if (gui_quickscreen_do_button(qs, button))
369 { 369 {
370 changed = true; 370 ret |= QUICKSCREEN_CHANGED;
371 can_quit = true; 371 can_quit = true;
372 FOR_NB_SCREENS(i) 372 FOR_NB_SCREENS(i)
373 gui_quickscreen_draw(qs, &screens[i], &parent[i], 373 gui_quickscreen_draw(qs, &screens[i], &parent[i],
@@ -389,6 +389,11 @@ static bool gui_syncquickscreen_run(struct gui_quickscreen * qs, int button_ente
389 FOR_NB_SCREENS(i) 389 FOR_NB_SCREENS(i)
390 skin_update(CUSTOM_STATUSBAR, i, SKIN_REFRESH_NON_STATIC); 390 skin_update(CUSTOM_STATUSBAR, i, SKIN_REFRESH_NON_STATIC);
391 } 391 }
392 else if (button == ACTION_STD_CONTEXT)
393 {
394 ret |= QUICKSCREEN_GOTO_SHORTCUTS_MENU;
395 break;
396 }
392 if ((button == button_enter) && can_quit) 397 if ((button == button_enter) && can_quit)
393 break; 398 break;
394 399
@@ -405,7 +410,8 @@ static bool gui_syncquickscreen_run(struct gui_quickscreen * qs, int button_ente
405 } 410 }
406 411
407 pop_current_activity(); 412 pop_current_activity();
408 return changed; 413
414 return ret;
409} 415}
410 416
411static const struct settings_list *get_setting(int gs_value, 417static const struct settings_list *get_setting(int gs_value,
@@ -427,9 +433,6 @@ int quick_screen_quick(int button_enter)
427#endif 433#endif
428 bool usb = false; 434 bool usb = false;
429 435
430 if (global_settings.shortcuts_replaces_qs)
431 return do_shortcut_menu(NULL);
432
433 qs.items[QUICKSCREEN_TOP] = 436 qs.items[QUICKSCREEN_TOP] =
434 get_setting(global_settings.qs_items[QUICKSCREEN_TOP], NULL); 437 get_setting(global_settings.qs_items[QUICKSCREEN_TOP], NULL);
435 qs.items[QUICKSCREEN_LEFT] = 438 qs.items[QUICKSCREEN_LEFT] =
@@ -442,7 +445,8 @@ int quick_screen_quick(int button_enter)
442 get_setting(global_settings.qs_items[QUICKSCREEN_BOTTOM], NULL); 445 get_setting(global_settings.qs_items[QUICKSCREEN_BOTTOM], NULL);
443 446
444 qs.callback = NULL; 447 qs.callback = NULL;
445 if (gui_syncquickscreen_run(&qs, button_enter, &usb)) 448 int ret = gui_syncquickscreen_run(&qs, button_enter, &usb);
449 if (ret & QUICKSCREEN_CHANGED)
446 { 450 {
447 settings_save(); 451 settings_save();
448 /* make sure repeat/shuffle/any other nasty ones get updated */ 452 /* make sure repeat/shuffle/any other nasty ones get updated */
@@ -465,7 +469,10 @@ int quick_screen_quick(int button_enter)
465 set_albumart_mode(global_settings.album_art); 469 set_albumart_mode(global_settings.album_art);
466#endif 470#endif
467 } 471 }
468 return (usb ? 1:0); 472 if (usb)
473 return QUICKSCREEN_IN_USB;
474 return ret & QUICKSCREEN_GOTO_SHORTCUTS_MENU ? QUICKSCREEN_GOTO_SHORTCUTS_MENU :
475 QUICKSCREEN_OK;
469} 476}
470 477
471/* stuff to make the quickscreen configurable */ 478/* stuff to make the quickscreen configurable */
diff --git a/apps/gui/quickscreen.h b/apps/gui/quickscreen.h
index 015928ee8a..6082b5a883 100644
--- a/apps/gui/quickscreen.h
+++ b/apps/gui/quickscreen.h
@@ -36,6 +36,13 @@ enum quickscreen_item {
36 QUICKSCREEN_ITEM_COUNT, 36 QUICKSCREEN_ITEM_COUNT,
37}; 37};
38 38
39enum quickscreen_return {
40 QUICKSCREEN_OK = 0,
41 QUICKSCREEN_IN_USB = 0x1,
42 QUICKSCREEN_GOTO_SHORTCUTS_MENU = 0x2,
43 QUICKSCREEN_CHANGED = 0x4,
44};
45
39struct gui_quickscreen 46struct gui_quickscreen
40{ 47{
41 const struct settings_list *items[QUICKSCREEN_ITEM_COUNT]; 48 const struct settings_list *items[QUICKSCREEN_ITEM_COUNT];
diff --git a/apps/gui/wps.c b/apps/gui/wps.c
index 2587542b00..5b973a2199 100644
--- a/apps/gui/wps.c
+++ b/apps/gui/wps.c
@@ -53,6 +53,7 @@
53#include "root_menu.h" 53#include "root_menu.h"
54#include "backdrop.h" 54#include "backdrop.h"
55#include "quickscreen.h" 55#include "quickscreen.h"
56#include "shortcuts.h"
56#include "pitchscreen.h" 57#include "pitchscreen.h"
57#include "appevents.h" 58#include "appevents.h"
58#include "viewport.h" 59#include "viewport.h"
@@ -839,15 +840,24 @@ long gui_wps_show(void)
839 case ACTION_WPS_QUICKSCREEN: 840 case ACTION_WPS_QUICKSCREEN:
840 { 841 {
841 gwps_leave_wps(); 842 gwps_leave_wps();
842 if (global_settings.shortcuts_replaces_qs) 843 bool enter_shortcuts_menu = global_settings.shortcuts_replaces_qs;
844 if (!enter_shortcuts_menu)
843 { 845 {
844 global_status.last_screen = GO_TO_SHORTCUTMENU;
845 int ret = quick_screen_quick(button); 846 int ret = quick_screen_quick(button);
847 if (ret == QUICKSCREEN_IN_USB)
848 return GO_TO_ROOT;
849 else if (ret == QUICKSCREEN_GOTO_SHORTCUTS_MENU)
850 enter_shortcuts_menu = true;
851 else
852 restore = true;
853 }
854
855 if (enter_shortcuts_menu)
856 {
857 global_status.last_screen = GO_TO_SHORTCUTMENU;
858 int ret = do_shortcut_menu(NULL);
846 return (ret == GO_TO_PREVIOUS ? GO_TO_WPS : ret); 859 return (ret == GO_TO_PREVIOUS ? GO_TO_WPS : ret);
847 } 860 }
848 else if (quick_screen_quick(button) > 0)
849 return GO_TO_ROOT;
850 restore = true;
851 } 861 }
852 break; 862 break;
853#endif /* HAVE_QUICKSCREEN */ 863#endif /* HAVE_QUICKSCREEN */