From bd92fbbf92c9baf16b72e767f9e01c3fba40589c Mon Sep 17 00:00:00 2001 From: Robert Walker Date: Tue, 12 Apr 2011 22:31:30 +0100 Subject: [PATCH] Add timeout to quickscreen --- apps/gui/quickscreen.c | 16 +++++++++++++++- apps/lang/english.lang | 34 ++++++++++++++++++++++++++++++++++ apps/menus/display_menu.c | 9 +++++++++ apps/settings.h | 1 + apps/settings_list.c | 3 +++ 5 files changed, 62 insertions(+), 1 deletions(-) diff --git a/apps/gui/quickscreen.c b/apps/gui/quickscreen.c index d092f0b..ee5fc65 100644 --- a/apps/gui/quickscreen.c +++ b/apps/gui/quickscreen.c @@ -303,7 +303,7 @@ static int quickscreen_touchscreen_button(const struct viewport static bool gui_syncquickscreen_run(struct gui_quickscreen * qs, int button_enter) { - int button, i, j; + int button, timeouts, i, j; struct viewport parent[NB_SCREENS]; struct viewport vps[NB_SCREENS][QUICKSCREEN_ITEM_COUNT]; struct viewport vp_icons[NB_SCREENS]; @@ -329,12 +329,26 @@ static bool gui_syncquickscreen_run(struct gui_quickscreen * qs, int button_ente talk_qs_option(qs->items[QUICKSCREEN_LEFT], true); talk_qs_option(qs->items[QUICKSCREEN_BOTTOM], true); talk_qs_option(qs->items[QUICKSCREEN_RIGHT], true); + timeouts = 0; while (true) { button = get_action(CONTEXT_QUICKSCREEN, HZ/5); #ifdef HAVE_TOUCHSCREEN if (button == ACTION_TOUCHSCREEN) button = quickscreen_touchscreen_button(vps[SCREEN_MAIN]); #endif + if (global_settings.quickscreen_timeout > 0) + { + if (button == ACTION_NONE) + { + if (++timeouts > global_settings.quickscreen_timeout*5) + break; + } + else + { + timeouts = 0; + } + } + if (default_event_handler(button) == SYS_USB_CONNECTED) return(true); if (gui_quickscreen_do_button(qs, button)) diff --git a/apps/lang/english.lang b/apps/lang/english.lang index 26a2274..da7fe8f 100644 --- a/apps/lang/english.lang +++ b/apps/lang/english.lang @@ -12744,3 +12744,37 @@ *: "In custom directories only" + + id: LANG_QUICKSCREEN_SETTINGS + desc: in the display menu + user: core + + *: "Quickscreen" + masd: none + + + *: "Quickscreen" + masd: none + + + *: "Quickscreen" + masd: none + + + + id: LANG_QUICKSCREEN_TIMEOUT + desc: in the quickscreen menu + user: core + + *: "Timeout" + masd: none + + + *: "Timeout" + masd: none + + + *: "Timeout" + masd: none + + diff --git a/apps/menus/display_menu.c b/apps/menus/display_menu.c index 4badf96..ab0135e 100644 --- a/apps/menus/display_menu.c +++ b/apps/menus/display_menu.c @@ -484,6 +484,12 @@ MAKE_MENU(touchscreen_menu, ID2P(LANG_TOUCHSCREEN_SETTINGS), NULL, Icon_NOICON, &touchscreen_menu_calibrate, &touchscreen_menu_reset_calibration); #endif +#ifdef HAVE_QUICKSCREEN +MENUITEM_SETTING(quickscreen_timeout, &global_settings.quickscreen_timeout, NULL); + +MAKE_MENU(quickscreen_menu, ID2P(LANG_QUICKSCREEN_SETTINGS), NULL, Icon_NOICON, &quickscreen_timeout); +#endif + MENUITEM_SETTING(codepage_setting, &global_settings.default_codepage, NULL); @@ -502,4 +508,7 @@ MAKE_MENU(display_menu, ID2P(LANG_DISPLAY), #ifdef HAVE_TOUCHSCREEN &touchscreen_menu, #endif +#ifdef HAVE_QUICKSCREEN + &quickscreen_menu, +#endif ); diff --git a/apps/settings.h b/apps/settings.h index 3f49cfc..c235ca8 100644 --- a/apps/settings.h +++ b/apps/settings.h @@ -491,6 +491,7 @@ struct user_settings #ifdef HAVE_QUICKSCREEN int qs_items[QUICKSCREEN_ITEM_COUNT]; + int quickscreen_timeout; /* How long without action before exiting quickscreen */ #endif #if CONFIG_RTC diff --git a/apps/settings_list.c b/apps/settings_list.c index 5b9a840..a61e151 100644 --- a/apps/settings_list.c +++ b/apps/settings_list.c @@ -1733,6 +1733,9 @@ const struct settings_list settings[] = { &global_settings.dirfilter, "qs bottom", qs_load_from_cfg, qs_write_to_cfg, qs_is_changed, qs_set_default), + INT_SETTING(0, quickscreen_timeout, LANG_QUICKSCREEN_TIMEOUT, 0, + "qs timeout", UNIT_SEC, 0, 30, 1, + formatter_unit_0_is_off, getlang_unit_0_is_off, NULL), #endif #ifdef HAVE_SPEAKER OFFON_SETTING(0, speaker_enabled, LANG_ENABLE_SPEAKER, false, "speaker", -- 1.7.1