diff options
author | Justin Heiner <jheiner@rockbox.org> | 2002-08-29 05:41:35 +0000 |
---|---|---|
committer | Justin Heiner <jheiner@rockbox.org> | 2002-08-29 05:41:35 +0000 |
commit | 8097ee6af1ba6a19015532c49d301a81c348aa53 (patch) | |
tree | 8c8e464ad655f41d325e6245a14985113e05dad1 | |
parent | de14e53c669adc033691da5c2f32825f3418f7d5 (diff) | |
download | rockbox-8097ee6af1ba6a19015532c49d301a81c348aa53.tar.gz rockbox-8097ee6af1ba6a19015532c49d301a81c348aa53.zip |
Custom WPS update - works for recorder and player now. Also updated how the WPS refreshes the screen when using Custom WPS
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@2046 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | apps/settings_menu.c | 23 | ||||
-rw-r--r-- | apps/wps.c | 340 | ||||
-rw-r--r-- | apps/wps.h | 3 |
3 files changed, 264 insertions, 102 deletions
diff --git a/apps/settings_menu.c b/apps/settings_menu.c index 1c073b10d5..7a8d0c8409 100644 --- a/apps/settings_menu.c +++ b/apps/settings_menu.c | |||
@@ -97,8 +97,13 @@ static Menu scroll_speed(void) | |||
97 | static Menu wps_set(void) | 97 | static Menu wps_set(void) |
98 | { | 98 | { |
99 | #ifdef HAVE_LCD_BITMAP | 99 | #ifdef HAVE_LCD_BITMAP |
100 | #ifdef CUSTOM_WPS | ||
101 | char* names[] = { "ID3 Tags", "File ", "Parse ", "Custom WPS" }; | ||
102 | set_option("[WPS display]", &global_settings.wps_display, names, 4 ); | ||
103 | #else | ||
100 | char* names[] = { "ID3 Tags", "File ", "Parse " }; | 104 | char* names[] = { "ID3 Tags", "File ", "Parse " }; |
101 | set_option("[WPS display]", &global_settings.wps_display, names, 3 ); | 105 | set_option("[WPS display]", &global_settings.wps_display, names, 3 ); |
106 | #endif | ||
102 | #else | 107 | #else |
103 | #ifdef CUSTOM_WPS | 108 | #ifdef CUSTOM_WPS |
104 | char* names[] = { "1 Line ID3", "2 Line ID3", "File ", | 109 | char* names[] = { "1 Line ID3", "2 Line ID3", "File ", |
@@ -172,16 +177,16 @@ static Menu spindown(void) | |||
172 | return MENU_OK; | 177 | return MENU_OK; |
173 | } | 178 | } |
174 | 179 | ||
175 | static Menu ff_rewind_accel(void) | 180 | static Menu ff_rewind_accel(void) |
176 | { | 181 | { |
177 | char* names[] = { "off ", "2x/1s ", "2x/2s ", "2x/3s ", | 182 | char* names[] = { "off ", "2x/1s ", "2x/2s ", "2x/3s ", |
178 | "2x/4s ", "2x/5s ", "2x/6s ", "2x/7s ", | 183 | "2x/4s ", "2x/5s ", "2x/6s ", "2x/7s ", |
179 | "2x/8s ", "2x/9s ", "2x/10s", "2x/11s", | 184 | "2x/8s ", "2x/9s ", "2x/10s", "2x/11s", |
180 | "2x/12s", "2x/13s", "2x/14s", "2x/15s", }; | 185 | "2x/12s", "2x/13s", "2x/14s", "2x/15s", }; |
181 | set_option("[FF/rewind accel]", &global_settings.ff_rewind_accel, | 186 | set_option("[FF/rewind accel]", &global_settings.ff_rewind_accel, |
182 | names, 16 ); | 187 | names, 16 ); |
183 | return MENU_OK; | 188 | return MENU_OK; |
184 | } | 189 | } |
185 | 190 | ||
186 | Menu settings_menu(void) | 191 | Menu settings_menu(void) |
187 | { | 192 | { |
@@ -203,7 +208,7 @@ Menu settings_menu(void) | |||
203 | { "Time/Date", timedate_set }, | 208 | { "Time/Date", timedate_set }, |
204 | #endif | 209 | #endif |
205 | { "Show hidden files", show_hidden_files }, | 210 | { "Show hidden files", show_hidden_files }, |
206 | { "FF/rewind accel", ff_rewind_accel }, | 211 | { "FF/Rewind Accel", ff_rewind_accel }, |
207 | { "Resume", resume }, | 212 | { "Resume", resume }, |
208 | { "Disk spindown", spindown }, | 213 | { "Disk spindown", spindown }, |
209 | }; | 214 | }; |
diff --git a/apps/wps.c b/apps/wps.c index 7e7597cf6f..e247cb32e2 100644 --- a/apps/wps.c +++ b/apps/wps.c | |||
@@ -45,19 +45,20 @@ | |||
45 | #endif | 45 | #endif |
46 | 46 | ||
47 | #define FF_REWIND_MIN_STEP 1000 /* minimum ff/rewind step is 1 second */ | 47 | #define FF_REWIND_MIN_STEP 1000 /* minimum ff/rewind step is 1 second */ |
48 | #define FF_REWIND_MAX_PERCENT 3 /* cap ff/rewind step size at max % of file */ | 48 | #define FF_REWIND_MAX_PERCENT 3 /* cap ff/rewind step size at max % of file */ |
49 | /* 3% of 30min file == 54s step size */ | 49 | /* 3% of 30min file == 54s step size */ |
50 | 50 | ||
51 | #ifdef HAVE_LCD_BITMAP | 51 | #ifdef HAVE_LCD_BITMAP |
52 | #define PLAY_DISPLAY_2LINEID3 0 | 52 | #define PLAY_DISPLAY_2LINEID3 0 |
53 | #define PLAY_DISPLAY_FILENAME_SCROLL 1 | 53 | #define PLAY_DISPLAY_FILENAME_SCROLL 1 |
54 | #define PLAY_DISPLAY_TRACK_TITLE 2 | 54 | #define PLAY_DISPLAY_TRACK_TITLE 2 |
55 | #define PLAY_DISPLAY_CUSTOM_WPS 3 | ||
55 | #else | 56 | #else |
56 | #define PLAY_DISPLAY_1LINEID3 0 | 57 | #define PLAY_DISPLAY_1LINEID3 0 |
57 | #define PLAY_DISPLAY_2LINEID3 1 | 58 | #define PLAY_DISPLAY_2LINEID3 1 |
58 | #define PLAY_DISPLAY_FILENAME_SCROLL 2 | 59 | #define PLAY_DISPLAY_FILENAME_SCROLL 2 |
59 | #define PLAY_DISPLAY_TRACK_TITLE 3 | 60 | #define PLAY_DISPLAY_TRACK_TITLE 3 |
60 | #define PLAY_DISPLAY_CUSTOM_WPS 4 | 61 | #define PLAY_DISPLAY_CUSTOM_WPS 4 |
61 | #endif | 62 | #endif |
62 | 63 | ||
63 | #ifdef HAVE_RECORDER_KEYPAD | 64 | #ifdef HAVE_RECORDER_KEYPAD |
@@ -70,17 +71,22 @@ bool keys_locked = false; | |||
70 | bool device_muted = false; | 71 | bool device_muted = false; |
71 | static bool ff_rewind = false; | 72 | static bool ff_rewind = false; |
72 | static bool paused = false; | 73 | static bool paused = false; |
74 | int ff_rewind_count = 0; | ||
73 | 75 | ||
74 | #ifdef CUSTOM_WPS | 76 | #ifdef CUSTOM_WPS |
75 | static char custom_wps[64]; | 77 | static char custom_wps[5][64]; |
78 | static char wps_display[5][64]; | ||
79 | static int scroll_line; | ||
80 | static int scroll_line_custom; | ||
76 | #endif | 81 | #endif |
77 | 82 | ||
78 | static void draw_screen(struct mp3entry* id3) | 83 | static void draw_screen(struct mp3entry* id3) |
79 | { | 84 | { |
80 | int font_height; | 85 | int font_height; |
86 | |||
81 | #ifdef LOADABLE_FONTS | 87 | #ifdef LOADABLE_FONTS |
82 | unsigned char *font = lcd_getcurrentldfont(); | 88 | unsigned char *font = lcd_getcurrentldfont(); |
83 | font_height = ajf_get_fontheight(font); | 89 | font_height = ajf_get_fontheight(font); |
84 | #else | 90 | #else |
85 | font_height = 8; | 91 | font_height = 8; |
86 | #endif | 92 | #endif |
@@ -99,7 +105,6 @@ static void draw_screen(struct mp3entry* id3) | |||
99 | else | 105 | else |
100 | { | 106 | { |
101 | #ifdef CUSTOM_WPS | 107 | #ifdef CUSTOM_WPS |
102 | #ifdef HAVE_LCD_CHARCELLS | ||
103 | static int last_wps = -1; | 108 | static int last_wps = -1; |
104 | if ((last_wps != global_settings.wps_display | 109 | if ((last_wps != global_settings.wps_display |
105 | && global_settings.wps_display == PLAY_DISPLAY_CUSTOM_WPS)) | 110 | && global_settings.wps_display == PLAY_DISPLAY_CUSTOM_WPS)) |
@@ -108,7 +113,6 @@ static void draw_screen(struct mp3entry* id3) | |||
108 | last_wps = global_settings.wps_display; | 113 | last_wps = global_settings.wps_display; |
109 | } | 114 | } |
110 | #endif | 115 | #endif |
111 | #endif | ||
112 | switch ( global_settings.wps_display ) { | 116 | switch ( global_settings.wps_display ) { |
113 | case PLAY_DISPLAY_TRACK_TITLE: | 117 | case PLAY_DISPLAY_TRACK_TITLE: |
114 | { | 118 | { |
@@ -120,7 +124,9 @@ static void draw_screen(struct mp3entry* id3) | |||
120 | char szArtist[26]; | 124 | char szArtist[26]; |
121 | char szBuff[257]; | 125 | char szBuff[257]; |
122 | szBuff[sizeof(szBuff)-1] = 0; | 126 | szBuff[sizeof(szBuff)-1] = 0; |
123 | 127 | #ifdef CUSTOM_WPS | |
128 | int tmpcnt = 0; | ||
129 | #endif | ||
124 | strncpy(szBuff, id3->path, sizeof(szBuff)); | 130 | strncpy(szBuff, id3->path, sizeof(szBuff)); |
125 | 131 | ||
126 | szTok = strtok_r(szBuff, "/", &end); | 132 | szTok = strtok_r(szBuff, "/", &end); |
@@ -136,14 +142,33 @@ static void draw_screen(struct mp3entry* id3) | |||
136 | szPeriod = strrchr(szDelimit, '.'); | 142 | szPeriod = strrchr(szDelimit, '.'); |
137 | if (szPeriod != NULL) | 143 | if (szPeriod != NULL) |
138 | *szPeriod = 0; | 144 | *szPeriod = 0; |
139 | 145 | #ifdef CUSTOM_WPS | |
146 | snprintf(wps_display[0],sizeof(wps_display[0]),"%s", | ||
147 | (++szDelimit)); | ||
148 | #ifdef HAVE_LCD_CHARCELLS | ||
149 | snprintf(wps_display[1],sizeof(wps_display[1]),"%s", | ||
150 | "%pc/%pt"); | ||
151 | #endif | ||
152 | for(tmpcnt=2;tmpcnt<=5;tmpcnt++) | ||
153 | wps_display[tmpcnt][0] = 0; | ||
154 | scroll_line = 0; | ||
155 | refresh_wps(true); | ||
156 | #else | ||
140 | lcd_puts_scroll(0, 1, (++szDelimit)); | 157 | lcd_puts_scroll(0, 1, (++szDelimit)); |
158 | #endif | ||
141 | break; | 159 | break; |
142 | } | 160 | } |
143 | case PLAY_DISPLAY_FILENAME_SCROLL: | 161 | case PLAY_DISPLAY_FILENAME_SCROLL: |
144 | { | 162 | { |
145 | #ifdef CUSTOM_WPS | 163 | #ifdef CUSTOM_WPS |
146 | display_custom_wps(0, 0, true, "%pp/%pe: %fn"); | 164 | snprintf(wps_display[0],sizeof(wps_display[0]),"%s", |
165 | "%pp/%pe: %fn"); | ||
166 | #ifdef HAVE_LCD_CHARCELLS | ||
167 | snprintf(wps_display[1],sizeof(wps_display[1]),"%s", | ||
168 | "%pc/%pt"); | ||
169 | #endif | ||
170 | scroll_line = 0; | ||
171 | refresh_wps(true); | ||
147 | #else | 172 | #else |
148 | char buffer[64]; | 173 | char buffer[64]; |
149 | char ch = '/'; | 174 | char ch = '/'; |
@@ -169,8 +194,37 @@ static void draw_screen(struct mp3entry* id3) | |||
169 | } | 194 | } |
170 | case PLAY_DISPLAY_2LINEID3: | 195 | case PLAY_DISPLAY_2LINEID3: |
171 | { | 196 | { |
172 | int l = 0; | ||
173 | #ifdef HAVE_LCD_BITMAP | 197 | #ifdef HAVE_LCD_BITMAP |
198 | int l = 0; | ||
199 | |||
200 | #ifdef CUSTOM_WPS | ||
201 | snprintf(wps_display[l],sizeof(wps_display[l]),"%s","%fn"); | ||
202 | snprintf(wps_display[l++],sizeof(wps_display[l]),"%s","%it"); | ||
203 | snprintf(wps_display[l++],sizeof(wps_display[l]),"%s","%id"); | ||
204 | snprintf(wps_display[l++],sizeof(wps_display[l]),"%s","%ia"); | ||
205 | if(!global_settings.statusbar && font_height <= 8) | ||
206 | { | ||
207 | if(id3->vbr) | ||
208 | snprintf(wps_display[l++],sizeof(wps_display[l]),"%s", | ||
209 | "%fb kbit (avg)"); | ||
210 | else | ||
211 | snprintf(wps_display[l],sizeof(wps_display[l]),"%s", | ||
212 | "%fb kbit"); | ||
213 | snprintf(wps_display[l],sizeof(wps_display[l]),"%s", | ||
214 | "%ff Hz"); | ||
215 | } | ||
216 | else | ||
217 | { | ||
218 | if(id3->vbr) | ||
219 | snprintf(wps_display[l++],sizeof(wps_display[l]),"%s", | ||
220 | "%fb kbit(a) %ffHz"); | ||
221 | else | ||
222 | snprintf(wps_display[l],sizeof(wps_display[l]),"%s", | ||
223 | "%fb kbit %ffHz"); | ||
224 | } | ||
225 | scroll_line = 0; | ||
226 | refresh_wps(true); | ||
227 | #else | ||
174 | char buffer[64]; | 228 | char buffer[64]; |
175 | 229 | ||
176 | lcd_puts_scroll(0, l++, id3->path); | 230 | lcd_puts_scroll(0, l++, id3->path); |
@@ -200,13 +254,16 @@ static void draw_screen(struct mp3entry* id3) | |||
200 | 254 | ||
201 | lcd_puts(0, l++, buffer); | 255 | lcd_puts(0, l++, buffer); |
202 | } | 256 | } |
257 | #endif | ||
203 | #else | 258 | #else |
204 | #ifdef CUSTOM_WPS | 259 | #ifdef CUSTOM_WPS |
205 | display_custom_wps(0, l++, false, "%ia"); | 260 | snprintf(wps_display[0],sizeof(wps_display[0]),"%s","%ia"); |
206 | display_custom_wps(0, l++, true, "%it"); | 261 | snprintf(wps_display[1],sizeof(wps_display[1]),"%s","%it"); |
262 | scroll_line = 1; | ||
263 | refresh_wps(true); | ||
207 | #else | 264 | #else |
208 | lcd_puts(0, l++, id3->artist?id3->artist:"<no artist>"); | 265 | lcd_puts(0, 0, id3->artist?id3->artist:"<no artist>"); |
209 | lcd_puts_scroll(0, l++, id3->title?id3->title:"<no title>"); | 266 | lcd_puts_scroll(0, 1, id3->title?id3->title:"<no title>"); |
210 | #endif | 267 | #endif |
211 | #endif | 268 | #endif |
212 | break; | 269 | break; |
@@ -215,7 +272,12 @@ static void draw_screen(struct mp3entry* id3) | |||
215 | case PLAY_DISPLAY_1LINEID3: | 272 | case PLAY_DISPLAY_1LINEID3: |
216 | { | 273 | { |
217 | #ifdef CUSTOM_WPS | 274 | #ifdef CUSTOM_WPS |
218 | display_custom_wps(0, 0, true, "%pp/%pe: %fc"); | 275 | snprintf(wps_display[0],sizeof(wps_display[0]),"%s", |
276 | "%pp/%pe: %fc"); | ||
277 | snprintf(wps_display[1],sizeof(wps_display[1]),"%s", | ||
278 | "%pc/%pt"); | ||
279 | scroll_line = 0; | ||
280 | refresh_wps(true); | ||
219 | #else | 281 | #else |
220 | char buffer[64]; | 282 | char buffer[64]; |
221 | char ch = '/'; | 283 | char ch = '/'; |
@@ -234,17 +296,21 @@ static void draw_screen(struct mp3entry* id3) | |||
234 | #endif | 296 | #endif |
235 | break; | 297 | break; |
236 | } | 298 | } |
299 | #endif | ||
237 | #ifdef CUSTOM_WPS | 300 | #ifdef CUSTOM_WPS |
238 | case PLAY_DISPLAY_CUSTOM_WPS: | 301 | case PLAY_DISPLAY_CUSTOM_WPS: |
239 | { | 302 | { |
240 | if(custom_wps[0] == 0) | 303 | if(custom_wps[0] == 0) |
241 | snprintf(custom_wps, sizeof(custom_wps), | 304 | { |
305 | snprintf(wps_display[0],sizeof(wps_display[0]),"%s", | ||
242 | "Couldn't Load Custom WPS"); | 306 | "Couldn't Load Custom WPS"); |
243 | display_custom_wps(0, 0, true, custom_wps); | 307 | snprintf(wps_display[1],sizeof(wps_display[1]),"%s", |
308 | "%pc/%pt"); | ||
309 | } | ||
310 | refresh_wps(true); | ||
244 | break; | 311 | break; |
245 | } | 312 | } |
246 | #endif | 313 | #endif |
247 | #endif | ||
248 | } | 314 | } |
249 | } | 315 | } |
250 | status_draw(); | 316 | status_draw(); |
@@ -252,19 +318,108 @@ static void draw_screen(struct mp3entry* id3) | |||
252 | } | 318 | } |
253 | 319 | ||
254 | #ifdef CUSTOM_WPS | 320 | #ifdef CUSTOM_WPS |
321 | bool refresh_wps(bool refresh_scroll) | ||
322 | { | ||
323 | int l; | ||
324 | #ifdef CUSTOM_WPS | ||
325 | #ifdef HAVE_LCD_BITMAP | ||
326 | int bmp_time_line; | ||
327 | #endif | ||
328 | #endif | ||
329 | |||
330 | struct mp3entry* id3 = NULL; | ||
331 | id3 = mpeg_current_track(); | ||
332 | |||
333 | if(!id3) | ||
334 | { | ||
335 | lcd_stop_scroll(); | ||
336 | lcd_clear_display(); | ||
337 | return(false); | ||
338 | } | ||
339 | |||
340 | #ifdef HAVE_LCD_CHARCELL | ||
341 | for(l = 0; l <= 1; l++) | ||
342 | #else | ||
343 | for(l = 0; l <= 5; l++) | ||
344 | #endif | ||
345 | { | ||
346 | if(global_settings.wps_display == PLAY_DISPLAY_CUSTOM_WPS) | ||
347 | { | ||
348 | scroll_line = scroll_line_custom; | ||
349 | if(scroll_line != l) | ||
350 | display_custom_wps(0, l, false, custom_wps[l]); | ||
351 | else | ||
352 | if(refresh_scroll) | ||
353 | display_custom_wps(0, l, true, custom_wps[l]); | ||
354 | } | ||
355 | else | ||
356 | { | ||
357 | if(scroll_line != l) | ||
358 | display_custom_wps(0, l, false, wps_display[l]); | ||
359 | else | ||
360 | if(refresh_scroll) | ||
361 | display_custom_wps(0, l, true, wps_display[l]); | ||
362 | } | ||
363 | } | ||
364 | #ifdef HAVE_LCD_BITMAP | ||
365 | if(global_settings.statusbar) | ||
366 | bmp_time_line = 5; | ||
367 | else | ||
368 | bmp_time_line = 6; | ||
369 | snprintf(wps_display[bmp_time_line],sizeof(wps_display[bmp_time_line]), | ||
370 | "%s","Time: %pc/%pt"); | ||
371 | |||
372 | slidebar(0, LCD_HEIGHT-6, LCD_WIDTH, 6, id3->elapsed*100/id3->length, Grow_Right); | ||
373 | lcd_update(); | ||
374 | #endif | ||
375 | return(true); | ||
376 | } | ||
377 | |||
255 | bool load_custom_wps(void) | 378 | bool load_custom_wps(void) |
256 | { | 379 | { |
257 | int fd; | 380 | int fd; |
381 | int l = 0; | ||
382 | int numread = 1; | ||
383 | char cchr[0]; | ||
384 | |||
385 | for(l=0;l<=5;l++) | ||
386 | { | ||
387 | custom_wps[l][0] = 0; | ||
388 | } | ||
389 | l = 0; | ||
258 | 390 | ||
259 | fd = open("/wps.config", O_RDONLY); | 391 | fd = open("/wps.config", O_RDONLY); |
260 | if(-1 == fd) | 392 | if(-1 == fd) |
261 | { | 393 | { |
262 | custom_wps[0] = 0; | ||
263 | close(fd); | 394 | close(fd); |
264 | return(false); | 395 | return(false); |
265 | } | 396 | } |
266 | read(fd, custom_wps, sizeof(custom_wps)); | 397 | |
398 | while(l<=5) | ||
399 | { | ||
400 | numread = read(fd, cchr, 1); | ||
401 | if(numread==0) | ||
402 | break; | ||
403 | switch(cchr[0]) | ||
404 | { | ||
405 | case 10: /* LF */ | ||
406 | l++; | ||
407 | break; | ||
408 | case 13: /* CR ... Ignore it */ | ||
409 | break; | ||
410 | default: | ||
411 | snprintf(custom_wps[l], sizeof(custom_wps[l]), "%s%c", custom_wps[l], cchr[0]); | ||
412 | break; | ||
413 | } | ||
414 | } | ||
267 | close(fd); | 415 | close(fd); |
416 | |||
417 | scroll_line_custom = 0; | ||
418 | for(l=0;l<=5;l++) | ||
419 | { | ||
420 | if(custom_wps[l][0] == '%' && custom_wps[l][1] == 's') | ||
421 | scroll_line_custom = l; | ||
422 | } | ||
268 | return(true); | 423 | return(true); |
269 | } | 424 | } |
270 | 425 | ||
@@ -325,10 +480,6 @@ bool display_custom_wps(int x_val, int y_val, bool do_scroll, char *wps_string) | |||
325 | case 'd': /* ID3 Album/Disc */ | 480 | case 'd': /* ID3 Album/Disc */ |
326 | snprintf(tmpbuf, sizeof(tmpbuf), "%s", id3->album); | 481 | snprintf(tmpbuf, sizeof(tmpbuf), "%s", id3->album); |
327 | break; | 482 | break; |
328 | case '\r': | ||
329 | case '\n': | ||
330 | /* As of yet, do nothing with these */ | ||
331 | break; | ||
332 | } | 483 | } |
333 | break; | 484 | break; |
334 | case 'f': /* File Information */ | 485 | case 'f': /* File Information */ |
@@ -364,17 +515,13 @@ bool display_custom_wps(int x_val, int y_val, bool do_scroll, char *wps_string) | |||
364 | snprintf(tmpbuf, sizeof(tmpbuf), "%s", id3->path); | 515 | snprintf(tmpbuf, sizeof(tmpbuf), "%s", id3->path); |
365 | break; | 516 | break; |
366 | case 'n': /* File Name */ | 517 | case 'n': /* File Name */ |
367 | snprintf(tmpbuf, sizeof(tmpbuf), "%s", | 518 | snprintf(tmpbuf, sizeof(tmpbuf), "%s", |
368 | szLast?szLast:id3->path); | 519 | szLast?szLast:id3->path); |
369 | break; | 520 | break; |
370 | case 's': /* File Size (In Kilobytes) */ | 521 | case 's': /* File Size (In Kilobytes) */ |
371 | snprintf(tmpbuf, sizeof(tmpbuf), "%d", | 522 | snprintf(tmpbuf, sizeof(tmpbuf), "%d", |
372 | id3->filesize / 1024); | 523 | id3->filesize / 1024); |
373 | break; | 524 | break; |
374 | case '\r': | ||
375 | case '\n': | ||
376 | /* As of yet, do nothing with these */ | ||
377 | break; | ||
378 | } | 525 | } |
379 | break; | 526 | break; |
380 | case 'p': /* Playlist/Song Information */ | 527 | case 'p': /* Playlist/Song Information */ |
@@ -390,17 +537,13 @@ bool display_custom_wps(int x_val, int y_val, bool do_scroll, char *wps_string) | |||
390 | break; | 537 | break; |
391 | case 'c': /* Current Time in Song */ | 538 | case 'c': /* Current Time in Song */ |
392 | snprintf(tmpbuf, sizeof(tmpbuf), "%d:%02d", | 539 | snprintf(tmpbuf, sizeof(tmpbuf), "%d:%02d", |
393 | id3->elapsed / 60000, | 540 | (id3->elapsed + ff_rewind_count) / 60000, |
394 | id3->elapsed % 60000 / 1000); | 541 | (id3->elapsed + ff_rewind_count) % 60000 / 1000); |
395 | break; | 542 | break; |
396 | case 't': /* Total Time */ | 543 | case 't': /* Total Time */ |
397 | snprintf(tmpbuf, sizeof(tmpbuf), "%d:%02d", | 544 | snprintf(tmpbuf, sizeof(tmpbuf), "%d:%02d", |
398 | id3->elapsed / 60000, | 545 | id3->length / 60000, |
399 | id3->elapsed % 60000 / 1000); | 546 | id3->length % 60000 / 1000); |
400 | break; | ||
401 | case '\r': | ||
402 | case '\n': | ||
403 | /* As of yet, do nothing with these */ | ||
404 | break; | 547 | break; |
405 | } | 548 | } |
406 | break; | 549 | break; |
@@ -441,10 +584,6 @@ bool display_custom_wps(int x_val, int y_val, bool do_scroll, char *wps_string) | |||
441 | break; | 584 | break; |
442 | } | 585 | } |
443 | break; | 586 | break; |
444 | case '\r': | ||
445 | case '\n': | ||
446 | /* As of yet, do nothing with these */ | ||
447 | break; | ||
448 | default: | 587 | default: |
449 | switch(con_flag) | 588 | switch(con_flag) |
450 | { | 589 | { |
@@ -462,9 +601,11 @@ bool display_custom_wps(int x_val, int y_val, bool do_scroll, char *wps_string) | |||
462 | } | 601 | } |
463 | if(seek >= strlen(wps_string)) | 602 | if(seek >= strlen(wps_string)) |
464 | { | 603 | { |
465 | lcd_stop_scroll(); | ||
466 | if(do_scroll) | 604 | if(do_scroll) |
605 | { | ||
606 | lcd_stop_scroll(); | ||
467 | lcd_puts_scroll(x_val, y_val, buffer); | 607 | lcd_puts_scroll(x_val, y_val, buffer); |
608 | } | ||
468 | else | 609 | else |
469 | lcd_puts(x_val, y_val, buffer); | 610 | lcd_puts(x_val, y_val, buffer); |
470 | return(true); | 611 | return(true); |
@@ -541,38 +682,38 @@ int player_id3_show(void) | |||
541 | switch(menu_pos) | 682 | switch(menu_pos) |
542 | { | 683 | { |
543 | case 0: | 684 | case 0: |
544 | lcd_puts(0, 0, "Title"); | 685 | lcd_puts(0, 0, "[Title]"); |
545 | snprintf(scroll_text,sizeof(scroll_text), "%s", | 686 | snprintf(scroll_text,sizeof(scroll_text), "%s", |
546 | id3->title?id3->title:"<no title>"); | 687 | id3->title?id3->title:"<no title>"); |
547 | break; | 688 | break; |
548 | case 1: | 689 | case 1: |
549 | lcd_puts(0, 0, "Artist"); | 690 | lcd_puts(0, 0, "[Artist]"); |
550 | snprintf(scroll_text,sizeof(scroll_text), "%s", | 691 | snprintf(scroll_text,sizeof(scroll_text), "%s", |
551 | id3->artist?id3->artist:"<no artist>"); | 692 | id3->artist?id3->artist:"<no artist>"); |
552 | break; | 693 | break; |
553 | case 2: | 694 | case 2: |
554 | lcd_puts(0, 0, "Album"); | 695 | lcd_puts(0, 0, "[Album]"); |
555 | snprintf(scroll_text,sizeof(scroll_text), "%s", | 696 | snprintf(scroll_text,sizeof(scroll_text), "%s", |
556 | id3->album?id3->album:"<no album>"); | 697 | id3->album?id3->album:"<no album>"); |
557 | break; | 698 | break; |
558 | case 3: | 699 | case 3: |
559 | lcd_puts(0, 0, "Length"); | 700 | lcd_puts(0, 0, "[Length]"); |
560 | snprintf(scroll_text,sizeof(scroll_text), "%d:%02d", | 701 | snprintf(scroll_text,sizeof(scroll_text), "%d:%02d", |
561 | id3->length / 60000, | 702 | id3->length / 60000, |
562 | id3->length % 60000 / 1000 ); | 703 | id3->length % 60000 / 1000 ); |
563 | break; | 704 | break; |
564 | case 4: | 705 | case 4: |
565 | lcd_puts(0, 0, "Bitrate"); | 706 | lcd_puts(0, 0, "[Bitrate]"); |
566 | snprintf(scroll_text,sizeof(scroll_text), "%d kbps", | 707 | snprintf(scroll_text,sizeof(scroll_text), "%d kbps", |
567 | id3->bitrate); | 708 | id3->bitrate); |
568 | break; | 709 | break; |
569 | case 5: | 710 | case 5: |
570 | lcd_puts(0, 0, "Frequency"); | 711 | lcd_puts(0, 0, "[Frequency]"); |
571 | snprintf(scroll_text,sizeof(scroll_text), "%d kHz", | 712 | snprintf(scroll_text,sizeof(scroll_text), "%d kHz", |
572 | id3->frequency); | 713 | id3->frequency); |
573 | break; | 714 | break; |
574 | case 6: | 715 | case 6: |
575 | lcd_puts(0, 0, "Path"); | 716 | lcd_puts(0, 0, "[Path]"); |
576 | snprintf(scroll_text,sizeof(scroll_text), "%s", | 717 | snprintf(scroll_text,sizeof(scroll_text), "%s", |
577 | id3->path); | 718 | id3->path); |
578 | break; | 719 | break; |
@@ -594,6 +735,7 @@ int player_id3_show(void) | |||
594 | return(0); | 735 | return(0); |
595 | } | 736 | } |
596 | 737 | ||
738 | #ifndef CUSTOM_WPS | ||
597 | static void display_file_time(unsigned int elapsed, unsigned int length) | 739 | static void display_file_time(unsigned int elapsed, unsigned int length) |
598 | { | 740 | { |
599 | char buffer[32]; | 741 | char buffer[32]; |
@@ -633,6 +775,7 @@ static void display_file_time(unsigned int elapsed, unsigned int length) | |||
633 | } | 775 | } |
634 | #endif | 776 | #endif |
635 | } | 777 | } |
778 | #endif | ||
636 | 779 | ||
637 | void display_volume_level(int vol_level) | 780 | void display_volume_level(int vol_level) |
638 | { | 781 | { |
@@ -717,10 +860,9 @@ int wps_show(void) | |||
717 | bool pending_mute = true; /* Mute will go ON next time */ | 860 | bool pending_mute = true; /* Mute will go ON next time */ |
718 | int old_release_mask; | 861 | int old_release_mask; |
719 | int button; | 862 | int button; |
720 | int ff_rewind_count = 0; | 863 | unsigned int ff_rewind_step = 0; /* current rewind step size */ |
721 | unsigned int ff_rewind_step = 0; /* current rewind step size */ | 864 | unsigned int ff_rewind_max_step = 0; /* max rewind step size */ |
722 | unsigned int ff_rewind_max_step = 0; /* max rewind step size */ | 865 | long ff_rewind_accel_tick = 0; /* next time to bump ff/rewind step size */ |
723 | long ff_rewind_accel_tick = 0; /* next time to bump ff/rewind step size */ | ||
724 | bool ignore_keyup = true; | 866 | bool ignore_keyup = true; |
725 | bool restore = false; | 867 | bool restore = false; |
726 | 868 | ||
@@ -745,7 +887,7 @@ int wps_show(void) | |||
745 | if(mpeg_is_playing()) | 887 | if(mpeg_is_playing()) |
746 | { | 888 | { |
747 | id3 = mpeg_current_track(); | 889 | id3 = mpeg_current_track(); |
748 | // draw_screen(id3); | 890 | draw_screen(id3); |
749 | restore = true; | 891 | restore = true; |
750 | } | 892 | } |
751 | 893 | ||
@@ -860,16 +1002,16 @@ int wps_show(void) | |||
860 | { | 1002 | { |
861 | if (ff_rewind) | 1003 | if (ff_rewind) |
862 | { | 1004 | { |
863 | ff_rewind_count -= ff_rewind_step; | 1005 | ff_rewind_count -= ff_rewind_step; |
864 | if (global_settings.ff_rewind_accel != 0 && | 1006 | if (global_settings.ff_rewind_accel != 0 && |
865 | current_tick >= ff_rewind_accel_tick) | 1007 | current_tick >= ff_rewind_accel_tick) |
866 | { | 1008 | { |
867 | ff_rewind_step *= 2; | 1009 | ff_rewind_step *= 2; |
868 | if (ff_rewind_step > ff_rewind_max_step) | 1010 | if (ff_rewind_step > ff_rewind_max_step) |
869 | ff_rewind_step = ff_rewind_max_step; | 1011 | ff_rewind_step = ff_rewind_max_step; |
870 | ff_rewind_accel_tick = current_tick + | 1012 | ff_rewind_accel_tick = current_tick + |
871 | global_settings.ff_rewind_accel*HZ; | 1013 | global_settings.ff_rewind_accel*HZ; |
872 | } | 1014 | } |
873 | } | 1015 | } |
874 | else | 1016 | else |
875 | { | 1017 | { |
@@ -883,14 +1025,14 @@ int wps_show(void) | |||
883 | status_set_playmode(STATUS_FASTBACKWARD); | 1025 | status_set_playmode(STATUS_FASTBACKWARD); |
884 | status_draw(); | 1026 | status_draw(); |
885 | ff_rewind = true; | 1027 | ff_rewind = true; |
886 | ff_rewind_max_step = | 1028 | ff_rewind_max_step = |
887 | id3->length * FF_REWIND_MAX_PERCENT / 100; | 1029 | id3->length * FF_REWIND_MAX_PERCENT / 100; |
888 | ff_rewind_step = FF_REWIND_MIN_STEP; | 1030 | ff_rewind_step = FF_REWIND_MIN_STEP; |
889 | if (ff_rewind_step > ff_rewind_max_step) | 1031 | if (ff_rewind_step > ff_rewind_max_step) |
890 | ff_rewind_step = ff_rewind_max_step; | 1032 | ff_rewind_step = ff_rewind_max_step; |
891 | ff_rewind_count = -ff_rewind_step; | 1033 | ff_rewind_count = -ff_rewind_step; |
892 | ff_rewind_accel_tick = current_tick + | 1034 | ff_rewind_accel_tick = current_tick + |
893 | global_settings.ff_rewind_accel*HZ; | 1035 | global_settings.ff_rewind_accel*HZ; |
894 | } | 1036 | } |
895 | else | 1037 | else |
896 | break; | 1038 | break; |
@@ -899,8 +1041,12 @@ int wps_show(void) | |||
899 | if ((int)(id3->elapsed + ff_rewind_count) < 0) | 1041 | if ((int)(id3->elapsed + ff_rewind_count) < 0) |
900 | ff_rewind_count = -id3->elapsed; | 1042 | ff_rewind_count = -id3->elapsed; |
901 | 1043 | ||
1044 | #ifdef CUSTOM_WPS | ||
1045 | refresh_wps(false); | ||
1046 | #else | ||
902 | display_file_time(id3->elapsed + ff_rewind_count, | 1047 | display_file_time(id3->elapsed + ff_rewind_count, |
903 | id3->length); | 1048 | id3->length); |
1049 | #endif | ||
904 | } | 1050 | } |
905 | break; | 1051 | break; |
906 | 1052 | ||
@@ -909,16 +1055,16 @@ int wps_show(void) | |||
909 | { | 1055 | { |
910 | if (ff_rewind) | 1056 | if (ff_rewind) |
911 | { | 1057 | { |
912 | ff_rewind_count += ff_rewind_step; | 1058 | ff_rewind_count += ff_rewind_step; |
913 | if (global_settings.ff_rewind_accel != 0 && | 1059 | if (global_settings.ff_rewind_accel != 0 && |
914 | current_tick >= ff_rewind_accel_tick) | 1060 | current_tick >= ff_rewind_accel_tick) |
915 | { | 1061 | { |
916 | ff_rewind_step *= 2; | 1062 | ff_rewind_step *= 2; |
917 | if (ff_rewind_step > ff_rewind_max_step) | 1063 | if (ff_rewind_step > ff_rewind_max_step) |
918 | ff_rewind_step = ff_rewind_max_step; | 1064 | ff_rewind_step = ff_rewind_max_step; |
919 | ff_rewind_accel_tick = current_tick + | 1065 | ff_rewind_accel_tick = current_tick + |
920 | global_settings.ff_rewind_accel*HZ; | 1066 | global_settings.ff_rewind_accel*HZ; |
921 | } | 1067 | } |
922 | } | 1068 | } |
923 | else | 1069 | else |
924 | { | 1070 | { |
@@ -932,14 +1078,14 @@ int wps_show(void) | |||
932 | status_set_playmode(STATUS_FASTFORWARD); | 1078 | status_set_playmode(STATUS_FASTFORWARD); |
933 | status_draw(); | 1079 | status_draw(); |
934 | ff_rewind = true; | 1080 | ff_rewind = true; |
935 | ff_rewind_max_step = | 1081 | ff_rewind_max_step = |
936 | id3->length * FF_REWIND_MAX_PERCENT / 100; | 1082 | id3->length * FF_REWIND_MAX_PERCENT / 100; |
937 | ff_rewind_step = FF_REWIND_MIN_STEP; | 1083 | ff_rewind_step = FF_REWIND_MIN_STEP; |
938 | if (ff_rewind_step > ff_rewind_max_step) | 1084 | if (ff_rewind_step > ff_rewind_max_step) |
939 | ff_rewind_step = ff_rewind_max_step; | 1085 | ff_rewind_step = ff_rewind_max_step; |
940 | ff_rewind_count = ff_rewind_step; | 1086 | ff_rewind_count = ff_rewind_step; |
941 | ff_rewind_accel_tick = current_tick + | 1087 | ff_rewind_accel_tick = current_tick + |
942 | global_settings.ff_rewind_accel*HZ; | 1088 | global_settings.ff_rewind_accel*HZ; |
943 | } | 1089 | } |
944 | else | 1090 | else |
945 | break; | 1091 | break; |
@@ -948,8 +1094,12 @@ int wps_show(void) | |||
948 | if ((id3->elapsed + ff_rewind_count) > id3->length) | 1094 | if ((id3->elapsed + ff_rewind_count) > id3->length) |
949 | ff_rewind_count = id3->length - id3->elapsed; | 1095 | ff_rewind_count = id3->length - id3->elapsed; |
950 | 1096 | ||
1097 | #ifdef CUSTOM_WPS | ||
1098 | refresh_wps(false); | ||
1099 | #else | ||
951 | display_file_time(id3->elapsed + ff_rewind_count, | 1100 | display_file_time(id3->elapsed + ff_rewind_count, |
952 | id3->length); | 1101 | id3->length); |
1102 | #endif | ||
953 | } | 1103 | } |
954 | break; | 1104 | break; |
955 | 1105 | ||
@@ -1276,7 +1426,11 @@ int wps_show(void) | |||
1276 | restore = true; | 1426 | restore = true; |
1277 | 1427 | ||
1278 | if (id3) | 1428 | if (id3) |
1429 | #ifdef CUSTOM_WPS | ||
1430 | refresh_wps(false); | ||
1431 | #else | ||
1279 | display_file_time(id3->elapsed, id3->length); | 1432 | display_file_time(id3->elapsed, id3->length); |
1433 | #endif | ||
1280 | 1434 | ||
1281 | /* save resume data */ | 1435 | /* save resume data */ |
1282 | if ( id3 && | 1436 | if ( id3 && |
@@ -1300,7 +1454,11 @@ int wps_show(void) | |||
1300 | restore = false; | 1454 | restore = false; |
1301 | draw_screen(id3); | 1455 | draw_screen(id3); |
1302 | if (mpeg_is_playing() && id3) | 1456 | if (mpeg_is_playing() && id3) |
1457 | #ifdef CUSTOM_WPS | ||
1458 | refresh_wps(false); | ||
1459 | #else | ||
1303 | display_file_time(id3->elapsed, id3->length); | 1460 | display_file_time(id3->elapsed, id3->length); |
1461 | #endif | ||
1304 | } | 1462 | } |
1305 | } | 1463 | } |
1306 | } | 1464 | } |
diff --git a/apps/wps.h b/apps/wps.h index 01744216ad..d181273408 100644 --- a/apps/wps.h +++ b/apps/wps.h | |||
@@ -21,8 +21,6 @@ | |||
21 | #include "id3.h" | 21 | #include "id3.h" |
22 | #include "playlist.h" | 22 | #include "playlist.h" |
23 | 23 | ||
24 | /* #define CUSTOM_WPS */ | ||
25 | |||
26 | extern bool keys_locked; | 24 | extern bool keys_locked; |
27 | 25 | ||
28 | int wps_show(void); | 26 | int wps_show(void); |
@@ -30,6 +28,7 @@ int wps_show(void); | |||
30 | #ifdef CUSTOM_WPS | 28 | #ifdef CUSTOM_WPS |
31 | bool load_custom_wps(void); | 29 | bool load_custom_wps(void); |
32 | bool display_custom_wps(int x_val, int y_val, bool do_scroll, char *wps_string); | 30 | bool display_custom_wps(int x_val, int y_val, bool do_scroll, char *wps_string); |
31 | bool refresh_wps(bool refresh_scroll); | ||
33 | #endif | 32 | #endif |
34 | 33 | ||
35 | #endif | 34 | #endif |