diff --git a/apps/features.txt b/apps/features.txt index b510136a33..af4b18648e 100644 --- a/apps/features.txt +++ b/apps/features.txt @@ -192,3 +192,6 @@ usbstack wheel_acceleration #endif +#if defined(HAVE_TOUCHSCREEN) +touchscreen +#endif diff --git a/apps/lang/english.lang b/apps/lang/english.lang index 8971cfb0a9..b2f08222ce 100644 --- a/apps/lang/english.lang +++ b/apps/lang/english.lang @@ -12403,3 +12403,54 @@ speaker: "Enable Speaker" + + id: LANG_TOUCHSCREEN_MODE + desc: in Settings -> General -> System menu + user: core + + *: none + touchscreen: "Touchscreen Mode" + + + *: none + touchscreen: "Touchscreen Mode" + + + *: none + touchscreen: "Touchscreen Mode" + + + + id: LANG_TOUCHSCREEN_GRID + desc: in Settings -> General -> System menu + user: core + + *: none + touchscreen: "3x3 Grid" + + + *: none + touchscreen: "3x3 Grid" + + + *: none + touchscreen: "3 by 3 grid" + + + + id: LANG_TOUCHSCREEN_POINT + desc: in Settings -> General -> System menu + user: core + + *: none + touchscreen: "Absolute Point" + + + *: none + touchscreen: "Absolute Point" + + + *: none + touchscreen: "Absolute Point" + + \ No newline at end of file diff --git a/apps/main.c b/apps/main.c index 20cec9bbfa..54ff191a3a 100644 --- a/apps/main.c +++ b/apps/main.c @@ -136,9 +136,6 @@ static void app_main(void) screens[i].update(); } tree_gui_init(); -#ifdef HAVE_TOUCHSCREEN - touchscreen_set_mode(TOUCHSCREEN_BUTTON); -#endif viewportmanager_set_statusbar(VP_SB_ALLSCREENS); add_event(GUI_EVENT_STATUSBAR_TOGGLE, false, viewportmanager_statusbar_changed); diff --git a/apps/menus/settings_menu.c b/apps/menus/settings_menu.c index 73d2463c36..56a0178000 100644 --- a/apps/menus/settings_menu.c +++ b/apps/menus/settings_menu.c @@ -265,6 +265,20 @@ MENUITEM_SETTING(buttonlight_brightness, &global_settings.buttonlight_brightness MENUITEM_SETTING(touchpad_sensitivity, &global_settings.touchpad_sensitivity, NULL); #endif +#ifdef HAVE_TOUCHSCREEN +static int touch_mode_callback(int action,const struct menu_item_ex *this_item) +{ + (void)this_item; + switch (action) + { + case ACTION_EXIT_MENUITEM: /* on exit */ + touchscreen_set_mode(global_settings.touch_mode); + break; + } + return action; +} +MENUITEM_SETTING(touch_mode, &global_settings.touch_mode, touch_mode_callback); +#endif MAKE_MENU(system_menu, ID2P(LANG_SYSTEM), 0, Icon_System_menu, @@ -284,7 +298,7 @@ MAKE_MENU(system_menu, ID2P(LANG_SYSTEM), &car_adapter_mode, #endif #ifdef IPOD_ACCESSORY_PROTOCOL - &serial_bitrate, + &serial_bitrate, #endif #ifdef HAVE_ACCESSORY_SUPPLY &accessory_supply, @@ -300,6 +314,9 @@ MAKE_MENU(system_menu, ID2P(LANG_SYSTEM), #endif #ifdef HAVE_TOUCHPAD_SENSITIVITY_SETTING &touchpad_sensitivity, +#endif +#ifdef HAVE_TOUCHSCREEN + &touch_mode, #endif ); diff --git a/apps/settings.c b/apps/settings.c index 71c29f67c4..4db4f4405c 100644 --- a/apps/settings.c +++ b/apps/settings.c @@ -960,6 +960,10 @@ void settings_apply(bool read_disk) usb_charging_enable(global_settings.usb_charging); #endif +#ifdef HAVE_TOUCHSCREEN + touchscreen_set_mode(global_settings.touch_mode); +#endif + /* This should stay last */ #if defined(HAVE_RECORDING) && CONFIG_CODEC == SWCODEC enc_global_settings_apply(); diff --git a/apps/settings.h b/apps/settings.h index c376a46dea..dfd3998d83 100644 --- a/apps/settings.h +++ b/apps/settings.h @@ -726,6 +726,10 @@ struct user_settings bool speaker_enabled; #endif +#ifdef HAVE_TOUCHSCREEN + int touch_mode; +#endif + /* If values are just added to the end, no need to bump plugin API version. */ /* new stuff to be added at the end */ diff --git a/apps/settings_list.c b/apps/settings_list.c index 2d9be0873c..6255580991 100644 --- a/apps/settings_list.c +++ b/apps/settings_list.c @@ -602,8 +602,8 @@ const struct settings_list settings[] = { #ifdef IPOD_ACCESSORY_PROTOCOL CHOICE_SETTING(0, serial_bitrate, LANG_SERIAL_BITRATE, 0, "serial bitrate", "auto,9600,19200,38400,57600", iap_bitrate_set, 5, ID2P(LANG_SERIAL_BITRATE_AUTO), - ID2P(LANG_SERIAL_BITRATE_9600),ID2P(LANG_SERIAL_BITRATE_19200), - ID2P(LANG_SERIAL_BITRATE_38400),ID2P(LANG_SERIAL_BITRATE_57600)), + ID2P(LANG_SERIAL_BITRATE_9600),ID2P(LANG_SERIAL_BITRATE_19200), + ID2P(LANG_SERIAL_BITRATE_38400),ID2P(LANG_SERIAL_BITRATE_57600)), #endif #ifdef HAVE_ACCESSORY_SUPPLY OFFON_SETTING(0, accessory_supply, LANG_ACCESSORY_SUPPLY, @@ -1462,6 +1462,11 @@ const struct settings_list settings[] = { OFFON_SETTING(0, speaker_enabled, LANG_ENABLE_SPEAKER, false, "speaker", audiohw_enable_speaker), #endif +#ifdef HAVE_TOUCHSCREEN + CHOICE_SETTING(0, touch_mode, LANG_TOUCHSCREEN_MODE, TOUCHSCREEN_BUTTON, + "touchscreen mode", "point,grid", NULL, 2, + ID2P(LANG_TOUCHSCREEN_POINT), ID2P(LANG_TOUCHSCREEN_GRID)), +#endif }; const int nb_settings = sizeof(settings)/sizeof(*settings);