diff options
author | Yoshihisa Uchida <uchida@rockbox.org> | 2010-06-06 08:44:27 +0000 |
---|---|---|
committer | Yoshihisa Uchida <uchida@rockbox.org> | 2010-06-06 08:44:27 +0000 |
commit | 1445c3b8c5a88e5f6e5540c266ffb5ee5bf4a3f7 (patch) | |
tree | 9131d99016b0275d09dd97370868aa2a7f62270d /apps/plugins/text_viewer/tv_settings.c | |
parent | e1a0e2cd7ae6337b8add4fd8c5c87924a94cf169 (diff) | |
download | rockbox-1445c3b8c5a88e5f6e5540c266ffb5ee5bf4a3f7.tar.gz rockbox-1445c3b8c5a88e5f6e5540c266ffb5ee5bf4a3f7.zip |
text viewer: can be selected the number of screens per page.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26613 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins/text_viewer/tv_settings.c')
-rw-r--r-- | apps/plugins/text_viewer/tv_settings.c | 112 |
1 files changed, 62 insertions, 50 deletions
diff --git a/apps/plugins/text_viewer/tv_settings.c b/apps/plugins/text_viewer/tv_settings.c index bb4ead7b5d..3b9a684b94 100644 --- a/apps/plugins/text_viewer/tv_settings.c +++ b/apps/plugins/text_viewer/tv_settings.c | |||
@@ -30,30 +30,31 @@ | |||
30 | * | 30 | * |
31 | * setting file format | 31 | * setting file format |
32 | * | 32 | * |
33 | * part byte count | 33 | * part byte count |
34 | * -------------------------------- | 34 | * ------------------------------- |
35 | * 'TVGS' 4 | 35 | * 'TVGS' 4 |
36 | * version 1 | 36 | * version 1 |
37 | * word_mode 1 | 37 | * word_mode 1 |
38 | * line_mode 1 | 38 | * line_mode 1 |
39 | * view_mode 1 | 39 | * windows 1 (when version <= 0x32, this value is view_mode) |
40 | * alignment 1 | 40 | * alignment 1 |
41 | * encoding 1 | 41 | * encoding 1 |
42 | * scrollbar_mode 1 | 42 | * scrollbar_mode 1 |
43 | * (unused) 1 (for compatibility) | 43 | * (unused) 1 (for compatibility) |
44 | * page_mode 1 | 44 | * page_mode 1 |
45 | * page_number_mode 1 | 45 | * page_number_mode 1 |
46 | * title_mode 1 | 46 | * title_mode 1 |
47 | * scroll_mode 1 | 47 | * scroll_mode 1 |
48 | * autoscroll_speed 1 | 48 | * autoscroll_speed 1 |
49 | * font name MAX_PATH | 49 | * (reserved) 16 |
50 | * font name MAX_PATH | ||
50 | */ | 51 | */ |
51 | 52 | ||
52 | #define VIEWER_GLOBAL_SETTINGS_FILE VIEWERS_DIR "/viewer.dat" | 53 | #define VIEWER_GLOBAL_SETTINGS_FILE VIEWERS_DIR "/viewer.dat" |
53 | #define TV_GLOBAL_SETTINGS_FILE VIEWERS_DIR "/tv_global.dat" | 54 | #define TV_GLOBAL_SETTINGS_FILE VIEWERS_DIR "/tv_global.dat" |
54 | 55 | ||
55 | #define TV_GLOBAL_SETTINGS_HEADER "\x54\x56\x47\x53" /* "TVGS" */ | 56 | #define TV_GLOBAL_SETTINGS_HEADER "\x54\x56\x47\x53" /* "TVGS" */ |
56 | #define TV_GLOBAL_SETTINGS_VERSION 0x32 | 57 | #define TV_GLOBAL_SETTINGS_VERSION 0x33 |
57 | #define TV_GLOBAL_SETTINGS_HEADER_SIZE 5 | 58 | #define TV_GLOBAL_SETTINGS_HEADER_SIZE 5 |
58 | #define TV_GLOBAL_SETTINGS_FIRST_VERSION 0x31 | 59 | #define TV_GLOBAL_SETTINGS_FIRST_VERSION 0x31 |
59 | 60 | ||
@@ -62,34 +63,35 @@ | |||
62 | * | 63 | * |
63 | * setting file format | 64 | * setting file format |
64 | * | 65 | * |
65 | * part byte count | 66 | * part byte count |
66 | * -------------------------------- | 67 | * ----------------------------------- |
67 | * 'TVS' 3 | 68 | * 'TVS' 3 |
68 | * version 1 | 69 | * version 1 |
69 | * file count 2 | 70 | * file count 2 |
70 | * [1st file] | 71 | * [1st file] |
71 | * file path MAX_PATH | 72 | * file path MAX_PATH |
72 | * next file pos 2 (prefences size + bookmark count * bookmark size + 1) | 73 | * next file pos 2 (prefences size + bookmark count * bookmark size + 1) |
73 | * [preferences] | 74 | * [preferences] |
74 | * word_mode 1 | 75 | * word_mode 1 |
75 | * line_mode 1 | 76 | * line_mode 1 |
76 | * view_mode 1 | 77 | * windows 1 (when version <= 0x33, this value is view_mode) |
77 | * alignment 1 | 78 | * alignment 1 |
78 | * encoding 1 | 79 | * encoding 1 |
79 | * scrollbar_mode 1 | 80 | * scrollbar_mode 1 |
80 | * (unused) 1 (for compatibility) | 81 | * (unused) 1 (for compatibility) |
81 | * page_mode 1 | 82 | * page_mode 1 |
82 | * header_mode 1 | 83 | * header_mode 1 |
83 | * footer_mode 1 | 84 | * footer_mode 1 |
84 | * scroll_mode 1 | 85 | * scroll_mode 1 |
85 | * autoscroll_speed 1 | 86 | * autoscroll_speed 1 |
86 | * font name MAX_PATH | 87 | * (reserved) 16 |
87 | * bookmark count 1 | 88 | * font name MAX_PATH |
89 | * bookmark count 1 | ||
88 | * [1st bookmark] | 90 | * [1st bookmark] |
89 | * file_position 4 | 91 | * file_position 4 |
90 | * page 2 | 92 | * page 2 |
91 | * line 1 | 93 | * line 1 |
92 | * flag 1 | 94 | * flag 1 |
93 | * [2nd bookmark] | 95 | * [2nd bookmark] |
94 | * ... | 96 | * ... |
95 | * [last bookmark] | 97 | * [last bookmark] |
@@ -104,11 +106,11 @@ | |||
104 | #define TV_SETTINGS_TMP_FILE VIEWERS_DIR "/tv_file.tmp" | 106 | #define TV_SETTINGS_TMP_FILE VIEWERS_DIR "/tv_file.tmp" |
105 | 107 | ||
106 | #define TV_SETTINGS_HEADER "\x54\x56\x53" /* "TVS" */ | 108 | #define TV_SETTINGS_HEADER "\x54\x56\x53" /* "TVS" */ |
107 | #define TV_SETTINGS_VERSION 0x33 | 109 | #define TV_SETTINGS_VERSION 0x34 |
108 | #define TV_SETTINGS_HEADER_SIZE 4 | 110 | #define TV_SETTINGS_HEADER_SIZE 4 |
109 | #define TV_SETTINGS_FIRST_VERSION 0x32 | 111 | #define TV_SETTINGS_FIRST_VERSION 0x32 |
110 | 112 | ||
111 | #define TV_PREFERENCES_SIZE (12 + MAX_PATH) | 113 | #define TV_PREFERENCES_SIZE (28 + MAX_PATH) |
112 | 114 | ||
113 | /* ---------------------------------------------------------------------------- | 115 | /* ---------------------------------------------------------------------------- |
114 | * read/write the preferences | 116 | * read/write the preferences |
@@ -122,18 +124,25 @@ static bool tv_read_preferences(int pfd, int version, struct tv_preferences *pre | |||
122 | int read_size = TV_PREFERENCES_SIZE; | 124 | int read_size = TV_PREFERENCES_SIZE; |
123 | 125 | ||
124 | if (version == 0) | 126 | if (version == 0) |
125 | read_size--; | 127 | read_size -= 17; |
128 | else if (version == 1) | ||
129 | read_size -= 16; | ||
126 | 130 | ||
127 | if (rb->read(pfd, buf, read_size) < 0) | 131 | if (rb->read(pfd, buf, read_size) < 0) |
128 | return false; | 132 | return false; |
129 | 133 | ||
130 | prefs->word_mode = *p++; | 134 | prefs->word_mode = *p++; |
131 | prefs->line_mode = *p++; | 135 | prefs->line_mode = *p++; |
132 | prefs->view_mode = *p++; | 136 | |
137 | prefs->windows = *p++; | ||
138 | if (version <= 1) | ||
139 | prefs->windows++; | ||
140 | |||
133 | if (version > 0) | 141 | if (version > 0) |
134 | prefs->alignment = *p++; | 142 | prefs->alignment = *p++; |
135 | else | 143 | else |
136 | prefs->alignment = LEFT; | 144 | prefs->alignment = LEFT; |
145 | |||
137 | prefs->encoding = *p++; | 146 | prefs->encoding = *p++; |
138 | prefs->scrollbar_mode = *p++; | 147 | prefs->scrollbar_mode = *p++; |
139 | /* skip need_scrollbar */ | 148 | /* skip need_scrollbar */ |
@@ -143,7 +152,9 @@ static bool tv_read_preferences(int pfd, int version, struct tv_preferences *pre | |||
143 | prefs->footer_mode = *p++; | 152 | prefs->footer_mode = *p++; |
144 | prefs->scroll_mode = *p++; | 153 | prefs->scroll_mode = *p++; |
145 | prefs->autoscroll_speed = *p++; | 154 | prefs->autoscroll_speed = *p++; |
146 | rb->memcpy(prefs->font_name, p, MAX_PATH); | 155 | |
156 | rb->memcpy(prefs->font_name, buf + read_size - MAX_PATH, MAX_PATH); | ||
157 | |||
147 | #ifdef HAVE_LCD_BITMAP | 158 | #ifdef HAVE_LCD_BITMAP |
148 | prefs->font = rb->font_get(FONT_UI); | 159 | prefs->font = rb->font_get(FONT_UI); |
149 | #endif | 160 | #endif |
@@ -158,7 +169,7 @@ static bool tv_write_preferences(int pfd, const struct tv_preferences *prefs) | |||
158 | 169 | ||
159 | *p++ = prefs->word_mode; | 170 | *p++ = prefs->word_mode; |
160 | *p++ = prefs->line_mode; | 171 | *p++ = prefs->line_mode; |
161 | *p++ = prefs->view_mode; | 172 | *p++ = prefs->windows; |
162 | *p++ = prefs->alignment; | 173 | *p++ = prefs->alignment; |
163 | *p++ = prefs->encoding; | 174 | *p++ = prefs->encoding; |
164 | *p++ = prefs->scrollbar_mode; | 175 | *p++ = prefs->scrollbar_mode; |
@@ -169,7 +180,8 @@ static bool tv_write_preferences(int pfd, const struct tv_preferences *prefs) | |||
169 | *p++ = prefs->footer_mode; | 180 | *p++ = prefs->footer_mode; |
170 | *p++ = prefs->scroll_mode; | 181 | *p++ = prefs->scroll_mode; |
171 | *p++ = prefs->autoscroll_speed; | 182 | *p++ = prefs->autoscroll_speed; |
172 | rb->memcpy(p, prefs->font_name, MAX_PATH); | 183 | |
184 | rb->memcpy(buf + 28, prefs->font_name, MAX_PATH); | ||
173 | 185 | ||
174 | return (rb->write(pfd, buf, TV_PREFERENCES_SIZE) >= 0); | 186 | return (rb->write(pfd, buf, TV_PREFERENCES_SIZE) >= 0); |
175 | } | 187 | } |