summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMoshe Piekarski <mendelmunkis@protonmail.com>2018-04-03 12:45:22 -0500
committerWilliam Wilgus <me.theuser@yahoo.com>2018-07-04 06:25:45 +0200
commitab1b67f37b4d415ba096aed3bc5d9700e0a7923f (patch)
tree952e58823e37c7ea99a4f24b0de29bb2105bea6c
parent8742f6f0e2cf7c03716d4486f4fad3b57b98d8d3 (diff)
downloadrockbox-ab1b67f37b4d415ba096aed3bc5d9700e0a7923f.tar.gz
rockbox-ab1b67f37b4d415ba096aed3bc5d9700e0a7923f.zip
Textviewer night mode
Add a night mode to textviewer. Change-Id: I6ddcd9c3c87473cbbffaeacf63a21ef11c0e5f44
-rw-r--r--apps/plugins/text_viewer/tv_display.c19
-rw-r--r--apps/plugins/text_viewer/tv_display.h3
-rw-r--r--apps/plugins/text_viewer/tv_menu.c17
-rw-r--r--apps/plugins/text_viewer/tv_preferences.c4
-rw-r--r--apps/plugins/text_viewer/tv_preferences.h2
-rw-r--r--apps/plugins/text_viewer/tv_settings.c13
6 files changed, 52 insertions, 6 deletions
diff --git a/apps/plugins/text_viewer/tv_display.c b/apps/plugins/text_viewer/tv_display.c
index 3376ccc548..1f8499bed2 100644
--- a/apps/plugins/text_viewer/tv_display.c
+++ b/apps/plugins/text_viewer/tv_display.c
@@ -69,6 +69,7 @@
69#define TV_SCROLLBAR_WIDTH rb->global_settings->scrollbar_width 69#define TV_SCROLLBAR_WIDTH rb->global_settings->scrollbar_width
70#define TV_SCROLLBAR_HEIGHT 4 70#define TV_SCROLLBAR_HEIGHT 4
71 71
72
72#ifndef HAVE_LCD_BITMAP 73#ifndef HAVE_LCD_BITMAP
73#define TV_BOOKMARK_ICON 0xe101 74#define TV_BOOKMARK_ICON 0xe101
74#endif 75#endif
@@ -220,6 +221,7 @@ void tv_draw_text(int row, const unsigned char *text, int offset)
220 } 221 }
221 222
222 display->set_viewport(&vp_text); 223 display->set_viewport(&vp_text);
224 tv_night_mode();
223#ifdef HAVE_LCD_BITMAP 225#ifdef HAVE_LCD_BITMAP
224 display->putsxy(xpos, row * row_height, text); 226 display->putsxy(xpos, row * row_height, text);
225#else 227#else
@@ -231,6 +233,7 @@ void tv_draw_text(int row, const unsigned char *text, int offset)
231void tv_start_display(void) 233void tv_start_display(void)
232{ 234{
233 display->set_viewport(&vp_info); 235 display->set_viewport(&vp_info);
236 tv_night_mode();
234#ifdef HAVE_LCD_BITMAP 237#ifdef HAVE_LCD_BITMAP
235 display->set_drawmode(DRMODE_SOLID); 238 display->set_drawmode(DRMODE_SOLID);
236#endif 239#endif
@@ -239,6 +242,7 @@ void tv_start_display(void)
239 rb->lcd_set_backdrop(NULL); 242 rb->lcd_set_backdrop(NULL);
240#endif 243#endif
241 display->clear_viewport(); 244 display->clear_viewport();
245
242} 246}
243 247
244void tv_end_display(void) 248void tv_end_display(void)
@@ -403,6 +407,21 @@ bool tv_init_display(unsigned char **buf, size_t *size)
403 return true; 407 return true;
404} 408}
405 409
410void tv_night_mode(void)
411{
412#ifdef HAVE_LCD_COLOR
413 if(preferences->night_mode)
414 {
415 rb->lcd_set_foreground(LCD_RGBPACK(0xBF,0xBF,0x00));
416 rb->lcd_set_background(LCD_RGBPACK(0x96,0x0D,0x00));
417 }else
418 {
419 rb->lcd_set_foreground(LCD_WHITE);
420 rb->lcd_set_background(LCD_BLACK);
421 }
422#endif
423}
424
406void tv_finalize_display(void) 425void tv_finalize_display(void)
407{ 426{
408#ifdef HAVE_LCD_BITMAP 427#ifdef HAVE_LCD_BITMAP
diff --git a/apps/plugins/text_viewer/tv_display.h b/apps/plugins/text_viewer/tv_display.h
index f6a3d19b78..9dfe17d900 100644
--- a/apps/plugins/text_viewer/tv_display.h
+++ b/apps/plugins/text_viewer/tv_display.h
@@ -103,6 +103,9 @@ void tv_start_display(void);
103/* end the display processing */ 103/* end the display processing */
104void tv_end_display(void); 104void tv_end_display(void);
105 105
106/*change color scheme*/
107void tv_night_mode(void);
108
106 109
107/* layout functions */ 110/* layout functions */
108 111
diff --git a/apps/plugins/text_viewer/tv_menu.c b/apps/plugins/text_viewer/tv_menu.c
index 9e796982d3..01fb052151 100644
--- a/apps/plugins/text_viewer/tv_menu.c
+++ b/apps/plugins/text_viewer/tv_menu.c
@@ -247,6 +247,13 @@ static bool tv_indent_spaces_setting(void)
247 &new_prefs.indent_spaces, NULL, 1, 0, 5, NULL); 247 &new_prefs.indent_spaces, NULL, 1, 0, 5, NULL);
248} 248}
249 249
250#ifdef HAVE_LCD_COLOR
251static bool tv_night_mode_setting(void)
252{
253 return rb->set_bool("Night Mode", &new_prefs.night_mode);
254}
255#endif
256
250MENUITEM_FUNCTION(encoding_item, 0, "Encoding", tv_encoding_setting, 257MENUITEM_FUNCTION(encoding_item, 0, "Encoding", tv_encoding_setting,
251 NULL, NULL, Icon_NOICON); 258 NULL, NULL, Icon_NOICON);
252MENUITEM_FUNCTION(word_wrap_item, 0, "Word Wrap", tv_word_wrap_setting, 259MENUITEM_FUNCTION(word_wrap_item, 0, "Word Wrap", tv_word_wrap_setting,
@@ -269,6 +276,10 @@ MENUITEM_FUNCTION(font_item, 0, "Font", tv_font_setting,
269#endif 276#endif
270MENUITEM_FUNCTION(indent_spaces_item, 0, "Indent Spaces", tv_indent_spaces_setting, 277MENUITEM_FUNCTION(indent_spaces_item, 0, "Indent Spaces", tv_indent_spaces_setting,
271 NULL, NULL, Icon_NOICON); 278 NULL, NULL, Icon_NOICON);
279#ifdef HAVE_LCD_COLOR
280MENUITEM_FUNCTION(night_mode_item, 0, "Night Mode", tv_night_mode_setting,
281 NULL, NULL, Icon_NOICON);
282#endif
272 283
273MAKE_MENU(option_menu, "Viewer Options", NULL, Icon_NOICON, 284MAKE_MENU(option_menu, "Viewer Options", NULL, Icon_NOICON,
274 &encoding_item, &word_wrap_item, &line_mode_item, &windows_item, 285 &encoding_item, &word_wrap_item, &line_mode_item, &windows_item,
@@ -276,7 +287,11 @@ MAKE_MENU(option_menu, "Viewer Options", NULL, Icon_NOICON,
276#ifdef HAVE_LCD_BITMAP 287#ifdef HAVE_LCD_BITMAP
277 &header_item, &footer_item, &font_item, &statusbar_item, 288 &header_item, &footer_item, &font_item, &statusbar_item,
278#endif 289#endif
279 &scroll_menu, &indent_spaces_item); 290 &scroll_menu, &indent_spaces_item
291#ifdef HAVE_LCD_COLOR
292 , &night_mode_item
293#endif
294 );
280 295
281static unsigned tv_options_menu(void) 296static unsigned tv_options_menu(void)
282{ 297{
diff --git a/apps/plugins/text_viewer/tv_preferences.c b/apps/plugins/text_viewer/tv_preferences.c
index 86719ae16b..54c21ba04d 100644
--- a/apps/plugins/text_viewer/tv_preferences.c
+++ b/apps/plugins/text_viewer/tv_preferences.c
@@ -49,6 +49,7 @@ static bool tv_notify_change_preferences(const struct tv_preferences *oldp)
49 * - font 49 * - font
50 * - autoscroll_speed 50 * - autoscroll_speed
51 * - narrow_mode 51 * - narrow_mode
52 * - night_mode
52 */ 53 */
53 if ((oldp == NULL) || 54 if ((oldp == NULL) ||
54 (oldp->word_mode != preferences->word_mode) || 55 (oldp->word_mode != preferences->word_mode) ||
@@ -120,7 +121,8 @@ void tv_set_default_preferences(struct tv_preferences *p)
120 p->footer_mode = false; 121 p->footer_mode = false;
121 p->statusbar = false; 122 p->statusbar = false;
122#endif 123#endif
123 p->autoscroll_speed = 1; 124 p->autoscroll_speed = 10;
125 p->night_mode = false;
124 p->narrow_mode = NM_PAGE; 126 p->narrow_mode = NM_PAGE;
125 p->indent_spaces = 2; 127 p->indent_spaces = 2;
126 /* Set codepage to system default */ 128 /* Set codepage to system default */
diff --git a/apps/plugins/text_viewer/tv_preferences.h b/apps/plugins/text_viewer/tv_preferences.h
index f3b2aebfa6..65d9521e15 100644
--- a/apps/plugins/text_viewer/tv_preferences.h
+++ b/apps/plugins/text_viewer/tv_preferences.h
@@ -93,6 +93,8 @@ struct tv_preferences {
93 93
94 bool statusbar; 94 bool statusbar;
95 95
96 bool night_mode;
97
96#ifdef HAVE_LCD_BITMAP 98#ifdef HAVE_LCD_BITMAP
97 unsigned char font_name[MAX_PATH]; 99 unsigned char font_name[MAX_PATH];
98 int font_id; 100 int font_id;
diff --git a/apps/plugins/text_viewer/tv_settings.c b/apps/plugins/text_viewer/tv_settings.c
index 895f162ebb..dfd47ec7a3 100644
--- a/apps/plugins/text_viewer/tv_settings.c
+++ b/apps/plugins/text_viewer/tv_settings.c
@@ -50,7 +50,8 @@
50 * narrow_mode 1 50 * narrow_mode 1
51 * indent_spaces 1 51 * indent_spaces 1
52 * statusbar 1 52 * statusbar 1
53 * (reserved) 11 53 * night_mode 1
54 * (reserved) 10
54 * font name MAX_PATH 55 * font name MAX_PATH
55 */ 56 */
56 57
@@ -58,7 +59,7 @@
58#define TV_GLOBAL_SETTINGS_FILE VIEWERS_DATA_DIR "/tv_global.dat" 59#define TV_GLOBAL_SETTINGS_FILE VIEWERS_DATA_DIR "/tv_global.dat"
59 60
60#define TV_GLOBAL_SETTINGS_HEADER "\x54\x56\x47\x53" /* "TVGS" */ 61#define TV_GLOBAL_SETTINGS_HEADER "\x54\x56\x47\x53" /* "TVGS" */
61#define TV_GLOBAL_SETTINGS_VERSION 0x38 62#define TV_GLOBAL_SETTINGS_VERSION 0x39
62#define TV_GLOBAL_SETTINGS_HEADER_SIZE 5 63#define TV_GLOBAL_SETTINGS_HEADER_SIZE 5
63#define TV_GLOBAL_SETTINGS_FIRST_VERSION 0x31 64#define TV_GLOBAL_SETTINGS_FIRST_VERSION 0x31
64 65
@@ -93,7 +94,8 @@
93 * narrow_mode 1 94 * narrow_mode 1
94 * indent_spaces 1 95 * indent_spaces 1
95 * statusbar 1 96 * statusbar 1
96 * (reserved) 11 97 * night_mode 1
98 * (reserved) 10
97 * font name MAX_PATH 99 * font name MAX_PATH
98 * bookmark count 1 100 * bookmark count 1
99 * [1st bookmark] 101 * [1st bookmark]
@@ -115,7 +117,7 @@
115#define TV_SETTINGS_TMP_FILE VIEWERS_DATA_DIR "/tv_file.tmp" 117#define TV_SETTINGS_TMP_FILE VIEWERS_DATA_DIR "/tv_file.tmp"
116 118
117#define TV_SETTINGS_HEADER "\x54\x56\x53" /* "TVS" */ 119#define TV_SETTINGS_HEADER "\x54\x56\x53" /* "TVS" */
118#define TV_SETTINGS_VERSION 0x39 120#define TV_SETTINGS_VERSION 0x3A
119#define TV_SETTINGS_HEADER_SIZE 4 121#define TV_SETTINGS_HEADER_SIZE 4
120#define TV_SETTINGS_FIRST_VERSION 0x32 122#define TV_SETTINGS_FIRST_VERSION 0x32
121 123
@@ -214,6 +216,8 @@ static bool tv_read_preferences(int pfd, int version, struct tv_preferences *pre
214 216
215 if (version > 6) 217 if (version > 6)
216 prefs->statusbar = (*p++ != 0); 218 prefs->statusbar = (*p++ != 0);
219 if (version > 6)
220 prefs->night_mode = (*p++ != 0);
217 221
218#ifdef HAVE_LCD_BITMAP 222#ifdef HAVE_LCD_BITMAP
219 rb->strlcpy(prefs->font_name, buf + read_size - MAX_PATH, MAX_PATH); 223 rb->strlcpy(prefs->font_name, buf + read_size - MAX_PATH, MAX_PATH);
@@ -247,6 +251,7 @@ static void tv_serialize_preferences(unsigned char *buf, const struct tv_prefere
247 *p++ = prefs->narrow_mode; 251 *p++ = prefs->narrow_mode;
248 *p++ = prefs->indent_spaces; 252 *p++ = prefs->indent_spaces;
249 *p++ = prefs->statusbar; 253 *p++ = prefs->statusbar;
254 *p++ = prefs->night_mode;
250 255
251#ifdef HAVE_LCD_BITMAP 256#ifdef HAVE_LCD_BITMAP
252 rb->strlcpy(buf + 28, prefs->font_name, MAX_PATH); 257 rb->strlcpy(buf + 28, prefs->font_name, MAX_PATH);