diff options
author | Debarshi Ray <debarshir@gnome.org> | 2016-07-26 17:41:06 +0200 |
---|---|---|
committer | Debarshi Ray <debarshir@gnome.org> | 2016-07-27 09:41:23 +0200 |
commit | e20e4c099ca93c3ff6d82361e3b6073bf2091d76 (patch) | |
tree | af1db5b35ff45f4b2abe10738dd3b558e573fc57 | |
parent | 5e7004a6827baf6b9e3cbf588d853c3e6f5e075e (diff) | |
download | gnome-control-center-wip/rishi/goa.tar.gz |
online-accounts: Let goa_provider_show_account create the full UIwip/rishi/goa
It is not ideal to have the UI split across a semi-stable,
cross-module interface boundary. Non-trivial changes to the UI require
changes to the goa_provider_show_account interface. In fact, we were
already not using it the way it was originally intended to be.
Moreover, it prevents us from having a sufficiently different UI for
certain account types.
Instead, let's just pass a vertical GtkBox to the GoaProvider and let
it fill it up whichever way it wants to.
Bump required GOA version for the new goa_provider_show_account
behaviour.
https://bugzilla.gnome.org/show_bug.cgi?id=769213
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | panels/online-accounts/cc-online-accounts-panel.c | 112 |
2 files changed, 3 insertions, 111 deletions
diff --git a/configure.ac b/configure.ac index eb0247c3a..f95577424 100644 --- a/configure.ac +++ b/configure.ac @@ -100,7 +100,7 @@ GNOME_DESKTOP_REQUIRED_VERSION=3.21.2 SCHEMAS_REQUIRED_VERSION=3.19.3 LIBWACOM_REQUIRED_VERSION=0.7 CLUTTER_REQUIRED_VERSION=1.11.3 -GOA_REQUIRED_VERSION=3.15.1 +GOA_REQUIRED_VERSION=3.21.5 ACCOUNTSSERVICE_REQUIRED_VERSION=0.6.39 COLORD_REQUIRED_VERSION=0.1.34 COLORD_GTK_REQUIRED_VERSION=0.1.24 diff --git a/panels/online-accounts/cc-online-accounts-panel.c b/panels/online-accounts/cc-online-accounts-panel.c index 2f68ede7c..825448cab 100644 --- a/panels/online-accounts/cc-online-accounts-panel.c +++ b/panels/online-accounts/cc-online-accounts-panel.c @@ -377,76 +377,15 @@ show_page_nothing_selected (CcGoaPanel *panel) } static void -on_sign_in_button_clicked (GtkButton *button, - gpointer user_data) -{ - CcGoaPanel *panel = CC_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)) - { - GoaProvider *provider; - const gchar *provider_type; - GoaAccount *account; - GoaObject *object; - GtkWindow *parent; - GError *error; - - 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); - provider_type = goa_account_get_provider_type (account); - provider = goa_provider_get_for_provider_type (provider_type); - - parent = GTK_WINDOW (cc_shell_get_toplevel (cc_panel_get_shell (CC_PANEL (panel)))); - - error = NULL; - if (!goa_provider_refresh_account (provider, - panel->client, - object, - parent, - &error)) - { - if (!(error->domain == GOA_ERROR && error->code == GOA_ERROR_DIALOG_DISMISSED)) - { - GtkWidget *dialog; - dialog = gtk_message_dialog_new (parent, - GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_ERROR, - GTK_BUTTONS_CLOSE, - _("Error logging into the account")); - gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), - "%s", - error->message); - gtk_widget_show_all (dialog); - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); - } - g_error_free (error); - } - g_object_unref (provider); - g_object_unref (object); - } -} - -static void show_page_account (CcGoaPanel *panel, GoaObject *object) { GList *children; GList *l; GtkWidget *box; - GtkWidget *button; - GtkWidget *grid; GtkWidget *label; GoaProvider *provider; GoaAccount *account; - GtkWidget *image; const gchar *provider_type; provider = NULL; @@ -468,63 +407,16 @@ show_page_account (CcGoaPanel *panel, provider_type = goa_account_get_provider_type (account); provider = goa_provider_get_for_provider_type (provider_type); - /* And in with the new */ - if (goa_account_get_attention_needed (account)) - { - GtkWidget *labels_grid; - - grid = gtk_grid_new (); - gtk_orientable_set_orientation (GTK_ORIENTABLE (grid), GTK_ORIENTATION_HORIZONTAL); - gtk_grid_set_column_spacing (GTK_GRID (grid), 12); - - image = gtk_image_new_from_icon_name ("dialog-warning", GTK_ICON_SIZE_SMALL_TOOLBAR); - gtk_widget_set_valign (image, GTK_ALIGN_CENTER); - gtk_container_add (GTK_CONTAINER (grid), image); - - labels_grid = gtk_grid_new (); - gtk_widget_set_halign (labels_grid, GTK_ALIGN_FILL); - gtk_widget_set_hexpand (labels_grid, TRUE); - gtk_widget_set_valign (labels_grid, GTK_ALIGN_CENTER); - gtk_orientable_set_orientation (GTK_ORIENTABLE (labels_grid), GTK_ORIENTATION_VERTICAL); - gtk_grid_set_column_spacing (GTK_GRID (labels_grid), 0); - gtk_container_add (GTK_CONTAINER (grid), labels_grid); - - label = gtk_label_new (_("Credentials have expired.")); - gtk_widget_set_halign (label, GTK_ALIGN_START); - gtk_container_add (GTK_CONTAINER (labels_grid), label); - - label = gtk_label_new (_("Sign in to enable this account.")); - gtk_widget_set_halign (label, GTK_ALIGN_START); - gtk_style_context_add_class (gtk_widget_get_style_context (label), "dim-label"); - gtk_container_add (GTK_CONTAINER (labels_grid), label); - - button = gtk_button_new_with_mnemonic (_("_Sign In")); - if (provider == NULL) - gtk_widget_set_sensitive (button, FALSE); - gtk_widget_set_valign (button, GTK_ALIGN_CENTER); - gtk_container_add (GTK_CONTAINER (grid), button); - g_signal_connect (button, "clicked", G_CALLBACK (on_sign_in_button_clicked), panel); - - gtk_box_pack_end (GTK_BOX (panel->accounts_vbox), grid, FALSE, TRUE, 0); - } - - grid = gtk_grid_new (); - gtk_widget_set_halign (grid, GTK_ALIGN_CENTER); - gtk_widget_set_hexpand (grid, TRUE); - gtk_grid_set_column_spacing (GTK_GRID (grid), 12); - gtk_grid_set_row_spacing (GTK_GRID (grid), 6); - if (provider != NULL) { goa_provider_show_account (provider, panel->client, object, GTK_BOX (panel->accounts_vbox), - GTK_GRID (grid), - GTK_GRID (grid)); + NULL, + NULL); } - gtk_box_pack_start (GTK_BOX (panel->accounts_vbox), grid, FALSE, TRUE, 0); gtk_widget_show_all (panel->accounts_vbox); g_clear_object (&provider); |