summaryrefslogtreecommitdiff
path: root/apps/plugins/lib/mul_id3.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/lib/mul_id3.c')
-rw-r--r--apps/plugins/lib/mul_id3.c72
1 files changed, 32 insertions, 40 deletions
diff --git a/apps/plugins/lib/mul_id3.c b/apps/plugins/lib/mul_id3.c
index c4b511c626..e88bbfe417 100644
--- a/apps/plugins/lib/mul_id3.c
+++ b/apps/plugins/lib/mul_id3.c
@@ -196,52 +196,45 @@ static const char *image_exts[] = {"bmp","jpg","jpe","jpeg","png","ppm"};
196/* and videos */ 196/* and videos */
197static const char *video_exts[] = {"mpg","mpeg","mpv","m2v"}; 197static const char *video_exts[] = {"mpg","mpeg","mpv","m2v"};
198 198
199static void prn(const char *str, int y) 199static void display_dir_stats_vp(struct dir_stats *stats, struct viewport *vp,
200 struct screen *display)
200{ 201{
201 rb->lcd_puts(0, y, str); 202 static bool initialized;
202#ifdef HAVE_REMOTE_LCD
203 rb->lcd_remote_puts(0, y, str);
204#endif
205}
206
207void display_dir_stats(struct dir_stats *stats)
208{
209 char buf[32];
210 int32_t lang_size_unit; 203 int32_t lang_size_unit;
211 unsigned long display_size = human_size(stats->byte_count, &lang_size_unit); 204 unsigned long display_size = human_size(stats->byte_count, &lang_size_unit);
212 rb->lcd_clear_display(); 205 struct viewport *last_vp = display->set_viewport(vp);
213#ifdef HAVE_REMOTE_LCD 206 display->clear_viewport();
214 rb->lcd_remote_clear_display(); 207 if (initialized)
215#endif
216 rb->snprintf(buf, sizeof(buf), "Files: %d (%lu %s)", stats->file_count,
217 display_size, rb->str(lang_size_unit));
218 prn(buf, 0);
219 rb->snprintf(buf, sizeof(buf), "Audio: %d", stats->audio_file_count);
220 prn(buf, 1);
221 if (stats->count_all)
222 { 208 {
223 rb->snprintf(buf, sizeof(buf), "Playlists: %d", stats->m3u_file_count); 209 display->putsf(0, 0, "Files: %d (%lu %s)", stats->file_count,
224 prn(buf, 2); 210 display_size, rb->str(lang_size_unit));
225 rb->snprintf(buf, sizeof(buf), "Images: %d", stats->img_file_count); 211 display->putsf(0, 1, "Audio: %d", stats->audio_file_count);
226 prn(buf, 3); 212 if (stats->count_all)
227 rb->snprintf(buf, sizeof(buf), "Videos: %d", stats->vid_file_count); 213 {
228 prn(buf, 4); 214 display->putsf(0, 2, "Playlists: %d", stats->m3u_file_count);
229 rb->snprintf(buf, sizeof(buf), "Directories: %d", stats->dir_count); 215 display->putsf(0, 3, "Images: %d", stats->img_file_count);
230 prn(buf, 5); 216 display->putsf(0, 4, "Videos: %d", stats->vid_file_count);
231 rb->snprintf(buf, sizeof(buf), "Max files in Dir: %d", 217 display->putsf(0, 5, "Directories: %d", stats->dir_count);
232 stats->max_files_in_dir); 218 display->putsf(0, 6, "Max files in Dir: %d", stats->max_files_in_dir);
233 prn(buf, 6); 219 }
220 else
221 display->putsf(0, 2, "Directories: %d", stats->dir_count);
234 } 222 }
235 else 223 else
224 initialized = true;
225
226 display->update_viewport();
227 display->set_viewport(last_vp);
228}
229
230void display_dir_stats(struct dir_stats *stats)
231{
232 struct viewport vps[NB_SCREENS];
233 FOR_NB_SCREENS(i)
236 { 234 {
237 rb->snprintf(buf, sizeof(buf), "Directories: %d", stats->dir_count); 235 rb->viewport_set_defaults(&vps[i], i);
238 prn(buf, 2); 236 display_dir_stats_vp(stats, &vps[i], rb->screens[i]);
239 } 237 }
240 rb->lcd_update();
241#ifdef HAVE_REMOTE_LCD
242 rb->lcd_remote_update();
243#endif
244
245} 238}
246 239
247/* Recursively scans directories in search of files 240/* Recursively scans directories in search of files
@@ -281,8 +274,7 @@ bool collect_dir_stats(struct dir_stats *stats, bool (*id3_cb)(const char*))
281 stats->dir_count++; /* new directory */ 274 stats->dir_count++; /* new directory */
282 if (*rb->current_tick - last_displayed > (HZ/2)) 275 if (*rb->current_tick - last_displayed > (HZ/2))
283 { 276 {
284 if (last_displayed) 277 display_dir_stats(stats);
285 display_dir_stats(stats);
286 last_displayed = *(rb->current_tick); 278 last_displayed = *(rb->current_tick);
287 } 279 }
288 } 280 }