summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorroman.artiukhin <bahusdrive@gmail.com>2023-08-21 00:55:03 +0300
committerWilliam Wilgus <me.theuser@yahoo.com>2023-09-09 22:00:14 -0400
commit7bbaf74c5cfc93419f4c3b16171ad23fe34975be (patch)
treed493bffbf5ed1ece4221311cde28b73d4ff30014
parent6b0e3fe775f6bdd52f3442447832271bbf613497 (diff)
downloadrockbox-7bbaf74c5c.tar.gz
rockbox-7bbaf74c5c.zip
Ability to control backlight for soft lock action
See Settings -> General Settings -> Display -> LCD Settings -> Backlight on Lock Change-Id: I201cb1c2907bb6842bf5d0b7a657e9db27aa905a
-rw-r--r--apps/lang/english.lang6
-rw-r--r--apps/menus/display_menu.c6
-rw-r--r--apps/settings.c2
-rw-r--r--apps/settings.h2
-rw-r--r--apps/settings_list.c12
-rw-r--r--firmware/backlight.c13
-rw-r--r--firmware/export/backlight.h2
7 files changed, 20 insertions, 23 deletions
diff --git a/apps/lang/english.lang b/apps/lang/english.lang
index 922fa0340c..3773d138d4 100644
--- a/apps/lang/english.lang
+++ b/apps/lang/english.lang
@@ -2347,15 +2347,15 @@
desc: in lcd settings
user: core
<source>
- *: none
+ *: "Backlight on Lock"
hold_button: "Backlight on Hold"
</source>
<dest>
- *: none
+ *: "Backlight on Lock"
hold_button: "Backlight on Hold"
</dest>
<voice>
- *: none
+ *: "Backlight on Lock"
hold_button: "Backlight on hold"
</voice>
</phrase>
diff --git a/apps/menus/display_menu.c b/apps/menus/display_menu.c
index e70c4ee98a..f43ae5691f 100644
--- a/apps/menus/display_menu.c
+++ b/apps/menus/display_menu.c
@@ -149,10 +149,10 @@ MENUITEM_SETTING(backlight_timeout, &global_settings.backlight_timeout, NULL);
MENUITEM_SETTING(backlight_timeout_plugged,
&global_settings.backlight_timeout_plugged, NULL);
#endif
-#ifdef HAS_BUTTON_HOLD
+
MENUITEM_SETTING(backlight_on_button_hold,
&global_settings.backlight_on_button_hold, NULL);
-#endif
+
MENUITEM_SETTING(caption_backlight, &global_settings.caption_backlight, NULL);
#if defined(HAVE_BACKLIGHT_FADING_INT_SETTING) \
|| defined(HAVE_BACKLIGHT_FADING_BOOL_SETTING)
@@ -200,9 +200,7 @@ MAKE_MENU(lcd_settings,ID2P(LANG_LCD_MENU),
# if CONFIG_CHARGING
,&backlight_timeout_plugged
# endif
-# ifdef HAS_BUTTON_HOLD
,&backlight_on_button_hold
-# endif
,&caption_backlight
#if defined(HAVE_BACKLIGHT_FADING_INT_SETTING) \
|| defined(HAVE_BACKLIGHT_FADING_BOOL_SETTING)
diff --git a/apps/settings.c b/apps/settings.c
index 0f060a41e6..619c5062ec 100644
--- a/apps/settings.c
+++ b/apps/settings.c
@@ -1051,9 +1051,7 @@ void settings_apply(bool read_disk)
#ifdef HAVE_REMOTE_LCD
set_remote_backlight_filter_keypress(global_settings.remote_bl_filter_first_keypress);
#endif
-#ifdef HAS_BUTTON_HOLD
backlight_set_on_button_hold(global_settings.backlight_on_button_hold);
-#endif
#ifdef HAVE_LCD_SLEEP_SETTING
lcd_set_sleep_after_backlight_off(global_settings.lcd_sleep_after_backlight_off);
diff --git a/apps/settings.h b/apps/settings.h
index ca10c45d5f..66945e181b 100644
--- a/apps/settings.h
+++ b/apps/settings.h
@@ -691,10 +691,8 @@ struct user_settings
#ifdef HAVE_BACKLIGHT
bool bl_selective_actions; /* backlight disable on some actions */
int bl_selective_actions_mask;/* mask of actions that will not enable backlight */
-#ifdef HAS_BUTTON_HOLD
int backlight_on_button_hold; /* what to do with backlight when hold
switch is on */
-#endif
#ifdef HAVE_LCD_SLEEP_SETTING
int lcd_sleep_after_backlight_off; /* when to put lcd to sleep after backlight
has turned off: -1=never, 0=always,
diff --git a/apps/settings_list.c b/apps/settings_list.c
index 59719f2e08..b24b590766 100644
--- a/apps/settings_list.c
+++ b/apps/settings_list.c
@@ -1846,12 +1846,16 @@ const struct settings_list settings[] = {
ID2P(LANG_IN_SUBMENU)),
#ifdef HAVE_BACKLIGHT
-#ifdef HAS_BUTTON_HOLD
- CHOICE_SETTING(0, backlight_on_button_hold, LANG_BACKLIGHT_ON_BUTTON_HOLD,
- 1, "backlight on button hold", "normal,off,on",
+ CHOICE_SETTING(0, backlight_on_button_hold,
+ LANG_BACKLIGHT_ON_BUTTON_HOLD,
+#ifdef HAS_HOLD_BUTTON
+ 1,
+#else
+ 0,
+#endif
+ "backlight on button hold", "normal,off,on",
backlight_set_on_button_hold, 3,
ID2P(LANG_NORMAL), ID2P(LANG_OFF), ID2P(LANG_ON)),
-#endif
#ifdef HAVE_LCD_SLEEP_SETTING
TABLE_SETTING_LIST(F_TIME_SETTING | F_ALLOW_ARBITRARY_VALS,
diff --git a/firmware/backlight.c b/firmware/backlight.c
index 9c7a16808c..1466a58987 100644
--- a/firmware/backlight.c
+++ b/firmware/backlight.c
@@ -39,6 +39,7 @@
#include "backlight.h"
#include "lcd.h"
#include "screendump.h"
+#include "action.h"
#ifdef HAVE_REMOTE_LCD
#include "lcd-remote.h"
@@ -120,9 +121,7 @@ static int backlight_timeout_normal = 5*HZ;
#if CONFIG_CHARGING
static int backlight_timeout_plugged = 5*HZ;
#endif
-#ifdef HAS_BUTTON_HOLD
static int backlight_on_button_hold = 0;
-#endif
static void backlight_handle_timeout(void);
#ifdef HAVE_BUTTON_LIGHT
@@ -846,18 +845,18 @@ bool is_backlight_on(bool ignore_always_off)
/* return value in ticks; 0 means always on, <0 means always off */
int backlight_get_current_timeout(void)
{
-#ifdef HAS_BUTTON_HOLD
if ((backlight_on_button_hold != 0)
-#ifdef HAVE_REMOTE_LCD_AS_MAIN
+#if defined(HAVE_REMOTE_LCD_AS_MAIN) && defined(HAS_REMOTE_BUTTON_HOLD)
&& remote_button_hold()
-#else
+#elifdef HAS_BUTTON_HOLD
&& button_hold()
+#else
+ && is_keys_locked()
#endif
)
return (backlight_on_button_hold == 2) ? 0 : -1;
/* always on or always off */
else
-#endif
#if CONFIG_CHARGING
if (power_input_present())
return backlight_timeout_plugged;
@@ -893,6 +892,7 @@ void backlight_hold_changed(bool hold_button)
queue_post(&backlight_queue, BACKLIGHT_ON, 0);
}
}
+#endif /* HAS_BUTTON_HOLD */
void backlight_set_on_button_hold(int index)
{
@@ -903,7 +903,6 @@ void backlight_set_on_button_hold(int index)
backlight_on_button_hold = index;
queue_post(&backlight_queue, BACKLIGHT_TMO_CHANGED, 0);
}
-#endif /* HAS_BUTTON_HOLD */
#ifdef HAVE_LCD_SLEEP_SETTING
void lcd_set_sleep_after_backlight_off(int timeout_seconds)
diff --git a/firmware/export/backlight.h b/firmware/export/backlight.h
index f4ce5d8568..c94be264ca 100644
--- a/firmware/export/backlight.h
+++ b/firmware/export/backlight.h
@@ -53,8 +53,8 @@ void backlight_set_timeout_plugged(int value);
#ifdef HAS_BUTTON_HOLD
void backlight_hold_changed(bool hold_button);
-void backlight_set_on_button_hold(int index);
#endif
+void backlight_set_on_button_hold(int index);
#if defined(HAVE_LCD_SLEEP) && defined(HAVE_LCD_SLEEP_SETTING)
void lcd_set_sleep_after_backlight_off(int timeout_seconds);