X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/132a5a4a47f9dbc7c52ee15234d70258c59ccf8e..7e702780a082853b950bacf6dad486b94a4ae789:/disobedience/queue-generic.h diff --git a/disobedience/queue-generic.h b/disobedience/queue-generic.h index b73d90a..2b8b8ef 100644 --- a/disobedience/queue-generic.h +++ b/disobedience/queue-generic.h @@ -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 */