summaryrefslogtreecommitdiff
path: root/apps/settings_list.c
diff options
context:
space:
mode:
authorWilliam Wilgus <me.theuser@yahoo.com>2016-11-22 06:21:31 +0100
committerWilliam Wilgus <me.theuser@yahoo.com>2017-01-17 23:06:17 +0100
commitdc87e9e9f3c383b63c3cb3713886a6c93b6a79d1 (patch)
tree47a6c0d49e7741f91fa74d7230b1267f60617902 /apps/settings_list.c
parent16a9f84571276a13f4cfd5c66db8cd63ce4e2e7f (diff)
downloadrockbox-dc87e9e9f3c383b63c3cb3713886a6c93b6a79d1.tar.gz
rockbox-dc87e9e9f3c383b63c3cb3713886a6c93b6a79d1.zip
Selective Backlight/Advanced Softlock - Selective actions based on context
Selective backlight allows the user to choose actions that will not enable the backlight when pressed. Advanced softlock allows user to choose actions that will not be blocked by screenlock on devices without a hold button. Both only occur in FM and WPS Contexts. Update: Back from the dead -Cleaned up code, removed unnecessary calls, re-arranged last filter action timeout conditional to work in case last_filtered_action_tick was never set -Added entries to the manual -Fixed back button on some menus not activating backlight -Made menus more intuitive, no actions selected now changes menu item to off. -Added talk fuctionality. -Added option to disable selective backlight while on external power. -Rewrote backlight and softlock handling code to fix issue with scrollwheels -Menu changed to have toggle(yes/no) and settings -Optimized selective actions lookup -Added option to disable notification of 'buttons locked' while softlocked -Removed uneeded code, consolidated action lookup to single function -Fixed incorrect name on selective softlock menu -Added option to disable touch on touchscreen devices -Fixed backlight on original screenlock without selective screenlock active -Added text selection in mask_select for when show_icons is off -Fixed voice in mask_select to speak if voice is defined instead of spelling -Added more lang defines (play skip seek) -Added option to disable unknown keys turning on backlight -Fixed Conditional argument In wrong place causing players without backlight to fail to build -Fixed Disable Unknown blocking detection of context change -Fixed canceling menu didn't update new settings -Added Autolock on backlight off -Removed backlight_on_force from backlight.c, Now sets ignore next to false and uses backlight_on -Cleaned up autolock code added strings to lang file -Fixed issue where rapid presses would bypass softlock -Removed old softlock code, Cleaned selective actions code -Changed menu to match existing RB menus -Fixed Backlight_on_Hold blocked by backlight_ignore_next -Fixed ignore_next for ipod -Fixed bug allowing context with softlock to bypass selective backlight -Changed mask_select to no longer prompt for changes to be saved -Changed menu names -Added ignore timeout to allow ipod scroll wheel to work properly and other players to still work properly, removed some previous code including ignore_event -Increased ignore timeout to prevent sd card accesses from interrupting action code and turning on backlight -Changed Unknown action to unmapped action in menu, changed handling code -Removed unneeded logic and variables for handling unfiltered actions -Reverted unmapped action code to previous functionality -Added manual entries (thanks JohnB) -Removed elusive unhandled unicode character from manual, changed formatting slightly Actions: Volume,Play,Seek,Skip Extras: Disable unmapped actions Disable selective backlight on external power Disable touch during softlock on touchscreen devices Disable softlock notifications (power button still notifies) Autolock on backlight off Method: Adds a function to ignore backlight on next call If selected action occurs backlight is forced on, Filter_first_keypress stays intact. Selective softlock allows selected actions through, bypasses the normal softlock routine. ToDo: DONE previous commit (#1) has attribution for folder_select.c which mask_select is based from. Change-Id: I08132ddcfd64c81751ef23b720f3ec6d68695fe4
Diffstat (limited to 'apps/settings_list.c')
-rw-r--r--apps/settings_list.c69
1 files changed, 43 insertions, 26 deletions
diff --git a/apps/settings_list.c b/apps/settings_list.c
index 62f232610c..58be3d2575 100644
--- a/apps/settings_list.c
+++ b/apps/settings_list.c
@@ -159,7 +159,7 @@
159/* for settings which use the set_int() setting screen. 159/* for settings which use the set_int() setting screen.
160 unit is the UNIT_ define to display/talk. 160 unit is the UNIT_ define to display/talk.
161 the first one saves a string to the config file, 161 the first one saves a string to the config file,
162 the second one saves the variable value to the config file */ 162 the second one saves the variable value to the config file */
163#define INT_SETTING_W_CFGVALS(flags, var, lang_id, default, name, cfg_vals, \ 163#define INT_SETTING_W_CFGVALS(flags, var, lang_id, default, name, cfg_vals, \
164 unit, min, max, step, formatter, get_talk_id, cb) \ 164 unit, min, max, step, formatter, get_talk_id, cb) \
165 {flags|F_INT_SETTING|F_T_INT, &global_settings.var, \ 165 {flags|F_INT_SETTING|F_T_INT, &global_settings.var, \
@@ -864,7 +864,7 @@ const struct settings_list settings[] = {
864 MAX_CONTRAST_SETTING, 1, NULL, NULL }}}}, 864 MAX_CONTRAST_SETTING, 1, NULL, NULL }}}},
865#endif 865#endif
866#ifdef HAVE_BACKLIGHT 866#ifdef HAVE_BACKLIGHT
867 TABLE_SETTING(F_ALLOW_ARBITRARY_VALS, backlight_timeout, LANG_BACKLIGHT, 867 TABLE_SETTING(F_ALLOW_ARBITRARY_VALS, backlight_timeout, LANG_BACKLIGHT,
868 DEFAULT_BACKLIGHT_TIMEOUT, 868 DEFAULT_BACKLIGHT_TIMEOUT,
869 "backlight timeout", off_on, UNIT_SEC, backlight_formatter, 869 "backlight timeout", off_on, UNIT_SEC, backlight_formatter,
870 backlight_getlang, backlight_set_timeout, 20, 870 backlight_getlang, backlight_set_timeout, 20,
@@ -957,7 +957,7 @@ const struct settings_list settings[] = {
957 0,1,2,3,4,5,6,7,8,9,10,15,30,45,60), 957 0,1,2,3,4,5,6,7,8,9,10,15,30,45,60),
958 SYSTEM_SETTING(NVRAM(4), runtime, 0), 958 SYSTEM_SETTING(NVRAM(4), runtime, 0),
959 SYSTEM_SETTING(NVRAM(4), topruntime, 0), 959 SYSTEM_SETTING(NVRAM(4), topruntime, 0),
960 INT_SETTING(F_BANFROMQS, max_files_in_playlist, 960 INT_SETTING(F_BANFROMQS, max_files_in_playlist,
961 LANG_MAX_FILES_IN_PLAYLIST, 961 LANG_MAX_FILES_IN_PLAYLIST,
962#if MEMORYSIZE > 1 962#if MEMORYSIZE > 1
963 10000, 963 10000,
@@ -1071,9 +1071,26 @@ const struct settings_list settings[] = {
1071 1071
1072/** End of old RTC config block **/ 1072/** End of old RTC config block **/
1073 1073
1074#ifndef HAS_BUTTON_HOLD
1075 OFFON_SETTING(0, bt_selective_softlock_actions,
1076 LANG_ACTION_ENABLED, false,
1077 "No Screen Lock For Selected Actions", NULL),
1078 INT_SETTING(0, bt_selective_softlock_actions_mask, LANG_SOFTLOCK_SELECTIVE,
1079 0, "Selective Screen Lock Actions", UNIT_INT,
1080 0, 2048,2, NULL, NULL, NULL),
1081#endif /* !HAS_BUTTON_HOLD */
1082
1074#ifdef HAVE_BACKLIGHT 1083#ifdef HAVE_BACKLIGHT
1075 OFFON_SETTING(0, caption_backlight, LANG_CAPTION_BACKLIGHT, 1084 OFFON_SETTING(0, caption_backlight, LANG_CAPTION_BACKLIGHT,
1076 false, "caption backlight", NULL), 1085 false, "caption backlight", NULL),
1086
1087 OFFON_SETTING(0, bl_selective_actions,
1088 LANG_ACTION_ENABLED, false,
1089 "No Backlight On Selected Actions", NULL),
1090
1091 INT_SETTING(0, bl_selective_actions_mask, LANG_BACKLIGHT_SELECTIVE,
1092 0, "Selective Backlight Actions", UNIT_INT,
1093 0, 2048,2, NULL, NULL, NULL),
1077#ifdef HAVE_REMOTE_LCD 1094#ifdef HAVE_REMOTE_LCD
1078 OFFON_SETTING(0, remote_caption_backlight, LANG_CAPTION_BACKLIGHT, 1095 OFFON_SETTING(0, remote_caption_backlight, LANG_CAPTION_BACKLIGHT,
1079 false, "remote caption backlight", NULL), 1096 false, "remote caption backlight", NULL),
@@ -1351,7 +1368,7 @@ const struct settings_list settings[] = {
1351 ID2P(LANG_TIME), ID2P(LANG_FILESIZE)), 1368 ID2P(LANG_TIME), ID2P(LANG_FILESIZE)),
1352 {F_T_INT|F_RECSETTING, &global_settings.rec_source, LANG_RECORDING_SOURCE, 1369 {F_T_INT|F_RECSETTING, &global_settings.rec_source, LANG_RECORDING_SOURCE,
1353 INT(0), "rec source", 1370 INT(0), "rec source",
1354 &HAVE_MIC_REC_(",mic") 1371 &HAVE_MIC_REC_(",mic")
1355 HAVE_LINE_REC_(",line") 1372 HAVE_LINE_REC_(",line")
1356 HAVE_SPDIF_REC_(",spdif") 1373 HAVE_SPDIF_REC_(",spdif")
1357 HAVE_FMRADIO_REC_(",fmradio")[1], 1374 HAVE_FMRADIO_REC_(",fmradio")[1],
@@ -1427,17 +1444,17 @@ const struct settings_list settings[] = {
1427 INT_SETTING(F_RECSETTING, rec_stop_thres_linear, LANG_RECORD_STOP_THRESHOLD, 10, 1444 INT_SETTING(F_RECSETTING, rec_stop_thres_linear, LANG_RECORD_STOP_THRESHOLD, 10,
1428 "trigger stop threshold linear", UNIT_PERCENT, 0, 100, 1, NULL, NULL, NULL), 1445 "trigger stop threshold linear", UNIT_PERCENT, 0, 100, 1, NULL, NULL, NULL),
1429 TABLE_SETTING(F_RECSETTING, rec_start_duration, LANG_MIN_DURATION, 0, 1446 TABLE_SETTING(F_RECSETTING, rec_start_duration, LANG_MIN_DURATION, 0,
1430 "trigger start duration", 1447 "trigger start duration",
1431 "0s,1s,2s,5s,10s,15s,20s,25s,30s,1min,2min,5min,10min", 1448 "0s,1s,2s,5s,10s,15s,20s,25s,30s,1min,2min,5min,10min",
1432 UNIT_SEC, NULL, NULL, NULL, 13, 1449 UNIT_SEC, NULL, NULL, NULL, 13,
1433 0,1,2,5,10,15,20,25,30,60,120,300,600), 1450 0,1,2,5,10,15,20,25,30,60,120,300,600),
1434 TABLE_SETTING(F_RECSETTING, rec_stop_postrec, LANG_MIN_DURATION, 0, 1451 TABLE_SETTING(F_RECSETTING, rec_stop_postrec, LANG_MIN_DURATION, 0,
1435 "trigger stop duration", 1452 "trigger stop duration",
1436 "0s,1s,2s,5s,10s,15s,20s,25s,30s,1min,2min,5min,10min", 1453 "0s,1s,2s,5s,10s,15s,20s,25s,30s,1min,2min,5min,10min",
1437 UNIT_SEC, NULL, NULL, NULL, 13, 1454 UNIT_SEC, NULL, NULL, NULL, 13,
1438 0,1,2,5,10,15,20,25,30,60,120,300,600), 1455 0,1,2,5,10,15,20,25,30,60,120,300,600),
1439 TABLE_SETTING(F_RECSETTING, rec_stop_gap, LANG_RECORD_STOP_GAP, 1, 1456 TABLE_SETTING(F_RECSETTING, rec_stop_gap, LANG_RECORD_STOP_GAP, 1,
1440 "trigger min gap", 1457 "trigger min gap",
1441 "0s,1s,2s,5s,10s,15s,20s,25s,30s,1min,2min,5min,10min", 1458 "0s,1s,2s,5s,10s,15s,20s,25s,30s,1min,2min,5min,10min",
1442 UNIT_SEC, NULL, NULL, NULL, 13, 1459 UNIT_SEC, NULL, NULL, NULL, 13,
1443 0,1,2,5,10,15,20,25,30,60,120,300,600), 1460 0,1,2,5,10,15,20,25,30,60,120,300,600),
@@ -1469,7 +1486,7 @@ const struct settings_list settings[] = {
1469 LANG_SET_BOOL_YES, LANG_SET_BOOL_NO, NULL), 1486 LANG_SET_BOOL_YES, LANG_SET_BOOL_NO, NULL),
1470 1487
1471#ifdef HAVE_TAGCACHE 1488#ifdef HAVE_TAGCACHE
1472#if CONFIG_CODEC == SWCODEC 1489#if CONFIG_CODEC == SWCODEC
1473 BOOL_SETTING(0, autoresume_enable, LANG_AUTORESUME, false, 1490 BOOL_SETTING(0, autoresume_enable, LANG_AUTORESUME, false,
1474 "autoresume enable", off_on, 1491 "autoresume enable", off_on,
1475 LANG_SET_BOOL_YES, LANG_SET_BOOL_NO, NULL), 1492 LANG_SET_BOOL_YES, LANG_SET_BOOL_NO, NULL),
@@ -1482,7 +1499,7 @@ const struct settings_list settings[] = {
1482 ID2P(LANG_AUTORESUME_CUSTOM)), 1499 ID2P(LANG_AUTORESUME_CUSTOM)),
1483 TEXT_SETTING(0, autoresume_paths, "autoresume next track paths", 1500 TEXT_SETTING(0, autoresume_paths, "autoresume next track paths",
1484 "/podcast:/podcasts", NULL, NULL), 1501 "/podcast:/podcasts", NULL, NULL),
1485#endif 1502#endif
1486 1503
1487 OFFON_SETTING(0, runtimedb, LANG_RUNTIMEDB_ACTIVE, false, 1504 OFFON_SETTING(0, runtimedb, LANG_RUNTIMEDB_ACTIVE, false,
1488 "gather runtime data", NULL), 1505 "gather runtime data", NULL),
@@ -1741,11 +1758,11 @@ const struct settings_list settings[] = {
1741 CHOICE_SETTING(F_SOUNDSETTING|F_NO_WRAP, compressor_settings.knee, 1758 CHOICE_SETTING(F_SOUNDSETTING|F_NO_WRAP, compressor_settings.knee,
1742 LANG_COMPRESSOR_KNEE, 1, "compressor knee", 1759 LANG_COMPRESSOR_KNEE, 1, "compressor knee",
1743 "hard knee,soft knee", compressor_set, 2, 1760 "hard knee,soft knee", compressor_set, 2,
1744 ID2P(LANG_COMPRESSOR_HARD_KNEE), ID2P(LANG_COMPRESSOR_SOFT_KNEE)), 1761 ID2P(LANG_COMPRESSOR_HARD_KNEE), ID2P(LANG_COMPRESSOR_SOFT_KNEE)),
1745 INT_SETTING_NOWRAP(F_SOUNDSETTING, compressor_settings.attack_time, 1762 INT_SETTING_NOWRAP(F_SOUNDSETTING, compressor_settings.attack_time,
1746 LANG_COMPRESSOR_ATTACK, 5, 1763 LANG_COMPRESSOR_ATTACK, 5,
1747 "compressor attack time", UNIT_MS, 0, 30, 1764 "compressor attack time", UNIT_MS, 0, 30,
1748 5, NULL, NULL, compressor_set), 1765 5, NULL, NULL, compressor_set),
1749 INT_SETTING_NOWRAP(F_SOUNDSETTING, compressor_settings.release_time, 1766 INT_SETTING_NOWRAP(F_SOUNDSETTING, compressor_settings.release_time,
1750 LANG_COMPRESSOR_RELEASE, 500, 1767 LANG_COMPRESSOR_RELEASE, 500,
1751 "compressor release time", UNIT_MS, 100, 1000, 1768 "compressor release time", UNIT_MS, 100, 1000,
@@ -1933,38 +1950,38 @@ const struct settings_list settings[] = {
1933 UNIT_SEC, formatter_unit_0_is_skip_track, 1950 UNIT_SEC, formatter_unit_0_is_skip_track,
1934 getlang_unit_0_is_skip_track, NULL, 1951 getlang_unit_0_is_skip_track, NULL,
1935 19, -1,0,1,2,3,5,7,10,15,20,30,45,60,90,120,180,300,600,900), 1952 19, -1,0,1,2,3,5,7,10,15,20,30,45,60,90,120,180,300,600,900),
1936 CHOICE_SETTING(0, start_in_screen, LANG_START_SCREEN, 1, 1953 CHOICE_SETTING(0, start_in_screen, LANG_START_SCREEN, 1,
1937 "start in screen", "previous,root,files," 1954 "start in screen", "previous,root,files,"
1938#ifdef HAVE_TAGCACHE 1955#ifdef HAVE_TAGCACHE
1939#define START_DB_COUNT 1 1956#define START_DB_COUNT 1
1940 "db," 1957 "db,"
1941#else 1958#else
1942#define START_DB_COUNT 0 1959#define START_DB_COUNT 0
1943#endif 1960#endif
1944 "wps,menu," 1961 "wps,menu,"
1945#ifdef HAVE_RECORDING 1962#ifdef HAVE_RECORDING
1946#define START_REC_COUNT 1 1963#define START_REC_COUNT 1
1947 "recording," 1964 "recording,"
1948#else 1965#else
1949#define START_REC_COUNT 0 1966#define START_REC_COUNT 0
1950#endif 1967#endif
1951#if CONFIG_TUNER 1968#if CONFIG_TUNER
1952#define START_TUNER_COUNT 1 1969#define START_TUNER_COUNT 1
1953 "radio," 1970 "radio,"
1954#else 1971#else
1955#define START_TUNER_COUNT 0 1972#define START_TUNER_COUNT 0
1956#endif 1973#endif
1957 "bookmarks" 1974 "bookmarks"
1958#ifdef HAVE_PICTUREFLOW_INTEGRATION 1975#ifdef HAVE_PICTUREFLOW_INTEGRATION
1959#define START_PF_COUNT 1 1976#define START_PF_COUNT 1
1960 ",pictureflow" 1977 ",pictureflow"
1961#else 1978#else
1962#define START_PF_COUNT 0 1979#define START_PF_COUNT 0
1963#endif 1980#endif
1964 , NULL, 1981 , NULL,
1965 (6 + START_DB_COUNT + START_REC_COUNT + START_TUNER_COUNT + START_PF_COUNT), 1982 (6 + START_DB_COUNT + START_REC_COUNT + START_TUNER_COUNT + START_PF_COUNT),
1966 ID2P(LANG_PREVIOUS_SCREEN), ID2P(LANG_MAIN_MENU), 1983 ID2P(LANG_PREVIOUS_SCREEN), ID2P(LANG_MAIN_MENU),
1967 ID2P(LANG_DIR_BROWSER), 1984 ID2P(LANG_DIR_BROWSER),
1968#ifdef HAVE_TAGCACHE 1985#ifdef HAVE_TAGCACHE
1969 ID2P(LANG_TAGCACHE), 1986 ID2P(LANG_TAGCACHE),
1970#endif 1987#endif
@@ -2025,7 +2042,7 @@ const struct settings_list settings[] = {
2025 2, "list_accel_start_delay", UNIT_SEC, 0, 10, 1, 2042 2, "list_accel_start_delay", UNIT_SEC, 0, 10, 1,
2026 formatter_unit_0_is_off, getlang_unit_0_is_off, NULL), 2043 formatter_unit_0_is_off, getlang_unit_0_is_off, NULL),
2027 INT_SETTING(0, list_accel_wait, LANG_LISTACCEL_ACCEL_SPEED, 2044 INT_SETTING(0, list_accel_wait, LANG_LISTACCEL_ACCEL_SPEED,
2028 3, "list_accel_wait", UNIT_SEC, 1, 10, 1, 2045 3, "list_accel_wait", UNIT_SEC, 1, 10, 1,
2029 scanaccel_formatter, getlang_unit_0_is_off, NULL), 2046 scanaccel_formatter, getlang_unit_0_is_off, NULL),
2030#endif /* HAVE_WHEEL_ACCELERATION */ 2047#endif /* HAVE_WHEEL_ACCELERATION */
2031#if CONFIG_CODEC == SWCODEC 2048#if CONFIG_CODEC == SWCODEC
@@ -2108,7 +2125,7 @@ const struct settings_list settings[] = {
2108 CHOICE_SETTING(0, touch_mode, LANG_TOUCHSCREEN_MODE, DEFAULT_TOUCHSCREEN_MODE, 2125 CHOICE_SETTING(0, touch_mode, LANG_TOUCHSCREEN_MODE, DEFAULT_TOUCHSCREEN_MODE,
2109 "touchscreen mode", "point,grid", NULL, 2, 2126 "touchscreen mode", "point,grid", NULL, 2,
2110 ID2P(LANG_TOUCHSCREEN_POINT), ID2P(LANG_TOUCHSCREEN_GRID)), 2127 ID2P(LANG_TOUCHSCREEN_POINT), ID2P(LANG_TOUCHSCREEN_GRID)),
2111 CUSTOM_SETTING(0, ts_calibration_data, -1, 2128 CUSTOM_SETTING(0, ts_calibration_data, -1,
2112 &default_calibration_parameters, "touchscreen calibration", 2129 &default_calibration_parameters, "touchscreen calibration",
2113 tsc_load_from_cfg, tsc_write_to_cfg, 2130 tsc_load_from_cfg, tsc_write_to_cfg,
2114 tsc_is_changed, tsc_set_default), 2131 tsc_is_changed, tsc_set_default),
@@ -2165,21 +2182,21 @@ const struct settings_list settings[] = {
2165 TABLE_SETTING(F_ALLOW_ARBITRARY_VALS, hotkey_wps, 2182 TABLE_SETTING(F_ALLOW_ARBITRARY_VALS, hotkey_wps,
2166 LANG_HOTKEY_WPS, HOTKEY_VIEW_PLAYLIST, "hotkey wps", 2183 LANG_HOTKEY_WPS, HOTKEY_VIEW_PLAYLIST, "hotkey wps",
2167 "off,view playlist,show track info,pitchscreen,open with,delete" 2184 "off,view playlist,show track info,pitchscreen,open with,delete"
2168#ifdef HAVE_PICTUREFLOW_INTEGRATION 2185#ifdef HAVE_PICTUREFLOW_INTEGRATION
2169 ",pictureflow" 2186 ",pictureflow"
2170#endif 2187#endif
2171 ,UNIT_INT, hotkey_formatter, hotkey_getlang, NULL, 2188 ,UNIT_INT, hotkey_formatter, hotkey_getlang, NULL,
2172#ifdef HAVE_PICTUREFLOW_INTEGRATION 2189#ifdef HAVE_PICTUREFLOW_INTEGRATION
2173 7, 2190 7,
2174#else 2191#else
2175 6, 2192 6,
2176#endif 2193#endif
2177 HOTKEY_OFF, 2194 HOTKEY_OFF,
2178 HOTKEY_VIEW_PLAYLIST, HOTKEY_SHOW_TRACK_INFO, HOTKEY_PITCHSCREEN, 2195 HOTKEY_VIEW_PLAYLIST, HOTKEY_SHOW_TRACK_INFO, HOTKEY_PITCHSCREEN,
2179 HOTKEY_OPEN_WITH, HOTKEY_DELETE 2196 HOTKEY_OPEN_WITH, HOTKEY_DELETE
2180#ifdef HAVE_PICTUREFLOW_INTEGRATION 2197#ifdef HAVE_PICTUREFLOW_INTEGRATION
2181 , HOTKEY_PICTUREFLOW 2198 , HOTKEY_PICTUREFLOW
2182#endif 2199#endif
2183 ), 2200 ),
2184 TABLE_SETTING(F_ALLOW_ARBITRARY_VALS, hotkey_tree, 2201 TABLE_SETTING(F_ALLOW_ARBITRARY_VALS, hotkey_tree,
2185 LANG_HOTKEY_FILE_BROWSER, HOTKEY_OFF, "hotkey tree", 2202 LANG_HOTKEY_FILE_BROWSER, HOTKEY_OFF, "hotkey tree",