2 * This file is part of DisOrder
3 * Copyright (C) 2006-2008 Richard Kettlewell
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
20 #ifndef QUEUE_GENERIC_H
21 #define QUEUE_GENERIC_H
23 /** @brief Definition of a column */
25 /** @brief Column name */
28 /** @brief Compute value for this column */
29 const char *(*value
)(const struct queue_entry
*q
,
32 /** @brief Passed to value() */
39 /** @brief An item in the queue's popup menu */
40 struct queue_menuitem
{
41 /** @brief Menu item name */
44 /** @brief Called to activate the menu item */
45 void (*activate
)(GtkMenuItem
*menuitem
,
48 /** @brief Called to determine whether the menu item is usable.
50 * Returns @c TRUE if it should be sensitive and @c FALSE otherwise.
52 int (*sensitive
)(struct queuelike
*ql
);
54 /** @brief Signal handler ID */
57 /** @brief Widget for menu item */
61 /** @brief Definition of a queue-like window */
64 /* Things filled in by the caller: */
66 /** @brief Initialization function */
70 const struct queue_column
*columns
;
72 /** @brief Number of columns in this queuelike */
75 /** @brief Items for popup menu */
76 struct queue_menuitem
*menuitems
;
78 /** @brief Number of menu items */
83 /** @brief The head of the queue */
84 struct queue_entry
*q
;
86 /* Things created by the implementation: */
88 /** @brief The list store */
91 /** @brief The tree view */
94 /** @brief The selection */
95 GtkTreeSelection
*selection
;
97 /** @brief The popup menu */
101 extern struct queuelike ql_queue
;
102 extern struct queuelike ql_recent
;
103 extern struct queuelike ql_added
;
105 extern time_t last_playing
;
107 int ql_selectall_sensitive(struct queuelike
*ql
);
108 void ql_selectall_activate(GtkMenuItem
*menuitem
,
110 int ql_selectnone_sensitive(struct queuelike
*ql
);
111 void ql_selectnone_activate(GtkMenuItem
*menuitem
,
113 int ql_properties_sensitive(struct queuelike
*ql
);
114 void ql_properties_activate(GtkMenuItem
*menuitem
,
116 int ql_scratch_sensitive(struct queuelike
*ql
);
117 void ql_scratch_activate(GtkMenuItem
*menuitem
,
119 int ql_remove_sensitive(struct queuelike
*ql
);
120 void ql_remove_activate(GtkMenuItem
*menuitem
,
122 int ql_play_sensitive(struct queuelike
*ql
);
123 void ql_play_activate(GtkMenuItem
*menuitem
,
125 gboolean
ql_button_release(GtkWidget
*widget
,
126 GdkEventButton
*event
,
128 GtkWidget
*init_queuelike(struct queuelike
*ql
);
129 void ql_update_list_store(struct queuelike
*ql
) ;
130 void ql_update_row(struct queue_entry
*q
,
132 void ql_new_queue(struct queuelike
*ql
,
133 struct queue_entry
*newq
);
134 const char *column_when(const struct queue_entry
*q
,
136 const char *column_who(const struct queue_entry
*q
,
138 const char *column_namepart(const struct queue_entry
*q
,
140 const char *column_length(const struct queue_entry
*q
,
143 #endif /* QUEUE_GENERIC_H */