summaryrefslogtreecommitdiff
path: root/playlist.c
diff options
context:
space:
mode:
authorGravatar Alexey Yakovenko <wakeroid@gmail.com>2010-01-03 19:49:33 +0100
committerGravatar Alexey Yakovenko <wakeroid@gmail.com>2010-01-03 19:49:33 +0100
commitaae5749a8cf836f1846ed1f73abce36cbca2cfe8 (patch)
tree121a83bfc9f53e239ab188a19877f276fe0e50bd /playlist.c
parentfa519319f3c31f7ca63740c953c35dd4dc9e4b4a (diff)
added elapsed time conversion to pl_format_title
Diffstat (limited to 'playlist.c')
-rw-r--r--playlist.c53
1 files changed, 39 insertions, 14 deletions
diff --git a/playlist.c b/playlist.c
index 40b43c0d..291b345f 100644
--- a/playlist.c
+++ b/playlist.c
@@ -1601,6 +1601,25 @@ pl_format_item_queue (playItem_t *it, char *s, int size) {
return initsize-size;
}
+static void
+pl_format_time (float t, char *dur, int size) {
+ if (t >= 0) {
+ int hourdur = t / (60 * 60);
+ int mindur = (t - hourdur * 60 * 60) / 60;
+ int secdur = t - hourdur*60*60 - mindur * 60;
+
+ if (hourdur) {
+ snprintf (dur, size, "%d:%02d:%02d", hourdur, mindur, secdur);
+ }
+ else {
+ snprintf (dur, size, "%d:%02d", mindur, secdur);
+ }
+ }
+ else {
+ strcpy (dur, "-:--");
+ }
+}
+
static const char *
pl_get_meta_cached (playItem_t *it, const char *meta, const char *ret, const char *def) {
if (!ret) {
@@ -1617,32 +1636,30 @@ pl_format_duration (playItem_t *it, const char *ret, char *dur, int size) {
if (ret) {
return ret;
}
- if (it->_duration >= 0) {
- int hourdur = it->_duration / (60 * 60);
- int mindur = (it->_duration - hourdur * 60 * 60) / 60;
- int secdur = it->_duration - hourdur*60*60 - mindur * 60;
+ pl_format_time (it->_duration, dur, size);
+ return dur;
+}
- if (hourdur) {
- snprintf (dur, size, "%d:%02d:%02d", hourdur, mindur, secdur);
- }
- else {
- snprintf (dur, size, "%d:%02d", mindur, secdur);
- }
- }
- else {
- strcpy (dur, "-:--");
+static const char *
+pl_format_elapsed (const char *ret, char *elapsed, int size) {
+ if (ret) {
+ return ret;
}
- return dur;
+ float playpos = streamer_get_playpos ();
+ pl_format_time (playpos, elapsed, size);
+ return elapsed;
}
int
pl_format_title (playItem_t *it, char *s, int size, int id, const char *fmt) {
char dur[50];
+ char elp[50];
const char *artist = NULL;
const char *album = NULL;
const char *track = NULL;
const char *title = NULL;
const char *duration = NULL;
+ const char *elapsed = NULL;
const char *year = NULL;
const char *genre = NULL;
const char *comment = NULL;
@@ -1742,6 +1759,14 @@ pl_format_title (playItem_t *it, char *s, int size, int id, const char *fmt) {
n--;
}
}
+ else if (*fmt == 'e') {
+ // what a hack..
+ const char *value = (elapsed = pl_format_elapsed (elapsed, elp, sizeof (elp)));
+ while (n > 0 && *value) {
+ *s++ = *value++;
+ n--;
+ }
+ }
else {
*s++ = *fmt;
n--;