summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Sauro <olsroparadise@proton.me>2024-08-28 17:44:16 +0200
committerWilliam Wilgus <wilgus.william@gmail.com>2024-08-28 20:24:44 -0400
commitf69d9c8a9508871c93396a4261bcc41a8a3cddc7 (patch)
tree8c8968007ea27e847e39edfd1f4459bc255bc3fe
parentf6b9e923dc6b2601e9e6190fd887d5b5277b2b59 (diff)
downloadrockbox-f69d9c8a9508871c93396a4261bcc41a8a3cddc7.tar.gz
rockbox-f69d9c8a9508871c93396a4261bcc41a8a3cddc7.zip
Settings: Add a new option to prevent text scrollings in the home screen
This option is especially useful for theme creators that want to create themes with lockscreens. When text is scrolling, it is breaking the lockscreen so setting this option to true prevent this. Text will continue to scroll normally in all other contexts. Change-Id: I194f6837217881d50f567a775b81d0b422caf35c
-rw-r--r--apps/lang/english.lang14
-rw-r--r--apps/lang/francais.lang14
-rw-r--r--apps/menus/display_menu.c5
-rw-r--r--apps/settings.h1
-rw-r--r--apps/settings_list.c2
-rw-r--r--firmware/drivers/lcd-scroll.c10
6 files changed, 44 insertions, 2 deletions
diff --git a/apps/lang/english.lang b/apps/lang/english.lang
index c41c819a7b..b0c7aed8f7 100644
--- a/apps/lang/english.lang
+++ b/apps/lang/english.lang
@@ -16498,6 +16498,20 @@
16498 </voice> 16498 </voice>
16499</phrase> 16499</phrase>
16500<phrase> 16500<phrase>
16501 id: LANG_DISABLE_MAINMENU_SCROLLING
16502 desc: Disable main menu scrolling
16503 user: core
16504 <source>
16505 *: "Disable main menu scrolling"
16506 </source>
16507 <dest>
16508 *: "Disable main menu scrolling"
16509 </dest>
16510 <voice>
16511 *: "Disable main menu scrolling"
16512 </voice>
16513</phrase>
16514<phrase>
16501 id: LANG_REMAINING 16515 id: LANG_REMAINING
16502 desc: Playing Time 16516 desc: Playing Time
16503 user: core 16517 user: core
diff --git a/apps/lang/francais.lang b/apps/lang/francais.lang
index 55b7ae9f63..ce907372b0 100644
--- a/apps/lang/francais.lang
+++ b/apps/lang/francais.lang
@@ -15080,3 +15080,17 @@
15080 *: "Français" 15080 *: "Français"
15081 </voice> 15081 </voice>
15082</phrase> 15082</phrase>
15083<phrase>
15084 id: LANG_DISABLE_MAINMENU_SCROLLING
15085 desc: Disable main menu scrolling
15086 user: core
15087 <source>
15088 *: "Disable main menu scrolling"
15089 </source>
15090 <dest>
15091 *: "Désactiver défilement dans le menu principal"
15092 </dest>
15093 <voice>
15094 *: "Désactiver défilement dans le menu principal"
15095 </voice>
15096</phrase>
diff --git a/apps/menus/display_menu.c b/apps/menus/display_menu.c
index c5c5e6d908..2ce566a888 100644
--- a/apps/menus/display_menu.c
+++ b/apps/menus/display_menu.c
@@ -331,6 +331,7 @@ MENUITEM_SETTING(list_accel_start_delay,
331MENUITEM_SETTING(list_accel_wait, &global_settings.list_accel_wait, NULL); 331MENUITEM_SETTING(list_accel_wait, &global_settings.list_accel_wait, NULL);
332#endif /* HAVE_WHEEL_ACCELERATION */ 332#endif /* HAVE_WHEEL_ACCELERATION */
333MENUITEM_SETTING(offset_out_of_view, &global_settings.offset_out_of_view, NULL); 333MENUITEM_SETTING(offset_out_of_view, &global_settings.offset_out_of_view, NULL);
334MENUITEM_SETTING(disable_mainmenu_scrolling, &global_settings.disable_mainmenu_scrolling, NULL);
334MENUITEM_SETTING(screen_scroll_step, &global_settings.screen_scroll_step, NULL); 335MENUITEM_SETTING(screen_scroll_step, &global_settings.screen_scroll_step, NULL);
335MENUITEM_SETTING(scroll_paginated, &global_settings.scroll_paginated, NULL); 336MENUITEM_SETTING(scroll_paginated, &global_settings.scroll_paginated, NULL);
336MENUITEM_SETTING(list_wraparound, &global_settings.list_wraparound, NULL); 337MENUITEM_SETTING(list_wraparound, &global_settings.list_wraparound, NULL);
@@ -343,7 +344,9 @@ MAKE_MENU(scroll_settings_menu, ID2P(LANG_SCROLL_MENU), 0, Icon_NOICON,
343#ifdef HAVE_REMOTE_LCD 344#ifdef HAVE_REMOTE_LCD
344 &remote_scroll_sets, 345 &remote_scroll_sets,
345#endif 346#endif
346 &offset_out_of_view, &screen_scroll_step, 347 &offset_out_of_view,
348 &disable_mainmenu_scrolling,
349 &screen_scroll_step,
347 &scroll_paginated, 350 &scroll_paginated,
348 &list_wraparound, 351 &list_wraparound,
349 &list_order, 352 &list_order,
diff --git a/apps/settings.h b/apps/settings.h
index 056f40df6a..1343538b0b 100644
--- a/apps/settings.h
+++ b/apps/settings.h
@@ -686,6 +686,7 @@ struct user_settings
686 int screen_scroll_step; 686 int screen_scroll_step;
687 int show_path_in_browser; /* 0=off, 1=current directory, 2=full path */ 687 int show_path_in_browser; /* 0=off, 1=current directory, 2=full path */
688 bool offset_out_of_view; 688 bool offset_out_of_view;
689 bool disable_mainmenu_scrolling;
689 unsigned char icon_file[MAX_FILENAME+1]; 690 unsigned char icon_file[MAX_FILENAME+1];
690 unsigned char viewers_icon_file[MAX_FILENAME+1]; 691 unsigned char viewers_icon_file[MAX_FILENAME+1];
691 unsigned char font_file[MAX_FILENAME+1]; /* last font */ 692 unsigned char font_file[MAX_FILENAME+1]; /* last font */
diff --git a/apps/settings_list.c b/apps/settings_list.c
index 98e8dec5a8..8ec434bd9b 100644
--- a/apps/settings_list.c
+++ b/apps/settings_list.c
@@ -1319,6 +1319,8 @@ const struct settings_list settings[] = {
1319#endif 1319#endif
1320 OFFON_SETTING(0, offset_out_of_view, LANG_SCREEN_SCROLL_VIEW, 1320 OFFON_SETTING(0, offset_out_of_view, LANG_SCREEN_SCROLL_VIEW,
1321 false, "Screen Scrolls Out Of View", NULL), 1321 false, "Screen Scrolls Out Of View", NULL),
1322 OFFON_SETTING(0, disable_mainmenu_scrolling, LANG_DISABLE_MAINMENU_SCROLLING,
1323 false, "Disable main menu scrolling", NULL),
1322 INT_SETTING(F_PADTITLE, scroll_step, LANG_SCROLL_STEP, 6, "scroll step", 1324 INT_SETTING(F_PADTITLE, scroll_step, LANG_SCROLL_STEP, 6, "scroll step",
1323 UNIT_PIXEL, 1, LCD_WIDTH, 1, NULL, NULL, lcd_scroll_step), 1325 UNIT_PIXEL, 1, LCD_WIDTH, 1, NULL, NULL, lcd_scroll_step),
1324 INT_SETTING(F_PADTITLE, screen_scroll_step, LANG_SCREEN_SCROLL_STEP, 16, 1326 INT_SETTING(F_PADTITLE, screen_scroll_step, LANG_SCREEN_SCROLL_STEP, 16,
diff --git a/firmware/drivers/lcd-scroll.c b/firmware/drivers/lcd-scroll.c
index 895cf98cba..8ab91ef642 100644
--- a/firmware/drivers/lcd-scroll.c
+++ b/firmware/drivers/lcd-scroll.c
@@ -24,6 +24,8 @@
24/* This file is meant to be #included by scroll_engine.c (twice if a remote 24/* This file is meant to be #included by scroll_engine.c (twice if a remote
25 * is present) */ 25 * is present) */
26 26
27#include "misc.h"
28#include "settings.h"
27#ifndef LCDFN /* Not compiling for remote - define macros for main LCD. */ 29#ifndef LCDFN /* Not compiling for remote - define macros for main LCD. */
28#define LCDFN(fn) lcd_ ## fn 30#define LCDFN(fn) lcd_ ## fn
29#define LCDM(ma) LCD_ ## ma 31#define LCDM(ma) LCD_ ## ma
@@ -195,8 +197,14 @@ static void LCDFN(scroll_worker)(void)
195 s = &si->scroll[index]; 197 s = &si->scroll[index];
196 198
197 /* check pause */ 199 /* check pause */
198 if (TIME_BEFORE(current_tick, s->start_tick)) 200 if (TIME_BEFORE(current_tick, s->start_tick)) {
199 continue; 201 continue;
202 }
203
204 if (global_settings.disable_mainmenu_scrolling && get_current_activity() == ACTIVITY_MAINMENU) {
205 // No scrolling on the main menu if disabled (to not break themes with lockscreens)
206 continue;
207 }
200 208
201 s->start_tick = current_tick; 209 s->start_tick = current_tick;
202 210