X-Git-Url: https://git.distorted.org.uk/~mdw/disorder/blobdiff_plain/e03df0a5bce30b363ab422c779ce9fe9321cc027..4d9a43ba02465613343ece6cacdac45cf651120b:/disobedience/queue.c?ds=sidebyside diff --git a/disobedience/queue.c b/disobedience/queue.c index 00c44c2..60c7ca7 100644 --- a/disobedience/queue.c +++ b/disobedience/queue.c @@ -72,7 +72,7 @@ static void queue_playing_changed(void) { ql_new_queue(&ql_queue, q); /* Tell anyone who cares */ event_raise("queue-list-changed", q); - event_raise("playing-track-changed", q); + event_raise("playing-track-changed", playing_track); } /** @brief Update the queue itself */ @@ -309,6 +309,44 @@ int queued(const char *track) { return 0; } +/* Playing widget for mini-mode */ + +static void queue_set_playing_widget(const char attribute((unused)) *event, + void attribute((unused)) *eventdata, + void *callbackdata) { + GtkLabel *w = callbackdata; + + if(playing_track) { + const char *title = namepart(playing_track->track, "display", "title"); + const char *ldata = column_length(playing_track, NULL); + if(!ldata) + ldata = ""; + char *text; + fprintf(stderr, "title=%s\n", title); + fprintf(stderr, "ldata=%s\n", ldata); + byte_xasprintf(&text, "%s %s", title, ldata); + gtk_label_set_text(w, text); + } else + gtk_label_set_text(w, ""); +} + +GtkWidget *playing_widget(void) { + GtkWidget *w = gtk_label_new(""); + /* Spot changes to the playing track */ + event_register("playing-track-changed", + queue_set_playing_widget, + w); + /* Use the best-known name for it */ + event_register("lookups-complete", + queue_set_playing_widget, + w); + /* Keep the amount played so far up to date */ + event_register("periodic-fast", + queue_set_playing_widget, + w); + return w; +} + /* Local Variables: c-basic-offset:2