summaryrefslogtreecommitdiff
path: root/apps
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 /apps
parent97c4694bc2b82f4f2274b277f8bce22aaf348a22 (diff)
downloadrockbox-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.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 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();
}
}