[gnome-control-center] online-accounts: New "Add Account" dialog
- From: Debarshi Ray <debarshir src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center] online-accounts: New "Add Account" dialog
- Date: Wed, 6 Jun 2012 12:25:32 +0000 (UTC)
commit 93051830a7fc70756334bab03e46011619755150
Author: Debarshi Ray <debarshir gnome org>
Date: Mon Mar 12 14:35:24 2012 +0100
online-accounts: New "Add Account" dialog
Implemented design:
https://live.gnome.org/Design/SystemSettings/OnlineAccounts
Fixes: https://bugzilla.gnome.org/671980
panels/online-accounts/Makefile.am | 2 +
.../cc-online-accounts-add-account-dialog.c | 367 ++++++++++++++++++++
.../cc-online-accounts-add-account-dialog.h | 62 ++++
panels/online-accounts/cc-online-accounts-panel.c | 74 +----
po/POTFILES.in | 1 +
5 files changed, 440 insertions(+), 66 deletions(-)
---
diff --git a/panels/online-accounts/Makefile.am b/panels/online-accounts/Makefile.am
index 2b14541..e403b17 100644
--- a/panels/online-accounts/Makefile.am
+++ b/panels/online-accounts/Makefile.am
@@ -14,6 +14,8 @@ ccpanelsdir = $(PANELS_DIR)
ccpanels_LTLIBRARIES = libonline-accounts.la
libonline_accounts_la_SOURCES = \
+ cc-online-accounts-add-account-dialog.c \
+ cc-online-accounts-add-account-dialog.h \
cc-online-accounts-model.c \
cc-online-accounts-model.h \
cc-online-accounts-panel.c \
diff --git a/panels/online-accounts/cc-online-accounts-add-account-dialog.c b/panels/online-accounts/cc-online-accounts-add-account-dialog.c
new file mode 100644
index 0000000..d3a71e1
--- /dev/null
+++ b/panels/online-accounts/cc-online-accounts-add-account-dialog.c
@@ -0,0 +1,367 @@
+/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*-
+ *
+ * Copyright (C) 2012 Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General
+ * Public License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Author: Debarshi Ray <debarshir gnome org>
+ */
+
+#include "config.h"
+
+#include <glib/gi18n-lib.h>
+
+#define GOA_API_IS_SUBJECT_TO_CHANGE
+#define GOA_BACKEND_API_IS_SUBJECT_TO_CHANGE
+#include <goabackend/goabackend.h>
+
+#include "cc-online-accounts-add-account-dialog.h"
+
+struct _GoaPanelAddAccountDialogPrivate
+{
+ GError *error;
+ GoaClient *client;
+ GoaObject *object;
+ GtkListStore *list_store;
+ GtkTreePath *path;
+ GtkWidget *tree_view;
+ gboolean ignore_release;
+};
+
+#define GOA_ADD_ACCOUNT_DIALOG_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GOA_TYPE_PANEL_ADD_ACCOUNT_DIALOG, GoaPanelAddAccountDialogPrivate))
+
+enum
+{
+ PROP_0,
+ PROP_CLIENT,
+};
+
+enum
+{
+ COLUMN_PROVIDER,
+ COLUMN_ICON,
+ COLUMN_MARKUP,
+ N_COLUMNS
+};
+
+G_DEFINE_TYPE (GoaPanelAddAccountDialog, goa_panel_add_account_dialog, GTK_TYPE_DIALOG)
+
+static GoaProvider *
+add_account_dialog_get_provider (GoaPanelAddAccountDialog *add_account)
+{
+ GoaPanelAddAccountDialogPrivate *priv = add_account->priv;
+ GoaProvider *provider;
+ GtkTreeIter iter;
+
+ if (priv->path == NULL)
+ return NULL;
+
+ if (!gtk_tree_model_get_iter (GTK_TREE_MODEL (priv->list_store), &iter, priv->path))
+ return NULL;
+
+ gtk_tree_model_get (GTK_TREE_MODEL (priv->list_store), &iter, COLUMN_PROVIDER, &provider, -1);
+ return provider;
+}
+
+static void
+add_account_dialog_add_account (GoaPanelAddAccountDialog *add_account)
+{
+ GoaPanelAddAccountDialogPrivate *priv = add_account->priv;
+ GList *children;
+ GList *l;
+ GoaProvider *provider;
+ GtkWidget *action_area;
+ GtkWidget *vbox;
+
+ provider = add_account_dialog_get_provider (add_account);
+ g_assert (provider != NULL);
+
+ action_area = gtk_dialog_get_action_area (GTK_DIALOG (add_account));
+ vbox = gtk_dialog_get_content_area (GTK_DIALOG (add_account));
+ children = gtk_container_get_children (GTK_CONTAINER (vbox));
+ for (l = children; l != NULL; l = l->next)
+ {
+ GtkWidget *child = l->data;
+ if (child != action_area)
+ gtk_container_remove (GTK_CONTAINER (vbox), child);
+ }
+ g_list_free (children);
+
+ priv->object = goa_provider_add_account (provider,
+ priv->client,
+ GTK_DIALOG (add_account),
+ GTK_BOX (vbox),
+ &priv->error);
+ g_object_unref (provider);
+}
+
+static gboolean
+tree_view_button_press_event_cb (GtkWidget *widget,
+ GdkEventButton *event,
+ gpointer *user_data)
+{
+ GoaPanelAddAccountDialog *add_account = GOA_PANEL_ADD_ACCOUNT_DIALOG (user_data);
+ GoaPanelAddAccountDialogPrivate *priv = add_account->priv;
+
+ /* be sure to ignore double and triple clicks */
+ priv->ignore_release = (event->type != GDK_BUTTON_PRESS);
+
+ return FALSE;
+}
+
+static gboolean
+tree_view_button_release_event_cb (GtkWidget *widget,
+ GdkEventButton *event,
+ gpointer *user_data)
+{
+ GoaPanelAddAccountDialog *add_account = GOA_PANEL_ADD_ACCOUNT_DIALOG (user_data);
+ GoaPanelAddAccountDialogPrivate *priv = add_account->priv;
+ GtkTreePath *path;
+ GtkTreeViewColumn *column;
+
+ if (event->button != 1 || priv->ignore_release)
+ return TRUE;
+
+ gtk_tree_view_get_cursor (GTK_TREE_VIEW (widget), &path, &column);
+ if (path == NULL)
+ return TRUE;
+
+ gtk_tree_view_row_activated (GTK_TREE_VIEW (widget), path, column);
+ gtk_tree_path_free (path);
+
+ return TRUE;
+}
+
+static void
+tree_view_row_activated_cb (GtkTreeView *tree_view,
+ GtkTreePath *path,
+ GtkTreeViewColumn *column,
+ gpointer user_data)
+{
+ GoaPanelAddAccountDialog *add_account = GOA_PANEL_ADD_ACCOUNT_DIALOG (user_data);
+ GoaPanelAddAccountDialogPrivate *priv = add_account->priv;
+
+ priv->path = gtk_tree_path_copy (path);
+ add_account_dialog_add_account (add_account);
+ gtk_dialog_response (GTK_DIALOG (add_account), GTK_RESPONSE_OK);
+}
+
+static void
+goa_panel_add_account_dialog_realize (GtkWidget *widget)
+{
+ GoaPanelAddAccountDialog *add_account = GOA_PANEL_ADD_ACCOUNT_DIALOG (widget);
+ GoaPanelAddAccountDialogPrivate *priv = add_account->priv;
+ GtkWindow *parent;
+
+ parent = gtk_window_get_transient_for (GTK_WINDOW (add_account));
+ if (parent != NULL)
+ {
+ gint width;
+ gint height;
+
+ gtk_window_get_size (parent, &width, &height);
+ gtk_widget_set_size_request (GTK_WIDGET (add_account), (gint) (0.5 * width), (gint) (0.9 * height));
+ }
+
+ gtk_tree_view_set_model (GTK_TREE_VIEW (priv->tree_view), GTK_TREE_MODEL (priv->list_store));
+
+ GTK_WIDGET_CLASS (goa_panel_add_account_dialog_parent_class)->realize (widget);
+}
+
+static void
+goa_panel_add_account_dialog_dispose (GObject *object)
+{
+ GoaPanelAddAccountDialog *add_account = GOA_PANEL_ADD_ACCOUNT_DIALOG (object);
+ GoaPanelAddAccountDialogPrivate *priv = add_account->priv;
+
+ if (priv->tree_view != NULL)
+ priv->tree_view = NULL;
+
+ g_clear_object (&priv->list_store);
+ g_clear_object (&priv->object);
+ g_clear_object (&priv->client);
+
+ G_OBJECT_CLASS (goa_panel_add_account_dialog_parent_class)->dispose (object);
+}
+
+static void
+goa_panel_add_account_dialog_finalize (GObject *object)
+{
+ GoaPanelAddAccountDialog *add_account = GOA_PANEL_ADD_ACCOUNT_DIALOG (object);
+ GoaPanelAddAccountDialogPrivate *priv = add_account->priv;
+
+ gtk_tree_path_free (priv->path);
+
+ if (priv->error != NULL)
+ g_error_free (priv->error);
+
+ G_OBJECT_CLASS (goa_panel_add_account_dialog_parent_class)->finalize (object);
+}
+
+static void
+goa_panel_add_account_dialog_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+{
+ GoaPanelAddAccountDialog *add_account = GOA_PANEL_ADD_ACCOUNT_DIALOG (object);
+ GoaPanelAddAccountDialogPrivate *priv = add_account->priv;
+
+ switch (prop_id)
+ {
+ case PROP_CLIENT:
+ priv->client = GOA_CLIENT (g_value_dup_object (value));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+goa_panel_add_account_dialog_init (GoaPanelAddAccountDialog *add_account)
+{
+ GoaPanelAddAccountDialogPrivate *priv;
+ GtkCellRenderer *renderer;
+ GtkTreeSelection *selection;
+ GtkTreeViewColumn *column;
+ GtkWidget *label;
+ GtkWidget *sw;
+ GtkWidget *vbox;
+ gchar *markup;
+
+ add_account->priv = GOA_ADD_ACCOUNT_DIALOG_GET_PRIVATE (add_account);
+ priv = add_account->priv;
+
+ gtk_container_set_border_width (GTK_CONTAINER (add_account), 12);
+ gtk_window_set_modal (GTK_WINDOW (add_account), TRUE);
+ gtk_window_set_resizable (GTK_WINDOW (add_account), FALSE);
+ /* translators: This is the title of the "Add Account" dialogue.
+ * The title is not visible when using GNOME Shell */
+ gtk_window_set_title (GTK_WINDOW (add_account), _("Add Account"));
+
+ vbox = gtk_dialog_get_content_area (GTK_DIALOG (add_account));
+ gtk_box_set_spacing (GTK_BOX (vbox), 12);
+
+ label = gtk_label_new (NULL);
+ markup = g_strconcat ("<b>", _("Add Account"), "</b>", NULL);
+ gtk_label_set_markup (GTK_LABEL (label), markup);
+ g_free (markup);
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
+
+ priv->list_store = gtk_list_store_new (N_COLUMNS, GOA_TYPE_PROVIDER, G_TYPE_ICON, G_TYPE_STRING);
+
+ sw = gtk_scrolled_window_new (NULL, NULL);
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+ gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw), GTK_SHADOW_IN);
+ gtk_box_pack_start (GTK_BOX (vbox), sw, TRUE, TRUE, 0);
+
+ priv->tree_view = gtk_tree_view_new ();
+ gtk_widget_set_hexpand (priv->tree_view, TRUE);
+ gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (priv->tree_view), FALSE);
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->tree_view));
+ gtk_tree_selection_set_mode (selection, GTK_SELECTION_BROWSE);
+ gtk_container_add (GTK_CONTAINER (sw), priv->tree_view);
+
+ column = gtk_tree_view_column_new ();
+ gtk_tree_view_append_column (GTK_TREE_VIEW (priv->tree_view), column);
+
+ renderer = gtk_cell_renderer_pixbuf_new ();
+ gtk_tree_view_column_pack_start (column, renderer, FALSE);
+ g_object_set (G_OBJECT (renderer), "stock-size", GTK_ICON_SIZE_DIALOG, NULL);
+ gtk_tree_view_column_set_attributes (column, renderer, "gicon", COLUMN_ICON, NULL);
+
+ renderer = gtk_cell_renderer_text_new ();
+ gtk_tree_view_column_pack_start (column, renderer, TRUE);
+ gtk_tree_view_column_set_attributes (column, renderer, "markup", COLUMN_MARKUP, NULL);
+
+ gtk_dialog_add_button (GTK_DIALOG (add_account), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
+ gtk_dialog_set_default_response (GTK_DIALOG (add_account), GTK_RESPONSE_CANCEL);
+
+ g_signal_connect (priv->tree_view, "button-press-event",
+ G_CALLBACK (tree_view_button_press_event_cb), add_account);
+ g_signal_connect (priv->tree_view, "button-release-event",
+ G_CALLBACK (tree_view_button_release_event_cb), add_account);
+ g_signal_connect (priv->tree_view, "row-activated", G_CALLBACK (tree_view_row_activated_cb), add_account);
+
+}
+
+static void
+goa_panel_add_account_dialog_class_init (GoaPanelAddAccountDialogClass *klass)
+{
+ GObjectClass *object_class;
+ GtkWidgetClass *widget_class;
+
+ object_class = G_OBJECT_CLASS (klass);
+ object_class->dispose = goa_panel_add_account_dialog_dispose;
+ object_class->finalize = goa_panel_add_account_dialog_finalize;
+ object_class->set_property = goa_panel_add_account_dialog_set_property;
+
+ widget_class = GTK_WIDGET_CLASS (klass);
+ widget_class->realize = goa_panel_add_account_dialog_realize;
+
+ g_type_class_add_private (object_class, sizeof (GoaPanelAddAccountDialogPrivate));
+
+ g_object_class_install_property (object_class,
+ PROP_CLIENT,
+ g_param_spec_object ("client",
+ "Goa Client",
+ "A Goa client for talking to the Goa daemon.",
+ GOA_TYPE_CLIENT,
+ G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
+}
+
+GtkWidget *
+goa_panel_add_account_dialog_new (GoaClient *client)
+{
+ return g_object_new (GOA_TYPE_PANEL_ADD_ACCOUNT_DIALOG, "client", client, NULL);
+}
+
+void
+goa_panel_add_account_dialog_add_provider (GoaPanelAddAccountDialog *add_account, GoaProvider *provider)
+{
+ GoaPanelAddAccountDialogPrivate *priv = add_account->priv;
+ GIcon *icon;
+ GtkTreeIter iter;
+ gchar *markup;
+ gchar *name;
+
+ icon = goa_provider_get_provider_icon (provider, NULL);
+ name = goa_provider_get_provider_name (provider, NULL);
+ markup = g_strdup_printf ("<b>%s</b>", name);
+ g_free (name);
+
+ gtk_list_store_append (priv->list_store, &iter);
+ gtk_list_store_set (priv->list_store, &iter,
+ COLUMN_PROVIDER, provider,
+ COLUMN_ICON, icon,
+ COLUMN_MARKUP, markup,
+ -1);
+ g_free (markup);
+ g_object_unref (icon);
+}
+
+GoaObject *
+goa_panel_add_account_dialog_get_account (GoaPanelAddAccountDialog *add_account, GError **error)
+{
+ GoaPanelAddAccountDialogPrivate *priv = add_account->priv;
+
+ if (error != NULL && priv->error != NULL)
+ *error = g_error_copy (priv->error);
+
+ if (priv->object != NULL)
+ g_object_ref (priv->object);
+
+ return priv->object;
+}
diff --git a/panels/online-accounts/cc-online-accounts-add-account-dialog.h b/panels/online-accounts/cc-online-accounts-add-account-dialog.h
new file mode 100644
index 0000000..0f503cb
--- /dev/null
+++ b/panels/online-accounts/cc-online-accounts-add-account-dialog.h
@@ -0,0 +1,62 @@
+/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*-
+ *
+ * Copyright (C) 2012 Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General
+ * Public License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Author: Debarshi Ray <debarshir gnome org>
+ */
+
+#ifndef __GOA_PANEL_ADD_ACCOUNT_DIALOG_H__
+#define __GOA_PANEL_ADD_ACCOUNT_DIALOG_H__
+
+#include <goa/goa.h>
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+#define GOA_TYPE_PANEL_ADD_ACCOUNT_DIALOG (goa_panel_add_account_dialog_get_type ())
+#define GOA_PANEL_ADD_ACCOUNT_DIALOG(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GOA_TYPE_PANEL_ADD_ACCOUNT_DIALOG, GoaPanelAddAccountDialog))
+#define GOA_PANEL_ADD_ACCOUNT_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GOA_TYPE_PANEL_ADD_ACCOUNT_DIALOG, GoaPanelAddAccountDialogClass))
+#define GOA_IS_PANEL_ADD_ACCOUNT_DIALOG(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GOA_TYPE_PANEL_ADD_ACCOUNT_DIALOG))
+#define GOA_IS_PANEL_ADD_ACCOUNT_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GOA_TYPE_PANEL_ADD_ACCOUNT_DIALOG))
+#define GOA_PANEL_ADD_ACCOUNT_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GOA_TYPE_PANEL_ADD_ACCOUNT_DIALOG, GoaPanelAddAccountDialogClass))
+
+typedef struct _GoaPanelAddAccountDialog GoaPanelAddAccountDialog;
+typedef struct _GoaPanelAddAccountDialogClass GoaPanelAddAccountDialogClass;
+typedef struct _GoaPanelAddAccountDialogPrivate GoaPanelAddAccountDialogPrivate;
+
+struct _GoaPanelAddAccountDialog
+{
+ GtkDialog parent_instance;
+ GoaPanelAddAccountDialogPrivate *priv;
+};
+
+struct _GoaPanelAddAccountDialogClass
+{
+ GtkDialogClass parent_class;
+};
+
+GType goa_panel_add_account_dialog_get_type (void) G_GNUC_CONST;
+GtkWidget *goa_panel_add_account_dialog_new (GoaClient *client);
+void goa_panel_add_account_dialog_add_provider (GoaPanelAddAccountDialog *add_account,
+ GoaProvider *provider);
+GoaObject *goa_panel_add_account_dialog_get_account (GoaPanelAddAccountDialog *add_account,
+ GError **error);
+
+G_END_DECLS
+
+#endif /* __GOA_PANEL_ADD_ACCOUNT_DIALOG_H__ */
diff --git a/panels/online-accounts/cc-online-accounts-panel.c b/panels/online-accounts/cc-online-accounts-panel.c
index ad093ca..ce1a4de 100644
--- a/panels/online-accounts/cc-online-accounts-panel.c
+++ b/panels/online-accounts/cc-online-accounts-panel.c
@@ -1,6 +1,6 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/*
- * Copyright (C) 2011 Red Hat, Inc.
+ * Copyright (C) 2011, 2012 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -31,6 +31,8 @@
#include <goabackend/goabackend.h>
#include "cc-online-accounts-panel.h"
+
+#include "cc-online-accounts-add-account-dialog.h"
#include "cc-online-accounts-model.h"
typedef struct _GoaPanelClass GoaPanelClass;
@@ -457,69 +459,28 @@ on_toolbar_add_button_clicked (GtkToolButton *button,
{
GoaPanel *panel = GOA_PANEL (user_data);
GtkWindow *parent;
- GtkWidget *add_account_button;
GtkWidget *dialog;
- GtkWidget *vbox;
- GtkWidget *label;
- GtkWidget *grid;
- GtkWidget *combo_box;
gint response;
GList *providers;
- GoaProvider *provider;
- GList *children;
GList *l;
GoaObject *object;
GError *error;
- provider = NULL;
providers = NULL;
parent = GTK_WINDOW (cc_shell_get_toplevel (cc_panel_get_shell (CC_PANEL (panel))));
- dialog = gtk_dialog_new ();
- gtk_container_set_border_width (GTK_CONTAINER (dialog), 12);
- gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
- gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE);
+ dialog = goa_panel_add_account_dialog_new (panel->client);
gtk_window_set_transient_for (GTK_WINDOW (dialog), parent);
- /* translators: This is the title of the "Add Account" dialogue.
- * The title is not visible when using GNOME Shell */
- gtk_window_set_title (GTK_WINDOW (dialog), _("Add Account"));
- vbox = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
- gtk_box_set_spacing (GTK_BOX (vbox), 12);
-
- label = gtk_label_new (_("To add a new account, first select the account type"));
- gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, TRUE, 0);
-
- label = gtk_label_new (_("Account Type:"));
- combo_box = gtk_combo_box_text_new ();
providers = goa_provider_get_all ();
for (l = providers; l != NULL; l = l->next)
{
- gchar *provider_name;
+ GoaProvider *provider;
provider = GOA_PROVIDER (l->data);
- provider_name = goa_provider_get_provider_name (provider, NULL);
- gtk_combo_box_text_append (GTK_COMBO_BOX_TEXT (combo_box),
- goa_provider_get_provider_type (provider),
- provider_name);
- g_free (provider_name);
- provider = NULL;
+ goa_panel_add_account_dialog_add_provider (GOA_PANEL_ADD_ACCOUNT_DIALOG (dialog), provider);
}
- gtk_combo_box_set_active (GTK_COMBO_BOX (combo_box), 0);
-
- grid = gtk_grid_new ();
- gtk_grid_set_column_spacing (GTK_GRID (grid), 10);
- gtk_box_pack_start (GTK_BOX (vbox), grid, FALSE, TRUE, 0);
-
- gtk_grid_attach (GTK_GRID (grid), label, 0, 0, 1, 1);
- gtk_widget_set_hexpand (combo_box, TRUE);
- gtk_grid_attach (GTK_GRID (grid), combo_box, 1, 0, 1, 1);
-
- gtk_dialog_add_button (GTK_DIALOG (dialog),
- GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
- add_account_button = gtk_dialog_add_button (GTK_DIALOG (dialog),
- _("_Add..."), GTK_RESPONSE_OK);
gtk_widget_show_all (dialog);
response = gtk_dialog_run (GTK_DIALOG (dialog));
@@ -528,27 +489,10 @@ on_toolbar_add_button_clicked (GtkToolButton *button,
gtk_widget_destroy (dialog);
goto out;
}
- gtk_container_remove (GTK_CONTAINER (gtk_widget_get_parent (add_account_button)), add_account_button);
-
- provider = goa_provider_get_for_provider_type (gtk_combo_box_get_active_id (GTK_COMBO_BOX (combo_box)));
- g_assert (provider != NULL);
-
- /* Prepare GtkDialog for the provider */
- children = gtk_container_get_children (GTK_CONTAINER (vbox));
- for (l = children; l != NULL; l = l->next)
- {
- GtkWidget *child = GTK_WIDGET (l->data);
- if (child != gtk_dialog_get_action_area (GTK_DIALOG (dialog)))
- gtk_container_remove (GTK_CONTAINER (vbox), child);
- }
- g_list_free (children);
error = NULL;
- object = goa_provider_add_account (provider,
- panel->client,
- GTK_DIALOG (dialog),
- GTK_BOX (vbox),
- &error);
+ object = goa_panel_add_account_dialog_get_account (GOA_PANEL_ADD_ACCOUNT_DIALOG (dialog), &error);
+
if (object != NULL)
{
GtkTreeIter iter;
@@ -584,8 +528,6 @@ on_toolbar_add_button_clicked (GtkToolButton *button,
}
out:
- if (provider != NULL)
- g_object_unref (provider);
g_list_foreach (providers, (GFunc) g_object_unref, NULL);
g_list_free (providers);
}
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 70f7ce6..e757036 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -41,6 +41,7 @@ panels/network/cc-network-panel.c
panels/network/gnome-network-panel.desktop.in.in
[type: gettext/glade]panels/network/network.ui
panels/network/panel-common.c
+panels/online-accounts/cc-online-accounts-add-account.c
panels/online-accounts/cc-online-accounts-panel.c
panels/online-accounts/gnome-online-accounts-panel.desktop.in.in
[type: gettext/glade]panels/online-accounts/online-accounts.ui
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]