summaryrefslogtreecommitdiffstats
path: root/apps/plugins/properties.c
diff options
context:
space:
mode:
authorJens Arnold <amiconn@rockbox.org>2009-02-21 22:22:05 +0000
committerJens Arnold <amiconn@rockbox.org>2009-02-21 22:22:05 +0000
commitf53630a168a6793da9fb8e5d1318c03a78cf0cb6 (patch)
tree0622d47756951049f0297d54a3b4a041396ed040 /apps/plugins/properties.c
parent1c7220491e9c45020239ba80316fe1ebdd010ffe (diff)
downloadrockbox-f53630a168a6793da9fb8e5d1318c03a78cf0cb6.tar.gz
rockbox-f53630a168a6793da9fb8e5d1318c03a78cf0cb6.zip
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
Diffstat (limited to 'apps/plugins/properties.c')
-rw-r--r--apps/plugins/properties.c20
1 files changed, 20 insertions, 0 deletions
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;