manager: add :load-completed signal

:load-completed signals the end of the opening of the sources initially
read from ESourceRegistry.
This commit is contained in:
Erick Pérez Castellanos
2015-02-06 09:21:33 -05:00
parent 1dd50951f6
commit 8f7d931340
2 changed files with 23 additions and 5 deletions
+22 -5
View File
@@ -52,7 +52,10 @@ typedef struct
GCancellable *async_ops;
/* state flags */
gchar **disabled_sources;
gint sources_at_launch;
/* timezone */
icaltimezone *system_timezone;
@@ -82,6 +85,7 @@ enum
SOURCE_ACTIVATED,
SOURCE_ADDED,
SOURCE_REMOVED,
LOAD_COMPLETED,
NUM_SIGNALS
};
@@ -303,6 +307,10 @@ on_client_connected (GObject *source_object,
priv = gcal_manager_get_instance_private (GCAL_MANAGER (user_data));
source = e_client_get_source (E_CLIENT (source_object));
priv->sources_at_launch--;
if (priv->sources_at_launch == 0)
g_signal_emit (user_data, signals[LOAD_COMPLETED], 0);
error = NULL;
client = E_CAL_CLIENT (e_cal_client_connect_finish (result, &error));
if (error == NULL)
@@ -531,6 +539,11 @@ gcal_manager_class_init (GcalManagerClass *klass)
G_STRUCT_OFFSET (GcalManagerClass, source_removed),
NULL, NULL, NULL,
G_TYPE_NONE, 1, G_TYPE_POINTER);
signals[LOAD_COMPLETED] = g_signal_new ("load-completed", GCAL_TYPE_MANAGER, G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GcalManagerClass, load_completed),
NULL, NULL, NULL,
G_TYPE_NONE, 0);
}
static void
@@ -566,11 +579,6 @@ gcal_manager_constructed (GObject *object)
return;
}
sources = e_source_registry_list_enabled (priv->source_registry, E_SOURCE_EXTENSION_CALENDAR);
for (l = sources; l != NULL; l = l->next)
load_source (GCAL_MANAGER (object), l->data);
g_list_free (sources);
g_signal_connect_swapped (priv->source_registry, "source-added", G_CALLBACK (load_source), object);
g_signal_connect_swapped (priv->source_registry, "source-removed", G_CALLBACK (remove_source), object);
@@ -582,6 +590,15 @@ gcal_manager_constructed (GObject *object)
e_cal_data_model_set_timezone (priv->e_data_model, priv->system_timezone);
e_cal_data_model_set_expand_recurrences (priv->search_data_model, TRUE);
e_cal_data_model_set_timezone (priv->search_data_model, priv->system_timezone);
g_signal_connect_swapped (priv->search_data_model, "view-state-changed", G_CALLBACK (model_state_changed), object);
sources = e_source_registry_list_enabled (priv->source_registry, E_SOURCE_EXTENSION_CALENDAR);
priv->sources_at_launch = g_list_length (sources);
for (l = sources; l != NULL; l = l->next)
load_source (GCAL_MANAGER (object), l->data);
g_list_free (sources);
}
static void
+1
View File
@@ -49,6 +49,7 @@ struct _GcalManagerClass
void (*source_activated) (GcalManager *manager, ESource *source, gboolean active);
void (*source_added) (GcalManager *manager, ESource *source, gboolean enabled);
void (*source_removed) (GcalManager *manager, ESource *source);
void (*load_completed) (GcalManager *manager);
};
typedef struct