/*
* 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
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+/** @file disobedience/queue-generic.h
+ * @brief Disobedience queue widgets
+ */
#ifndef QUEUE_GENERIC_H
#define QUEUE_GENERIC_H
const char *name;
/** @brief Initialization function */
- void (*init)(void);
+ void (*init)(struct queuelike *ql);
/** @brief Columns */
const struct queue_column *columns;
/** @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 {
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);
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 */