summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Gordon <rockbox@jdgordon.info>2007-08-05 10:25:00 +0000
committerJonathan Gordon <rockbox@jdgordon.info>2007-08-05 10:25:00 +0000
commit8d4d5f67ea9134e9a108eb18e1533c6b84c0ff84 (patch)
treeecbee74a4193fc7fb2de0d1d03f8c3874f673d20
parent97c4694bc2b82f4f2274b277f8bce22aaf348a22 (diff)
downloadrockbox-8d4d5f67ea9134e9a108eb18e1533c6b84c0ff84.tar.gz
rockbox-8d4d5f67ea9134e9a108eb18e1533c6b84c0ff84.zip
Address FS#6310 - shows an "infinite" slider when deleting/copying/moving files.
maybe add this to other parts of the code so it doesnt look like the ui has stalled git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14189 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/gui/scrollbar.c20
-rw-r--r--apps/gui/scrollbar.h1
-rw-r--r--apps/onplay.c23
3 files changed, 43 insertions, 1 deletions
diff --git a/apps/gui/scrollbar.c b/apps/gui/scrollbar.c
index b9038d902b..e2e70fd9fb 100644
--- a/apps/gui/scrollbar.c
+++ b/apps/gui/scrollbar.c
@@ -241,4 +241,24 @@ void gui_bitmap_scrollbar_draw(struct screen * screen, struct bitmap bm, int x,
241#endif 241#endif
242 } 242 }
243} 243}
244
245void show_busy_slider(struct screen *s, int x, int y, int width, int height)
246{
247 static int start = 0, dir = 1;
248 gui_scrollbar_draw(s, x, y, width, height, 100,
249 start, start+20, HORIZONTAL);
250#if NB_SCREENS > 1
251 if (s->screen_type == SCREEN_MAIN)
252 {
253#endif
254 start += (dir*2);
255 if (start > 79)
256 dir = -1;
257 else if (start < 1)
258 dir = 1;
259#if NB_SCREENS > 1
260 }
261#endif
262}
263
244#endif /* HAVE_LCD_BITMAP */ 264#endif /* HAVE_LCD_BITMAP */
diff --git a/apps/gui/scrollbar.h b/apps/gui/scrollbar.h
index 40279a1a9d..9e60730de0 100644
--- a/apps/gui/scrollbar.h
+++ b/apps/gui/scrollbar.h
@@ -55,5 +55,6 @@ extern void gui_bitmap_scrollbar_draw(struct screen * screen, struct bitmap bm,
55 int width, int height, int items, 55 int width, int height, int items,
56 int min_shown, int max_shown, 56 int min_shown, int max_shown,
57 unsigned flags); 57 unsigned flags);
58extern void show_busy_slider(struct screen *s, int x, int y, int width, int height);
58#endif /* HAVE_LCD_BITMAP */ 59#endif /* HAVE_LCD_BITMAP */
59#endif /* _GUI_SCROLLBAR_H_ */ 60#endif /* _GUI_SCROLLBAR_H_ */
diff --git a/apps/onplay.c b/apps/onplay.c
index ea73dbbada..f09913e312 100644
--- a/apps/onplay.c
+++ b/apps/onplay.c
@@ -487,8 +487,13 @@ static int remove_dir(char* dirname, int len)
487 } 487 }
488 else 488 else
489 { /* remove a file */ 489 { /* remove a file */
490#ifdef HAVE_LCD_BITMAP
490 FOR_NB_SCREENS(i) 491 FOR_NB_SCREENS(i)
491 screens[i].puts_scroll(0,2,entry->d_name); 492 {
493 show_busy_slider(&screens[i], 2, 3*screens[i].char_height,
494 LCD_WIDTH-4, screens[i].char_height);
495 }
496#endif
492 result = remove(dirname); 497 result = remove(dirname);
493 } 498 }
494#ifdef HAVE_LCD_BITMAP 499#ifdef HAVE_LCD_BITMAP
@@ -661,6 +666,21 @@ static bool clipboard_copy(void)
661 return clipboard_clip(true); 666 return clipboard_clip(true);
662} 667}
663 668
669#ifdef HAVE_LCD_BITMAP
670static inline void draw_slider(void)
671{
672 int i;
673 FOR_NB_SCREENS(i)
674 {
675 show_busy_slider(&screens[i], 2, LCD_HEIGHT/4,
676 LCD_WIDTH-4, screens[i].char_height);
677 screens[i].update();
678 }
679}
680#else
681#define draw_slider()
682#endif
683
664/* Paste a file to a new directory. Will overwrite always. */ 684/* Paste a file to a new directory. Will overwrite always. */
665static bool clipboard_pastefile(const char *src, const char *target, bool copy) 685static bool clipboard_pastefile(const char *src, const char *target, bool copy)
666{ 686{
@@ -721,6 +741,7 @@ static bool clipboard_pastefile(const char *src, const char *target, bool copy)
721 } 741 }
722 742
723 bytesread -= byteswritten; 743 bytesread -= byteswritten;
744 draw_slider();
724 } 745 }
725 } 746 }
726 747