[gnome-initial-setup] goa: Split out as well



commit 8b15076baf4747304e2d51a9231ee1e3b59c917e
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Tue Jun 12 01:15:57 2012 -0400

    goa: Split out as well

 gnome-initial-setup/Makefile.am           |    1 +
 gnome-initial-setup/gis-goa-page.c        |   86 ++++++++++++++++------------
 gnome-initial-setup/gis-goa-page.h        |   27 +++++++++
 gnome-initial-setup/gnome-initial-setup.c |   15 ++---
 4 files changed, 82 insertions(+), 47 deletions(-)
---
diff --git a/gnome-initial-setup/Makefile.am b/gnome-initial-setup/Makefile.am
index 5d1bec4..671e60f 100644
--- a/gnome-initial-setup/Makefile.am
+++ b/gnome-initial-setup/Makefile.am
@@ -38,6 +38,7 @@ gnome_initial_setup_SOURCES =	\
 	gis-eula-pages.c gis-eula-pages.h \
 	gis-location-page.c gis-location-page.h \
 	gis-network-page.c gis-network-page.h \
+	gis-goa-page.c gis-goa-page.h \
 	panel-cell-renderer-signal.c panel-cell-renderer-signal.h \
 	panel-cell-renderer-mode.c panel-cell-renderer-mode.h \
 	panel-cell-renderer-security.c panel-cell-renderer-security.h \
diff --git a/gnome-initial-setup/gis-goa-page.c b/gnome-initial-setup/gis-goa-page.c
index f1b2857..130a0fa 100644
--- a/gnome-initial-setup/gis-goa-page.c
+++ b/gnome-initial-setup/gis-goa-page.c
@@ -1,6 +1,13 @@
+/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
 
 /* Online accounts page {{{1 */
 
+#include "config.h"
+#include "gis-goa-page.h"
+
+#include <glib/gi18n.h>
+#include <gio/gio.h>
+
 static GtkWidget *
 create_provider_button (const gchar *type, const gchar *name, GIcon *icon)
 {
@@ -32,15 +39,16 @@ create_provider_button (const gchar *type, const gchar *name, GIcon *icon)
 }
 
 static void
