diff --git a/radio/src/gui/128x64/gui.h b/radio/src/gui/128x64/gui.h index d7e1538f5..b5ba20b5d 100644 --- a/radio/src/gui/128x64/gui.h +++ b/radio/src/gui/128x64/gui.h @@ -40,6 +40,7 @@ #define drawFieldLabel(x, y, str) lcdDrawTextAlignedLeft(y, str) #define NUM_BODY_LINES (LCD_LINES-1) +#define TEXT_VIEWER_LINES NUM_BODY_LINES #define MENU_HEADER_HEIGHT FH #define CURVE_SIDE_WIDTH (LCD_H/2) diff --git a/radio/src/gui/212x64/gui.h b/radio/src/gui/212x64/gui.h index c430a0646..20dc6b09b 100644 --- a/radio/src/gui/212x64/gui.h +++ b/radio/src/gui/212x64/gui.h @@ -32,6 +32,7 @@ #define DEFAULT_SCROLLBAR_X (LCD_W-1) #define NUM_BODY_LINES (LCD_LINES-1) +#define TEXT_VIEWER_LINES NUM_BODY_LINES #define MENU_HEADER_HEIGHT FH #define MODEL_BITMAP_WIDTH 64 diff --git a/radio/src/gui/480x272/gui.h b/radio/src/gui/480x272/gui.h index e17858f22..17618563e 100644 --- a/radio/src/gui/480x272/gui.h +++ b/radio/src/gui/480x272/gui.h @@ -47,6 +47,7 @@ #define FH 20 #define NUM_BODY_LINES (MENU_BODY_HEIGHT / FH) +#define TEXT_VIEWER_LINES ((MENU_FOOTER_TOP-MENU_HEADER_HEIGHT) / FH) #define INVERT_HORZ_MARGIN 2 #define INVERT_VERT_MARGIN 1 diff --git a/radio/src/gui/480x272/view_text.cpp b/radio/src/gui/480x272/view_text.cpp index 24a1779db..e09f62699 100644 --- a/radio/src/gui/480x272/view_text.cpp +++ b/radio/src/gui/480x272/view_text.cpp @@ -42,7 +42,7 @@ bool menuTextView(event_t event) break; case EVT_ROTARY_RIGHT: - if (menuVerticalOffset + NUM_BODY_LINES >= lines_count) + if (menuVerticalOffset + TEXT_VIEWER_LINES >= lines_count) break; else ++menuVerticalOffset; @@ -55,11 +55,11 @@ bool menuTextView(event_t event) break; } - for (int i=0; idrawTextMaxWidth(MENUS_MARGIN_LEFT, MENU_CONTENT_TOP + i * FH, reusableBuffer.viewText.lines[i], 0, LCD_W - 2 * MENUS_MARGIN_LEFT); + for (int i = 0; i < TEXT_VIEWER_LINES; i++) { + lcd->drawTextMaxWidth(MENUS_MARGIN_LEFT, MENU_HEADER_HEIGHT + i * FH, reusableBuffer.viewText.lines[i], 0, LCD_W - 2 * MENUS_MARGIN_LEFT); } - drawVerticalScrollbar(LCD_W-5, 50, 195, menuVerticalOffset, lines_count, NUM_BODY_LINES); + drawVerticalScrollbar(LCD_W-5, 50, 195, menuVerticalOffset, lines_count, TEXT_VIEWER_LINES); return true; } diff --git a/radio/src/sdcard.cpp b/radio/src/sdcard.cpp index be89633f3..42bf5491e 100644 --- a/radio/src/sdcard.cpp +++ b/radio/src/sdcard.cpp @@ -412,7 +412,7 @@ bool sdListFiles(const char * path, const char * extension, const uint8_t maxlen constexpr uint32_t TEXT_FILE_MAXSIZE = 2048; -void sdReadTextFile(const char * filename, char lines[NUM_BODY_LINES][LCD_COLS + 1], int & lines_count) +void sdReadTextFile(const char * filename, char lines[TEXT_VIEWER_LINES][LCD_COLS + 1], int & lines_count) { FIL file; int result; @@ -423,17 +423,17 @@ void sdReadTextFile(const char * filename, char lines[NUM_BODY_LINES][LCD_COLS + char escape_chars[4] = {0}; int current_line = 0; - memclear(lines, NUM_BODY_LINES * (LCD_COLS + 1)); + memclear(lines, TEXT_VIEWER_LINES * (LCD_COLS + 1)); result = f_open(&file, filename, FA_OPEN_EXISTING | FA_READ); if (result == FR_OK) { - for (unsigned i = 0; i < TEXT_FILE_MAXSIZE && f_read(&file, &c, 1, &sz) == FR_OK && sz == 1 && (lines_count == 0 || current_line - menuVerticalOffset < NUM_BODY_LINES); i++) { + for (unsigned i = 0; i < TEXT_FILE_MAXSIZE && f_read(&file, &c, 1, &sz) == FR_OK && sz == 1 && (lines_count == 0 || current_line - menuVerticalOffset < TEXT_VIEWER_LINES); i++) { if (c == '\n') { ++current_line; line_length = 0; escape = 0; } - else if (c!='\r' && current_line>=menuVerticalOffset && current_line-menuVerticalOffset=menuVerticalOffset && current_line-menuVerticalOffset