summaryrefslogtreecommitdiff
path: root/apps/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins')
-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 ce9bfa0..81e1081 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;