diff options
author | Christian Soffke <christian.soffke@gmail.com> | 2021-10-26 03:05:50 +0200 |
---|---|---|
committer | Christian Soffke <christian.soffke@gmail.com> | 2022-10-25 03:26:51 +0200 |
commit | 193ebb5a36374acbe379fe573317f9b668e65e4f (patch) | |
tree | c5163b68d97de8d3da4a4ddbf932dd933250c628 /apps/gui | |
parent | 498988d34a50bb5fe32cf1092f11e3c10a0ac821 (diff) | |
download | rockbox-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.c | 25 | ||||
-rw-r--r-- | apps/gui/quickscreen.h | 7 | ||||
-rw-r--r-- | apps/gui/wps.c | 20 |
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 | ||
323 | static bool gui_syncquickscreen_run(struct gui_quickscreen * qs, int button_enter, bool *usb) | 323 | static 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 | ||
411 | static const struct settings_list *get_setting(int gs_value, | 417 | static 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 | ||
39 | enum quickscreen_return { | ||
40 | QUICKSCREEN_OK = 0, | ||
41 | QUICKSCREEN_IN_USB = 0x1, | ||
42 | QUICKSCREEN_GOTO_SHORTCUTS_MENU = 0x2, | ||
43 | QUICKSCREEN_CHANGED = 0x4, | ||
44 | }; | ||
45 | |||
39 | struct gui_quickscreen | 46 | struct 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 */ |