-add_account (GtkButton *button, gpointer data)
+add_account (GtkButton *button, gpointer user_data)
 {
-  SetupData *setup = data;
+  GoaData *data = user_data;
   GtkWidget *dialog;
   GtkWidget *goa_dialog;
   GtkWidget *vbox;
   const gchar *provider_type;
   GoaProvider *provider;
   GError *error;
+  SetupData *setup = data->setup;
 
   dialog = WID("online-accounts-dialog");
   gtk_widget_hide (dialog);
@@ -56,7 +64,7 @@ add_account (GtkButton *button, gpointer data)
   gtk_container_set_border_width (GTK_CONTAINER (goa_dialog), 12);
   gtk_window_set_modal (GTK_WINDOW (goa_dialog), TRUE);
   gtk_window_set_resizable (GTK_WINDOW (goa_dialog), TRUE);
-  gtk_window_set_transient_for (GTK_WINDOW (goa_dialog), GTK_WINDOW (setup->assistant));
+  gtk_window_set_transient_for (GTK_WINDOW (goa_dialog), GTK_WINDOW (gis_get_assistant (setup)));
   /* translators: This is the title of the "Add Account" dialogue.
    * The title is not visible when using GNOME Shell
    */
@@ -72,7 +80,7 @@ add_account (GtkButton *button, gpointer data)
 
   error = NULL;
   goa_provider_add_account (provider,
-                            setup->goa_client,
+                            data->goa_client,
                             GTK_DIALOG (goa_dialog),
                             GTK_BOX (vbox),
                             &error);
@@ -81,7 +89,7 @@ add_account (GtkButton *button, gpointer data)
   if (error &&
       !(error->domain == GOA_ERROR && error->code == GOA_ERROR_DIALOG_DISMISSED))
         {
-          dialog = gtk_message_dialog_new (GTK_WINDOW (setup->assistant),
+          dialog = gtk_message_dialog_new (GTK_WINDOW (gis_get_assistant (setup)),
                                            GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
                                            GTK_MESSAGE_ERROR,
                                            GTK_BUTTONS_CLOSE,
@@ -96,7 +104,7 @@ add_account (GtkButton *button, gpointer data)
 }
 
 static void
-populate_online_account_dialog (SetupData *setup)
+populate_online_account_dialog (GoaData *data)
 {
   GtkWidget *dialog;
   GtkWidget *content_area;
@@ -106,7 +114,7 @@ populate_online_account_dialog (SetupData *setup)
   const gchar *provider_type;
   GIcon *provider_icon;
   GtkWidget *button;
-
+  SetupData *setup = data->setup;
 
   dialog = WID("online-accounts-dialog");
   content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
@@ -131,9 +139,10 @@ populate_online_account_dialog (SetupData *setup)
 }
 
 static void
-show_online_account_dialog (GtkButton *button, gpointer data)
+show_online_account_dialog (GtkButton *button, gpointer user_data)
 {
-  SetupData *setup = data;
+  GoaData *data = user_data;
+  SetupData *setup = data->setup;
   GtkWidget *dialog;
 
   dialog = WID("online-accounts-dialog");
@@ -146,14 +155,14 @@ remove_account_cb (GoaAccount   *account,
                    GAsyncResult *res,
                    gpointer      user_data)
 {
-  SetupData *setup = user_data;
+  GoaData *data = user_data;
   GError *error;
 
   error = NULL;
   if (!goa_account_call_remove_finish (account, res, &error))
     {
       GtkWidget *dialog;
-      dialog = gtk_message_dialog_new (GTK_WINDOW (setup->assistant),
+      dialog = gtk_message_dialog_new (GTK_WINDOW (gis_get_assistant (data->setup)),
                                        GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
                                        GTK_MESSAGE_ERROR,
                                        GTK_BUTTONS_CLOSE,
@@ -170,16 +179,16 @@ remove_account_cb (GoaAccount   *account,
 
 
 static void
-confirm_remove_account (GtkButton *button, gpointer data)
+confirm_remove_account (GtkButton *button, gpointer user_data)
 {
-  SetupData *setup = data;
+  GoaData *data = user_data;
   GtkWidget *dialog;
   GoaObject *object;
   gint response;
 
   object = g_object_get_data (G_OBJECT (button), "goa-object");
 
-  dialog = gtk_message_dialog_new (GTK_WINDOW (setup->assistant),
+  dialog = gtk_message_dialog_new (GTK_WINDOW (gis_get_assistant (data->setup)),
                                    GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
                                    GTK_MESSAGE_QUESTION,
                                    GTK_BUTTONS_CANCEL,
@@ -196,13 +205,13 @@ confirm_remove_account (GtkButton *button, gpointer data)
       goa_account_call_remove (goa_object_peek_account (object),
                                NULL, /* GCancellable */
                                (GAsyncReadyCallback) remove_account_cb,
-                               setup);
+                               data);
     }
 }
 
 
 static void
-add_account_to_list (SetupData *setup, GoaObject *object)
+add_account_to_list (GoaData *data, GoaObject *object)
 {
   GtkWidget *list;
   GtkWidget *box;
@@ -212,6 +221,7 @@ add_account_to_list (SetupData *setup, GoaObject *object)
   GoaAccount *account;
   GIcon *icon;
   gchar *markup;
+  SetupData *setup = data->setup;
 
   account = goa_object_peek_account (object);
 
@@ -252,13 +262,14 @@ add_account_to_list (SetupData *setup, GoaObject *object)
 }
 
 static void
-remove_account_from_list (SetupData *setup, GoaObject *object)
+remove_account_from_list (GoaData *data, GoaObject *object)
 {
   GtkWidget *list;
   GList *children, *l;
   GtkWidget *child;
   GoaAccount *account;
   const gchar *account_id, *id;
+  SetupData *setup = data->setup;
 
   account = goa_object_peek_account (object);
 
@@ -283,64 +294,65 @@ remove_account_from_list (SetupData *setup, GoaObject *object)
 }
 
 static void
-populate_account_list (SetupData *setup)
+populate_account_list (GoaData *data)
 {
   GList *accounts, *l;
   GoaObject *object;
 
-  accounts = goa_client_get_accounts (setup->goa_client);
+  accounts = goa_client_get_accounts (data->goa_client);
   for (l = accounts; l; l = l->next)
     {
       object = GOA_OBJECT (l->data);
-      add_account_to_list (setup, object);
+      add_account_to_list (data, object);
     }
 
   g_list_free_full (accounts, (GDestroyNotify) g_object_unref);
 }
 
 static void
-goa_account_added (GoaClient *client, GoaObject *object, gpointer data)
+goa_account_added (GoaClient *client, GoaObject *object, gpointer user_data)
 {
-  SetupData *setup = data;
+  GoaData *data = user_data;
 
   g_debug ("Online account added");
 
-  add_account_to_list (setup, object);
+  add_account_to_list (data, object);
 }
 
 static void
-goa_account_removed (GoaClient *client, GoaObject *object, gpointer data)
+goa_account_removed (GoaClient *client, GoaObject *object, gpointer user_data)
 {
-  SetupData *setup = data;
+  GoaData *data = user_data;
 
   g_debug ("Online account removed");
 
-  remove_account_from_list (setup, object);
+  remove_account_from_list (data, object);
 }
 
-static void
-prepare_online_page (SetupData *setup)
+void
+gis_prepare_online_page (GoaData *data)
 {
   GtkWidget *button;
   GError *error = NULL;
+  SetupData *setup = data->setup;
 
-  setup->goa_client = goa_client_new_sync (NULL, &error);
-  if (setup->goa_client == NULL)
+  data->goa_client = goa_client_new_sync (NULL, &error);
+  if (data->goa_client == NULL)
     {
        g_error ("Failed to get a GoaClient: %s", error->message);
        g_error_free (error);
        return;
     }
 
-  populate_online_account_dialog (setup);
-  populate_account_list (setup);
+  populate_online_account_dialog (data);
+  populate_account_list (data);
 
   button = WID("online-add-button");
   g_signal_connect (button, "clicked",
-                    G_CALLBACK (show_online_account_dialog), setup);
+                    G_CALLBACK (show_online_account_dialog), data);
 
-  g_signal_connect (setup->goa_client, "account-added",
-                    G_CALLBACK (goa_account_added), setup);
-  g_signal_connect (setup->goa_client, "account-removed",
-                    G_CALLBACK (goa_account_removed), setup);
+  g_signal_connect (data->goa_client, "account-added",
+                    G_CALLBACK (goa_account_added), data);
+  g_signal_connect (data->goa_client, "account-removed",
+                    G_CALLBACK (goa_account_removed), data);
 }
diff --git a/gnome-initial-setup/gis-goa-page.h b/gnome-initial-setup/gis-goa-page.h
new file mode 100644
index 0000000..1c72779
--- /dev/null
+++ b/gnome-initial-setup/gis-goa-page.h
@@ -0,0 +1,27 @@
+/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
+
+#ifndef __GIS_GOA_PAGE_H__
+#define __GIS_GOA_PAGE_H__
+
+#include "gnome-initial-setup.h"
+
+#define GOA_API_IS_SUBJECT_TO_CHANGE
+#include <goa/goa.h>
+#define GOA_BACKEND_API_IS_SUBJECT_TO_CHANGE
+#include <goabackend/goabackend.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GoaData GoaData;
+
+struct _GoaData {
+  SetupData *setup;
+  /* online data */
+  GoaClient *goa_client;
+};
+
+void gis_prepare_online_page (GoaData *data);
+
+G_END_DECLS
+
+#endif /* __GIS_GOA_PAGE_H__ */
diff --git a/gnome-initial-setup/gnome-initial-setup.c b/gnome-initial-setup/gnome-initial-setup.c
index c7e5d55..6e87b5a 100644
--- a/gnome-initial-setup/gnome-initial-setup.c
+++ b/gnome-initial-setup/gnome-initial-setup.c
@@ -23,11 +23,6 @@
 #include "pw-utils.h"
 #include "gdm-greeter-client.h"
 
-#define GOA_API_IS_SUBJECT_TO_CHANGE
-#include <goa/goa.h>
-#define GOA_BACKEND_API_IS_SUBJECT_TO_CHANGE
-#include <goabackend/goabackend.h>
-
 #ifdef HAVE_CHEESE
 #include <cheese-gtk.h>
 #endif
@@ -38,6 +33,7 @@
 #include "gis-eula-pages.h"
 #include "gis-location-page.h"
 #include "gis-network-page.h"
+#include "gis-goa-page.h"
 
 /* Setup data {{{1 */
 struct _SetupData {
@@ -69,13 +65,10 @@ struct _SetupData {
         EulasData eulas_data;
         LocationData location_data;
         NetworkData network_data;
-
-        /* online data */
-        GoaClient *goa_client;
+        GoaData goa_data;
 };
 
 #include "gis-account-page.c"
-#include "gis-goa-page.c"
 #include "gis-summary-page.c"
 
 static void
@@ -124,7 +117,9 @@ prepare_assistant (SetupData *setup)
         setup->location_data.setup = setup;
         gis_prepare_location_page (&setup->location_data);
 
-        prepare_online_page (setup);
+        setup->goa_data.setup = setup;
+        gis_prepare_online_page (&setup->goa_data);
+
         prepare_summary_page (setup);
 }
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]