chiark / gitweb /
Refetch queue on pause/resume so that start times are always right (or
[disorder] / disobedience / queue-generic.c
index 5f27bd9ae11341477b459973c4ebb3a0d6acacf7..5759915c62412c25569ef978b7f4fe117ebaa6af 100644 (file)
  * NB that while in the server the playing track is not in the queue, in
  * Disobedience, the playing does live in @c ql_queue.q, despite its different
  * status to everything else found in that list.
+ *
+ * To do:
+ * - random play icon sensitivity is wrong (onl) if changed from edit menu
+ * - drag and drop queue rearrangement
+ * - display playing row in a different color?
  */
 #include "disobedience.h"
 #include "queue-generic.h"
@@ -380,11 +385,18 @@ GtkWidget *init_queuelike(struct queuelike *ql) {
   /* Create cell renderers and label columns */
   for(int n = 0; n < ql->ncolumns; ++n) {
     GtkCellRenderer *r = gtk_cell_renderer_text_new();
+    if(ql->columns[n].flags & COL_ELLIPSIZE)
+      g_object_set(r, "ellipsize", PANGO_ELLIPSIZE_END, (char *)0);
+    if(ql->columns[n].flags & COL_RIGHT)
+      g_object_set(r, "xalign", (gfloat)1.0, (char *)0);
     GtkTreeViewColumn *c = gtk_tree_view_column_new_with_attributes
       (ql->columns[n].name,
        r,
        "text", n,
        (char *)0);
+    g_object_set(c, "resizable", TRUE, (char *)0);
+    if(ql->columns[n].flags & COL_EXPAND)
+      g_object_set(c, "expand", TRUE, (char *)0);
     gtk_tree_view_append_column(GTK_TREE_VIEW(ql->view), c);
   }
 
@@ -392,10 +404,6 @@ GtkWidget *init_queuelike(struct queuelike *ql) {
   ql->selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(ql->view));
   gtk_tree_selection_set_mode(ql->selection, GTK_SELECTION_MULTIPLE);
 
-  /* Remember what the view belongs to */
-  //g_object_set_data(G_OBJECT(ql->view), "type", (void *)&tabtype_queue);
-  /* TODO tabtype */
-  g_object_set_data(G_OBJECT(ql->view), "queue", ql);
   /* Catch button presses */
   g_signal_connect(ql->view, "button-press-event",
                    G_CALLBACK(ql_button_release), ql);
@@ -405,7 +413,9 @@ GtkWidget *init_queuelike(struct queuelike *ql) {
 
   ql->init();
 
-  return scroll_widget(ql->view);
+  GtkWidget *scrolled = scroll_widget(ql->view);
+  g_object_set_data(G_OBJECT(scrolled), "type", (void *)ql_tabtype(ql));
+  return scrolled;
 }
 
 /*