From f53630a168a6793da9fb8e5d1318c03a78cf0cb6 Mon Sep 17 00:00:00 2001 From: Jens Arnold Date: Sat, 21 Feb 2009 22:22:05 +0000 Subject: [PATCH] Display duration for audio files, by special demand and because it was easy to add. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20080 a1c6a512-1295-4272-9138-f99709370657 --- apps/plugins/properties.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/apps/plugins/properties.c b/apps/plugins/properties.c index ce9bfa04a2..81e10812cc 100644 --- a/apps/plugins/properties.c +++ b/apps/plugins/properties.c @@ -35,6 +35,7 @@ char str_time[64]; char str_title[MAX_PATH]; char str_artist[MAX_PATH]; char str_album[MAX_PATH]; +char str_duration[32]; int num_properties; @@ -103,6 +104,7 @@ static bool file_properties(char* selected_file) if (!rb->mp3info(&id3, selected_file)) #endif { + long dur = id3.length / 1000; /* seconds */ rb->snprintf(str_artist, sizeof str_artist, "Artist: %s", id3.artist ? id3.artist : ""); rb->snprintf(str_title, sizeof str_title, @@ -110,6 +112,21 @@ static bool file_properties(char* selected_file) rb->snprintf(str_album, sizeof str_album, "Album: %s", id3.album ? id3.album : ""); num_properties += 3; + + if (dur > 0) + { + if (dur < 3600) + rb->snprintf(str_duration, sizeof str_duration, + "Duration: %d:%02d", (int)(dur / 60), + (int)(dur % 60)); + else + rb->snprintf(str_duration, sizeof str_duration, + "Duration: %d:%02d:%02d", + (int)(dur / 3600), + (int)(dur % 3600 / 60), + (int)(dur % 60)); + num_properties++; + } } #if (CONFIG_CODEC == SWCODEC) rb->close(fd); @@ -243,6 +260,9 @@ char * get_props(int selected_item, void* data, char *buffer, size_t buffer_len) case 7: rb->strncpy(buffer, its_a_dir ? "" : str_album, buffer_len); break; + case 8: + rb->strncpy(buffer, its_a_dir ? "" : str_duration, buffer_len); + break; default: rb->strncpy(buffer, "ERROR", buffer_len); break;