From: Travis Reitter Date: Wed, 30 Sep 2009 04:24:24 +0000 (-0700) Subject: rename MilkListStore to MilkTaskModel, since it's more descriptive X-Git-Url: https://vcs.maemo.org/git/?p=milk;a=commitdiff_plain;h=2843bd66bdfd9ec91a74d13289699a544c7ac6e9 rename MilkListStore to MilkTaskModel, since it's more descriptive --- diff --git a/src/Makefile.am b/src/Makefile.am index 2f577bc..ee21ad6 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -8,12 +8,12 @@ AM_CFLAGS = \ bin_PROGRAMS = milk milk_SOURCES = \ - milk-list-store.c \ - milk-list-store.h \ milk-main.c \ milk-main.h \ milk-main-window.c \ - milk-main-window.h + milk-main-window.h \ + milk-task-model.c \ + milk-task-model.h milk_LDADD = $(MILK_LIBS) diff --git a/src/milk-list-store.c b/src/milk-list-store.c deleted file mode 100644 index f5dfefc..0000000 --- a/src/milk-list-store.c +++ /dev/null @@ -1,362 +0,0 @@ -/* - * 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 the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, - * Boston, MA 02110-1301 USA - * - * Authors: Travis Reitter - */ - -#include - -#include -#include -#include -#include - -#include "milk-list-store.h" - -static void -milk_list_store_tree_model_init (GtkTreeModelIface *iface); - -G_DEFINE_TYPE_EXTENDED (MilkListStore, - milk_list_store, - G_TYPE_OBJECT, - 0, - G_IMPLEMENT_INTERFACE (GTK_TYPE_TREE_MODEL, - milk_list_store_tree_model_init)); - -/* less expensive than G_TYPE_INSTANCE_GET_PRIVATE */ -#define MILK_LIST_STORE_PRIVATE(o) ((MILK_LIST_STORE ((o)))->priv) - -struct _MilkListStorePrivate -{ - GtkListStore *store; -}; - -/* FIXME: relocate this to its own class */ -typedef struct { - gint id; - gint priority; - char *title; -} MilkTask; - -/* FIXME: don't hard-code this */ -static MilkTask tasks[] = { - { 0, 1, "Remember the milk"}, - { 2, 1, "Make a Maemo 5 RTM client"}, - { 6, 3, "Get a haircut"}, - { 9, 2, "Keep it real"}, - { 5, 3, "Invent smellovision"}, -}; - -static GtkTreeModelFlags -milk_list_store_get_flags (GtkTreeModel *model) -{ - return GTK_TREE_MODEL_LIST_ONLY; -} - -static gint -milk_list_store_get_n_columns (GtkTreeModel *model) -{ - return MILK_LIST_STORE_N_COLUMNS; -} - -static GType -milk_list_store_get_column_type (GtkTreeModel *model, - gint column) -{ - switch (column) { - case MILK_LIST_STORE_COLUMN_ID: - return G_TYPE_INT; - - case MILK_LIST_STORE_COLUMN_PRIORITY: - return G_TYPE_UINT; - - case MILK_LIST_STORE_COLUMN_TITLE: - return G_TYPE_STRING; - - default: - g_warning (G_STRLOC ": invalid column: %d", column); - return G_TYPE_INVALID; - } -} - -static gboolean -milk_list_store_get_iter (GtkTreeModel *model, - GtkTreeIter *iter, - GtkTreePath *path) -{ - MilkListStorePrivate *priv; - - g_return_val_if_fail (MILK_IS_LIST_STORE (model), FALSE); - g_return_val_if_fail (iter, FALSE); - g_return_val_if_fail (gtk_tree_path_get_depth (path) == 1, FALSE); - - priv = MILK_LIST_STORE_PRIVATE (model); - - return gtk_tree_model_get_iter ( - GTK_TREE_MODEL (priv->store), iter, path); -} - -static GtkTreePath* -milk_list_store_get_path (GtkTreeModel *model, - GtkTreeIter *iter) -{ - MilkListStorePrivate *priv; - - g_return_val_if_fail (MILK_IS_LIST_STORE (model), NULL); - g_return_val_if_fail (iter, NULL); - - priv = MILK_LIST_STORE_PRIVATE (model); - - return gtk_tree_model_get_path (GTK_TREE_MODEL (priv->store), iter); -} - -static void -milk_list_store_get_value (GtkTreeModel *model, - GtkTreeIter *iter, - gint column, - GValue *value) -{ - MilkListStorePrivate *priv; - - g_return_if_fail (MILK_IS_LIST_STORE (model)); - g_return_if_fail (iter); - g_return_if_fail (column >= 0); - g_return_if_fail (value); - - priv = MILK_LIST_STORE_PRIVATE (model); - - gtk_tree_model_get_value ( - GTK_TREE_MODEL (priv->store), iter, column, value); -} - -static gboolean -milk_list_store_iter_next (GtkTreeModel *model, - GtkTreeIter *iter) -{ - MilkListStorePrivate *priv; - - g_return_val_if_fail (MILK_IS_LIST_STORE (model), FALSE); - g_return_val_if_fail (iter, FALSE); - - priv = MILK_LIST_STORE_PRIVATE (model); - - return gtk_tree_model_iter_next (GTK_TREE_MODEL (priv->store), iter); -} - -static gboolean -milk_list_store_iter_nth_child (GtkTreeModel *model, - GtkTreeIter *iter, - GtkTreeIter *parent, - gint index) -{ - MilkListStorePrivate *priv; - - g_return_val_if_fail (MILK_IS_LIST_STORE (model), FALSE); - g_return_val_if_fail (iter, FALSE); - /* we're one-dimensional */ - g_return_val_if_fail (!parent, FALSE); - g_return_val_if_fail (index >= 0, FALSE); - - priv = MILK_LIST_STORE_PRIVATE (model); - - return gtk_tree_model_iter_nth_child ( - GTK_TREE_MODEL (priv->store), iter, parent, index); -} - -static gboolean -milk_list_store_iter_children (GtkTreeModel *model, - GtkTreeIter *iter, - GtkTreeIter *parent) -{ - MilkListStorePrivate *priv; - - g_return_val_if_fail (MILK_IS_LIST_STORE (model), FALSE); - g_return_val_if_fail (iter, FALSE); - /* we're one-dimensional */ - g_return_val_if_fail (!parent, FALSE); - - priv = MILK_LIST_STORE_PRIVATE (model); - - return gtk_tree_model_iter_children ( - GTK_TREE_MODEL (priv->store), iter, parent); -} - -static gboolean -milk_list_store_iter_has_child (GtkTreeModel *model, - GtkTreeIter *iter) -{ - MilkListStorePrivate *priv; - - g_return_val_if_fail (MILK_IS_LIST_STORE (model), FALSE); - g_return_val_if_fail (iter, FALSE); - - priv = MILK_LIST_STORE_PRIVATE (model); - - return gtk_tree_model_iter_has_child ( - GTK_TREE_MODEL (priv->store), iter); -} - -static gint -milk_list_store_iter_n_children (GtkTreeModel *model, - GtkTreeIter *iter) -{ - MilkListStorePrivate *priv; - - g_return_val_if_fail (MILK_IS_LIST_STORE (model), -1); - g_return_val_if_fail (iter, -1); - - priv = MILK_LIST_STORE_PRIVATE (model); - - /* we're one-dimensional */ - if (iter) - return 0; - - return gtk_tree_model_iter_n_children ( - GTK_TREE_MODEL (priv->store), iter); -} - -static gboolean -milk_list_store_iter_parent (GtkTreeModel *model, - GtkTreeIter *iter, - GtkTreeIter *child) -{ - MilkListStorePrivate *priv; - - g_return_val_if_fail (MILK_IS_LIST_STORE (model), FALSE); - g_return_val_if_fail (iter, FALSE); - g_return_val_if_fail (child, FALSE); - - priv = MILK_LIST_STORE_PRIVATE (model); - - return gtk_tree_model_iter_parent ( - GTK_TREE_MODEL (priv->store), iter, child); -} - -static void -milk_list_store_get_property (GObject *object, - guint property_id, - GValue *value, - GParamSpec *pspec) -{ - MilkListStorePrivate *priv = MILK_LIST_STORE_PRIVATE (object); - switch (property_id) - { - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, - pspec); - } -} - -static void -milk_list_store_set_property (GObject *object, - guint property_id, - const GValue *value, - GParamSpec *pspec) -{ - MilkListStorePrivate *priv = MILK_LIST_STORE_PRIVATE (object); - switch (property_id) - { - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, - pspec); - } -} - -static void -milk_list_store_dispose (GObject *object) -{ - MilkListStorePrivate *priv = MILK_LIST_STORE_PRIVATE (object); - - if (priv->store) { - g_object_unref (priv->store); - priv->store = NULL; - } - - G_OBJECT_CLASS (milk_list_store_parent_class)->dispose (object); -} - -static void -milk_list_store_constructed (GObject* object) -{ - MilkListStore *self = MILK_LIST_STORE (object); - MilkListStorePrivate *priv = MILK_LIST_STORE_PRIVATE (object); - GtkTreeIter iter; - gint i; - - /* Populate model */ - for (i = 0; i < G_N_ELEMENTS (tasks); i++) { - gtk_list_store_append (priv->store, &iter); - gtk_list_store_set ( - priv->store, &iter, - MILK_LIST_STORE_COLUMN_ID, - tasks[i].id, - MILK_LIST_STORE_COLUMN_PRIORITY, - tasks[i].priority, - MILK_LIST_STORE_COLUMN_TITLE, - tasks[i].title, - -1); - } -} - -static void -milk_list_store_class_init (MilkListStoreClass *klass) -{ - GObjectClass *object_class = G_OBJECT_CLASS (klass); - - g_type_class_add_private (klass, sizeof (MilkListStorePrivate)); - - object_class->get_property = milk_list_store_get_property; - object_class->set_property = milk_list_store_set_property; - object_class->constructed = milk_list_store_constructed; - object_class->dispose = milk_list_store_dispose; -} - -static void -milk_list_store_init (MilkListStore *self) -{ - MilkListStorePrivate *priv; - - self->priv = priv = G_TYPE_INSTANCE_GET_PRIVATE ( - self, MILK_TYPE_LIST_STORE, MilkListStorePrivate); - - priv->store = gtk_list_store_new ( - MILK_LIST_STORE_N_COLUMNS, G_TYPE_INT, G_TYPE_UINT, - G_TYPE_STRING); -} - -static void -milk_list_store_tree_model_init (GtkTreeModelIface *iface) -{ - iface->get_flags = milk_list_store_get_flags; - iface->get_n_columns = milk_list_store_get_n_columns; - iface->get_column_type = milk_list_store_get_column_type; - iface->get_iter = milk_list_store_get_iter; - iface->get_path = milk_list_store_get_path; - iface->get_value = milk_list_store_get_value; - iface->iter_next = milk_list_store_iter_next; - iface->iter_children = milk_list_store_iter_children; - iface->iter_has_child = milk_list_store_iter_has_child; - iface->iter_n_children = milk_list_store_iter_n_children; - iface->iter_nth_child = milk_list_store_iter_nth_child; - iface->iter_parent = milk_list_store_iter_parent; -} - -MilkListStore* -milk_list_store_new () -{ - return g_object_new (MILK_TYPE_LIST_STORE, - NULL); -} diff --git a/src/milk-list-store.h b/src/milk-list-store.h deleted file mode 100644 index 7155eda..0000000 --- a/src/milk-list-store.h +++ /dev/null @@ -1,74 +0,0 @@ -/* - * 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 the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, - * Boston, MA 02110-1301 USA - * - * Authors: Travis Reitter - */ - -#ifndef _MILK_LIST_STORE_H -#define _MILK_LIST_STORE_H - -G_BEGIN_DECLS - -#define MILK_TYPE_LIST_STORE milk_list_store_get_type() - -#define MILK_LIST_STORE(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ - MILK_TYPE_LIST_STORE, MilkListStore)) - -#define MILK_LIST_STORE_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST ((klass), \ - MILK_TYPE_LIST_STORE, MilkListStoreClass)) - -#define MILK_IS_LIST_STORE(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ - MILK_TYPE_LIST_STORE)) - -#define MILK_IS_LIST_STORE_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_TYPE ((klass), \ - MILK_TYPE_LIST_STORE)) - -#define MILK_LIST_STORE_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), \ - MILK_TYPE_LIST_STORE, MilkListStoreClass)) - -typedef struct _MilkListStore MilkListStore; -typedef struct _MilkListStoreClass MilkListStoreClass; -typedef struct _MilkListStorePrivate MilkListStorePrivate; - -typedef enum { - MILK_LIST_STORE_COLUMN_ID, - MILK_LIST_STORE_COLUMN_PRIORITY, - MILK_LIST_STORE_COLUMN_TITLE, - MILK_LIST_STORE_N_COLUMNS -} OssoABookListStoreColumn; - -struct _MilkListStore -{ - GObject parent; - MilkListStorePrivate *priv; -}; - -struct _MilkListStoreClass -{ - GObjectClass parent_class; -}; - -GType milk_list_store_get_type (void); - - -MilkListStore* milk_list_store_new (); - -#endif /* _MILK_LIST_STORE_H */ diff --git a/src/milk-main-window.c b/src/milk-main-window.c index 809c106..89401be 100644 --- a/src/milk-main-window.c +++ b/src/milk-main-window.c @@ -25,7 +25,7 @@ #include #include "milk-main-window.h" -#include "milk-list-store.h" +#include "milk-task-model.h" G_DEFINE_TYPE (MilkMainWindow, milk_main_window, HILDON_TYPE_WINDOW) @@ -384,7 +384,7 @@ milk_main_window_constructed (GObject* object) /* * Task List */ - model = GTK_TREE_MODEL (milk_list_store_new ()); + model = GTK_TREE_MODEL (milk_task_model_new ()); w = hildon_touch_selector_new (); renderer = gtk_cell_renderer_text_new (); @@ -393,12 +393,12 @@ milk_main_window_constructed (GObject* object) NULL); col = hildon_touch_selector_append_column (HILDON_TOUCH_SELECTOR (w), model, renderer, - "text", MILK_LIST_STORE_COLUMN_TITLE, + "text", MILK_TASK_MODEL_COLUMN_TITLE, NULL); g_object_unref (model); hildon_touch_selector_column_set_text_column ( - col, MILK_LIST_STORE_COLUMN_TITLE); + col, MILK_TASK_MODEL_COLUMN_TITLE); hildon_touch_selector_set_column_selection_mode ( HILDON_TOUCH_SELECTOR (w), HILDON_TOUCH_SELECTOR_SELECTION_MODE_MULTIPLE); diff --git a/src/milk-task-model.c b/src/milk-task-model.c new file mode 100644 index 0000000..8e6a13d --- /dev/null +++ b/src/milk-task-model.c @@ -0,0 +1,374 @@ +/* + * 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 the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301 USA + * + * Authors: Travis Reitter + */ + +#include + +#include +#include +#include +#include + +#include "milk-task-model.h" + +static void +milk_task_model_tree_model_init (GtkTreeModelIface *iface); + +G_DEFINE_TYPE_EXTENDED (MilkTaskModel, + milk_task_model, + G_TYPE_OBJECT, + 0, + G_IMPLEMENT_INTERFACE (GTK_TYPE_TREE_MODEL, + milk_task_model_tree_model_init)); + +/* less expensive than G_TYPE_INSTANCE_GET_PRIVATE */ +#define MILK_TASK_MODEL_PRIVATE(o) ((MILK_TASK_MODEL ((o)))->priv) + +struct _MilkTaskModelPrivate +{ + GtkListStore *store; +}; + +/* FIXME: relocate this to its own class */ +typedef struct { + gint id; + gint priority; + char *title; +} MilkTask; + +/* FIXME: don't hard-code this */ +static MilkTask tasks[] = { + { 0, 1, "Remember the milk"}, + { 2, 1, "Make a Maemo 5 RTM client"}, + { 6, 3, "Get a haircut"}, + { 9, 2, "Keep it real"}, + { 5, 3, "Invent smellovision"}, +}; + +static GtkTreeModelFlags +milk_task_model_get_flags (GtkTreeModel *model) +{ + return GTK_TREE_MODEL_LIST_ONLY; +} + +static gint +milk_task_model_get_n_columns (GtkTreeModel *model) +{ + return MILK_TASK_MODEL_N_COLUMNS; +} + +static GType +milk_task_model_get_column_type (GtkTreeModel *model, + gint column) +{ + switch (column) { + case MILK_TASK_MODEL_COLUMN_ID: + return G_TYPE_INT; + + case MILK_TASK_MODEL_COLUMN_PRIORITY: + return G_TYPE_UINT; + + case MILK_TASK_MODEL_COLUMN_TITLE: + return G_TYPE_STRING; + + default: + g_warning (G_STRLOC ": invalid column: %d", column); + return G_TYPE_INVALID; + } +} + +static gboolean +milk_task_model_get_iter (GtkTreeModel *model, + GtkTreeIter *iter, + GtkTreePath *path) +{ + MilkTaskModelPrivate *priv; + + g_return_val_if_fail (MILK_IS_LIST_STORE (model), FALSE); + g_return_val_if_fail (iter, FALSE); + g_return_val_if_fail (gtk_tree_path_get_depth (path) == 1, FALSE); + + priv = MILK_TASK_MODEL_PRIVATE (model); + + return gtk_tree_model_get_iter ( + GTK_TREE_MODEL (priv->store), iter, path); +} + +static GtkTreePath* +milk_task_model_get_path (GtkTreeModel *model, + GtkTreeIter *iter) +{ + MilkTaskModelPrivate *priv; + + g_return_val_if_fail (MILK_IS_LIST_STORE (model), NULL); + g_return_val_if_fail (iter, NULL); + + priv = MILK_TASK_MODEL_PRIVATE (model); + + return gtk_tree_model_get_path (GTK_TREE_MODEL (priv->store), iter); +} + +static void +milk_task_model_get_value (GtkTreeModel *model, + GtkTreeIter *iter, + gint column, + GValue *value) +{ + MilkTaskModelPrivate *priv; + + g_return_if_fail (MILK_IS_LIST_STORE (model)); + g_return_if_fail (iter); + g_return_if_fail (column >= 0); + g_return_if_fail (value); + + priv = MILK_TASK_MODEL_PRIVATE (model); + + gtk_tree_model_get_value ( + GTK_TREE_MODEL (priv->store), iter, column, value); +} + +static gboolean +milk_task_model_iter_next (GtkTreeModel *model, + GtkTreeIter *iter) +{ + MilkTaskModelPrivate *priv; + + g_return_val_if_fail (MILK_IS_LIST_STORE (model), FALSE); + g_return_val_if_fail (iter, FALSE); + + priv = MILK_TASK_MODEL_PRIVATE (model); + + return gtk_tree_model_iter_next (GTK_TREE_MODEL (priv->store), iter); +} + +static gboolean +milk_task_model_iter_nth_child (GtkTreeModel *model, + GtkTreeIter *iter, + GtkTreeIter *parent, + gint index) +{ + MilkTaskModelPrivate *priv; + + g_return_val_if_fail (MILK_IS_LIST_STORE (model), FALSE); + g_return_val_if_fail (iter, FALSE); + /* we're one-dimensional */ + g_return_val_if_fail (!parent, FALSE); + g_return_val_if_fail (index >= 0, FALSE); + + priv = MILK_TASK_MODEL_PRIVATE (model); + + return gtk_tree_model_iter_nth_child ( + GTK_TREE_MODEL (priv->store), iter, parent, index); +} + +static gboolean +milk_task_model_iter_children (GtkTreeModel *model, + GtkTreeIter *iter, + GtkTreeIter *parent) +{ + MilkTaskModelPrivate *priv; + + g_return_val_if_fail (MILK_IS_LIST_STORE (model), FALSE); + g_return_val_if_fail (iter, FALSE); + /* we're one-dimensional */ + g_return_val_if_fail (!parent, FALSE); + + priv = MILK_TASK_MODEL_PRIVATE (model); + + return gtk_tree_model_iter_children ( + GTK_TREE_MODEL (priv->store), iter, parent); +} + +static gboolean +milk_task_model_iter_has_child (GtkTreeModel *model, + GtkTreeIter *iter) +{ + MilkTaskModelPrivate *priv; + + g_return_val_if_fail (MILK_IS_LIST_STORE (model), FALSE); + g_return_val_if_fail (iter, FALSE); + + priv = MILK_TASK_MODEL_PRIVATE (model); + + return gtk_tree_model_iter_has_child ( + GTK_TREE_MODEL (priv->store), iter); +} + +static gint +milk_task_model_iter_n_children (GtkTreeModel *model, + GtkTreeIter *iter) +{ + MilkTaskModelPrivate *priv; + + g_return_val_if_fail (MILK_IS_LIST_STORE (model), -1); + g_return_val_if_fail (iter, -1); + + priv = MILK_TASK_MODEL_PRIVATE (model); + + /* we're one-dimensional */ + if (iter) + return 0; + + return gtk_tree_model_iter_n_children ( + GTK_TREE_MODEL (priv->store), iter); +} + +static gboolean +milk_task_model_iter_parent (GtkTreeModel *model, + GtkTreeIter *iter, + GtkTreeIter *child) +{ + MilkTaskModelPrivate *priv; + + g_return_val_if_fail (MILK_IS_LIST_STORE (model), FALSE); + g_return_val_if_fail (iter, FALSE); + g_return_val_if_fail (child, FALSE); + + priv = MILK_TASK_MODEL_PRIVATE (model); + + return gtk_tree_model_iter_parent ( + GTK_TREE_MODEL (priv->store), iter, child); +} + +static void +milk_task_model_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + switch (property_id) + { + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, + pspec); + } +} + +static void +milk_task_model_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + switch (property_id) + { + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, + pspec); + } +} + +static void +milk_task_model_dispose (GObject *object) +{ + MilkTaskModelPrivate *priv = MILK_TASK_MODEL_PRIVATE (object); + + if (priv->store) { + g_object_unref (priv->store); + priv->store = NULL; + } + + G_OBJECT_CLASS (milk_task_model_parent_class)->dispose (object); +} + +static void +milk_task_model_constructed (GObject* object) +{ + typedef struct { + const char *id; + const char *title; + gint priority; + } MilkTask_args; + + /* FIXME: don't hard-code this */ + static MilkTask_args tasks[] = { + { "0", "Walk the dog", 1}, + { "2", "Make a Maemo 5 RTM client", 1}, + { "6", "Stand on one foot", 3}, + { "9", "Pick up some DVX ('cause it's so crisp)", 2}, + { "5", "Finalize Halloween costume", 3}, + }; + + MilkTaskModelPrivate *priv = MILK_TASK_MODEL_PRIVATE (object); + GtkTreeIter iter; + gint i; + + /* Populate model */ + for (i = 0; i < G_N_ELEMENTS (tasks); i++) { + gtk_list_store_append (priv->store, &iter); + gtk_list_store_set ( + priv->store, &iter, + MILK_TASK_MODEL_COLUMN_ID, + tasks[i].id, + MILK_TASK_MODEL_COLUMN_PRIORITY, + tasks[i].priority, + MILK_TASK_MODEL_COLUMN_TITLE, + tasks[i].title, + -1); + } +} + +static void +milk_task_model_class_init (MilkTaskModelClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + g_type_class_add_private (klass, sizeof (MilkTaskModelPrivate)); + + object_class->get_property = milk_task_model_get_property; + object_class->set_property = milk_task_model_set_property; + object_class->constructed = milk_task_model_constructed; + object_class->dispose = milk_task_model_dispose; +} + +static void +milk_task_model_init (MilkTaskModel *self) +{ + MilkTaskModelPrivate *priv; + + self->priv = priv = G_TYPE_INSTANCE_GET_PRIVATE ( + self, MILK_TYPE_LIST_STORE, MilkTaskModelPrivate); + + priv->store = gtk_list_store_new ( + MILK_TASK_MODEL_N_COLUMNS, G_TYPE_INT, G_TYPE_UINT, + G_TYPE_STRING); +} + +static void +milk_task_model_tree_model_init (GtkTreeModelIface *iface) +{ + iface->get_flags = milk_task_model_get_flags; + iface->get_n_columns = milk_task_model_get_n_columns; + iface->get_column_type = milk_task_model_get_column_type; + iface->get_iter = milk_task_model_get_iter; + iface->get_path = milk_task_model_get_path; + iface->get_value = milk_task_model_get_value; + iface->iter_next = milk_task_model_iter_next; + iface->iter_children = milk_task_model_iter_children; + iface->iter_has_child = milk_task_model_iter_has_child; + iface->iter_n_children = milk_task_model_iter_n_children; + iface->iter_nth_child = milk_task_model_iter_nth_child; + iface->iter_parent = milk_task_model_iter_parent; +} + +MilkTaskModel* +milk_task_model_new () +{ + return g_object_new (MILK_TYPE_LIST_STORE, + NULL); +}