core/calendar: Add "parent-source" property
Tracks the parent ESource of this calendar. Will be useful for future patches. Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/610>
This commit is contained in:
committed by
Marge Bot
parent
6ab0ef7386
commit
e9ec77f15b
@@ -29,6 +29,7 @@ typedef struct
|
|||||||
{
|
{
|
||||||
GdkRGBA color;
|
GdkRGBA color;
|
||||||
ESource *source;
|
ESource *source;
|
||||||
|
ESource *parent_source;
|
||||||
ECalClient *client;
|
ECalClient *client;
|
||||||
|
|
||||||
gboolean read_only;
|
gboolean read_only;
|
||||||
@@ -68,6 +69,7 @@ enum
|
|||||||
PROP_COLOR,
|
PROP_COLOR,
|
||||||
PROP_ID,
|
PROP_ID,
|
||||||
PROP_NAME,
|
PROP_NAME,
|
||||||
|
PROP_PARENT_SOURCE,
|
||||||
PROP_READ_ONLY,
|
PROP_READ_ONLY,
|
||||||
PROP_SOURCE,
|
PROP_SOURCE,
|
||||||
PROP_VISIBLE,
|
PROP_VISIBLE,
|
||||||
@@ -345,6 +347,7 @@ gcal_calendar_finalize (GObject *object)
|
|||||||
|
|
||||||
g_clear_object (&priv->client);
|
g_clear_object (&priv->client);
|
||||||
g_clear_object (&priv->source);
|
g_clear_object (&priv->source);
|
||||||
|
g_clear_object (&priv->parent_source);
|
||||||
|
|
||||||
g_mutex_clear (&priv->shared.mutex);
|
g_mutex_clear (&priv->shared.mutex);
|
||||||
|
|
||||||
@@ -378,6 +381,10 @@ gcal_calendar_get_property (GObject *object,
|
|||||||
g_value_set_string (value, e_source_get_display_name (priv->source));
|
g_value_set_string (value, e_source_get_display_name (priv->source));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case PROP_PARENT_SOURCE:
|
||||||
|
g_value_set_object (value, priv->parent_source);
|
||||||
|
break;
|
||||||
|
|
||||||
case PROP_READ_ONLY:
|
case PROP_READ_ONLY:
|
||||||
g_value_set_boolean (value, gcal_calendar_is_read_only (self));
|
g_value_set_boolean (value, gcal_calendar_is_read_only (self));
|
||||||
break;
|
break;
|
||||||
@@ -422,6 +429,11 @@ gcal_calendar_set_property (GObject *object,
|
|||||||
gcal_calendar_set_name (self, g_value_get_string (value));
|
gcal_calendar_set_name (self, g_value_get_string (value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case PROP_PARENT_SOURCE:
|
||||||
|
g_assert (priv->parent_source == NULL);
|
||||||
|
priv->parent_source = g_value_dup_object (value);
|
||||||
|
break;
|
||||||
|
|
||||||
case PROP_READ_ONLY:
|
case PROP_READ_ONLY:
|
||||||
g_assert_not_reached ();
|
g_assert_not_reached ();
|
||||||
break;
|
break;
|
||||||
@@ -473,6 +485,10 @@ gcal_calendar_class_init (GcalCalendarClass *klass)
|
|||||||
NULL,
|
NULL,
|
||||||
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY);
|
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY);
|
||||||
|
|
||||||
|
properties[PROP_PARENT_SOURCE] = g_param_spec_object ("parent-source", NULL, NULL,
|
||||||
|
E_TYPE_SOURCE,
|
||||||
|
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY);
|
||||||
|
|
||||||
properties[PROP_READ_ONLY] = g_param_spec_boolean ("read-only",
|
properties[PROP_READ_ONLY] = g_param_spec_boolean ("read-only",
|
||||||
"Read-only",
|
"Read-only",
|
||||||
"Whether the calendar is read-only or not",
|
"Whether the calendar is read-only or not",
|
||||||
@@ -516,6 +532,7 @@ gcal_calendar_init (GcalCalendar *self)
|
|||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
gcal_calendar_new (ESource *source,
|
gcal_calendar_new (ESource *source,
|
||||||
|
ESource *parent_source,
|
||||||
GCancellable *cancellable,
|
GCancellable *cancellable,
|
||||||
GAsyncReadyCallback callback,
|
GAsyncReadyCallback callback,
|
||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
@@ -526,6 +543,7 @@ gcal_calendar_new (ESource *source,
|
|||||||
callback,
|
callback,
|
||||||
user_data,
|
user_data,
|
||||||
"source", source,
|
"source", source,
|
||||||
|
"parent-source", parent_source,
|
||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -664,6 +682,24 @@ gcal_calendar_set_name (GcalCalendar *self,
|
|||||||
g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_NAME]);
|
g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_NAME]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gcal_calendar_get_parent_source:
|
||||||
|
* @self: a #GcalCalendar
|
||||||
|
*
|
||||||
|
* Retrieves the parent #ESource of @self.
|
||||||
|
*
|
||||||
|
* Returns: (transfer none): an #ESource
|
||||||
|
*/
|
||||||
|
ESource*
|
||||||
|
gcal_calendar_get_parent_source (GcalCalendar *self)
|
||||||
|
{
|
||||||
|
GcalCalendarPrivate *priv = gcal_calendar_get_instance_private (self);
|
||||||
|
|
||||||
|
g_return_val_if_fail (GCAL_IS_CALENDAR (self), NULL);
|
||||||
|
|
||||||
|
return priv->parent_source;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gcal_calendar_is_read_only:
|
* gcal_calendar_is_read_only:
|
||||||
* @self: a #GcalCalendar
|
* @self: a #GcalCalendar
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ struct _GcalCalendarClass
|
|||||||
GQuark gcal_calendar_error_quark (void);
|
GQuark gcal_calendar_error_quark (void);
|
||||||
|
|
||||||
void gcal_calendar_new (ESource *source,
|
void gcal_calendar_new (ESource *source,
|
||||||
|
ESource *parent_source,
|
||||||
GCancellable *cancellable,
|
GCancellable *cancellable,
|
||||||
GAsyncReadyCallback callback,
|
GAsyncReadyCallback callback,
|
||||||
gpointer user_data);
|
gpointer user_data);
|
||||||
@@ -71,6 +72,8 @@ const gchar* gcal_calendar_get_name (GcalCalendar
|
|||||||
void gcal_calendar_set_name (GcalCalendar *self,
|
void gcal_calendar_set_name (GcalCalendar *self,
|
||||||
const gchar *name);
|
const gchar *name);
|
||||||
|
|
||||||
|
ESource* gcal_calendar_get_parent_source (GcalCalendar *self);
|
||||||
|
|
||||||
gboolean gcal_calendar_is_read_only (GcalCalendar *self);
|
gboolean gcal_calendar_is_read_only (GcalCalendar *self);
|
||||||
|
|
||||||
ESource* gcal_calendar_get_source (GcalCalendar *self);
|
ESource* gcal_calendar_get_source (GcalCalendar *self);
|
||||||
|
|||||||
@@ -296,6 +296,8 @@ static void
|
|||||||
load_source (GcalManager *self,
|
load_source (GcalManager *self,
|
||||||
ESource *source)
|
ESource *source)
|
||||||
{
|
{
|
||||||
|
g_autoptr (ESource) parent = NULL;
|
||||||
|
|
||||||
GCAL_ENTRY;
|
GCAL_ENTRY;
|
||||||
|
|
||||||
if (g_hash_table_contains (self->clients, source))
|
if (g_hash_table_contains (self->clients, source))
|
||||||
@@ -306,7 +308,9 @@ load_source (GcalManager *self,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
gcal_calendar_new (source, self->async_ops, on_calendar_created_cb, self);
|
parent = e_source_registry_ref_source (self->source_registry, e_source_get_parent (source));
|
||||||
|
|
||||||
|
gcal_calendar_new (source, parent, self->async_ops, on_calendar_created_cb, self);
|
||||||
|
|
||||||
GCAL_EXIT;
|
GCAL_EXIT;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user