[evolution] eds-I#138 - Notify clients when backend is refreshing its content
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution] eds-I#138 - Notify clients when backend is refreshing its content
- Date: Fri, 9 Aug 2019 10:16:14 +0000 (UTC)
commit 144b77ed13574cda1b4232e5630088f983c46010
Author: Milan Crha <mcrha redhat com>
Date: Fri Aug 9 12:14:25 2019 +0200
eds-I#138 - Notify clients when backend is refreshing its content
Change how the view's progress notifications are handle for calendar
and contacts, to show them in the same way in all the related GUI views.
Related to https://gitlab.gnome.org/GNOME/evolution-data-server/issues/138
src/addressbook/gui/widgets/e-addressbook-view.c | 39 -------------------
.../addressbook/e-book-shell-view-private.c | 44 ++++++++++++++++++++++
src/modules/calendar/e-cal-base-shell-content.c | 18 ++++++---
3 files changed, 56 insertions(+), 45 deletions(-)
---
diff --git a/src/addressbook/gui/widgets/e-addressbook-view.c
b/src/addressbook/gui/widgets/e-addressbook-view.c
index dfe4c98ecc..d7c3101370 100644
--- a/src/addressbook/gui/widgets/e-addressbook-view.c
+++ b/src/addressbook/gui/widgets/e-addressbook-view.c
@@ -50,8 +50,6 @@
#define d(x)
-static void status_message (EAddressbookView *view,
- const gchar *status, gint percent);
static void search_result (EAddressbookView *view,
const GError *error);
static void folder_bar_message (EAddressbookView *view,
@@ -946,9 +944,6 @@ e_addressbook_view_new (EShellView *shell_view,
view = E_ADDRESSBOOK_VIEW (widget);
- g_signal_connect_swapped (
- view->priv->model, "status_message",
- G_CALLBACK (status_message), view);
g_signal_connect_swapped (
view->priv->model, "search_result",
G_CALLBACK (search_result), view);
@@ -1078,40 +1073,6 @@ e_addressbook_view_get_paste_target_list (EAddressbookView *view)
return view->priv->paste_target_list;
}
-static void
-status_message (EAddressbookView *view,
- const gchar *status,
- gint percent)
-{
- EActivity *activity;
- EShellView *shell_view;
- EShellBackend *shell_backend;
-
- activity = view->priv->activity;
- shell_view = e_addressbook_view_get_shell_view (view);
- shell_backend = e_shell_view_get_shell_backend (shell_view);
-
- if (status == NULL || *status == '\0') {
- if (activity != NULL) {
- view->priv->activity = NULL;
- e_activity_set_state (activity, E_ACTIVITY_COMPLETED);
- g_object_unref (activity);
- }
-
- } else if (activity == NULL) {
- activity = e_activity_new ();
- view->priv->activity = activity;
- e_activity_set_text (activity, status);
- if (percent >= 0)
- e_activity_set_percent (activity, percent);
- e_shell_backend_add_activity (shell_backend, activity);
- } else {
- e_activity_set_text (activity, status);
- if (percent >= 0)
- e_activity_set_percent (activity, percent);
- }
-}
-
static void
search_result (EAddressbookView *view,
const GError *error)
diff --git a/src/modules/addressbook/e-book-shell-view-private.c
b/src/modules/addressbook/e-book-shell-view-private.c
index 284b6f7b06..de22fa845c 100644
--- a/src/modules/addressbook/e-book-shell-view-private.c
+++ b/src/modules/addressbook/e-book-shell-view-private.c
@@ -304,6 +304,46 @@ exit:
g_object_unref (view);
}
+static void
+model_status_message_cb (EAddressbookModel *model,
+ const gchar *message,
+ gint percent,
+ gpointer user_data)
+{
+ EShellView *shell_view = user_data;
+ EBookClient *book_client;
+ ESource *source;
+ ESourceSelector *selector;
+
+ g_return_if_fail (E_IS_ADDRESSBOOK_MODEL (model));
+ g_return_if_fail (E_IS_BOOK_SHELL_VIEW (shell_view));
+
+ book_client = e_addressbook_model_get_client (model);
+ source = e_client_get_source (E_CLIENT (book_client));
+
+ if (!source)
+ return;
+
+ selector = e_book_shell_sidebar_get_selector (E_BOOK_SHELL_SIDEBAR (e_shell_view_get_shell_sidebar
(shell_view)));
+
+ if (message && *message) {
+ gchar *tooltip = NULL;
+
+ if (percent > 0) {
+ /* Translators: This is a running activity whose percent complete is known. */
+ tooltip = g_strdup_printf (_("%s (%d%% complete)"), message, percent);
+ }
+
+ e_source_selector_set_source_is_busy (selector, source, TRUE);
+ e_source_selector_set_source_tooltip (selector, source, tooltip ? tooltip : message);
+
+ g_free (tooltip);
+ } else {
+ e_source_selector_set_source_is_busy (selector, source, FALSE);
+ e_source_selector_set_source_tooltip (selector, source, NULL);
+ }
+}
+
static void
book_shell_view_activate_selected_source (EBookShellView *book_shell_view,
ESourceSelector *selector)
@@ -385,6 +425,10 @@ book_shell_view_activate_selected_source (EBookShellView *book_shell_view,
G_CALLBACK (contacts_removed),
book_shell_view, G_CONNECT_SWAPPED);
+ g_signal_connect_object (
+ model, "status-message",
+ G_CALLBACK (model_status_message_cb), book_shell_view, 0);
+
e_signal_connect_notify_object (
model, "notify::query",
G_CALLBACK (model_query_changed_cb),
diff --git a/src/modules/calendar/e-cal-base-shell-content.c b/src/modules/calendar/e-cal-base-shell-content.c
index d313d21639..5caf656957 100644
--- a/src/modules/calendar/e-cal-base-shell-content.c
+++ b/src/modules/calendar/e-cal-base-shell-content.c
@@ -133,15 +133,21 @@ cal_base_shell_content_view_state_changed_cb (ECalDataModel *data_model,
if (state == E_CAL_DATA_MODEL_VIEW_STATE_START ||
state == E_CAL_DATA_MODEL_VIEW_STATE_PROGRESS) {
- e_source_selector_set_source_is_busy (selector, source, TRUE);
+ e_source_selector_set_source_is_busy (selector, source, state ==
E_CAL_DATA_MODEL_VIEW_STATE_START || (message && *message) || percent > 0);
- if (message) {
- gchar *tooltip;
+ if (message && *message) {
+ gchar *tooltip = NULL;
+
+ if (percent > 0) {
+ /* Translators: This is a running activity whose percent complete is known. */
+ tooltip = g_strdup_printf (_("%s (%d%% complete)"), message, percent);
+ }
+
+ e_source_selector_set_source_tooltip (selector, source, tooltip ? tooltip : message);
- /* Translators: This is a running activity whose percent complete is known. */
- tooltip = g_strdup_printf (_("%s (%d%% complete)"), message, percent);
- e_source_selector_set_source_tooltip (selector, source, tooltip);
g_free (tooltip);
+ } else {
+ e_source_selector_set_source_tooltip (selector, source, NULL);
}
} else {
e_source_selector_set_source_is_busy (selector, source, FALSE);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]