X-Git-Url: https://git.distorted.org.uk/~mdw/disorder/blobdiff_plain/4d9a43ba02465613343ece6cacdac45cf651120b..6e19032aa4c34a5c6c900e558d8bfa88f8382bc0:/disobedience/queue.c diff --git a/disobedience/queue.c b/disobedience/queue.c index 60c7ca7..95ff0d5 100644 --- a/disobedience/queue.c +++ b/disobedience/queue.c @@ -157,6 +157,7 @@ static gboolean playing_periodic(gpointer attribute((unused)) data) { static void queue_init(struct queuelike attribute((unused)) *ql) { /* Arrange a callback whenever the playing state changes */ event_register("playing-changed", playing_changed, 0); + event_register("playing-started", playing_changed, 0); /* We reget both playing track and queue at pause/resume so that start times * can be computed correctly */ event_register("pause-changed", playing_changed, 0); @@ -204,9 +205,10 @@ static void queue_drop(struct queuelike attribute((unused)) *ql, /* Tell the server to move them. The log will tell us about the change (if * indeed it succeeds!), so no need to rearrange the model now. */ disorder_eclient_moveafter(client, + queue_drop_completed, after_me ? after_me->id : "", - ntracks, (const char **)ids, - queue_drop_completed, NULL); + (char **)ids, ntracks, + NULL); } else { /* You can't tell the server to insert after the playing track by ID, you * have to send "". */ @@ -214,9 +216,10 @@ static void queue_drop(struct queuelike attribute((unused)) *ql, after_me = NULL; /* Play the tracks */ disorder_eclient_playafter(client, + queue_drop_completed, after_me ? after_me->id : "", - ntracks, (const char **)tracks, - queue_drop_completed, NULL); + (char **)tracks, ntracks, + NULL); } } @@ -232,12 +235,12 @@ static const struct queue_column queue_columns[] = { /** @brief Pop-up menu for queue */ static struct menuitem queue_menuitems[] = { - { "Track properties", ql_properties_activate, ql_properties_sensitive, 0, 0 }, - { "Select all tracks", ql_selectall_activate, ql_selectall_sensitive, 0, 0 }, - { "Deselect all tracks", ql_selectnone_activate, ql_selectnone_sensitive, 0, 0 }, - { "Scratch playing track", ql_scratch_activate, ql_scratch_sensitive, 0, 0 }, - { "Remove track from queue", ql_remove_activate, ql_remove_sensitive, 0, 0 }, - { "Adopt track", ql_adopt_activate, ql_adopt_sensitive, 0, 0 }, + { "Track properties", GTK_STOCK_PROPERTIES, ql_properties_activate, ql_properties_sensitive, 0, 0 }, + { "Select all tracks", GTK_STOCK_SELECT_ALL, ql_selectall_activate, ql_selectall_sensitive, 0, 0 }, + { "Deselect all tracks", NULL, ql_selectnone_activate, ql_selectnone_sensitive, 0, 0 }, + { "Scratch playing track", GTK_STOCK_STOP, ql_scratch_activate, ql_scratch_sensitive, 0, 0 }, + { "Remove track from queue", GTK_STOCK_DELETE, ql_remove_activate, ql_remove_sensitive, 0, 0 }, + { "Adopt track", NULL, ql_adopt_activate, ql_adopt_sensitive, 0, 0 }, }; static const GtkTargetEntry queue_targets[] = { @@ -317,14 +320,14 @@ static void queue_set_playing_widget(const char attribute((unused)) *event, GtkLabel *w = callbackdata; if(playing_track) { + const char *artist = namepart(playing_track->track, "display", "artist"); + const char *album = namepart(playing_track->track, "display", "album"); 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); + byte_xasprintf(&text, "%s/%s/%s %s", artist, album, title, ldata); gtk_label_set_text(w, text); } else gtk_label_set_text(w, ""); @@ -332,6 +335,7 @@ static void queue_set_playing_widget(const char attribute((unused)) *event, GtkWidget *playing_widget(void) { GtkWidget *w = gtk_label_new(""); + gtk_misc_set_alignment(GTK_MISC(w), 1.0, 0); /* Spot changes to the playing track */ event_register("playing-track-changed", queue_set_playing_widget, @@ -344,7 +348,7 @@ GtkWidget *playing_widget(void) { event_register("periodic-fast", queue_set_playing_widget, w); - return w; + return frame_widget(w, NULL); } /*