diff --git a/apps/plugins/text_viewer/tv_menu.c b/apps/plugins/text_viewer/tv_menu.c index ce85dc9..9b5998d 100644 --- a/apps/plugins/text_viewer/tv_menu.c +++ b/apps/plugins/text_viewer/tv_menu.c @@ -42,8 +42,8 @@ static bool tv_horizontal_scrollbar_setting(void) {"Yes", -1}, }; - return rb->set_option("Horizontal Scrollbar", &new_prefs.horizontal_scrollbar, INT, - names, 2, NULL); + return rb->set_option("Horizontal Scrollbar", &new_prefs.horizontal_scrollbar, + sizeof(new_prefs.horizontal_scrollbar), names, 2, NULL); } #endif @@ -54,8 +54,8 @@ static bool tv_horizontal_scroll_mode_setting(void) {"Scroll by Column", -1}, }; - return rb->set_option("Scroll Mode", &new_prefs.horizontal_scroll_mode, INT, - names, 2, NULL); + return rb->set_option("Scroll Mode", &new_prefs.horizontal_scroll_mode, + sizeof(new_prefs.horizontal_scroll_mode), names, 2, NULL); } #ifdef HAVE_LCD_BITMAP @@ -84,8 +84,8 @@ static bool tv_vertical_scrollbar_setting(void) {"Yes", -1}, }; - return rb->set_option("Vertical Scrollbar", &new_prefs.vertical_scrollbar, INT, - names, 2, NULL); + return rb->set_option("Vertical Scrollbar", &new_prefs.vertical_scrollbar, + sizeof(new_prefs.vertical_scrollbar), names, 2, NULL); } #endif @@ -96,8 +96,8 @@ static bool tv_vertical_scroll_mode_setting(void) {"Scroll by Line", -1}, }; - return rb->set_option("Scroll Mode", &new_prefs.vertical_scroll_mode, INT, - names, 2, NULL); + return rb->set_option("Scroll Mode", &new_prefs.vertical_scroll_mode, + sizeof(new_prefs.vertical_scroll_mode), names, 2, NULL); } static bool tv_page_mode_setting(void) @@ -107,8 +107,8 @@ static bool tv_page_mode_setting(void) {"Yes", -1}, }; - return rb->set_option("Overlap Pages", &new_prefs.page_mode, INT, - names, 2, NULL); + return rb->set_option("Overlap Pages", &new_prefs.page_mode, + sizeof(new_prefs.page_mode), names, 2, NULL); } static bool tv_autoscroll_speed_setting(void) @@ -124,8 +124,8 @@ static bool tv_narrow_mode_setting(void) {"Top/Bottom Page", -1}, }; - return rb->set_option("Left/Right Key", &new_prefs.narrow_mode, INT, - names, 2, NULL); + return rb->set_option("Left/Right Key", &new_prefs.narrow_mode, + sizeof(new_prefs.narrow_mode), names, 2, NULL); } #ifdef HAVE_LCD_BITMAP @@ -171,8 +171,8 @@ static bool tv_encoding_setting(void) names[idx].voice_id = -1; } - return rb->set_option("Encoding", &new_prefs.encoding, INT, names, - sizeof(names) / sizeof(names[0]), NULL); + return rb->set_option("Encoding", &new_prefs.encoding, sizeof(new_prefs.encoding), + names, sizeof(names) / sizeof(names[0]), NULL); } static bool tv_word_wrap_setting(void) @@ -182,7 +182,7 @@ static bool tv_word_wrap_setting(void) {"Off (Chop Words)", -1}, }; - return rb->set_option("Word Wrap", &new_prefs.word_mode, INT, + return rb->set_option("Word Wrap", &new_prefs.word_mode, sizeof(new_prefs.word_mode), names, 2, NULL); } @@ -195,8 +195,8 @@ static bool tv_line_mode_setting(void) {"Reflow Lines", -1}, }; - return rb->set_option("Line Mode", &new_prefs.line_mode, INT, names, - sizeof(names) / sizeof(names[0]), NULL); + return rb->set_option("Line Mode", &new_prefs.line_mode, sizeof(new_prefs.line_mode), + names, sizeof(names) / sizeof(names[0]), NULL); } static bool tv_windows_setting(void) @@ -212,7 +212,7 @@ static bool tv_alignment_setting(void) {"Right", -1}, }; - return rb->set_option("Alignment", &new_prefs.alignment, INT, + return rb->set_option("Alignment", &new_prefs.alignment, sizeof(new_prefs.alignment), names , 2, NULL); } @@ -235,7 +235,7 @@ static bool tv_header_setting(void) names[3].voice_id = -1; } - return rb->set_option("Show Header", &new_prefs.header_mode, INT, + return rb->set_option("Show Header", &new_prefs.header_mode, sizeof(new_prefs.header_mode), names, len, NULL); } @@ -257,7 +257,7 @@ static bool tv_footer_setting(void) names[3].voice_id = -1; } - return rb->set_option("Show Footer", &new_prefs.footer_mode, INT, + return rb->set_option("Show Footer", &new_prefs.footer_mode, sizeof(new_prefs.footer_mode), names, len, NULL); } diff --git a/apps/plugins/text_viewer/tv_preferences.c b/apps/plugins/text_viewer/tv_preferences.c index e65053f..ed1755b 100644 --- a/apps/plugins/text_viewer/tv_preferences.c +++ b/apps/plugins/text_viewer/tv_preferences.c @@ -98,27 +98,27 @@ void tv_copy_preferences(struct tv_preferences *copy_prefs) void tv_set_default_preferences(struct tv_preferences *p) { - p->word_mode = WRAP; - p->line_mode = NORMAL; + p->word_mode = (char)WRAP; + p->line_mode = (char)NORMAL; p->windows = 1; - p->alignment = LEFT; - p->horizontal_scroll_mode = SCREEN; - p->vertical_scroll_mode = PAGE; - p->page_mode = NO_OVERLAP; - p->horizontal_scrollbar = SB_OFF; - p->vertical_scrollbar = SB_OFF; + p->alignment = (char)LEFT; + p->horizontal_scroll_mode = (char)SCREEN; + p->vertical_scroll_mode = (char)PAGE; + p->page_mode = (char)NO_OVERLAP; + p->horizontal_scrollbar = (char)SB_OFF; + p->vertical_scrollbar = (char)SB_OFF; rb->memset(p->font_name, 0, MAX_PATH); #ifdef HAVE_LCD_BITMAP - p->header_mode = HD_BOTH; - p->footer_mode = FT_BOTH; + p->header_mode = (char)HD_BOTH; + p->footer_mode = (char)FT_BOTH; rb->strlcpy(p->font_name, rb->global_settings->font_file, MAX_PATH); p->font = rb->font_get(FONT_UI); #else - p->header_mode = HD_NONE; - p->footer_mode = FT_NONE; + p->header_mode = (char)HD_NONE; + p->footer_mode = (char)FT_NONE; #endif p->autoscroll_speed = 1; - p->narrow_mode = NM_PAGE; + p->narrow_mode = (char)NM_PAGE; p->indent_spaces = 2; /* Set codepage to system default */ p->encoding = rb->global_settings->default_codepage; diff --git a/apps/plugins/text_viewer/tv_settings.c b/apps/plugins/text_viewer/tv_settings.c index 6b16218..f143279 100644 --- a/apps/plugins/text_viewer/tv_settings.c +++ b/apps/plugins/text_viewer/tv_settings.c @@ -149,7 +149,7 @@ static bool tv_read_preferences(int pfd, int version, struct tv_preferences *pre if (version > 0) prefs->alignment = *p++; else - prefs->alignment = LEFT; + prefs->alignment = (char)LEFT; prefs->encoding = *p++; prefs->vertical_scrollbar = *p++; @@ -164,17 +164,17 @@ static bool tv_read_preferences(int pfd, int version, struct tv_preferences *pre if (version > 2) prefs->horizontal_scrollbar = *p; else - prefs->horizontal_scrollbar = SB_OFF; + prefs->horizontal_scrollbar = (char)SB_OFF; if (version > 3) prefs->horizontal_scroll_mode = *p++; else - prefs->horizontal_scroll_mode = SCREEN; + prefs->horizontal_scroll_mode = (char)SCREEN; if (version > 4) prefs->narrow_mode = *p++; else - prefs->narrow_mode = NM_PAGE; + prefs->narrow_mode = (char)NM_PAGE; if (version > 5) prefs->indent_spaces = *p++; diff --git a/apps/plugins/text_viewer/tv_window.c b/apps/plugins/text_viewer/tv_window.c index 1ffc921..7f83e10 100644 --- a/apps/plugins/text_viewer/tv_window.c +++ b/apps/plugins/text_viewer/tv_window.c @@ -78,16 +78,16 @@ static void tv_check_header_and_footer(void) if (rb->global_settings->statusbar != STATUSBAR_TOP) { if (new_prefs.header_mode == HD_SBAR) - new_prefs.header_mode = HD_NONE; + new_prefs.header_mode = (char)HD_NONE; else if (new_prefs.header_mode == HD_BOTH) - new_prefs.header_mode = HD_PATH; + new_prefs.header_mode = (char)HD_PATH; } if (rb->global_settings->statusbar != STATUSBAR_BOTTOM) { if (new_prefs.footer_mode == FT_SBAR) - new_prefs.footer_mode = FT_NONE; + new_prefs.footer_mode = (char)FT_NONE; else if (new_prefs.footer_mode == FT_BOTH) - new_prefs.footer_mode = FT_PAGE; + new_prefs.footer_mode = (char)FT_PAGE; } tv_set_preferences(&new_prefs); } diff --git a/apps/settings.c b/apps/settings.c index ea59ff1..275ecaf 100644 --- a/apps/settings.c +++ b/apps/settings.c @@ -1174,14 +1174,23 @@ bool set_option(const char* string, const void* variable, enum optiontype type, item.setting = &temp; if (type == BOOL) temp = *(bool*)variable? 1: 0; - else + else if (type == INT) temp = *(int*)variable; + else if (type == CHAR) + temp = *(char*)variable; + else /* type == SHORT */ + temp = *(short*)variable; if (!option_screen(&item, NULL, false, NULL)) { + if (type == BOOL) *(bool*)variable = (temp == 1); - else + else if (type == INT) *(int*)variable = temp; + else if (type == CHAR) + *(char*)variable = (char)temp; + else /* type == SHORT */ + *(short*)variable = (short)temp; return false; } return true; diff --git a/apps/settings.h b/apps/settings.h index a324ef2..d52104f 100644 --- a/apps/settings.h +++ b/apps/settings.h @@ -265,7 +265,12 @@ void settings_apply(bool read_disk); void settings_apply_pm_range(void); void settings_display(void); -enum optiontype { INT, BOOL }; +enum optiontype { + BOOL = 0, + CHAR = 1, + SHORT = 2, + INT = 4, +}; const struct settings_list* find_setting(const void* variable, int *id); bool cfg_int_to_string(int setting_id, int val, char* buf, int buf_len);