diff options
author | David Zeuthen <davidz@redhat.com> | 2011-05-27 13:55:12 -0400 |
---|---|---|
committer | David Zeuthen <davidz@redhat.com> | 2011-05-27 13:55:12 -0400 |
commit | 8aae0af0a6b77327f9015b52b609dd2c680996bd (patch) | |
tree | e0266c87b59dd0976dfdf6f9126d5dffc5775855 | |
parent | d8f3227b1f5f0e62713a697c2a0d34671d0edcbe (diff) |
Consolidate properties used for identifying an account
Signed-off-by: David Zeuthen <davidz@redhat.com>
-rw-r--r-- | data/dbus-interfaces.xml | 43 | ||||
-rw-r--r-- | doc/goa-docs.xml | 1 | ||||
-rw-r--r-- | doc/goa-sections.txt | 13 | ||||
-rw-r--r-- | src/daemon/goadaemon.c | 48 | ||||
-rw-r--r-- | src/goabackend/goafacebookprovider.c | 44 | ||||
-rw-r--r-- | src/goabackend/goagoogleprovider.c | 26 | ||||
-rw-r--r-- | src/goabackend/goaoauth2provider.c | 111 | ||||
-rw-r--r-- | src/goabackend/goaoauth2provider.h | 9 | ||||
-rw-r--r-- | src/goabackend/goaoauthprovider.c | 59 | ||||
-rw-r--r-- | src/goabackend/goaoauthprovider.h | 5 | ||||
-rw-r--r-- | src/goabackend/goaprovider.c | 13 | ||||
-rw-r--r-- | src/goabackend/goatwitterprovider.c | 75 | ||||
-rw-r--r-- | src/goabackend/goayahooprovider.c | 43 | ||||
-rw-r--r-- | src/panel/goapanelaccountsmodel.c | 14 | ||||
-rw-r--r-- | src/panel/goapanelaccountsmodel.h | 1 |
15 files changed, 198 insertions, 307 deletions
diff --git a/data/dbus-interfaces.xml b/data/dbus-interfaces.xml index 0de4a5e..b091efd 100644 --- a/data/dbus-interfaces.xml +++ b/data/dbus-interfaces.xml @@ -63,12 +63,27 @@ --> <property name="AttentionNeeded" type="b" access="read"/> - <!-- Name: A human-readable description for the account. - - This property may change if the user e.g. renames the + <!-- Identity: + A string that uniquely identifies the account at the + provider. + + Note that this may be the same string for different kinds of + providers (for example, if the user is using the same + email-address for several providers) - use + #org.gnome.OnlineAccounts.Account:Id to uniquely identify the account. - --> - <property name="Name" type="s" access="read"/> + + This string might not be suitable for presentation in an user + interface - use + #org.gnome.OnlineAccounts.Account:PresentationIdentity instead. + --> + <property name="Identity" type="s" access="read"/> + + <!-- PresentationIdentity: + Like the #org.gnome.OnlineAccounts.Account:Identity property but + suitable for presentation in an user interface. + --> + <property name="PresentationIdentity" type="s" access="read"/> <!-- Remove: @@ -122,9 +137,6 @@ <arg name="access_token" type="s" direction="out"/> <arg name="expires_in" type="i" direction="out"/> </method> - - <!-- Identity: The identity that was authenticated. --> - <property name="Identity" type="s" access="read"/> </interface> <!-- @@ -158,9 +170,6 @@ <!-- ConsumerSecret: The consumer secret. --> <property name="ConsumerSecret" type="s" access="read"/> - - <!-- Identity: The identity that was authenticated. --> - <property name="Identity" type="s" access="read"/> </interface> <!-- @@ -200,17 +209,19 @@ <!-- AddAccount: - @type: The type of account to create. See the #org.gnome.OnlineAccounts:Type property for known types. - @name: The human readable name of the account (cf. the #org.gnome.OnlineAccounts.Account:Name property). - @details: Details about the account. See each interface (e.g. #org.gnome.OnlineAccounts.GoogleAccount) for details of what other elements to include. + @provider: The account provider. See the #org.gnome.OnlineAccounts.Account:ProviderType property for known providers. + @identity: The identity of the account (cf. the #org.gnome.OnlineAccounts.Account:Identity property). + @presentation_identity: The identity of the account that is suitable for display in an user interface (cf. the #org.gnome.OnlineAccounts.Account:PresentationIdentity property). + @details: Extra key/value pairs to set. @account_object_path: The object path of the created account. Creates a new account. Note that this does not create an account at the remote service. --> <method name="AddAccount"> - <arg name="type" type="s" direction="in"/> - <arg name="name" type="s" direction="in"/> + <arg name="provider" type="s" direction="in"/> + <arg name="identity" type="s" direction="in"/> + <arg name="presentation_identity" type="s" direction="in"/> <arg name="details" type="a{ss}" direction="in"/> <arg name="account_object_path" type="o" direction="out"/> </method> diff --git a/doc/goa-docs.xml b/doc/goa-docs.xml index 4cbe935..1a506bd 100644 --- a/doc/goa-docs.xml +++ b/doc/goa-docs.xml @@ -144,7 +144,6 @@ </chapter> <chapter> <title>Providers</title> - <xi:include href="xml/goagenericmailprovider.xml"/> <xi:include href="xml/goagoogleprovider.xml"/> <xi:include href="xml/goafacebookprovider.xml"/> <xi:include href="xml/goayahooprovider.xml"/> diff --git a/doc/goa-sections.txt b/doc/goa-sections.txt index b246dde..eaa5e22 100644 --- a/doc/goa-sections.txt +++ b/doc/goa-sections.txt @@ -110,8 +110,10 @@ goa_account_get_id goa_account_set_id goa_account_get_attention_needed goa_account_set_attention_needed -goa_account_get_name -goa_account_set_name +goa_account_get_identity +goa_account_set_identity +goa_account_get_presentation_identity +goa_account_set_presentation_identity goa_account_get_keyfile_group goa_account_set_keyfile_group goa_account_get_keyfile_path @@ -164,13 +166,10 @@ goa_account_skeleton_get_type GoaOAuth2Based GoaOAuth2BasedIface goa_oauth2_based_interface_info -goa_oauth2_based_override_properties goa_oauth2_based_call_get_access_token goa_oauth2_based_call_get_access_token_finish goa_oauth2_based_call_get_access_token_sync goa_oauth2_based_complete_get_access_token -goa_oauth2_based_set_identity -goa_oauth2_based_get_identity GoaOAuth2BasedProxy GoaOAuth2BasedProxyClass goa_oauth2_based_proxy_new @@ -216,8 +215,6 @@ goa_oauth_based_call_get_access_token goa_oauth_based_call_get_access_token_finish goa_oauth_based_call_get_access_token_sync goa_oauth_based_complete_get_access_token -goa_oauth_based_get_identity -goa_oauth_based_set_identity goa_oauth_based_get_consumer_key goa_oauth_based_set_consumer_key goa_oauth_based_get_consumer_secret @@ -348,6 +345,7 @@ goa_oauth2_provider_get_client_id goa_oauth2_provider_get_client_secret goa_oauth2_provider_build_authorization_uri goa_oauth2_provider_get_use_external_browser +goa_oauth2_provider_add_account_key_values goa_oauth2_provider_get_identity_sync goa_oauth2_provider_get_access_token_sync <SUBSECTION Standard> @@ -374,6 +372,7 @@ goa_oauth_provider_get_consumer_key goa_oauth_provider_get_consumer_secret goa_oauth_provider_build_authorization_uri goa_oauth_provider_get_use_external_browser +goa_oauth_provider_add_account_key_values goa_oauth_provider_get_identity_sync goa_oauth_provider_get_access_token_sync <SUBSECTION Standard> diff --git a/src/daemon/goadaemon.c b/src/daemon/goadaemon.c index ece4dff..45d232b 100644 --- a/src/daemon/goadaemon.c +++ b/src/daemon/goadaemon.c @@ -70,8 +70,9 @@ static void on_file_monitor_changed (GFileMonitor *monitor, static gboolean on_manager_handle_add_account (GoaManager *object, GDBusMethodInvocation *invocation, - const gchar *type, - const gchar *name, + const gchar *provider, + const gchar *identity, + const gchar *presentation_identity, GVariant *details, gpointer user_data); @@ -412,7 +413,8 @@ update_account_object (GoaDaemon *daemon, GoaAccount *account; GoaProvider *provider; gboolean ret; - gchar *name; + gchar *identity; + gchar *presentation_identity; gchar *type; GError *error; @@ -422,14 +424,15 @@ update_account_object (GoaDaemon *daemon, g_return_val_if_fail (key_file != NULL, FALSE); ret = FALSE; - name = NULL; + identity = NULL; type = NULL; account = NULL; goa_debug ("updating %s %d", g_dbus_object_get_object_path (G_DBUS_OBJECT (object)), just_added); - type = g_key_file_get_string (key_file, group, "Type", NULL); - name = g_key_file_get_string (key_file, group, "Name", NULL); + type = g_key_file_get_string (key_file, group, "Provider", NULL); + identity = g_key_file_get_string (key_file, group, "Identity", NULL); + presentation_identity = g_key_file_get_string (key_file, group, "PresentationIdentity", NULL); if (just_added) { account = goa_account_skeleton_new (); @@ -444,7 +447,8 @@ update_account_object (GoaDaemon *daemon, goa_account_set_keyfile_path (account, path); goa_account_set_keyfile_group (account, group); goa_account_set_provider_type (account, type); - goa_account_set_name (account, name); + goa_account_set_identity (account, identity); + goa_account_set_presentation_identity (account, presentation_identity); provider = goa_provider_get_for_provider_type (type); if (provider == NULL) @@ -471,7 +475,7 @@ update_account_object (GoaDaemon *daemon, g_object_unref (provider); g_object_unref (account); g_free (type); - g_free (name); + g_free (identity); return ret; } @@ -729,8 +733,9 @@ generate_new_id (GoaDaemon *daemon) static gboolean on_manager_handle_add_account (GoaManager *manager, GDBusMethodInvocation *invocation, - const gchar *type, - const gchar *name, + const gchar *provider, + const gchar *identity, + const gchar *presentation_identity, GVariant *details, gpointer user_data) { @@ -791,8 +796,9 @@ on_manager_handle_add_account (GoaManager *manager, id = generate_new_id (daemon); group = g_strdup_printf ("Account %s", id); - g_key_file_set_string (key_file, group, "Type", type); - g_key_file_set_string (key_file, group, "Name", name); + g_key_file_set_string (key_file, group, "Provider", provider); + g_key_file_set_string (key_file, group, "Identity", identity); + g_key_file_set_string (key_file, group, "PresentationIdentity", presentation_identity); g_variant_iter_init (&iter, details); while (g_variant_iter_next (&iter, "{&s&s}", &key, &value)) @@ -986,7 +992,6 @@ on_account_handle_remove (GoaAccount *account, GKeyFile *key_file; gchar *path; gchar *group; - gchar *name; gchar *data; gsize length; GError *error; @@ -994,15 +999,8 @@ on_account_handle_remove (GoaAccount *account, path = NULL; group = NULL; key_file = NULL; - name = NULL; data = NULL; - if (g_strcmp0 (goa_account_get_name (account), name) == 0) - { - goa_account_complete_remove (account, invocation); - goto out; - } - /* update key-file - right now we only support removing the account * if the entry is in ~/.config/goa-1.0/accounts.conf */ @@ -1024,15 +1022,6 @@ on_account_handle_remove (GoaAccount *account, group = g_strdup_printf ("Account %s", goa_account_get_id (account)); error = NULL; - name = g_key_file_get_string (key_file, group, "Name", &error); - if (name == NULL) - { - g_dbus_method_invocation_return_gerror (invocation, error); - g_error_free (error); - goto out; - } - - error = NULL; if (!g_key_file_remove_group (key_file, group, &error)) { g_dbus_method_invocation_return_gerror (invocation, error); @@ -1068,7 +1057,6 @@ on_account_handle_remove (GoaAccount *account, out: g_free (data); - g_free (name); if (key_file != NULL) g_key_file_free (key_file); g_free (group); diff --git a/src/goabackend/goafacebookprovider.c b/src/goabackend/goafacebookprovider.c index ba37182..fb34acb 100644 --- a/src/goabackend/goafacebookprovider.c +++ b/src/goabackend/goafacebookprovider.c @@ -124,7 +124,7 @@ get_client_secret (GoaOAuth2Provider *provider) static gchar * get_identity_sync (GoaOAuth2Provider *provider, const gchar *access_token, - gchar **out_name, + gchar **out_presentation_identity, GCancellable *cancellable, GError **error) { @@ -134,14 +134,14 @@ get_identity_sync (GoaOAuth2Provider *provider, JsonObject *json_object; gchar *ret; gchar *id; - gchar *name; + gchar *presentation_identity; ret = NULL; proxy = NULL; call = NULL; parser = NULL; id = NULL; - name = NULL; + presentation_identity = NULL; /* TODO: cancellable */ @@ -174,7 +174,7 @@ get_identity_sync (GoaOAuth2Provider *provider, } json_object = json_node_get_object (json_parser_get_root (parser)); - id = g_strdup (json_object_get_string_member (json_object, "username")); + id = g_strdup (json_object_get_string_member (json_object, "id")); if (id == NULL) { g_set_error (error, @@ -183,8 +183,8 @@ get_identity_sync (GoaOAuth2Provider *provider, _("Didn't find username member in JSON data")); goto out; } - name = g_strdup (json_object_get_string_member (json_object, "name")); - if (name == NULL) + presentation_identity = g_strdup (json_object_get_string_member (json_object, "username")); + if (presentation_identity == NULL) { g_set_error (error, GOA_ERROR, @@ -195,15 +195,15 @@ get_identity_sync (GoaOAuth2Provider *provider, ret = id; id = NULL; - if (out_name != NULL) + if (out_presentation_identity != NULL) { - *out_name = name; - name = NULL; + *out_presentation_identity = presentation_identity; + presentation_identity = NULL; } out: g_free (id); - g_free (name); + g_free (presentation_identity); if (call != NULL) g_object_unref (call); if (proxy != NULL) @@ -221,13 +221,7 @@ build_object (GoaProvider *provider, const gchar *group, GError **error) { - GoaAccount *account; gboolean ret; - gchar *user_name; - - user_name = NULL; - account = NULL; - ret = FALSE; /* Chain up */ if (!GOA_PROVIDER_CLASS (goa_facebook_provider_parent_class)->build_object (provider, @@ -237,25 +231,9 @@ build_object (GoaProvider *provider, error)) goto out; - account = goa_object_get_account (GOA_OBJECT (object)); - - user_name = g_key_file_get_string (key_file, group, "Identity", NULL); - if (user_name == NULL) - { - g_set_error (error, - GOA_ERROR, - GOA_ERROR_FAILED, - "Invalid identity %s for id %s", - user_name, - goa_account_get_id (account)); - goto out; - } - ret = TRUE; out: - if (account != NULL) - g_object_unref (account); return ret; } @@ -277,7 +255,7 @@ show_account (GoaProvider *provider, /* Chain up */ GOA_PROVIDER_CLASS (goa_facebook_provider_parent_class)->show_account (provider, client, object, vbox, table); - goa_util_add_row_editable_label_from_keyfile (table, object, _("User Name"), "Identity", FALSE); + goa_util_add_row_editable_label_from_keyfile (table, object, _("User Name"), "PresentationIdentity", FALSE); } /* ---------------------------------------------------------------------------------------------------- */ diff --git a/src/goabackend/goagoogleprovider.c b/src/goabackend/goagoogleprovider.c index 544244d..d66acb9 100644 --- a/src/goabackend/goagoogleprovider.c +++ b/src/goabackend/goagoogleprovider.c @@ -150,7 +150,7 @@ static gchar * get_identity_sync (GoaOAuthProvider *provider, const gchar *access_token, const gchar *access_token_secret, - gchar **out_name, + gchar **out_presentation_identity, GCancellable *cancellable, GError **error) { @@ -227,8 +227,8 @@ get_identity_sync (GoaOAuthProvider *provider, ret = email; email = NULL; - if (out_name != NULL) - *out_name = g_strdup (ret); /* for now: use email as name */ + if (out_presentation_identity != NULL) + *out_presentation_identity = g_strdup (ret); /* for now: use email as presentation identity */ out: g_free (email); @@ -253,12 +253,10 @@ build_object (GoaProvider *provider, GoaCalendar *calendar; GoaContacts *contacts; gboolean ret; - gchar *email_address; gboolean mail_enabled; gboolean calendar_enabled; gboolean contacts_enabled; - email_address = NULL; account = NULL; mail = NULL; calendar = NULL; @@ -275,18 +273,7 @@ build_object (GoaProvider *provider, account = goa_object_get_account (GOA_OBJECT (object)); - email_address = g_key_file_get_string (key_file, group, "Identity", NULL); - if (email_address == NULL /* || !is_valid_email_address () */) - { - g_set_error (error, - GOA_ERROR, - GOA_ERROR_FAILED, - "Invalid identity %s for id %s", - email_address, - goa_account_get_id (account)); - goto out; - } - + /* Email */ mail = goa_object_get_mail (GOA_OBJECT (object)); mail_enabled = g_key_file_get_boolean (key_file, group, "MailEnabled", NULL); if (mail_enabled) @@ -295,7 +282,7 @@ build_object (GoaProvider *provider, { mail = goa_mail_skeleton_new (); g_object_set (G_OBJECT (mail), - "email-address", email_address, + "email-address", goa_account_get_identity (account), "imap-host", "imap.gmail.com", "imap-user-name", "", "imap-use-tls", TRUE, @@ -312,6 +299,7 @@ build_object (GoaProvider *provider, goa_object_skeleton_set_mail (object, NULL); } + /* Calendar */ calendar = goa_object_get_calendar (GOA_OBJECT (object)); calendar_enabled = g_key_file_get_boolean (key_file, group, "CalendarEnabled", NULL); if (calendar_enabled) @@ -328,6 +316,7 @@ build_object (GoaProvider *provider, goa_object_skeleton_set_calendar (object, NULL); } + /* Contacts */ contacts = goa_object_get_contacts (GOA_OBJECT (object)); contacts_enabled = g_key_file_get_boolean (key_file, group, "ContactsEnabled", NULL); if (contacts_enabled) @@ -348,7 +337,6 @@ build_object (GoaProvider *provider, ret = TRUE; out: - g_free (email_address); if (contacts != NULL) g_object_unref (contacts); if (calendar != NULL) diff --git a/src/goabackend/goaoauth2provider.c b/src/goabackend/goaoauth2provider.c index f7bb50d..5200389 100644 --- a/src/goabackend/goaoauth2provider.c +++ b/src/goabackend/goaoauth2provider.c @@ -118,6 +118,33 @@ goa_oauth2_provider_get_use_external_browser (GoaOAuth2Provider *provider) /* ---------------------------------------------------------------------------------------------------- */ +static void +goa_oauth2_provider_add_account_key_values_default (GoaOAuth2Provider *provider, + GVariantBuilder *builder) +{ + /* do nothing */ +} + +/** + * goa_oauth2_provider_add_account_key_values: + * @provider: A #GoaProvider. + * @builder: A #GVariantBuilder for a <literal>a{ss}</literal> variant. + * + * Hook for implementations to add key/value pairs to the key-file + * when creating an account. + * + * This is a virtual method where the default implementation does nothing. + */ +void +goa_oauth2_provider_add_account_key_values (GoaOAuth2Provider *provider, + GVariantBuilder *builder) +{ + g_return_if_fail (GOA_IS_OAUTH2_PROVIDER (provider)); + return GOA_OAUTH2_PROVIDER_GET_CLASS (provider)->add_account_key_values (provider, builder); +} + +/* ---------------------------------------------------------------------------------------------------- */ + static gchar * goa_oauth2_provider_build_authorization_uri_default (GoaOAuth2Provider *provider, const gchar *authorization_uri, @@ -312,7 +339,7 @@ goa_oauth2_provider_get_client_secret (GoaOAuth2Provider *provider) * goa_oauth2_provider_get_identity_sync: * @provider: A #GoaOAuth2Provider. * @access_token: A valid OAuth 2.0 access token. - * @out_name: (out): Return location for name or %NULL. + * @out_presentation_identity: (out): Return location for presentation identity or %NULL. * @cancellable: (allow-none): A #GCancellable or %NULL. * @error: Return location for @error or %NULL. * @@ -320,13 +347,9 @@ goa_oauth2_provider_get_client_secret (GoaOAuth2Provider *provider) * @access_token. * * The identity is needed because all authentication happens out of - * band. The only requirement is that the returned identity is unique - * - for example, for #GoaGoogleProvider the returned identity - * is the email address, for #GoaFacebookProvider it's the user - * name. In addition to the identity, an implementation also returns a - * <emphasis>name</emphasis> that is more suitable for presentation - * (the identity could be a GUID for example) and doesn't have to be - * unique. + * band. In addition to the identity, an implementation also returns a + * <emphasis>presentation identity</emphasis> that is more suitable + * for presentation (the identity could be a GUID for example). * * The calling thread is blocked while the identity is obtained. * @@ -336,7 +359,7 @@ goa_oauth2_provider_get_client_secret (GoaOAuth2Provider *provider) gchar * goa_oauth2_provider_get_identity_sync (GoaOAuth2Provider *provider, const gchar *access_token, - gchar **out_name, + gchar **out_presentation_identity, GCancellable *cancellable, GError **error) { @@ -344,7 +367,7 @@ goa_oauth2_provider_get_identity_sync (GoaOAuth2Provider *provider, g_return_val_if_fail (access_token != NULL, NULL); g_return_val_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable), NULL); g_return_val_if_fail (error == NULL || *error == NULL, NULL); - return GOA_OAUTH2_PROVIDER_GET_CLASS (provider)->get_identity_sync (provider, access_token, out_name, cancellable, error); + return GOA_OAUTH2_PROVIDER_GET_CLASS (provider)->get_identity_sync (provider, access_token, out_presentation_identity, cancellable, error); } /* ---------------------------------------------------------------------------------------------------- */ @@ -506,7 +529,7 @@ typedef struct gchar *refresh_token; gchar *identity; - gchar *name; + gchar *presentation_identity; } IdentifyData; static gboolean @@ -582,7 +605,7 @@ get_tokens_and_identity (GoaOAuth2Provider *provider, gint *out_access_token_expires_in, gchar **out_refresh_token, gchar **out_identity, - gchar **out_name, + gchar **out_presentation_identity, GError **error) { gboolean ret; @@ -729,7 +752,7 @@ get_tokens_and_identity (GoaOAuth2Provider *provider, /* TODO: run in worker thread */ data.identity = goa_oauth2_provider_get_identity_sync (provider, data.access_token, - &data.name, + &data.presentation_identity, NULL, /* TODO: GCancellable */ error); if (data.identity == NULL) @@ -754,8 +777,8 @@ get_tokens_and_identity (GoaOAuth2Provider *provider, *out_refresh_token = g_strdup (data.refresh_token); if (out_identity != NULL) *out_identity = g_strdup (data.identity); - if (out_name != NULL) - *out_name = g_strdup (data.name); + if (out_presentation_identity != NULL) + *out_presentation_identity = g_strdup (data.presentation_identity); } else { @@ -764,7 +787,7 @@ get_tokens_and_identity (GoaOAuth2Provider *provider, } g_free (data.identity); - g_free (data.name); + g_free (data.presentation_identity); g_free (url); g_free (data.authorization_code); @@ -838,7 +861,7 @@ goa_oauth2_provider_add_account (GoaProvider *_provider, gint access_token_expires_in; gchar *refresh_token; gchar *identity; - gchar *name; + gchar *presentation_identity; GList *accounts; GList *l; AddData data; @@ -855,7 +878,7 @@ goa_oauth2_provider_add_account (GoaProvider *_provider, access_token = NULL; refresh_token = NULL; identity = NULL; - name = NULL; + presentation_identity = NULL; accounts = NULL; memset (&data, '\0', sizeof (AddData)); @@ -869,7 +892,7 @@ goa_oauth2_provider_add_account (GoaProvider *_provider, &access_token_expires_in, &refresh_token, &identity, - &name, + &presentation_identity, &data.error)) goto out; @@ -893,7 +916,7 @@ goa_oauth2_provider_add_account (GoaProvider *_provider, goa_provider_get_provider_type (GOA_PROVIDER (provider))) != 0) continue; - identity_from_object = goa_oauth2_based_get_identity (oauth2_based); + identity_from_object = goa_account_get_identity (account); if (g_strcmp0 (identity_from_object, identity) == 0) { g_set_error (&data.error, @@ -909,11 +932,13 @@ goa_oauth2_provider_add_account (GoaProvider *_provider, * can create a proxy for the new object) so run the mainloop while * waiting for this to complete */ + g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{ss}")); + goa_oauth2_provider_add_account_key_values (provider, &builder); goa_manager_call_add_account (goa_client_get_manager (client), goa_provider_get_provider_type (GOA_PROVIDER (provider)), - name, /* Name */ - g_variant_new_parsed ("{'Identity': %s}", - identity), + identity, + presentation_identity, + g_variant_builder_end (&builder), NULL, /* GCancellable* */ (GAsyncReadyCallback) add_account_cb, &data); @@ -954,7 +979,7 @@ goa_oauth2_provider_add_account (GoaProvider *_provider, g_list_foreach (accounts, (GFunc) g_object_unref, NULL); g_list_free (accounts); g_free (identity); - g_free (name); + g_free (presentation_identity); g_free (refresh_token); g_free (access_token); g_free (authorization_code); @@ -1012,11 +1037,11 @@ goa_oauth2_provider_refresh_account (GoaProvider *_provider, &access_token_expires_in, &refresh_token, &identity, - NULL, /* out_name */ + NULL, /* out_presentation_identity */ error)) goto out; - existing_identity = goa_oauth2_based_get_identity (goa_object_peek_oauth2_based (object)); + existing_identity = goa_account_get_identity (goa_object_peek_account (object)); if (g_strcmp0 (identity, existing_identity) != 0) { g_set_error (error, @@ -1303,9 +1328,6 @@ goa_oauth2_provider_build_object (GoaProvider *provider, GError **error) { GoaOAuth2Based *oauth2_based; - gchar *identity; - - identity = NULL; oauth2_based = goa_object_get_oauth2_based (GOA_OBJECT (object)); if (oauth2_based != NULL) @@ -1321,20 +1343,8 @@ goa_oauth2_provider_build_object (GoaProvider *provider, G_CALLBACK (on_handle_get_access_token), NULL); - identity = g_key_file_get_string (key_file, group, "Identity", NULL); - if (identity == NULL) - { - g_set_error (error, - GOA_ERROR, - GOA_ERROR_FAILED, - "No Identity key"); - goto out; - } - goa_oauth2_based_set_identity (oauth2_based, identity); - out: g_object_unref (oauth2_based); - g_free (identity); return TRUE; } @@ -1361,19 +1371,19 @@ goa_oauth2_provider_ensure_credentials_sync (GoaProvider *_provider, again: access_token = goa_oauth2_provider_get_access_token_sync (provider, - object, - force_refresh, - &access_token_expires_in, - cancellable, - error); + object, + force_refresh, + &access_token_expires_in, + cancellable, + error); if (access_token == NULL) goto out; identity = goa_oauth2_provider_get_identity_sync (provider, - access_token, - NULL, /* out_name */ - cancellable, - error); + access_token, + NULL, /* out_presentation_identity */ + cancellable, + error); if (identity == NULL) { /* OK, try again, with forcing the locally cached credentials to be refreshed */ @@ -1421,6 +1431,7 @@ goa_oauth2_provider_class_init (GoaOAuth2ProviderClass *klass) klass->build_authorization_uri = goa_oauth2_provider_build_authorization_uri_default; klass->get_use_external_browser = goa_oauth2_provider_get_use_external_browser_default; + klass->add_account_key_values = goa_oauth2_provider_add_account_key_values_default; } /* ---------------------------------------------------------------------------------------------------- */ diff --git a/src/goabackend/goaoauth2provider.h b/src/goabackend/goaoauth2provider.h index 7c489f2..67c3523 100644 --- a/src/goabackend/goaoauth2provider.h +++ b/src/goabackend/goaoauth2provider.h @@ -67,6 +67,7 @@ struct _GoaOAuth2Provider * @get_identity_sync: Virtual function for goa_oauth2_provider_get_identity_sync(). * @build_authorization_uri: Virtual function for goa_oauth2_provider_build_authorization_uri(). * @get_use_external_browser: Virtual function for goa_oauth2_provider_get_use_external_browser(). + * @add_account_key_values: Virtual function for goa_oauth2_provider_add_account_key_values(). * * Class structure for #GoaOAuth2Provider. */ @@ -83,7 +84,7 @@ struct _GoaOAuth2ProviderClass const gchar *(*get_client_secret) (GoaOAuth2Provider *provider); gchar *(*get_identity_sync) (GoaOAuth2Provider *provider, const gchar *access_token, - gchar **out_name, + gchar **out_presentation_identity, GCancellable *cancellable, GError **error); @@ -94,6 +95,8 @@ struct _GoaOAuth2ProviderClass const gchar *escaped_client_id, const gchar *escaped_scope); gboolean (*get_use_external_browser) (GoaOAuth2Provider *provider); + void (*add_account_key_values) (GoaOAuth2Provider *provider, + GVariantBuilder *builder); /*< private >*/ /* Padding for future expansion */ @@ -109,7 +112,7 @@ const gchar *goa_oauth2_provider_get_client_id (GoaOAuth2Provider *p const gchar *goa_oauth2_provider_get_client_secret (GoaOAuth2Provider *provider); gchar *goa_oauth2_provider_get_identity_sync (GoaOAuth2Provider *provider, const gchar *access_token, - gchar **out_name, + gchar **out_presentation_identity, GCancellable *cancellable, GError **error); gchar *goa_oauth2_provider_get_access_token_sync (GoaOAuth2Provider *provider, @@ -124,6 +127,8 @@ gchar *goa_oauth2_provider_build_authorization_uri (GoaOAuth2Provider *p const gchar *escaped_client_id, const gchar *escaped_scope); gboolean goa_oauth2_provider_get_use_external_browser (GoaOAuth2Provider *provider); +void goa_oauth2_provider_add_account_key_values (GoaOAuth2Provider *provider, + GVariantBuilder *builder); G_END_DECLS diff --git a/src/goabackend/goaoauthprovider.c b/src/goabackend/goaoauthprovider.c index 05e5fd7..352a54a 100644 --- a/src/goabackend/goaoauthprovider.c +++ b/src/goabackend/goaoauthprovider.c @@ -385,7 +385,7 @@ goa_oauth_provider_get_callback_uri (GoaOAuthProvider *provider) * @provider: A #GoaOAuthProvider. * @access_token: A valid OAuth 1.0 access token. * @access_token_secret: The valid secret for @access_token. - * @out_name: (out): Return location for name or %NULL. + * @out_presentation_identity: (out): Return location for presentation identity or %NULL. * @cancellable: (allow-none): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * @@ -393,13 +393,9 @@ goa_oauth_provider_get_callback_uri (GoaOAuthProvider *provider) * @access_token_secret. * * The identity is needed because all authentication happens out of - * band. The only requirement is that the returned identity is unique - * - for example, for #GoaGoogleProvider the returned identity - * is the email address, for #GoaFacebookProvider it's the user - * name. In addition to the identity, an implementation also returns a - * <emphasis>name</emphasis> in @out_name that is more suitable for - * presentation (the identity could be a GUID for example) and doesn't - * have to be unique. + * band. In addition to the identity, an implementation also returns a + * <emphasis>presentation identity</emphasis> that is more suitable + * for presentation (the identity could be a GUID for example). * * The calling thread is blocked while the identity is obtained. * @@ -413,7 +409,7 @@ gchar * goa_oauth_provider_get_identity_sync (GoaOAuthProvider *provider, const gchar *access_token, const gchar *access_token_secret, - gchar **out_name, + gchar **out_presentation_identity, GCancellable *cancellable, GError **error) { @@ -421,7 +417,7 @@ goa_oauth_provider_get_identity_sync (GoaOAuthProvider *provider, g_return_val_if_fail (access_token != NULL, NULL); g_return_val_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable), NULL); g_return_val_if_fail (error == NULL || *error == NULL, NULL); - return GOA_OAUTH_PROVIDER_GET_CLASS (provider)->get_identity_sync (provider, access_token, access_token_secret, out_name, cancellable, error); + return GOA_OAUTH_PROVIDER_GET_CLASS (provider)->get_identity_sync (provider, access_token, access_token_secret, out_presentation_identity, cancellable, error); } /* ---------------------------------------------------------------------------------------------------- */ @@ -546,7 +542,7 @@ typedef struct gchar *oauth_verifier; gchar *identity; - gchar *name; + gchar *presentation_identity; gchar *request_token; gchar *request_token_secret; @@ -622,7 +618,7 @@ get_tokens_and_identity (GoaOAuthProvider *provider, gchar **out_session_handle, gint *out_session_handle_expires_in, gchar **out_identity, - gchar **out_name, + gchar **out_presentation_identity, GError **error) { gboolean ret; @@ -827,7 +823,7 @@ get_tokens_and_identity (GoaOAuthProvider *provider, data.identity = goa_oauth_provider_get_identity_sync (provider, data.access_token, data.access_token_secret, - &data.name, + &data.presentation_identity, NULL, /* TODO: GCancellable */ &data.error); if (data.identity == NULL) @@ -857,8 +853,8 @@ get_tokens_and_identity (GoaOAuthProvider *provider, *out_session_handle_expires_in = data.session_handle_expires_in; if (out_identity != NULL) *out_identity = g_strdup (data.identity); - if (out_name != NULL) - *out_name = g_strdup (data.name); + if (out_presentation_identity != NULL) + *out_presentation_identity = g_strdup (data.presentation_identity); } else { @@ -866,7 +862,7 @@ get_tokens_and_identity (GoaOAuthProvider *provider, g_propagate_error (error, data.error); } - g_free (data.name); + g_free (data.presentation_identity); g_free (data.identity); g_free (url); @@ -947,7 +943,7 @@ goa_oauth_provider_add_account (GoaProvider *_provider, gchar *session_handle; gint session_handle_expires_in; gchar *identity; - gchar *name; + gchar *presentation_identity; GList *accounts; GList *l; AddData data; @@ -964,7 +960,7 @@ goa_oauth_provider_add_account (GoaProvider *_provider, access_token_secret = NULL; session_handle = NULL; identity = NULL; - name = NULL; + presentation_identity = NULL; accounts = NULL; memset (&data, '\0', sizeof (AddData)); @@ -979,7 +975,7 @@ goa_oauth_provider_add_account (GoaProvider *_provider, &session_handle, &session_handle_expires_in, &identity, - &name, + &presentation_identity, &data.error)) goto out; @@ -1003,7 +999,7 @@ goa_oauth_provider_add_account (GoaProvider *_provider, goa_provider_get_provider_type (GOA_PROVIDER (provider))) != 0) continue; - identity_from_object = goa_oauth_based_get_identity (oauth_based); + identity_from_object = goa_account_get_identity (account); if (g_strcmp0 (identity_from_object, identity) == 0) { g_set_error (&data.error, @@ -1020,11 +1016,11 @@ goa_oauth_provider_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}", "Identity", identity); goa_oauth_provider_add_account_key_values (provider, &builder); goa_manager_call_add_account (goa_client_get_manager (client), goa_provider_get_provider_type (GOA_PROVIDER (provider)), - name, /* Name */ + identity, + presentation_identity, g_variant_builder_end (&builder), NULL, /* GCancellable* */ (GAsyncReadyCallback) add_account_cb, @@ -1069,7 +1065,7 @@ goa_oauth_provider_add_account (GoaProvider *_provider, g_list_foreach (accounts, (GFunc) g_object_unref, NULL); g_list_free (accounts); g_free (identity); - g_free (name); + g_free (presentation_identity); g_free (access_token); g_free (access_token_secret); g_free (session_handle); @@ -1129,11 +1125,11 @@ goa_oauth_provider_refresh_account (GoaProvider *_provider, &session_handle, &session_handle_expires_in, &identity, - NULL, /* out_name */ + NULL, /* out_presentation_identity */ error)) goto out; - existing_identity = goa_oauth_based_get_identity (goa_object_peek_oauth_based (object)); + existing_identity = goa_account_get_identity (goa_object_peek_account (object)); if (g_strcmp0 (identity, existing_identity) != 0) { g_set_error (error, @@ -1462,17 +1458,6 @@ goa_oauth_provider_build_object (GoaProvider *provider, G_CALLBACK (on_handle_get_access_token), NULL); - identity = g_key_file_get_string (key_file, group, "Identity", NULL); - if (identity == NULL) - { - g_set_error (error, - GOA_ERROR, - GOA_ERROR_FAILED, - "No Identity key"); - goto out; - } - goa_oauth_based_set_identity (oauth_based, identity); - out: g_object_unref (oauth_based); g_free (identity); @@ -1516,7 +1501,7 @@ goa_oauth_provider_ensure_credentials_sync (GoaProvider *_provider, identity = goa_oauth_provider_get_identity_sync (provider, access_token, access_token_secret, - NULL, /* out_name */ + NULL, /* out_presentation_identity */ cancellable, error); if (identity == NULL) diff --git a/src/goabackend/goaoauthprovider.h b/src/goabackend/goaoauthprovider.h index 876dacb..fbadfa7 100644 --- a/src/goabackend/goaoauthprovider.h +++ b/src/goabackend/goaoauthprovider.h @@ -69,6 +69,7 @@ struct _GoaOAuthProvider * @build_authorization_uri: Virtual function for goa_oauth_provider_build_authorization_uri(). * @get_use_external_browser: Virtual function for goa_oauth_provider_get_use_external_browser(). * @get_request_uri_params: Virtual function for goa_oauth_provider_get_request_uri_params(). + * @add_account_key_values: Virtual function for goa_oauth_provider_add_account_key_values(). * * Class structure for #GoaOAuthProvider. */ @@ -87,7 +88,7 @@ struct _GoaOAuthProviderClass gchar *(*get_identity_sync) (GoaOAuthProvider *provider, const gchar *access_token, const gchar *access_token_secret, - gchar **out_name, + gchar **out_presentation_identity, GCancellable *cancellable, GError **error); @@ -116,7 +117,7 @@ const gchar *goa_oauth_provider_get_callback_uri (GoaOAuthProvider *pro gchar *goa_oauth_provider_get_identity_sync (GoaOAuthProvider *provider, const gchar *access_token, const gchar *access_token_secret, - gchar **out_name, + gchar **out_presentation_identity, GCancellable *cancellable, GError **error); gchar *goa_oauth_provider_get_access_token_sync (GoaOAuthProvider *provider, diff --git a/src/goabackend/goaprovider.c b/src/goabackend/goaprovider.c index 072e380..e6fbe4c 100644 --- a/src/goabackend/goaprovider.c +++ b/src/goabackend/goaprovider.c @@ -231,10 +231,10 @@ goa_provider_refresh_account (GoaProvider *provider, * 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. + * This is a virtual method with an implementation that (currently) + * does nothing. 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, @@ -261,10 +261,7 @@ goa_provider_show_account_real (GoaProvider *provider, GtkBox *vbox, GtkTable *table) { - GtkWidget *elabel; - elabel = goa_util_add_row_editable_label_from_keyfile (table, object, NULL, "Name", TRUE); - goa_editable_label_set_scale (GOA_EDITABLE_LABEL (elabel), 1.2); - goa_editable_label_set_weight (GOA_EDITABLE_LABEL (elabel), 700); + /* For now, don't do anything */ } /* ---------------------------------------------------------------------------------------------------- */ diff --git a/src/goabackend/goatwitterprovider.c b/src/goabackend/goatwitterprovider.c index 52681ec..4d9ed18 100644 --- a/src/goabackend/goatwitterprovider.c +++ b/src/goabackend/goatwitterprovider.c @@ -95,28 +95,6 @@ get_request_uri (GoaOAuthProvider *provider) return "https://api.twitter.com/oauth/request_token"; } -static gchar ** -get_request_uri_params (GoaOAuthProvider *provider) -{ - return NULL; - GPtrArray *p; - p = g_ptr_array_new (); - g_ptr_array_add (p, g_strdup ("xoauth_displayname")); - g_ptr_array_add (p, g_strdup ("GNOME")); - - g_ptr_array_add (p, g_strdup ("scope")); - g_ptr_array_add (p, g_strdup ( - /* Display email address: cf. https://sites.twitter.com/site/oauthgoog/Home/emaildisplayscope */ - "https://www.twitterapis.com/auth/userinfo#email " - /* IMAP, SMTP access: http://code.twitter.com/apis/gmail/oauth/protocol.html */ - "https://mail.twitter.com/ " - /* Calendar data API: http://code.twitter.com/apis/calendar/data/2.0/developers_guide.html */ - "https://www.twitter.com/calendar/feeds")); - g_ptr_array_add (p, NULL); - return (gchar **) g_ptr_array_free (p, FALSE); -} - - static const gchar * get_authorization_uri (GoaOAuthProvider *provider) { @@ -141,7 +119,7 @@ static gchar * get_identity_sync (GoaOAuthProvider *provider, const gchar *access_token, const gchar *access_token_secret, - gchar **out_name, + gchar **out_presentation_identity, GCancellable *cancellable, GError **error) { @@ -151,14 +129,14 @@ get_identity_sync (GoaOAuthProvider *provider, JsonObject *json_object; gchar *ret; gchar *id; - gchar *name; + gchar *presentation_identity; ret = NULL; proxy = NULL; call = NULL; parser = NULL; id = NULL; - name = NULL; + presentation_identity = NULL; /* TODO: cancellable */ @@ -204,8 +182,8 @@ get_identity_sync (GoaOAuthProvider *provider, _("Didn't find id_str member in JSON data")); goto out; } - name = g_strdup (json_object_get_string_member (json_object, "screen_name")); - if (name == NULL) + presentation_identity = g_strdup (json_object_get_string_member (json_object, "screen_name")); + if (presentation_identity == NULL) { g_set_error (error, GOA_ERROR, @@ -216,15 +194,15 @@ get_identity_sync (GoaOAuthProvider *provider, ret = id; id = NULL; - if (out_name != NULL) + if (out_presentation_identity != NULL) { - *out_name = name; - name = NULL; + *out_presentation_identity = presentation_identity; + presentation_identity = NULL; } out: g_free (id); - g_free (name); + g_free (presentation_identity); if (call != NULL) g_object_unref (call); if (proxy != NULL) @@ -241,42 +219,20 @@ build_object (GoaProvider *provider, const gchar *group, GError **error) { - GoaAccount *account; gboolean ret; - gchar *id; - - id = NULL; - account = NULL; ret = FALSE; /* Chain up */ if (!GOA_PROVIDER_CLASS (goa_twitter_provider_parent_class)->build_object (provider, - object, - key_file, - group, - error)) + object, + key_file, + group, + error)) goto out; - account = goa_object_get_account (GOA_OBJECT (object)); - - id = g_key_file_get_string (key_file, group, "Identity", NULL); - if (id == NULL) - { - g_set_error (error, - GOA_ERROR, - GOA_ERROR_FAILED, - "Invalid identity %s for id %s", - id, - goa_account_get_id (account)); - goto out; - } - ret = TRUE; out: - g_free (id); - if (account != NULL) - g_object_unref (account); return ret; } @@ -300,9 +256,7 @@ show_account (GoaProvider *provider, { /* Chain up */ GOA_PROVIDER_CLASS (goa_twitter_provider_parent_class)->show_account (provider, client, object, vbox, table); - - /* TODO: look up screenname from account number */ - goa_util_add_row_editable_label_from_keyfile (table, object, _("Account Number"), "Identity", FALSE); + goa_util_add_row_editable_label_from_keyfile (table, object, _("User Name"), "PresentationIdentity", FALSE); } /* ---------------------------------------------------------------------------------------------------- */ @@ -329,7 +283,6 @@ goa_twitter_provider_class_init (GoaTwitterProviderClass *klass) oauth_class->get_consumer_key = get_consumer_key; oauth_class->get_consumer_secret = get_consumer_secret; oauth_class->get_request_uri = get_request_uri; - oauth_class->get_request_uri_params = get_request_uri_params; oauth_class->get_authorization_uri = get_authorization_uri; oauth_class->get_token_uri = get_token_uri; oauth_class->get_callback_uri = get_callback_uri; diff --git a/src/goabackend/goayahooprovider.c b/src/goabackend/goayahooprovider.c index f62ea4f..37d4c71 100644 --- a/src/goabackend/goayahooprovider.c +++ b/src/goabackend/goayahooprovider.c @@ -119,7 +119,7 @@ static gchar * get_identity_sync (GoaOAuthProvider *provider, const gchar *access_token, const gchar *access_token_secret, - gchar **out_name, + gchar **out_presentation_identity, GCancellable *cancellable, GError **error) { @@ -130,14 +130,14 @@ get_identity_sync (GoaOAuthProvider *provider, JsonObject *json_data_object; gchar *ret; gchar *guid; - gchar *name; + gchar *presentation_identity; ret = NULL; proxy = NULL; call = NULL; parser = NULL; guid = NULL; - name = NULL; + presentation_identity = NULL; /* TODO: cancellable */ @@ -195,7 +195,7 @@ get_identity_sync (GoaOAuthProvider *provider, goto out; } - /* OK, got the GUID, now get the name via http://developer.yahoo.com/social/rest_api_guide/usercard-resource.html */ + /* OK, got the GUID, now get the presentation_identity via http://developer.yahoo.com/social/rest_api_guide/usercard-resource.html */ g_object_unref (proxy); g_object_unref (call); proxy = oauth_proxy_new_with_token (goa_oauth_provider_get_consumer_key (provider), @@ -245,8 +245,8 @@ get_identity_sync (GoaOAuthProvider *provider, goto out; } - name = g_strdup (json_object_get_string_member (json_data_object, "nickname")); - if (name == NULL) + presentation_identity = g_strdup (json_object_get_string_member (json_data_object, "nickname")); + if (presentation_identity == NULL) { g_set_error (error, GOA_ERROR, @@ -257,14 +257,14 @@ get_identity_sync (GoaOAuthProvider *provider, ret = guid; guid = NULL; - if (out_name != NULL) + if (out_presentation_identity != NULL) { - *out_name = name; - name = NULL; + *out_presentation_identity = presentation_identity; + presentation_identity = NULL; } out: - g_free (name); + g_free (presentation_identity); g_free (guid); if (call != NULL) g_object_unref (call); @@ -282,12 +282,8 @@ build_object (GoaProvider *provider, const gchar *group, GError **error) { - GoaAccount *account; gboolean ret; - gchar *guid; - guid = NULL; - account = NULL; ret = FALSE; /* Chain up */ @@ -298,26 +294,9 @@ build_object (GoaProvider *provider, error)) goto out; - account = goa_object_get_account (GOA_OBJECT (object)); - - guid = g_key_file_get_string (key_file, group, "Identity", NULL); - if (guid == NULL) - { - g_set_error (error, - GOA_ERROR, - GOA_ERROR_FAILED, - "Invalid identity %s for id %s", - guid, - goa_account_get_id (account)); - goto out; - } - ret = TRUE; out: - g_free (guid); - if (account != NULL) - g_object_unref (account); return ret; } @@ -340,7 +319,7 @@ show_account (GoaProvider *provider, GOA_PROVIDER_CLASS (goa_yahoo_provider_parent_class)->show_account (provider, client, object, vbox, table); /* TODO: look up email address / screenname from GUID */ - goa_util_add_row_editable_label_from_keyfile (table, object, _("GUID"), "Identity", FALSE); + goa_util_add_row_editable_label_from_keyfile (table, object, _("Name"), "PresentationIdentity", FALSE); } /* ---------------------------------------------------------------------------------------------------- */ diff --git a/src/panel/goapanelaccountsmodel.c b/src/panel/goapanelaccountsmodel.c index 76393d0..7f2dfc7 100644 --- a/src/panel/goapanelaccountsmodel.c +++ b/src/panel/goapanelaccountsmodel.c @@ -134,11 +134,10 @@ goa_panel_accounts_model_constructed (GObject *object) GType types[GOA_PANEL_ACCOUNTS_MODEL_N_COLUMNS]; types[0] = G_TYPE_STRING; - types[1] = G_TYPE_STRING; - types[2] = GOA_TYPE_OBJECT; - types[3] = G_TYPE_BOOLEAN; - types[4] = G_TYPE_STRING; - G_STATIC_ASSERT (5 == GOA_PANEL_ACCOUNTS_MODEL_N_COLUMNS); + types[1] = GOA_TYPE_OBJECT; + types[2] = G_TYPE_BOOLEAN; + types[3] = G_TYPE_STRING; + G_STATIC_ASSERT (4 == GOA_PANEL_ACCOUNTS_MODEL_N_COLUMNS); gtk_list_store_set_column_types (GTK_LIST_STORE (model), GOA_PANEL_ACCOUNTS_MODEL_N_COLUMNS, types); @@ -332,12 +331,11 @@ set_values (GoaPanelAccountsModel *model, markup = g_strdup_printf ("<b>%s</b>\n" "<small><span foreground=\"#555555\">%s</span></small>", - goa_account_get_name (account), - provider_name); + provider_name, + goa_account_get_presentation_identity (account)); gtk_list_store_set (GTK_LIST_STORE (model), iter, - GOA_PANEL_ACCOUNTS_MODEL_COLUMN_NAME, goa_account_get_name (account), GOA_PANEL_ACCOUNTS_MODEL_COLUMN_SORT_KEY, goa_account_get_id (account), GOA_PANEL_ACCOUNTS_MODEL_COLUMN_OBJECT, object, GOA_PANEL_ACCOUNTS_MODEL_COLUMN_ATTENTION_NEEDED, goa_account_get_attention_needed (account), diff --git a/src/panel/goapanelaccountsmodel.h b/src/panel/goapanelaccountsmodel.h index afc4ab5..aa99235 100644 --- a/src/panel/goapanelaccountsmodel.h +++ b/src/panel/goapanelaccountsmodel.h @@ -37,7 +37,6 @@ typedef struct _GoaPanelAccountsModel GoaPanelAccountsModel; enum { - GOA_PANEL_ACCOUNTS_MODEL_COLUMN_NAME, GOA_PANEL_ACCOUNTS_MODEL_COLUMN_SORT_KEY, GOA_PANEL_ACCOUNTS_MODEL_COLUMN_OBJECT, GOA_PANEL_ACCOUNTS_MODEL_COLUMN_ATTENTION_NEEDED, |