diff options
Diffstat (limited to 'apps/plugins/lib/mul_id3.c')
-rw-r--r-- | apps/plugins/lib/mul_id3.c | 72 |
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 */ |
197 | static const char *video_exts[] = {"mpg","mpeg","mpv","m2v"}; | 197 | static const char *video_exts[] = {"mpg","mpeg","mpv","m2v"}; |
198 | 198 | ||
199 | static void prn(const char *str, int y) | 199 | static 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 | |||
207 | void 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 | |||
230 | void 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 | } |