chiark / gitweb /
Fill playlist queulike. Selection is borked.
[disorder] / disobedience / queue-generic.h
index b73d90ab1924234ca402507e19eef1e8db152e4c..2b8b8ef1758fb2fb33b4daa76415fdf564bd2081 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * This file is part of DisOrder
- * Copyright (C) 2006-2008 Richard Kettlewell
+ * Copyright (C) 2006-2009 Richard Kettlewell
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -55,7 +55,7 @@ struct queuelike {
   const char *name;
   
   /** @brief Initialization function */
-  void (*init)(void);
+  void (*init)(struct queuelike *ql);
 
   /** @brief Columns */
   const struct queue_column *columns;
@@ -90,6 +90,20 @@ struct queuelike {
 
   /** @brief Menu callbacks */
   struct tabtype tabtype;
+
+  /** @brief Drag-drop callback, or NULL for no drag+drop
+   * @param ql Owning queuelike
+   * @param ntracks Number of tracks to be dropped
+   * @param tracks List of track names
+   * @param ids List of track IDs
+   * @param after_me Drop after this or NULL to drop at head
+   *
+   * If the rearrangement is impossible then the displayed queue must be put
+   * back.
+   */
+  void (*drop)(struct queuelike *ql, int ntracks, char **tracks, char **ids,
+               struct queue_entry *after_me);
+
 };
 
 enum {
@@ -134,10 +148,14 @@ void ql_remove_activate(GtkMenuItem *menuitem,
 int ql_play_sensitive(void *extra);
 void ql_play_activate(GtkMenuItem *menuitem,
                       gpointer user_data);
+int ql_adopt_sensitive(void *extra);
+void ql_adopt_activate(GtkMenuItem *menuitem,
+                       gpointer user_data);
 gboolean ql_button_release(GtkWidget *widget,
                            GdkEventButton *event,
                            gpointer user_data);
 GtkWidget *init_queuelike(struct queuelike *ql);
+void destroy_queuelike(struct queuelike *ql);
 void ql_update_list_store(struct queuelike *ql) ;
 void ql_update_row(struct queue_entry *q,
                    GtkTreeIter *iter);
@@ -154,6 +172,8 @@ const char *column_length(const struct queue_entry *q,
 struct tabtype *ql_tabtype(struct queuelike *ql);
 struct queue_entry *ql_iter_to_q(GtkTreeModel *model,
                                  GtkTreeIter *iter);
+struct queue_entry *ql_path_to_q(GtkTreeModel *model,
+                                 GtkTreePath *path);
 
 #endif /* QUEUE_GENERIC_H */