summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Zeuthen <davidz@redhat.com>2011-05-20 15:55:07 -0400
committerDavid Zeuthen <davidz@redhat.com>2011-05-20 15:55:07 -0400
commit1f2c074e3705b933784d09ca8b7b26762874b9aa (patch)
tree2f8079c5358f36faf48e349cb000b92ade545036
parentee3381207ddc9dc8e42507f9357981adcec297d1 (diff)
GoaProvider: Add a show_account vfunc and use it
Signed-off-by: David Zeuthen <davidz@redhat.com>
-rw-r--r--data/dbus-interfaces.xml7
-rw-r--r--doc/goa-sections.txt6
-rw-r--r--src/goabackend/goafacebookprovider.c21
-rw-r--r--src/goabackend/goagenericmailprovider.c29
-rw-r--r--src/goabackend/goagoogleprovider.c23
-rw-r--r--src/goabackend/goaprovider.c149
-rw-r--r--src/goabackend/goaprovider.h16
-rw-r--r--src/goabackend/goatwitterprovider.c22
-rw-r--r--src/goabackend/goayahooprovider.c22
-rw-r--r--src/panel/goapanel.c93
10 files changed, 297 insertions, 91 deletions
diff --git a/data/dbus-interfaces.xml b/data/dbus-interfaces.xml
index e288ce1..f734e1a 100644
--- a/data/dbus-interfaces.xml
+++ b/data/dbus-interfaces.xml
@@ -325,6 +325,13 @@
<method name="CreateMonitor">
<arg name="monitor_object" type="o" direction="out"/>
</method>
+
+ <!-- EmailAddress:
+ The email address for the account or blank if there is no
+ such address or if it isnt' known or isn't in a standard
+ format.
+ -->
+ <property name="EmailAddress" type="s" access="read"/>
</interface>
<!--
diff --git a/doc/goa-sections.txt b/doc/goa-sections.txt
index 7f62c67..f8a50f5 100644
--- a/doc/goa-sections.txt
+++ b/doc/goa-sections.txt
@@ -49,7 +49,6 @@ GoaObject
GoaObjectIface
goa_object_get_manager
goa_object_get_account
-goa_object_get_generic_mail_account
goa_object_get_google_account
goa_object_get_facebook_account
goa_object_get_yahoo_account
@@ -61,7 +60,6 @@ goa_object_get_mail
goa_object_get_mail_monitor
goa_object_peek_manager
goa_object_peek_account
-goa_object_peek_generic_mail_account
goa_object_peek_google_account
goa_object_peek_facebook_account
goa_object_peek_yahoo_account
@@ -79,7 +77,6 @@ GoaObjectSkeletonClass
goa_object_skeleton_new
goa_object_skeleton_set_manager
goa_object_skeleton_set_account
-goa_object_skeleton_set_generic_mail_account
goa_object_skeleton_set_google_account
goa_object_skeleton_set_facebook_account
goa_object_skeleton_set_yahoo_account
@@ -543,6 +540,7 @@ goa_provider_get_name
goa_provider_build_object
goa_provider_add_account
goa_provider_refresh_account
+goa_provider_show_account
goa_provider_store_credentials_sync
goa_provider_lookup_credentials_sync
goa_provider_ensure_credentials
@@ -672,6 +670,8 @@ goa_mail_call_create_monitor
goa_mail_call_create_monitor_finish
goa_mail_call_create_monitor_sync
goa_mail_complete_create_monitor
+goa_mail_get_email_address
+goa_mail_set_email_address
GoaMailProxy
GoaMailProxyClass
goa_mail_proxy_new
diff --git a/src/goabackend/goafacebookprovider.c b/src/goabackend/goafacebookprovider.c
index bf39d16..7a9c972 100644
--- a/src/goabackend/goafacebookprovider.c
+++ b/src/goabackend/goafacebookprovider.c
@@ -280,6 +280,26 @@ get_use_external_browser (GoaOAuth2Provider *provider)
/* ---------------------------------------------------------------------------------------------------- */
static void
+show_account (GoaProvider *provider,
+ GoaClient *client,
+ GoaObject *object,
+ GtkBox *vbox,
+ GtkTable *table)
+{
+ GoaFacebookAccount *fbaccount;
+
+ /* Chain up */
+ GOA_PROVIDER_CLASS (goa_facebook_provider_parent_class)->show_account (provider, client, object, vbox, table);
+
+ fbaccount = goa_object_get_facebook_account (object);
+ goa_util_add_row (table,
+ _("User Name"),
+ goa_facebook_account_get_user_name (fbaccount));
+}
+
+/* ---------------------------------------------------------------------------------------------------- */
+
+static void
goa_facebook_provider_init (GoaFacebookProvider *client)
{
}
@@ -294,6 +314,7 @@ goa_facebook_provider_class_init (GoaFacebookProviderClass *klass)
provider_class->get_provider_type = get_provider_type;
provider_class->get_name = get_name;
provider_class->build_object = build_object;
+ provider_class->show_account = show_account;
oauth2_class = GOA_OAUTH2_PROVIDER_CLASS (klass);
oauth2_class->get_authorization_uri = get_authorization_uri;
diff --git a/src/goabackend/goagenericmailprovider.c b/src/goabackend/goagenericmailprovider.c
index 4078a32..a2ba39c 100644
--- a/src/goabackend/goagenericmailprovider.c
+++ b/src/goabackend/goagenericmailprovider.c
@@ -102,6 +102,7 @@ build_object (GoaProvider *provider,
gboolean imap_ignore_bad_tls;
gchar *imap_user_name;
gchar *imap_password;
+ gchar *email_address;
account = NULL;
mail = NULL;
@@ -109,6 +110,7 @@ build_object (GoaProvider *provider,
imap_host_and_port = NULL;
imap_user_name = NULL;
imap_password = NULL;
+ email_address = NULL;
ret = FALSE;
/* Chain up */
@@ -122,6 +124,7 @@ build_object (GoaProvider *provider,
account = goa_object_get_account (GOA_OBJECT (object));
/* mail */
+ email_address = g_key_file_get_string (key_file, group, "EmailAddress", NULL);
imap_host_and_port = g_key_file_get_string (key_file, group, "ImapHost", NULL);
imap_use_tls = g_key_file_get_boolean (key_file, group, "ImapUseTls", NULL);
imap_ignore_bad_tls = g_key_file_get_boolean (key_file, group, "ImapIgnoreBadTls", NULL);
@@ -147,6 +150,8 @@ build_object (GoaProvider *provider,
goa_object_skeleton_set_mail (object, NULL);
}
+ /* TODO: support substitutions a'la ${USERNAME}@redhat.com for e.g. system-wide .conf files */
+ goa_mail_set_email_address (mail, email_address);
password_based = goa_object_get_password_based (GOA_OBJECT (object));
if (password_based == NULL)
@@ -165,6 +170,7 @@ build_object (GoaProvider *provider,
ret = TRUE;
out:
+ g_free (email_address);
if (password_based != NULL)
g_object_unref (password_based);
if (mail != NULL)
@@ -754,6 +760,8 @@ add_account (GoaProvider *_provider,
* waiting for this to complete
*/
g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{ss}"));
+ g_variant_builder_add (&builder, "{ss}", "EmailAddress",
+ gtk_entry_get_text (GTK_ENTRY (data.intro_address_entry)));
g_variant_builder_add (&builder, "{ss}", "ImapHost",
gtk_entry_get_text (GTK_ENTRY (data.imap_server_entry)));
g_variant_builder_add (&builder, "{ss}", "ImapUserName",
@@ -809,6 +817,26 @@ add_account (GoaProvider *_provider,
/* ---------------------------------------------------------------------------------------------------- */
static void
+show_account (GoaProvider *provider,
+ GoaClient *client,
+ GoaObject *object,
+ GtkBox *vbox,
+ GtkTable *table)
+{
+ GoaMail *mail;
+
+ /* Chain up */
+ GOA_PROVIDER_CLASS (goa_generic_mail_provider_parent_class)->show_account (provider, client, object, vbox, table);
+
+ mail = goa_object_get_mail (object);
+ goa_util_add_row (table,
+ _("Email Address"),
+ goa_mail_get_email_address (mail));
+}
+
+/* ---------------------------------------------------------------------------------------------------- */
+
+static void
goa_generic_mail_provider_init (GoaGenericMailProvider *provider)
{
}
@@ -823,6 +851,7 @@ goa_generic_mail_provider_class_init (GoaGenericMailProviderClass *klass)
provider_class->get_name = get_name;
provider_class->add_account = add_account;
provider_class->build_object = build_object;
+ provider_class->show_account = show_account;
provider_class->ensure_credentials_sync = ensure_credentials_sync;
}
diff --git a/src/goabackend/goagoogleprovider.c b/src/goabackend/goagoogleprovider.c
index 6822d61..faf85a0 100644
--- a/src/goabackend/goagoogleprovider.c
+++ b/src/goabackend/goagoogleprovider.c
@@ -298,6 +298,8 @@ build_object (GoaProvider *provider,
goa_object_skeleton_set_mail (object, mail);
g_object_unref (auth);
g_free (request_uri);
+
+ goa_mail_set_email_address (mail, email_address);
}
ret = TRUE;
@@ -324,6 +326,26 @@ get_use_external_browser (GoaOAuthProvider *provider)
/* ---------------------------------------------------------------------------------------------------- */
static void
+show_account (GoaProvider *provider,
+ GoaClient *client,
+ GoaObject *object,
+ GtkBox *vbox,
+ GtkTable *table)
+{
+ GoaGoogleAccount *gaccount;
+
+ /* Chain up */
+ GOA_PROVIDER_CLASS (goa_google_provider_parent_class)->show_account (provider, client, object, vbox, table);
+
+ gaccount = goa_object_get_google_account (object);
+ goa_util_add_row (table,
+ _("Email Address"),
+ goa_google_account_get_email_address (gaccount));
+}
+
+/* ---------------------------------------------------------------------------------------------------- */
+
+static void
goa_google_provider_init (GoaGoogleProvider *client)
{
}
@@ -338,6 +360,7 @@ goa_google_provider_class_init (GoaGoogleProviderClass *klass)
provider_class->get_provider_type = get_provider_type;
provider_class->get_name = get_name;
provider_class->build_object = build_object;
+ provider_class->show_account = show_account;
oauth_class = GOA_OAUTH_PROVIDER_CLASS (klass);
oauth_class->get_identity_sync = get_identity_sync;
diff --git a/src/goabackend/goaprovider.c b/src/goabackend/goaprovider.c
index 8c2101e..e8fc210 100644
--- a/src/goabackend/goaprovider.c
+++ b/src/goabackend/goaprovider.c
@@ -31,6 +31,8 @@
#include "goatwitterprovider.h"
#include "goagenericmailprovider.h"
+#include "goaeditablelabel.h"
+
/**
* SECTION:goaprovider
* @title: GoaProvider
@@ -51,6 +53,12 @@ static gboolean goa_provider_build_object_real (GoaProvider *provider,
const gchar *group,
GError **error);
+static void goa_provider_show_account_real (GoaProvider *provider,
+ GoaClient *client,
+ GoaObject *object,
+ GtkBox *vbox,
+ GtkTable *table);
+
G_DEFINE_ABSTRACT_TYPE (GoaProvider, goa_provider, G_TYPE_OBJECT);
static void
@@ -63,6 +71,7 @@ goa_provider_class_init (GoaProviderClass *klass)
{
klass->build_object = goa_provider_build_object_real;
klass->ensure_credentials_sync = goa_provider_ensure_credentials_sync_real;
+ klass->show_account = goa_provider_show_account_real;
}
/**
@@ -208,6 +217,146 @@ goa_provider_refresh_account (GoaProvider *provider,
/* ---------------------------------------------------------------------------------------------------- */
/**
+ * goa_provider_show_account:
+ * @provider: A #GoaProvider.
+ * @client: A #GoaClient.
+ * @object: A #GoaObject with a #GoaAccount interface.
+ * @dialog: A #GtkDialog.
+ * @vbox: A vertically oriented #GtkBox to put content in.
+ * @table: A table which is the first element of vbox.
+ *
+ * Method used to add widgets in the control panel for the account
+ * represented by @object.
+ *
+ * This is a virtual method with an implementation that adds widgets
+ * for editing the name and the icon. A subclass should chain up
+ * (before adding their own widgets to @vbox and @table) if they want
+ * to expose such functionality.
+ */
+void
+goa_provider_show_account (GoaProvider *provider,
+ GoaClient *client,
+ GoaObject *object,
+ GtkBox *vbox,
+ GtkTable *table)
+{
+ g_return_if_fail (GOA_IS_PROVIDER (provider));
+ g_return_if_fail (GOA_IS_CLIENT (client));
+ g_return_if_fail (GOA_IS_OBJECT (object) && goa_object_peek_account (object) != NULL);
+ g_return_if_fail (GTK_IS_BOX (vbox));
+ g_return_if_fail (GTK_IS_TABLE (table));
+
+ GOA_PROVIDER_GET_CLASS (provider)->show_account (provider, client, object, vbox, table);
+}
+
+/* ---------------------------------------------------------------------------------------------------- */
+
+/**
+ * goa_util_add_row_widget:
+ * @table: A #GtkTable.
+ * @label_text: The text to insert on the left side.
+ * @widget: A widget to insert on the right side.
+ *
+ * Utility function to add @label_text and @widget to @table.
+ */
+void
+goa_util_add_row_widget (GtkTable *table,
+ const gchar *label_text,
+ GtkWidget *widget)
+{
+ GtkWidget *label;
+ gchar *s;
+ guint num_rows;
+
+ g_return_if_fail (GTK_IS_TABLE (table));
+ g_return_if_fail (label_text != NULL);
+ g_return_if_fail (GTK_IS_WIDGET (widget));
+
+ s = g_strdup_printf ("<span foreground=\"#555555\">%s</span>", label_text);
+
+ gtk_table_get_size (table, &num_rows, NULL);
+
+ label = gtk_label_new (NULL);
+ gtk_label_set_markup (GTK_LABEL (label), s);
+ gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
+ gtk_table_attach (table, label,
+ 0, 1,
+ num_rows, num_rows + 1,
+ GTK_FILL, GTK_FILL, 0, 0);
+ gtk_table_attach (table, widget,
+ 1, 2,
+ num_rows, num_rows + 1,
+ GTK_FILL, GTK_FILL, 0, 0);
+
+ g_free (s);
+}
+
+/**
+ * goa_util_add_row:
+ * @table: A #GtkTable.
+ * @label_text: The text to insert on the left side.
+ * @value_markup: The markup to insert on the right side.
+ *
+ * Utility function to add @label_text and @value_text to @table.
+ */
+void
+goa_util_add_row (GtkTable *table,
+ const gchar *label_text,
+ const gchar *value_markup)
+{
+ GtkWidget *label;
+ label = gtk_label_new (NULL);
+ gtk_label_set_markup (GTK_LABEL (label), value_markup);
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ gtk_label_set_selectable (GTK_LABEL (label), TRUE);
+ goa_util_add_row_widget (table, label_text, label);
+}
+
+static void
+on_name_editing_done (GoaEditableLabel *editable_label,
+ gpointer user_data)
+{
+ GoaObject *object = GOA_OBJECT (user_data);
+ GoaAccount *account;
+
+ account = goa_object_peek_account (object);
+ goa_account_call_set_name (account,
+ goa_editable_label_get_text (editable_label),
+ NULL, /* GCancellable */
+ NULL, NULL); /* callback, user_data */
+}
+
+static void
+goa_provider_show_account_real (GoaProvider *provider,
+ GoaClient *client,
+ GoaObject *object,
+ GtkBox *vbox,
+ GtkTable *table)
+{
+ GoaAccount *account;
+ GtkWidget *elabel;
+ guint num_rows;
+
+ account = goa_object_peek_account (object);
+
+ gtk_table_get_size (table, &num_rows, NULL);
+
+ elabel = goa_editable_label_new ();
+ goa_editable_label_set_text (GOA_EDITABLE_LABEL (elabel), goa_account_get_name (account));
+ goa_editable_label_set_editable (GOA_EDITABLE_LABEL (elabel), TRUE);
+ goa_editable_label_set_scale (GOA_EDITABLE_LABEL (elabel), 1.2);
+ goa_editable_label_set_weight (GOA_EDITABLE_LABEL (elabel), 700);
+ g_signal_connect (elabel, "editing-done", G_CALLBACK (on_name_editing_done), object);
+
+ gtk_table_attach (table, elabel,
+ 1, 2,
+ num_rows, num_rows + 1,
+ GTK_FILL, GTK_FILL, 0, 0);
+}
+
+/* ---------------------------------------------------------------------------------------------------- */
+
+/**
* goa_provider_build_object:
* @provider: A #GoaProvider.
* @object: The #GoaObjectSkeleton that is being built.
diff --git a/src/goabackend/goaprovider.h b/src/goabackend/goaprovider.h
index d0b84de..454fbf5 100644
--- a/src/goabackend/goaprovider.h
+++ b/src/goabackend/goaprovider.h
@@ -95,6 +95,11 @@ struct _GoaProviderClass
gint *out_expires_in,
GCancellable *cancellable,
GError **error);
+ void (*show_account) (GoaProvider *provider,
+ GoaClient *client,
+ GoaObject *object,
+ GtkBox *vbox,
+ GtkTable *table);
/*< private >*/
/* Padding for future expansion */
@@ -114,6 +119,11 @@ gboolean goa_provider_refresh_account (GoaProvider *provid
GoaObject *object,
GtkWindow *parent,
GError **error);
+void goa_provider_show_account (GoaProvider *provider,
+ GoaClient *client,
+ GoaObject *object,
+ GtkBox *vbox,
+ GtkTable *table);
gboolean goa_provider_build_object (GoaProvider *provider,
GoaObjectSkeleton *object,
GKeyFile *key_file,
@@ -143,6 +153,12 @@ gboolean goa_provider_ensure_credentials_sync (GoaProvider *provid
GCancellable *cancellable,
GError **error);
+void goa_util_add_row_widget (GtkTable *table,
+ const gchar *label_text,
+ GtkWidget *widget);
+void goa_util_add_row (GtkTable *table,
+ const gchar *label_text,
+ const gchar *value_markup);
/**
* GOA_PROVIDER_EXTENSION_POINT_NAME:
diff --git a/src/goabackend/goatwitterprovider.c b/src/goabackend/goatwitterprovider.c
index 48c16aa..12c1fe4 100644
--- a/src/goabackend/goatwitterprovider.c
+++ b/src/goabackend/goatwitterprovider.c
@@ -304,6 +304,27 @@ get_use_external_browser (GoaOAuthProvider *provider)
/* ---------------------------------------------------------------------------------------------------- */
static void
+show_account (GoaProvider *provider,
+ GoaClient *client,
+ GoaObject *object,
+ GtkBox *vbox,
+ GtkTable *table)
+{
+ GoaTwitterAccount *taccount;
+
+ /* Chain up */
+ GOA_PROVIDER_CLASS (goa_twitter_provider_parent_class)->show_account (provider, client, object, vbox, table);
+
+ /* TODO: look up screenname */
+ taccount = goa_object_get_twitter_account (object);
+ goa_util_add_row (table,
+ _("Account Number"),
+ goa_twitter_account_get_id (taccount));
+}
+
+/* ---------------------------------------------------------------------------------------------------- */
+
+static void
goa_twitter_provider_init (GoaTwitterProvider *client)
{
}
@@ -318,6 +339,7 @@ goa_twitter_provider_class_init (GoaTwitterProviderClass *klass)
provider_class->get_provider_type = get_provider_type;
provider_class->get_name = get_name;
provider_class->build_object = build_object;
+ provider_class->show_account = show_account;
oauth_class = GOA_OAUTH_PROVIDER_CLASS (klass);
oauth_class->get_identity_sync = get_identity_sync;
diff --git a/src/goabackend/goayahooprovider.c b/src/goabackend/goayahooprovider.c
index 604fc89..d001ee6 100644
--- a/src/goabackend/goayahooprovider.c
+++ b/src/goabackend/goayahooprovider.c
@@ -342,6 +342,27 @@ get_use_external_browser (GoaOAuthProvider *provider)
/* ---------------------------------------------------------------------------------------------------- */
static void
+show_account (GoaProvider *provider,
+ GoaClient *client,
+ GoaObject *object,
+ GtkBox *vbox,
+ GtkTable *table)
+{
+ GoaYahooAccount *taccount;
+
+ /* Chain up */
+ GOA_PROVIDER_CLASS (goa_yahoo_provider_parent_class)->show_account (provider, client, object, vbox, table);
+
+ /* TODO: look up email address / screenname */
+ taccount = goa_object_get_yahoo_account (object);
+ goa_util_add_row (table,
+ _("GUID"),
+ goa_yahoo_account_get_guid (taccount));
+}
+
+/* ---------------------------------------------------------------------------------------------------- */
+
+static void
goa_yahoo_provider_init (GoaYahooProvider *client)
{
}
@@ -356,6 +377,7 @@ goa_yahoo_provider_class_init (GoaYahooProviderClass *klass)
provider_class->get_provider_type = get_provider_type;
provider_class->get_name = get_name;
provider_class->build_object = build_object;
+ provider_class->show_account = show_account;
oauth_class = GOA_OAUTH_PROVIDER_CLASS (klass);
oauth_class->get_identity_sync = get_identity_sync;
diff --git a/src/panel/goapanel.c b/src/panel/goapanel.c
index 0c4f38d..22265a4 100644
--- a/src/panel/goapanel.c
+++ b/src/panel/goapanel.c
@@ -262,28 +262,6 @@ show_page_nothing_selected (GoaPanel *panel)
}
static void
-add_row (GtkWidget *table,
- guint row,
- const gchar *key,
- const gchar *value)
-{
- GtkWidget *label;
-
- label = gtk_label_new (key);
- gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
- gtk_table_attach (GTK_TABLE (table), label,
- 0, 1,
- row, row + 1,
- GTK_FILL, GTK_FILL, 0, 0);
- label = gtk_label_new (value);
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_table_attach (GTK_TABLE (table), label,
- 1, 2,
- row, row + 1,
- GTK_FILL, GTK_FILL, 0, 0);
-}
-
-static void
on_info_bar_response (GtkInfoBar *info_bar,
gint response_id,
gpointer user_data)
@@ -343,33 +321,6 @@ on_info_bar_response (GtkInfoBar *info_bar,
}
static void
-on_name_editing_done (GoaEditableLabel *editable_label,
- gpointer user_data)
-{
- GoaPanel *panel = GOA_PANEL (user_data);
- GtkTreeIter iter;
-
- if (gtk_tree_selection_get_selected (gtk_tree_view_get_selection (GTK_TREE_VIEW (panel->accounts_treeview)),
- NULL,
- &iter))
- {
- GoaObject *object;
- GoaAccount *account;
-
- gtk_tree_model_get (GTK_TREE_MODEL (panel->accounts_model),
- &iter,
- GOA_PANEL_ACCOUNTS_MODEL_COLUMN_OBJECT, &object,
- -1);
-
- account = goa_object_peek_account (object);
- goa_account_call_set_name (account,
- goa_editable_label_get_text (editable_label),
- NULL, /* GCancellable */
- NULL, NULL); /* callback, user_data */
- }
-}
-
-static void
show_page_account (GoaPanel *panel,
GoaObject *object)
{
@@ -378,16 +329,10 @@ show_page_account (GoaPanel *panel,
GtkWidget *table;
GtkWidget *bar;
GtkWidget *label;
- GtkWidget *editable_label;
- guint row;
GoaProvider *provider;
GoaAccount *account;
- GoaGoogleAccount *gaccount;
- GoaFacebookAccount *fbaccount;
const gchar *provider_type;
- gchar *s;
- row = 0;
provider = NULL;
show_page (panel, 1);
@@ -399,8 +344,6 @@ show_page_account (GoaPanel *panel,
g_list_free (children);
account = goa_object_peek_account (object);
- gaccount = goa_object_peek_google_account (object);
- fbaccount = goa_object_peek_facebook_account (object);
provider_type = goa_account_get_provider_type (account);
provider = goa_provider_get_for_provider_type (provider_type);
@@ -421,39 +364,13 @@ show_page_account (GoaPanel *panel,
gtk_table_set_col_spacings (GTK_TABLE (table), 10);
gtk_box_pack_start (GTK_BOX (panel->accounts_vbox), table, FALSE, TRUE, 0);
- editable_label = goa_editable_label_new ();
- goa_editable_label_set_text (GOA_EDITABLE_LABEL (editable_label), goa_account_get_name (account));
- goa_editable_label_set_editable (GOA_EDITABLE_LABEL (editable_label), TRUE);
- goa_editable_label_set_scale (GOA_EDITABLE_LABEL (editable_label), 1.2);
- goa_editable_label_set_weight (GOA_EDITABLE_LABEL (editable_label), 700);
- g_signal_connect (editable_label, "editing-done", G_CALLBACK (on_name_editing_done), panel);
- gtk_table_attach (GTK_TABLE (table), editable_label,
- 1, 2,
- row, row + 1,
- GTK_FILL, GTK_FILL, 0, 0);
- row++;
-
if (provider != NULL)
{
- s = g_strdup (goa_provider_get_name (provider));
- }
- else
- {
- /* Translators: Shown as "Account Type" when the UI doesn't support the provider type.
- * The %s is the provider type (e.g. 'google').
- */
- s = g_strdup_printf (_("%s (Unsupported)"), provider_type);
- }
- add_row (table, row++, _("Account Type"), s);
- g_free (s);
-
- if (gaccount != NULL)
- {
- add_row (table, row++, _("Email Address"), goa_google_account_get_email_address (gaccount));
- }
- if (fbaccount != NULL)
- {
- add_row (table, row++, _("User Name"), goa_facebook_account_get_user_name (fbaccount));
+ goa_provider_show_account (provider,
+ panel->client,
+ object,
+ GTK_BOX (panel->accounts_vbox),
+ GTK_TABLE (table));
}
gtk_widget_show_all (panel->accounts_vbox);