Base the task model around an auth object, so we can make the model reflect the
authorTravis Reitter <treitter@torizo.(none)>
Tue, 17 Nov 2009 01:12:16 +0000 (17:12 -0800)
committerTravis Reitter <treitter@gmail.com>
Fri, 4 Dec 2009 06:01:13 +0000 (22:01 -0800)
server state.

src/milk-auth.c
src/milk-auth.h
src/milk-main-window.c
src/milk-main.c
src/milk-task-model.c
src/milk-task-model.h

index 8f81131..4c60455 100644 (file)
@@ -195,7 +195,7 @@ auth_response_cb_OUT:
 }
 
 void
-milk_auth_run_demo (MilkAuth *auth)
+milk_auth_log_in (MilkAuth *auth)
 {
         MilkAuthPrivate *priv;
 
index 55caa36..4508a84 100644 (file)
@@ -64,7 +64,6 @@ GType milk_auth_get_type (void);
 
 MilkAuth* milk_auth_get_default (void);
 
-/* FIXME: cut this */
-void milk_auth_run_demo (MilkAuth* auth) ;
+void milk_auth_log_in (MilkAuth* auth) ;
 
 #endif /* _MILK_AUTH_H */
index 06d435e..1d6901b 100644 (file)
@@ -247,14 +247,9 @@ begin_auth_idle (MilkMainWindow *window)
 
         priv = MILK_MAIN_WINDOW_PRIVATE (window);
 
-        /* FIXME: is there a better place for this? */
-        priv->auth = milk_auth_get_default ();
-        /* FIXME: plug this into the task model */
-
         /* FIXME: cut this */
         g_debug ("trying to run the milk auth demo");
-        /* FIXME: cut this */
-        milk_auth_run_demo (priv->auth);
+        milk_auth_log_in (priv->auth);
 
         return FALSE;
 }
@@ -288,7 +283,8 @@ milk_main_window_constructed (GObject* object)
         /*
          * Task List
          */
-        model = GTK_TREE_MODEL (milk_task_model_new ());
+        priv->auth = milk_auth_get_default ();
+        model = GTK_TREE_MODEL (milk_task_model_new (priv->auth));
         w = hildon_touch_selector_new ();
 
 
index 2de05ee..7b551e8 100644 (file)
@@ -39,9 +39,6 @@ main (int argc, char *argv[])
         memset (&app, 0, sizeof (app));
         app.main_window = milk_main_window_get_default ();
 
-        /* FIXME: cut this */
-        g_debug ("in main(), main window: %p", app.main_window);
-
         gtk_widget_show_all (app.main_window);
 
         gtk_main ();
index 5550537..9a69c6a 100644 (file)
@@ -25,6 +25,7 @@
 #include <hildon/hildon.h>
 
 #include "milk-task-model.h"
+#include "milk-auth.h"
 #include "milk-task.h"
 
 static void
@@ -43,6 +44,11 @@ G_DEFINE_TYPE_EXTENDED (MilkTaskModel,
 struct _MilkTaskModelPrivate
 {
         GtkListStore *store;
+        MilkAuth *auth;
+};
+
+enum {
+        PROP_AUTH = 1,
 };
 
 static GtkTreeModelFlags
@@ -224,48 +230,7 @@ milk_task_model_iter_parent (GtkTreeModel *model,
 }
 
 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)
+populate_model (MilkTaskModel *model)
 {
         typedef struct {
                 const char *id;
@@ -282,10 +247,13 @@ milk_task_model_constructed (GObject* object)
                 { "5", "Finalize Halloween costume", 3},
         };
 
-        MilkTaskModelPrivate *priv = MILK_TASK_MODEL_PRIVATE (object);
+        MilkTaskModelPrivate *priv = MILK_TASK_MODEL_PRIVATE (model);
         GtkTreeIter iter;
         gint i;
 
+        /* FIXME: remove all existing rows */
+        /* FIXME: use the tasks from the auth */
+
         /* Populate model */
         for (i = 0; i < G_N_ELEMENTS (tasks); i++) {
                 MilkTask *task;
@@ -301,6 +269,87 @@ milk_task_model_constructed (GObject* object)
         }
 }
 
+void
+milk_task_model_set_auth (MilkTaskModel *model,
+                          MilkAuth      *auth)
+{
+        MilkTaskModelPrivate *priv;
+
+        g_return_if_fail (model);
+        g_return_if_fail (MILK_IS_TASK_MODEL (model));
+        g_return_if_fail (auth);
+        g_return_if_fail (MILK_IS_AUTH (auth));
+
+        priv = MILK_TASK_MODEL_PRIVATE (model);
+
+        /* FIXME: cut this */
+        g_debug ("authorizing and populating model with %p", auth);
+
+        if (priv->auth) {
+                g_object_unref (priv->auth);
+                priv->auth = g_object_ref (auth);
+        }
+
+        populate_model (model);
+}
+
+static void
+milk_task_model_get_property (GObject    *object,
+                              guint       property_id,
+                              GValue     *value,
+                              GParamSpec *pspec)
+{
+        MilkTaskModelPrivate *priv = MILK_TASK_MODEL_PRIVATE (object);
+
+        switch (property_id)
+        {
+                case PROP_AUTH:
+                        g_value_set_object (value, priv->auth);
+                break;
+
+                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)
+        {
+                case PROP_AUTH:
+                        milk_task_model_set_auth (MILK_TASK_MODEL (object),
+                                        g_value_get_object (value));
+                break;
+
+                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->auth) {
+                g_object_unref (priv->auth);
+                priv->auth = NULL;
+        }
+
+        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_class_init (MilkTaskModelClass *klass)
 {
@@ -310,8 +359,18 @@ milk_task_model_class_init (MilkTaskModelClass *klass)
 
         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;
+
+        g_object_class_install_property
+                (object_class,
+                 PROP_AUTH,
+                 g_param_spec_object
+                         ("auth",
+                          "Authentication proxy",
+                          "Remember The Milk authentication proxy.",
+                          MILK_TYPE_AUTH,
+                          G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY |
+                          G_PARAM_STATIC_STRINGS));
 }
 
 static void
@@ -344,7 +403,7 @@ milk_task_model_tree_model_init (GtkTreeModelIface *iface)
 }
 
 MilkTaskModel*
-milk_task_model_new ()
+milk_task_model_new (MilkAuth *auth)
 {
-        return g_object_new (MILK_TYPE_TASK_MODEL, NULL);
+        return g_object_new (MILK_TYPE_TASK_MODEL, "auth", auth, NULL);
 }
index 1ce3a28..e48b75e 100644 (file)
@@ -20,6 +20,8 @@
 #ifndef _MILK_TASK_MODEL_H
 #define _MILK_TASK_MODEL_H
 
+#include "milk-auth.h"
+
 G_BEGIN_DECLS
 
 #define MILK_TYPE_TASK_MODEL milk_task_model_get_type()
@@ -67,6 +69,8 @@ struct _MilkTaskModelClass
 GType milk_task_model_get_type (void);
 
 
-MilkTaskModel* milk_task_model_new (void);
+MilkTaskModel* milk_task_model_new (MilkAuth *auth);
+void milk_task_model_set_auth (MilkTaskModel *model, MilkAuth *auth);
+
 
 #endif /* _MILK_TASK_MODEL_H */