[evolution] I#256 - New collection account wizard UI improvements
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution] I#256 - New collection account wizard UI improvements
- Date: Mon, 11 Mar 2019 10:17:46 +0000 (UTC)
commit 18a8ba52e6e3b38b4490998c7f5d8732895bbcf0
Author: Milan Crha <mcrha redhat com>
Date: Mon Mar 11 11:18:35 2019 +0100
I#256 - New collection account wizard UI improvements
Closes https://gitlab.gnome.org/GNOME/evolution/issues/256
src/e-util/e-collection-account-wizard.c | 68 +++++++++++++++++++++++++++++---
1 file changed, 62 insertions(+), 6 deletions(-)
---
diff --git a/src/e-util/e-collection-account-wizard.c b/src/e-util/e-collection-account-wizard.c
index e2192340f4..c96ff8fbb6 100644
--- a/src/e-util/e-collection-account-wizard.c
+++ b/src/e-util/e-collection-account-wizard.c
@@ -76,6 +76,7 @@ struct _ECollectionAccountWizardPrivate {
enum {
PROP_0,
PROP_REGISTRY,
+ PROP_CHANGED,
PROP_CAN_RUN
};
@@ -104,6 +105,9 @@ collection_wizard_window_update_button_captions (WizardWindowData *wwd)
if (e_collection_account_wizard_is_finish_page (wwd->collection_wizard))
gtk_button_set_label (wwd->next_button, _("_Finish"));
+ else if (wwd->collection_wizard->priv->changed ||
+ !e_config_lookup_count_results (wwd->collection_wizard->priv->config_lookup))
+ gtk_button_set_label (wwd->next_button, _("_Look Up"));
else
gtk_button_set_label (wwd->next_button, _("_Next"));
}
@@ -218,7 +222,10 @@ collection_account_wizard_create_window (GtkWindow *parent,
g_signal_connect_swapped (wwd->collection_wizard, "done",
G_CALLBACK (collection_wizard_window_done), wwd);
- hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
+ g_signal_connect_swapped (wwd->collection_wizard, "notify::changed",
+ G_CALLBACK (collection_wizard_window_update_button_captions), wwd);
+
+ hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
g_object_set (G_OBJECT (hbox),
"hexpand", TRUE,
"halign", GTK_ALIGN_END,
@@ -365,12 +372,28 @@ collection_account_wizard_notify_can_run (GObject *wizard)
g_object_notify (wizard, "can-run");
}
+static gboolean
+collection_account_wizard_get_changed (ECollectionAccountWizard *wizard)
+{
+ return wizard->priv->changed;
+}
+
+static void
+collection_account_wizard_set_changed (ECollectionAccountWizard *wizard,
+ gboolean changed)
+{
+ if ((wizard->priv->changed ? 1 : 0) != (changed ? 1 : 0)) {
+ wizard->priv->changed = changed;
+ g_object_notify (G_OBJECT (wizard), "changed");
+ }
+}
+
static void
collection_account_wizard_mark_changed (ECollectionAccountWizard *wizard)
{
g_return_if_fail (E_IS_COLLECTION_ACCOUNT_WIZARD (wizard));
- wizard->priv->changed = TRUE;
+ collection_account_wizard_set_changed (wizard, TRUE);
}
static void
@@ -400,7 +423,7 @@ collection_account_wizard_worker_started_cb (EConfigLookup *config_lookup,
g_return_if_fail (wd != NULL);
if (wizard->priv->changed)
- wizard->priv->changed = FALSE;
+ collection_account_wizard_set_changed (wizard, FALSE);
wizard->priv->running_workers++;
@@ -531,6 +554,15 @@ collection_account_wizard_worker_finished_cb (EConfigLookup *config_lookup,
gtk_label_set_text (GTK_LABEL (wizard->priv->results_label), str);
g_free (str);
}
+
+ /* When there are results, the wizard can continue, otherwise it will Look Up again. */
+ collection_account_wizard_set_changed (wizard, !n_results);
+
+ /* This is to ensure invoke of collection_wizard_window_update_button_captions()
+ in the "notify::changed" callback, because the above set_changed() can change
+ only from FALSE to TRUE, but not vice versa, due to the 'changed' being FALSE
+ already. */
+ g_object_notify (G_OBJECT (wizard), "changed");
}
}
@@ -1504,6 +1536,13 @@ collection_account_wizard_get_property (GObject *object,
E_COLLECTION_ACCOUNT_WIZARD (object)));
return;
+ case PROP_CHANGED:
+ g_value_set_boolean (
+ value,
+ collection_account_wizard_get_changed (
+ E_COLLECTION_ACCOUNT_WIZARD (object)));
+ return;
+
case PROP_REGISTRY:
g_value_set_object (
value,
@@ -1737,8 +1776,6 @@ collection_account_wizard_constructed (GObject *object)
NULL);
gtk_box_pack_start (vbox, widget, TRUE, TRUE, 0);
- e_binding_bind_property (wd->enabled_check, "active", widget, "visible", G_BINDING_DEFAULT |
G_BINDING_SYNC_CREATE);
-
hbox = GTK_BOX (widget);
/* spacer */
@@ -2138,6 +2175,25 @@ e_collection_account_wizard_class_init (ECollectionAccountWizardClass *klass)
G_PARAM_READABLE |
G_PARAM_STATIC_STRINGS));
+ /**
+ * ECollectionAccountWizard:changed:
+ *
+ * Whether the settings of the wizard changed. When it did,
+ * a lookup will be run instead of moving to the next step.
+ *
+ * Since: 3.34
+ **/
+ g_object_class_install_property (
+ object_class,
+ PROP_CHANGED,
+ g_param_spec_boolean (
+ "changed",
+ "Whether changed",
+ NULL,
+ FALSE,
+ G_PARAM_READABLE |
+ G_PARAM_STATIC_STRINGS));
+
/**
* ECollectionAccountWizard::done:
* @uid: an #ESource UID which had been created
@@ -2381,7 +2437,7 @@ e_collection_account_wizard_reset (ECollectionAccountWizard *wizard)
model = gtk_tree_view_get_model (wizard->priv->parts_tree_view);
gtk_tree_store_clear (GTK_TREE_STORE (model));
- wizard->priv->changed = FALSE;
+ collection_account_wizard_set_changed (wizard, FALSE);
for (ii = 0; ii <= E_CONFIG_LOOKUP_RESULT_LAST_KIND; ii++) {
g_clear_object (&wizard->priv->sources[ii]);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]