summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/plugins/viewer.c29
1 files changed, 27 insertions, 2 deletions
diff --git a/apps/plugins/viewer.c b/apps/plugins/viewer.c
index b9615bb475..929a2c0ee1 100644
--- a/apps/plugins/viewer.c
+++ b/apps/plugins/viewer.c
@@ -36,6 +36,7 @@ PLUGIN_HEADER
36 * word_mode 1 36 * word_mode 1
37 * line_mode 1 37 * line_mode 1
38 * view_mode 1 38 * view_mode 1
39 * alignment 1
39 * encoding 1 40 * encoding 1
40 * scrollbar_mode 1 41 * scrollbar_mode 1
41 * need_scrollbar 1 42 * need_scrollbar 1
@@ -71,6 +72,7 @@ PLUGIN_HEADER
71 * word_mode 1 72 * word_mode 1
72 * line_mode 1 73 * line_mode 1
73 * view_mode 1 74 * view_mode 1
75 * alignment 1
74 * encoding 1 76 * encoding 1
75 * scrollbar_mode 1 77 * scrollbar_mode 1
76 * need_scrollbar 1 78 * need_scrollbar 1
@@ -542,6 +544,11 @@ struct preferences {
542 WIDE, 544 WIDE,
543 } view_mode; 545 } view_mode;
544 546
547 enum {
548 LEFT=0,
549 RIGHT,
550 } alignment;
551
545 enum codepages encoding; 552 enum codepages encoding;
546 553
547 enum { 554 enum {
@@ -1428,6 +1435,7 @@ static void viewer_draw(int col)
1428 bool bflag = (viewer_find_bookmark(dpage, dline) >= 0); 1435 bool bflag = (viewer_find_bookmark(dpage, dline) >= 0);
1429#ifdef HAVE_LCD_BITMAP 1436#ifdef HAVE_LCD_BITMAP
1430 int dy = i * pf->height + header_height; 1437 int dy = i * pf->height + header_height;
1438 int dx = (prefs.alignment == LEFT) ? left_col : LCD_WIDTH - line_width;
1431#endif 1439#endif
1432 if (bflag) 1440 if (bflag)
1433#ifdef HAVE_LCD_BITMAP 1441#ifdef HAVE_LCD_BITMAP
@@ -1436,7 +1444,7 @@ static void viewer_draw(int col)
1436 rb->lcd_fillrect(left_col, dy, LCD_WIDTH, pf->height); 1444 rb->lcd_fillrect(left_col, dy, LCD_WIDTH, pf->height);
1437 rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); 1445 rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID);
1438 } 1446 }
1439 rb->lcd_putsxy(left_col, dy, utf8_buffer); 1447 rb->lcd_putsxy(dx, dy, utf8_buffer);
1440 rb->lcd_set_drawmode(DRMODE_SOLID); 1448 rb->lcd_set_drawmode(DRMODE_SOLID);
1441#else 1449#else
1442 { 1450 {
@@ -1806,6 +1814,7 @@ static void viewer_default_preferences(void)
1806 prefs.word_mode = WRAP; 1814 prefs.word_mode = WRAP;
1807 prefs.line_mode = NORMAL; 1815 prefs.line_mode = NORMAL;
1808 prefs.view_mode = NARROW; 1816 prefs.view_mode = NARROW;
1817 prefs.alignment = LEFT;
1809 prefs.scroll_mode = PAGE; 1818 prefs.scroll_mode = PAGE;
1810 prefs.page_mode = NO_OVERLAP; 1819 prefs.page_mode = NO_OVERLAP;
1811 prefs.scrollbar_mode = SB_OFF; 1820 prefs.scrollbar_mode = SB_OFF;
@@ -1834,6 +1843,7 @@ static bool viewer_read_preferences(int pfd)
1834 prefs.word_mode = *p++; 1843 prefs.word_mode = *p++;
1835 prefs.line_mode = *p++; 1844 prefs.line_mode = *p++;
1836 prefs.view_mode = *p++; 1845 prefs.view_mode = *p++;
1846 prefs.alignment = *p++;
1837 prefs.encoding = *p++; 1847 prefs.encoding = *p++;
1838 prefs.scrollbar_mode = *p++; 1848 prefs.scrollbar_mode = *p++;
1839 prefs.need_scrollbar = *p++; 1849 prefs.need_scrollbar = *p++;
@@ -1855,6 +1865,7 @@ static bool viewer_write_preferences(int pfd)
1855 *p++ = prefs.word_mode; 1865 *p++ = prefs.word_mode;
1856 *p++ = prefs.line_mode; 1866 *p++ = prefs.line_mode;
1857 *p++ = prefs.view_mode; 1867 *p++ = prefs.view_mode;
1868 *p++ = prefs.alignment;
1858 *p++ = prefs.encoding; 1869 *p++ = prefs.encoding;
1859 *p++ = prefs.scrollbar_mode; 1870 *p++ = prefs.scrollbar_mode;
1860 *p++ = prefs.need_scrollbar; 1871 *p++ = prefs.need_scrollbar;
@@ -2611,6 +2622,17 @@ static bool font_setting(void)
2611 2622
2612 return res; 2623 return res;
2613} 2624}
2625
2626static bool alignment_setting(void)
2627{
2628 static const struct opt_items names[] = {
2629 {"Left", -1},
2630 {"Right", -1},
2631 };
2632
2633 return rb->set_option("Alignment", &prefs.alignment, INT,
2634 names , 2, NULL);
2635}
2614#endif 2636#endif
2615 2637
2616static bool autoscroll_speed_setting(void) 2638static bool autoscroll_speed_setting(void)
@@ -2628,6 +2650,8 @@ MENUITEM_FUNCTION(line_mode_item, 0, "Line Mode", line_mode_setting,
2628MENUITEM_FUNCTION(view_mode_item, 0, "Wide View", view_mode_setting, 2650MENUITEM_FUNCTION(view_mode_item, 0, "Wide View", view_mode_setting,
2629 NULL, NULL, Icon_NOICON); 2651 NULL, NULL, Icon_NOICON);
2630#ifdef HAVE_LCD_BITMAP 2652#ifdef HAVE_LCD_BITMAP
2653MENUITEM_FUNCTION(alignment_item, 0, "Alignment", alignment_setting,
2654 NULL, NULL, Icon_NOICON);
2631MENUITEM_FUNCTION(scrollbar_item, 0, "Show Scrollbar", scrollbar_setting, 2655MENUITEM_FUNCTION(scrollbar_item, 0, "Show Scrollbar", scrollbar_setting,
2632 NULL, NULL, Icon_NOICON); 2656 NULL, NULL, Icon_NOICON);
2633MENUITEM_FUNCTION(page_mode_item, 0, "Overlap Pages", page_mode_setting, 2657MENUITEM_FUNCTION(page_mode_item, 0, "Overlap Pages", page_mode_setting,
@@ -2646,7 +2670,8 @@ MENUITEM_FUNCTION(autoscroll_speed_item, 0, "Auto-Scroll Speed",
2646MAKE_MENU(option_menu, "Viewer Options", NULL, Icon_NOICON, 2670MAKE_MENU(option_menu, "Viewer Options", NULL, Icon_NOICON,
2647 &encoding_item, &word_wrap_item, &line_mode_item, &view_mode_item, 2671 &encoding_item, &word_wrap_item, &line_mode_item, &view_mode_item,
2648#ifdef HAVE_LCD_BITMAP 2672#ifdef HAVE_LCD_BITMAP
2649 &scrollbar_item, &page_mode_item, &header_item, &footer_item, &font_item, 2673 &alignment_item, &scrollbar_item, &page_mode_item, &header_item,
2674 &footer_item, &font_item,
2650#endif 2675#endif
2651 &scroll_mode_item, &autoscroll_speed_item); 2676 &scroll_mode_item, &autoscroll_speed_item);
2652 2677