diff options
| author | Jonathan Gordon <rockbox@jdgordon.info> | 2007-08-05 10:25:00 +0000 |
|---|---|---|
| committer | Jonathan Gordon <rockbox@jdgordon.info> | 2007-08-05 10:25:00 +0000 |
| commit | 8d4d5f67ea9134e9a108eb18e1533c6b84c0ff84 (patch) | |
| tree | ecbee74a4193fc7fb2de0d1d03f8c3874f673d20 /apps | |
| parent | 97c4694bc2b82f4f2274b277f8bce22aaf348a22 (diff) | |
| download | rockbox-8d4d5f67ea9134e9a108eb18e1533c6b84c0ff84.zip rockbox-8d4d5f67ea9134e9a108eb18e1533c6b84c0ff84.tar.gz rockbox-8d4d5f67ea9134e9a108eb18e1533c6b84c0ff84.tar.bz2 rockbox-8d4d5f67ea9134e9a108eb18e1533c6b84c0ff84.tar.xz | |
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
Diffstat (limited to 'apps')
| -rw-r--r-- | apps/gui/scrollbar.c | 20 | ||||
| -rw-r--r-- | apps/gui/scrollbar.h | 1 | ||||
| -rw-r--r-- | apps/onplay.c | 23 |
3 files changed, 43 insertions, 1 deletions
diff --git a/apps/gui/scrollbar.c b/apps/gui/scrollbar.c index b9038d9..e2e70fd 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, #endif } } + +void show_busy_slider(struct screen *s, int x, int y, int width, int height) +{ + static int start = 0, dir = 1; + gui_scrollbar_draw(s, x, y, width, height, 100, + start, start+20, HORIZONTAL); +#if NB_SCREENS > 1 + if (s->screen_type == SCREEN_MAIN) + { +#endif + start += (dir*2); + if (start > 79) + dir = -1; + else if (start < 1) + dir = 1; +#if NB_SCREENS > 1 + } +#endif +} + #endif /* HAVE_LCD_BITMAP */ diff --git a/apps/gui/scrollbar.h b/apps/gui/scrollbar.h index 40279a1..9e60730 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, int width, int height, int items, int min_shown, int max_shown, unsigned flags); +extern void show_busy_slider(struct screen *s, int x, int y, int width, int height); #endif /* HAVE_LCD_BITMAP */ #endif /* _GUI_SCROLLBAR_H_ */ diff --git a/apps/onplay.c b/apps/onplay.c index ea73dbb..f09913e 100644 --- a/apps/onplay.c +++ b/apps/onplay.c @@ -487,8 +487,13 @@ static int remove_dir(char* dirname, int len) } else { /* remove a file */ +#ifdef HAVE_LCD_BITMAP FOR_NB_SCREENS(i) - screens[i].puts_scroll(0,2,entry->d_name); + { + show_busy_slider(&screens[i], 2, 3*screens[i].char_height, + LCD_WIDTH-4, screens[i].char_height); + } +#endif result = remove(dirname); } #ifdef HAVE_LCD_BITMAP @@ -661,6 +666,21 @@ static bool clipboard_copy(void) return clipboard_clip(true); } +#ifdef HAVE_LCD_BITMAP +static inline void draw_slider(void) +{ + int i; + FOR_NB_SCREENS(i) + { + show_busy_slider(&screens[i], 2, LCD_HEIGHT/4, + LCD_WIDTH-4, screens[i].char_height); + screens[i].update(); + } +} +#else +#define draw_slider() +#endif + /* Paste a file to a new directory. Will overwrite always. */ static bool clipboard_pastefile(const char *src, const char *target, bool copy) { @@ -721,6 +741,7 @@ static bool clipboard_pastefile(const char *src, const char *target, bool copy) } bytesread -= byteswritten; + draw_slider(); } } |