summaryrefslogtreecommitdiff
path: root/apps/plugins/textviewer/tv_menu.c
diff options
context:
space:
mode:
authorYoshihisa Uchida <uchida@rockbox.org>2010-04-14 11:19:30 +0000
committerYoshihisa Uchida <uchida@rockbox.org>2010-04-14 11:19:30 +0000
commit4157a31924be37b440c92df8a141ada7e7bfb704 (patch)
treed26a07f45b66aa8fc35ff8bec22aa15823fc037e /apps/plugins/textviewer/tv_menu.c
parent2ca2684ede50f145985ae147ca52aef27f7580b2 (diff)
downloadrockbox-4157a31924be37b440c92df8a141ada7e7bfb704.zip
rockbox-4157a31924be37b440c92df8a141ada7e7bfb704.tar.gz
rockbox-4157a31924be37b440c92df8a141ada7e7bfb704.tar.bz2
rockbox-4157a31924be37b440c92df8a141ada7e7bfb704.tar.xz
rvert r25644
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25645 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins/textviewer/tv_menu.c')
-rw-r--r--apps/plugins/textviewer/tv_menu.c384
1 files changed, 0 insertions, 384 deletions
diff --git a/apps/plugins/textviewer/tv_menu.c b/apps/plugins/textviewer/tv_menu.c
deleted file mode 100644
index aa1b8d6..0000000
--- a/apps/plugins/textviewer/tv_menu.c
+++ /dev/null
@@ -1,384 +0,0 @@
-/***************************************************************************
- * __________ __ ___.
- * Open \______ \ ____ ____ | | _\_ |__ _______ ___
- * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
- * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
- * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
- * \/ \/ \/ \/ \/
- * $Id$
- *
- * Copyright (C) 2002 Gilles Roux
- * 2003 Garrett Derner
- * 2010 Yoshihisa Uchida
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ****************************************************************************/
-#include "plugin.h"
-#include "lib/playback_control.h"
-
-
-/* settings helper functions */
-
-static bool encoding_setting(void)
-{
- static struct opt_items names[NUM_CODEPAGES];
- int idx;
- bool res;
- enum codepages oldenc = prefs.encoding;
-
- for (idx = 0; idx < NUM_CODEPAGES; idx++)
- {
- names[idx].string = rb->get_codepage_name(idx);
- names[idx].voice_id = -1;
- }
-
- res = rb->set_option("Encoding", &prefs.encoding, INT, names,
- sizeof(names) / sizeof(names[0]), NULL);
-
- /* When prefs.encoding changes into UTF-8 or changes from UTF-8,
- * filesize (file_size) might change.
- * In addition, if prefs.encoding is UTF-8, then BOM does not read.
- */
- if (oldenc != prefs.encoding && (oldenc == UTF_8 || prefs.encoding == UTF_8))
- {
- check_bom();
- get_filesize();
- fill_buffer(file_pos, buffer, buffer_size);
- }
-
- return res;
-}
-
-static bool word_wrap_setting(void)
-{
- static const struct opt_items names[] = {
- {"On", -1},
- {"Off (Chop Words)", -1},
- };
-
- return rb->set_option("Word Wrap", &prefs.word_mode, INT,
- names, 2, NULL);
-}
-
-static bool line_mode_setting(void)
-{
- static const struct opt_items names[] = {
- {"Normal", -1},
- {"Join Lines", -1},
- {"Expand Lines", -1},
-#ifdef HAVE_LCD_BITMAP
- {"Reflow Lines", -1},
-#endif
- };
-
- return rb->set_option("Line Mode", &prefs.line_mode, INT, names,
- sizeof(names) / sizeof(names[0]), NULL);
-}
-
-static bool view_mode_setting(void)
-{
- static const struct opt_items names[] = {
- {"No (Narrow)", -1},
- {"Yes", -1},
- };
- bool ret;
- ret = rb->set_option("Wide View", &prefs.view_mode, INT,
- names , 2, NULL);
- if (prefs.view_mode == NARROW)
- col = 0;
- calc_max_width();
- return ret;
-}
-
-static bool scroll_mode_setting(void)
-{
- static const struct opt_items names[] = {
- {"Scroll by Page", -1},
- {"Scroll by Line", -1},
- };
-
- return rb->set_option("Scroll Mode", &prefs.scroll_mode, INT,
- names, 2, NULL);
-}
-
-#ifdef HAVE_LCD_BITMAP
-static bool page_mode_setting(void)
-{
- static const struct opt_items names[] = {
- {"No", -1},
- {"Yes", -1},
- };
-
- return rb->set_option("Overlap Pages", &prefs.page_mode, INT,
- names, 2, NULL);
-}
-
-static bool scrollbar_setting(void)
-{
- static const struct opt_items names[] = {
- {"Off", -1},
- {"On", -1}
- };
-
- return rb->set_option("Show Scrollbar", &prefs.scrollbar_mode, INT,
- names, 2, NULL);
-}
-
-static bool header_setting(void)
-{
- int len = (rb->global_settings->statusbar == STATUSBAR_TOP)? 4 : 2;
- struct opt_items names[len];
-
- names[0].string = "None";
- names[0].voice_id = -1;
- names[1].string = "File path";
- names[1].voice_id = -1;
-
- if (rb->global_settings->statusbar == STATUSBAR_TOP)
- {
- names[2].string = "Status bar";
- names[2].voice_id = -1;
- names[3].string = "Both";
- names[3].voice_id = -1;
- }
-
- return rb->set_option("Show Header", &prefs.header_mode, INT,
- names, len, NULL);
-}
-
-static bool footer_setting(void)
-{
- int len = (rb->global_settings->statusbar == STATUSBAR_BOTTOM)? 4 : 2;
- struct opt_items names[len];
-
- names[0].string = "None";
- names[0].voice_id = -1;
- names[1].string = "Page Num";
- names[1].voice_id = -1;
-
- if (rb->global_settings->statusbar == STATUSBAR_BOTTOM)
- {
- names[2].string = "Status bar";
- names[2].voice_id = -1;
- names[3].string = "Both";
- names[3].voice_id = -1;
- }
-
- return rb->set_option("Show Footer", &prefs.footer_mode, INT,
- names, len, NULL);
-}
-
-static int font_comp(const void *a, const void *b)
-{
- struct opt_items *pa;
- struct opt_items *pb;
-
- pa = (struct opt_items *)a;
- pb = (struct opt_items *)b;
-
- return rb->strcmp(pa->string, pb->string);
-}
-
-static bool font_setting(void)
-{
- int count = 0;
- DIR *dir;
- struct dirent *entry;
- int i = 0;
- int len;
- int new_font = 0;
- int old_font;
- bool res;
- int size = 0;
-
- dir = rb->opendir(FONT_DIR);
- if (!dir)
- {
- rb->splash(HZ/2, "font dir does not access.");
- return false;
- }
-
- while (1)
- {
- entry = rb->readdir(dir);
-
- if (entry == NULL)
- break;
-
- len = rb->strlen(entry->d_name);
- if (len < 4 || rb->strcmp(entry->d_name + len-4, ".fnt"))
- continue;
- size += len-3;
- count++;
- }
- rb->closedir(dir);
-
- struct opt_items names[count];
- unsigned char font_names[size];
- unsigned char *p = font_names;
-
- dir = rb->opendir(FONT_DIR);
- if (!dir)
- {
- rb->splash(HZ/2, "font dir does not access.");
- return false;
- }
-
- while (1)
- {
- entry = rb->readdir(dir);
-
- if (entry == NULL)
- break;
-
- len = rb->strlen(entry->d_name);
- if (len < 4 || rb->strcmp(entry->d_name + len-4, ".fnt"))
- continue;
-
- rb->snprintf(p, len-3, "%s", entry->d_name);
- names[i].string = p;
- names[i].voice_id = -1;
- p += len-3;
- i++;
- if (i >= count)
- break;
- }
- rb->closedir(dir);
-
- rb->qsort(names, count, sizeof(struct opt_items), font_comp);
-
- for (i = 0; i < count; i++)
- {
- if (!rb->strcmp(names[i].string, prefs.font))
- {
- new_font = i;
- break;
- }
- }
- old_font = new_font;
-
- res = rb->set_option("Select Font", &new_font, INT,
- names, count, NULL);
-
- if (new_font != old_font)
- {
- rb->memset(prefs.font, 0, MAX_PATH);
- rb->snprintf(prefs.font, MAX_PATH, "%s", names[new_font].string);
- change_font(prefs.font);
- }
-
- return res;
-}
-#endif
-
-static bool autoscroll_speed_setting(void)
-{
- return rb->set_int("Auto-scroll Speed", "", UNIT_INT,
- &prefs.autoscroll_speed, NULL, 1, 1, 10, NULL);
-}
-
-MENUITEM_FUNCTION(encoding_item, 0, "Encoding", encoding_setting,
- NULL, NULL, Icon_NOICON);
-MENUITEM_FUNCTION(word_wrap_item, 0, "Word Wrap", word_wrap_setting,
- NULL, NULL, Icon_NOICON);
-MENUITEM_FUNCTION(line_mode_item, 0, "Line Mode", line_mode_setting,
- NULL, NULL, Icon_NOICON);
-MENUITEM_FUNCTION(view_mode_item, 0, "Wide View", view_mode_setting,
- NULL, NULL, Icon_NOICON);
-#ifdef HAVE_LCD_BITMAP
-MENUITEM_FUNCTION(scrollbar_item, 0, "Show Scrollbar", scrollbar_setting,
- NULL, NULL, Icon_NOICON);
-MENUITEM_FUNCTION(page_mode_item, 0, "Overlap Pages", page_mode_setting,
- NULL, NULL, Icon_NOICON);
-MENUITEM_FUNCTION(header_item, 0, "Show Header", header_setting,
- NULL, NULL, Icon_NOICON);
-MENUITEM_FUNCTION(footer_item, 0, "Show Footer", footer_setting,
- NULL, NULL, Icon_NOICON);
-MENUITEM_FUNCTION(font_item, 0, "Font", font_setting,
- NULL, NULL, Icon_NOICON);
-#endif
-MENUITEM_FUNCTION(scroll_mode_item, 0, "Scroll Mode", scroll_mode_setting,
- NULL, NULL, Icon_NOICON);
-MENUITEM_FUNCTION(autoscroll_speed_item, 0, "Auto-Scroll Speed",
- autoscroll_speed_setting, NULL, NULL, Icon_NOICON);
-MAKE_MENU(option_menu, "Viewer Options", NULL, Icon_NOICON,
- &encoding_item, &word_wrap_item, &line_mode_item, &view_mode_item,
-#ifdef HAVE_LCD_BITMAP
- &scrollbar_item, &page_mode_item, &header_item, &footer_item, &font_item,
-#endif
- &scroll_mode_item, &autoscroll_speed_item);
-
-static bool viewer_options_menu(bool is_global)
-{
- bool result;
- struct preferences tmp_prefs;
-
- rb->memcpy(&tmp_prefs, &prefs, sizeof(struct preferences));
-
- result = (rb->do_menu(&option_menu, NULL, NULL, false) == MENU_ATTACHED_USB);
-
- if (!is_global && rb->memcmp(&tmp_prefs, &prefs, sizeof(struct preferences)))
- {
- /* Show-scrollbar mode for current view-width mode */
-#ifdef HAVE_LCD_BITMAP
- init_need_scrollbar();
- init_header_and_footer();
-#endif
- calc_page();
- }
- return result;
-}
-
-void viewer_menu(void)
-{
- int result;
-
- MENUITEM_STRINGLIST(menu, "Viewer Menu", NULL,
- "Return", "Viewer Options",
- "Show Playback Menu", "Select Bookmark",
- "Global Settings", "Quit");
-
- result = rb->do_menu(&menu, NULL, NULL, false);
- switch (result)
- {
- case 0: /* return */
- break;
- case 1: /* change settings */
- done = viewer_options_menu(false);
- break;
- case 2: /* playback control */
- playback_control(NULL);
- break;
- case 3: /* select bookmark */
- viewer_select_bookmark(viewer_add_last_read_bookmark());
- viewer_remove_last_read_bookmark();
- fill_buffer(file_pos, buffer, buffer_size);
- if (prefs.scroll_mode == PAGE && cline > 1)
- viewer_scroll_to_top_line();
- break;
- case 4: /* change global settings */
- {
- struct preferences orig_prefs;
-
- rb->memcpy(&orig_prefs, &prefs, sizeof(struct preferences));
- if (!viewer_load_global_settings())
- viewer_default_preferences();
- done = viewer_options_menu(true);
- viewer_save_global_settings();
- rb->memcpy(&prefs, &orig_prefs, sizeof(struct preferences));
- }
- break;
- case 5: /* quit */
- viewer_exit(NULL);
- done = true;
- break;
- }
- viewer_draw(col);
-}