[gnome-calendar/mcatanzaro/#419: 2/2] manager: add GcalContext property
- From: Michael Catanzaro <mcatanzaro src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-calendar/mcatanzaro/#419: 2/2] manager: add GcalContext property
- Date: Thu, 19 Sep 2019 20:56:26 +0000 (UTC)
commit 0eb1fa51de3d945325467852120b29ac117a5264
Author: Michael Catanzaro <mcatanzaro gnome org>
Date: Thu Sep 19 15:47:17 2019 -0500
manager: add GcalContext property
This improves access to the GcalContext inside GcalManager.
src/core/gcal-context.c | 2 +-
src/core/gcal-manager.c | 57 ++++++++++++++++++++++++++++++++-----------------
src/core/gcal-manager.h | 4 +++-
tests/meson.build | 1 -
tests/test-manager.c | 47 ----------------------------------------
5 files changed, 42 insertions(+), 69 deletions(-)
---
diff --git a/src/core/gcal-context.c b/src/core/gcal-context.c
index ea2e8fb2..e1503645 100644
--- a/src/core/gcal-context.c
+++ b/src/core/gcal-context.c
@@ -109,6 +109,7 @@ gcal_context_constructed (GObject *object)
G_OBJECT_CLASS (gcal_context_parent_class)->constructed (object);
+ self->manager = gcal_manager_new (self);
self->search_engine = gcal_search_engine_new (self);
}
@@ -265,7 +266,6 @@ gcal_context_init (GcalContext *self)
{
self->clock = gcal_clock_new ();
self->goa_client = goa_client_new_sync (NULL, NULL);
- self->manager = gcal_manager_new ();
self->settings = g_settings_new ("org.gnome.calendar");
self->weather_service = gcal_weather_service_new ();
diff --git a/src/core/gcal-manager.c b/src/core/gcal-manager.c
index fbbb9fcf..da081f16 100644
--- a/src/core/gcal-manager.c
+++ b/src/core/gcal-manager.c
@@ -90,6 +90,8 @@ struct _GcalManager
GCancellable *async_ops;
gint clients_synchronizing;
+
+ GcalContext *context;
};
G_DEFINE_TYPE (GcalManager, gcal_manager, G_TYPE_OBJECT)
@@ -97,6 +99,7 @@ G_DEFINE_TYPE (GcalManager, gcal_manager, G_TYPE_OBJECT)
enum
{
PROP_0,
+ PROP_CONTEXT,
PROP_DEFAULT_CALENDAR,
PROP_SYNCHRONIZING,
NUM_PROPS
@@ -643,6 +646,12 @@ gcal_manager_finalize (GObject *object)
g_clear_object (&self->e_data_model);
g_clear_object (&self->shell_search_data_model);
+ if (self->context)
+ {
+ g_object_remove_weak_pointer (G_OBJECT (self->context), (gpointer *)&self->context);
+ self->context = NULL;
+ }
+
if (self->search_view_data)
{
g_clear_pointer (&self->search_view_data->query, g_free);
@@ -666,6 +675,12 @@ gcal_manager_set_property (GObject *object,
switch (property_id)
{
+ case PROP_CONTEXT:
+ g_assert (self->context == NULL);
+ self->context = g_value_get_object (value);
+ g_object_add_weak_pointer (G_OBJECT (self->context), (gpointer *)&self->context);
+ break;
+
case PROP_DEFAULT_CALENDAR:
gcal_manager_set_default_calendar (self, g_value_get_object (value));
break;
@@ -693,6 +708,10 @@ gcal_manager_get_property (GObject *object,
switch (property_id)
{
+ case PROP_CONTEXT:
+ g_value_set_object (value, self->context);
+ break;
+
case PROP_DEFAULT_CALENDAR:
g_value_set_object (value, gcal_manager_get_default_calendar (self));
break;
@@ -717,6 +736,17 @@ gcal_manager_class_init (GcalManagerClass *klass)
object_class->set_property = gcal_manager_set_property;
object_class->get_property = gcal_manager_get_property;
+ /**
+ * GcalManager:context:
+ *
+ * The #GcalContext.
+ */
+ properties[PROP_CONTEXT] = g_param_spec_object ("context",
+ "Data context",
+ "Data context",
+ GCAL_TYPE_CONTEXT,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY |
G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS);
+
/**
* GcalManager:default-calendar:
*
@@ -783,15 +813,18 @@ gcal_manager_init (GcalManager *self)
/* Public API */
/**
* gcal_manager_new:
+ * @context: a #GcalContext
*
* Creates a new #GcalManager.
*
* Returns: (transfer full): a newly created #GcalManager
*/
GcalManager*
-gcal_manager_new (void)
+gcal_manager_new (GcalContext *context)
{
- return g_object_new (GCAL_TYPE_MANAGER, NULL);
+ return g_object_new (GCAL_TYPE_MANAGER,
+ "context", context,
+ NULL);
}
/**
@@ -879,8 +912,6 @@ void
gcal_manager_setup_shell_search (GcalManager *self,
ECalDataModelSubscriber *subscriber)
{
- GcalApplication *application;
- GcalContext *context;
GTimeZone *zone;
g_return_if_fail (GCAL_IS_MANAGER (self));
@@ -888,9 +919,6 @@ gcal_manager_setup_shell_search (GcalManager *self,
if (self->shell_search_data_model)
return;
- application = GCAL_APPLICATION (g_application_get_default ());
- context = gcal_application_get_context (application);
-
self->shell_search_data_model = e_cal_data_model_new (gcal_thread_submit_job);
g_signal_connect_object (self->shell_search_data_model,
"view-state-changed",
@@ -900,7 +928,7 @@ gcal_manager_setup_shell_search (GcalManager *self,
e_cal_data_model_set_expand_recurrences (self->shell_search_data_model, TRUE);
- zone = gcal_context_get_timezone (context);
+ zone = gcal_context_get_timezone (self->context);
e_cal_data_model_set_timezone (self->shell_search_data_model, gcal_timezone_to_icaltimezone (zone));
self->search_view_data = g_new0 (ViewStateData, 1);
@@ -1431,8 +1459,6 @@ gcal_manager_get_events (GcalManager *self,
ICalTime *start_date,
ICalTime *end_date)
{
- GcalApplication *application;
- GcalContext *context;
time_t range_start, range_end;
GTimeZone *zone;
ICalTimezone *tz;
@@ -1443,12 +1469,10 @@ gcal_manager_get_events (GcalManager *self,
GCAL_ENTRY;
- application = GCAL_APPLICATION (g_application_get_default ());
- context = gcal_application_get_context (application);
g_return_val_if_fail (GCAL_IS_MANAGER (self), NULL);
- zone = gcal_context_get_timezone (context);
+ zone = gcal_context_get_timezone (self->context);
tz = gcal_timezone_to_icaltimezone (zone);
range_start = i_cal_time_as_timet_with_zone (start_date, tz);
range_end = i_cal_time_as_timet_with_zone (end_date, tz);
@@ -1541,15 +1565,10 @@ gcal_manager_startup (GcalManager *self)
GList *sources, *l;
GError *error = NULL;
ESourceCredentialsProvider *credentials_provider;
- GcalApplication *application;
- GcalContext *context;
GTimeZone *zone;
GCAL_ENTRY;
- application = GCAL_APPLICATION (g_application_get_default ());
- context = gcal_application_get_context (application);
-
self->clients = g_hash_table_new_full ((GHashFunc) e_source_hash,
(GEqualFunc) e_source_equal,
g_object_unref,
@@ -1648,7 +1667,7 @@ gcal_manager_startup (GcalManager *self)
e_cal_data_model_set_expand_recurrences (self->e_data_model, TRUE);
- zone = gcal_context_get_timezone (context);
+ zone = gcal_context_get_timezone (self->context);
e_cal_data_model_set_timezone (self->e_data_model, gcal_timezone_to_icaltimezone (zone));
sources = e_source_registry_list_enabled (self->source_registry, E_SOURCE_EXTENSION_CALENDAR);
diff --git a/src/core/gcal-manager.h b/src/core/gcal-manager.h
index 0874372e..aaf43915 100644
--- a/src/core/gcal-manager.h
+++ b/src/core/gcal-manager.h
@@ -30,7 +30,9 @@ G_BEGIN_DECLS
#define GCAL_TYPE_MANAGER (gcal_manager_get_type ())
G_DECLARE_FINAL_TYPE (GcalManager, gcal_manager, GCAL, MANAGER, GObject)
-GcalManager* gcal_manager_new (void);
+typedef struct _GcalContext GcalContext;
+
+GcalManager* gcal_manager_new (GcalContext *context);
ESource* gcal_manager_get_source (GcalManager *self,
const gchar *uid);
diff --git a/tests/meson.build b/tests/meson.build
index ec704dfd..c6510f1e 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -35,7 +35,6 @@ tests = [
'server',
'discoverer',
'event',
- 'manager',
]
foreach test : tests
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]