gui/model: Add support for gtk_tree_model_get_column_type()
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
This commit is contained in:
parent
6acee801ab
commit
ff81af24fc
27
gui/model.c
27
gui/model.c
|
@ -7,6 +7,19 @@ static const GTypeInfo queue_type_info;
|
|||
static const GInterfaceInfo queue_tree_model;
|
||||
static GObjectClass *parent_class = NULL;
|
||||
|
||||
static GType queue_columns[Q_MODEL_N_COLUMNS] = {
|
||||
[Q_MODEL_TRACK_NR] = G_TYPE_UINT,
|
||||
[Q_MODEL_TITLE] = G_TYPE_STRING,
|
||||
[Q_MODEL_LENGTH] = G_TYPE_STRING,
|
||||
[Q_MODEL_ARTIST] = G_TYPE_STRING,
|
||||
[Q_MODEL_ALBUM] = G_TYPE_STRING,
|
||||
[Q_MODEL_YEAR] = G_TYPE_UINT,
|
||||
[Q_MODEL_GENRE] = G_TYPE_STRING,
|
||||
[Q_MODEL_COUNT] = G_TYPE_UINT,
|
||||
[Q_MODEL_LAST_PLAY] = G_TYPE_STRING,
|
||||
[Q_MODEL_FILE_PATH] = G_TYPE_STRING,
|
||||
};
|
||||
|
||||
|
||||
static GtkTreeModelFlags _queue_model_get_flags(GtkTreeModel *model)
|
||||
{
|
||||
|
@ -15,7 +28,14 @@ static GtkTreeModelFlags _queue_model_get_flags(GtkTreeModel *model)
|
|||
|
||||
static gint _queue_model_get_n_columns(GtkTreeModel *model)
|
||||
{
|
||||
return 10;
|
||||
return Q_MODEL_N_COLUMNS;
|
||||
}
|
||||
|
||||
static GType _queue_model_get_column_type(GtkTreeModel *model, gint index)
|
||||
{
|
||||
g_return_val_if_fail(index >= 0 && index < Q_MODEL_N_COLUMNS,
|
||||
G_TYPE_INVALID);
|
||||
return queue_columns[index];
|
||||
}
|
||||
|
||||
static void _queue_model_init(GuiQueueModel *model)
|
||||
|
@ -40,8 +60,9 @@ static void _queue_model_class_init(GuiQueueModelClass *class)
|
|||
|
||||
static void _queue_tree_model_init(GtkTreeModelIface *iface)
|
||||
{
|
||||
iface->get_flags = _queue_model_get_flags;
|
||||
iface->get_n_columns = _queue_model_get_n_columns;
|
||||
iface->get_flags = _queue_model_get_flags;
|
||||
iface->get_n_columns = _queue_model_get_n_columns;
|
||||
iface->get_column_type = _queue_model_get_column_type;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -7,6 +7,21 @@
|
|||
|
||||
#define GUI_QUEUE_MODEL_TYPE (gui_queue_model_get_type())
|
||||
|
||||
enum queue_model_columns {
|
||||
Q_MODEL_TRACK_NR,
|
||||
Q_MODEL_TITLE,
|
||||
Q_MODEL_LENGTH,
|
||||
Q_MODEL_ARTIST,
|
||||
Q_MODEL_ALBUM,
|
||||
Q_MODEL_YEAR,
|
||||
Q_MODEL_GENRE,
|
||||
Q_MODEL_COUNT,
|
||||
Q_MODEL_LAST_PLAY,
|
||||
Q_MODEL_FILE_PATH,
|
||||
Q_MODEL_N_COLUMNS,
|
||||
};
|
||||
|
||||
|
||||
typedef struct _gui_queue_model GuiQueueModel;
|
||||
typedef struct _gui_queue_model_class GuiQueueModelClass;
|
||||
|
||||
|
|
|
@ -13,6 +13,8 @@
|
|||
|
||||
|
||||
#ifndef __cplusplus
|
||||
static inline gchar *lutos(long unsigned int u)
|
||||
{ return g_strdup_printf("%lu", u); }
|
||||
static inline gchar *stos(const char *s) { return g_strdup(s); }
|
||||
static inline gchar *utos(unsigned int u) { return g_strdup_printf("%u", u); }
|
||||
static inline gchar *ltos(long int l) { return g_strdup_printf("%lu", l); }
|
||||
|
@ -26,6 +28,7 @@ static inline gchar *ptos(void *p) { return g_strdup_printf("%p", p); }
|
|||
char *: stos, \
|
||||
const char *: stos, \
|
||||
bool: btos, \
|
||||
long unsigned int: lutos, \
|
||||
unsigned int: utos, \
|
||||
long int: ltos, \
|
||||
int: itos, \
|
||||
|
|
|
@ -8,6 +8,7 @@ static void test_model()
|
|||
{
|
||||
GuiQueueModel *model = gui_queue_model_new();
|
||||
GtkTreeModel *treemodel;
|
||||
GType type;
|
||||
|
||||
test_not_equal((void *)model, NULL);
|
||||
test_equal(GTK_IS_TREE_MODEL(model), true);
|
||||
|
@ -16,6 +17,31 @@ static void test_model()
|
|||
test_equal(gtk_tree_model_get_flags(treemodel), GTK_TREE_MODEL_LIST_ONLY);
|
||||
test_equal(gtk_tree_model_get_n_columns(treemodel), 10);
|
||||
|
||||
type = gtk_tree_model_get_column_type(treemodel, Q_MODEL_TRACK_NR);
|
||||
test_equal(type, G_TYPE_UINT);
|
||||
type = gtk_tree_model_get_column_type(treemodel, Q_MODEL_TITLE);
|
||||
test_equal(type, G_TYPE_STRING);
|
||||
type = gtk_tree_model_get_column_type(treemodel, Q_MODEL_LENGTH);
|
||||
test_equal(type, G_TYPE_STRING);
|
||||
type = gtk_tree_model_get_column_type(treemodel, Q_MODEL_ARTIST);
|
||||
test_equal(type, G_TYPE_STRING);
|
||||
type = gtk_tree_model_get_column_type(treemodel, Q_MODEL_ALBUM);
|
||||
test_equal(type, G_TYPE_STRING);
|
||||
type = gtk_tree_model_get_column_type(treemodel, Q_MODEL_YEAR);
|
||||
test_equal(type, G_TYPE_UINT);
|
||||
type = gtk_tree_model_get_column_type(treemodel, Q_MODEL_GENRE);
|
||||
test_equal(type, G_TYPE_STRING);
|
||||
type = gtk_tree_model_get_column_type(treemodel, Q_MODEL_COUNT);
|
||||
test_equal(type, G_TYPE_UINT);
|
||||
type = gtk_tree_model_get_column_type(treemodel, Q_MODEL_LAST_PLAY);
|
||||
test_equal(type, G_TYPE_STRING);
|
||||
type = gtk_tree_model_get_column_type(treemodel, Q_MODEL_FILE_PATH);
|
||||
test_equal(type, G_TYPE_STRING);
|
||||
|
||||
/* This should trigger an assertion failure */
|
||||
type = gtk_tree_model_get_column_type(treemodel, Q_MODEL_N_COLUMNS);
|
||||
test_equal(type, G_TYPE_INVALID);
|
||||
|
||||
g_object_unref(model);
|
||||
test_equal(G_IS_OBJECT(model), false);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue