summaryrefslogtreecommitdiff
path: root/apps/wps.c
diff options
context:
space:
mode:
authorJustin Heiner <jheiner@rockbox.org>2002-08-29 05:41:35 +0000
committerJustin Heiner <jheiner@rockbox.org>2002-08-29 05:41:35 +0000
commit8097ee6af1ba6a19015532c49d301a81c348aa53 (patch)
tree8c8e464ad655f41d325e6245a14985113e05dad1 /apps/wps.c
parentde14e53c669adc033691da5c2f32825f3418f7d5 (diff)
downloadrockbox-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
Diffstat (limited to 'apps/wps.c')
-rw-r--r--apps/wps.c340
1 files changed, 249 insertions, 91 deletions
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;
70bool device_muted = false; 71bool device_muted = false;
71static bool ff_rewind = false; 72static bool ff_rewind = false;
72static bool paused = false; 73static bool paused = false;
74int ff_rewind_count = 0;
73 75
74#ifdef CUSTOM_WPS 76#ifdef CUSTOM_WPS
75static char custom_wps[64]; 77static char custom_wps[5][64];
78static char wps_display[5][64];
79static int scroll_line;
80static int scroll_line_custom;
76#endif 81#endif
77 82
78static void draw_screen(struct mp3entry* id3) 83static 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
321bool 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
255bool load_custom_wps(void) 378bool 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
597static void display_file_time(unsigned int elapsed, unsigned int length) 739static 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
637void display_volume_level(int vol_level) 780void 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}