[gnome-calendar] event: Receive and operate on GcalCalendar
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-calendar] event: Receive and operate on GcalCalendar
- Date: Sat, 4 May 2019 15:07:02 +0000 (UTC)
commit 1118c7488165a72e2d4286e6a497f95cd1f9ac88
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date: Fri May 3 20:46:32 2019 -0300
event: Receive and operate on GcalCalendar
Instead of receiving an ESource, receive a GcalCalendar
and operate on it. Many places needed to be adjusted for
that.
Tests need to be rethinked.
src/gcal-edit-dialog.c | 18 ++++----
src/gcal-event-widget.c | 3 --
src/gcal-event.c | 93 ++++++++++++++++++--------------------
src/gcal-event.h | 9 ++--
src/gcal-manager.c | 72 ++++++++++++++++++++---------
src/gcal-manager.h | 3 ++
src/gcal-quick-add-popover.c | 4 +-
src/gcal-window.c | 10 +++-
src/search/gcal-search-hit-event.c | 10 ++--
src/search/gcal-search-model.c | 9 +++-
src/utils/gcal-utils.c | 6 +--
src/views/gcal-month-cell.c | 4 +-
src/views/gcal-month-view.c | 10 +++-
src/views/gcal-week-grid.c | 4 +-
src/views/gcal-week-view.c | 5 +-
src/views/gcal-year-view.c | 15 ++++--
16 files changed, 168 insertions(+), 107 deletions(-)
---
diff --git a/src/gcal-edit-dialog.c b/src/gcal-edit-dialog.c
index 0d014976..10d2fcba 100644
--- a/src/gcal-edit-dialog.c
+++ b/src/gcal-edit-dialog.c
@@ -751,6 +751,7 @@ on_action_button_clicked_cb (GtkWidget *widget,
{
GcalRecurrenceFrequency freq;
GcalRecurrence *old_recur;
+ GcalCalendar *calendar;
GDateTime *start_date, *end_date;
gboolean was_all_day;
gboolean all_day;
@@ -870,12 +871,15 @@ on_action_button_clicked_cb (GtkWidget *widget,
}
/* Update the source if needed */
+ calendar = gcal_event_get_calendar (self->event);
if (self->selected_source &&
- gcal_event_get_source (self->event) != self->selected_source)
+ gcal_calendar_get_source (calendar) != self->selected_source)
{
if (self->event_is_new)
{
- gcal_event_set_source (self->event, self->selected_source);
+ calendar = gcal_manager_get_calendar_from_source (gcal_context_get_manager (self->context),
+ self->selected_source);
+ gcal_event_set_calendar (self->event, calendar);
}
else
{
@@ -1404,11 +1408,10 @@ gcal_edit_dialog_set_event (GcalEditDialog *self,
GcalRecurrenceFrequency frequency;
GcalRecurrence *recur;
GtkAdjustment *count_adjustment;
- GcalManager *manager;
+ GcalCalendar *calendar;
GDateTime *date_start;
GDateTime *date_end;
cairo_surface_t *surface;
- ESource *source;
const gchar *summary;
gboolean all_day;
@@ -1464,7 +1467,7 @@ gcal_edit_dialog_set_event (GcalEditDialog *self,
}
all_day = gcal_event_get_all_day (event);
- source = gcal_event_get_source (event);
+ calendar = gcal_event_get_calendar (event);
/* Clear event data */
gcal_edit_dialog_clear_data (self);
@@ -1489,7 +1492,7 @@ gcal_edit_dialog_set_event (GcalEditDialog *self,
gtk_image_set_from_surface (GTK_IMAGE (self->source_image), surface);
g_clear_pointer (&surface, cairo_surface_destroy);
- gtk_label_set_label (GTK_LABEL (self->subtitle_label), e_source_get_display_name (source));
+ gtk_label_set_label (GTK_LABEL (self->subtitle_label), gcal_calendar_get_name (calendar));
/* retrieve start and end dates */
date_start = gcal_event_get_date_start (event);
@@ -1536,8 +1539,7 @@ gcal_edit_dialog_set_event (GcalEditDialog *self,
gcal_event_get_description (event),
-1);
- manager = gcal_context_get_manager (self->context);
- set_writable (self, gcal_manager_is_client_writable (manager, source));
+ set_writable (self, !gcal_calendar_is_read_only (calendar));
g_clear_pointer (&date_start, g_date_time_unref);
g_clear_pointer (&date_end, g_date_time_unref);
diff --git a/src/gcal-event-widget.c b/src/gcal-event-widget.c
index 4ea899ad..246daa62 100644
--- a/src/gcal-event-widget.c
+++ b/src/gcal-event-widget.c
@@ -1162,9 +1162,6 @@ gboolean
gcal_event_widget_equal (GcalEventWidget *widget1,
GcalEventWidget *widget2)
{
- if (!e_source_equal (gcal_event_get_source (widget1->event), gcal_event_get_source (widget2->event)))
- return FALSE;
-
return g_strcmp0 (gcal_event_get_uid (widget1->event), gcal_event_get_uid (widget2->event)) == 0;
}
diff --git a/src/gcal-event.c b/src/gcal-event.c
index 1712a169..32c7495f 100644
--- a/src/gcal-event.c
+++ b/src/gcal-event.c
@@ -55,7 +55,7 @@
* GError *error;
*
* error = NULL;
- * event = gcal_event_new (source, component, &error);
+ * event = gcal_event_new (calendar, component, &error);
*
* if (error)
* {
@@ -94,7 +94,7 @@ struct _GcalEvent
GHashTable *alarms;
ECalComponent *component;
- ESource *source;
+ GcalCalendar *calendar;
GcalRecurrence *recurrence;
@@ -118,7 +118,7 @@ enum {
PROP_DATE_END,
PROP_DATE_START,
PROP_LOCATION,
- PROP_SOURCE,
+ PROP_CALENDAR,
PROP_SUMMARY,
PROP_TIMEZONE,
PROP_UID,
@@ -264,7 +264,7 @@ gcal_event_update_uid_internal (GcalEvent *self)
const gchar *source_id;
/* Setup event uid */
- source_id = self->source ? e_source_get_uid (self->source) : "";
+ source_id = self->calendar ? gcal_calendar_get_id (self->calendar) : "";
id = e_cal_component_get_id (self->component);
/* Clear the previous uid */
@@ -470,7 +470,7 @@ gcal_event_finalize (GObject *object)
g_clear_pointer (&self->uid, g_free);
g_clear_pointer (&self->color, gdk_rgba_free);
g_clear_object (&self->component);
- g_clear_object (&self->source);
+ g_clear_object (&self->calendar);
g_clear_pointer (&self->recurrence, gcal_recurrence_unref);
G_OBJECT_CLASS (gcal_event_parent_class)->finalize (object);
@@ -494,6 +494,10 @@ gcal_event_get_property (GObject *object,
g_value_set_boxed (value, self->color);
break;
+ case PROP_CALENDAR:
+ g_value_set_object (value, self->calendar);
+ break;
+
case PROP_COMPONENT:
g_value_set_object (value, self->component);
break;
@@ -514,10 +518,6 @@ gcal_event_get_property (GObject *object,
g_value_set_string (value, gcal_event_get_location (self));
break;
- case PROP_SOURCE:
- g_value_set_object (value, self->source);
- break;
-
case PROP_SUMMARY:
g_value_set_string (value, gcal_event_get_summary (self));
break;
@@ -553,6 +553,10 @@ gcal_event_set_property (GObject *object,
gcal_event_set_all_day (self, g_value_get_boolean (value));
break;
+ case PROP_CALENDAR:
+ gcal_event_set_calendar (self, g_value_get_object (value));
+ break;
+
case PROP_COLOR:
gcal_event_set_color (self, g_value_get_boxed (value));
break;
@@ -577,10 +581,6 @@ gcal_event_set_property (GObject *object,
gcal_event_set_location (self, g_value_get_string (value));
break;
- case PROP_SOURCE:
- gcal_event_set_source (self, g_value_get_object (value));
- break;
-
case PROP_SUMMARY:
gcal_event_set_summary (self, g_value_get_string (value));
break;
@@ -704,15 +704,15 @@ gcal_event_class_init (GcalEventClass *klass)
G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY |
G_PARAM_STATIC_STRINGS);
/**
- * GcalEvent::source:
+ * GcalEvent::calendar:
*
- * The #ESource this event belongs to.
+ * The #GcalCalendar this event belongs to.
*/
- properties[PROP_SOURCE] = g_param_spec_object ("source",
- "ESource",
- "The ESource this event belongs to",
- E_TYPE_SOURCE,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT |
G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS);
+ properties[PROP_CALENDAR] = g_param_spec_object ("calendar",
+ "Calendar",
+ "The calendar this event belongs to",
+ GCAL_TYPE_CALENDAR,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT |
G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS);
/**
* GcalEvent::summary:
@@ -767,25 +767,25 @@ gcal_event_init (GcalEvent *self)
/**
* gcal_event_new:
- * @source: (nullable): an #ESource
+ * @calendar: (nullable): a #GcalCalendar
* @component: a #ECalComponent
* @error: (nullable): return location for a #GError
*
- * Creates a new event which belongs to @source and
+ * Creates a new event which belongs to @calendar and
* is represented by @component. New events will have
- * a %NULL @source.
+ * a %NULL @calendar.
*
* Returns: (transfer full)(nullable): a #GcalEvent
*/
GcalEvent*
-gcal_event_new (ESource *source,
+gcal_event_new (GcalCalendar *calendar,
ECalComponent *component,
GError **error)
{
GcalEvent *event;
g_autofree gchar *uuid;
- uuid = get_uuid_from_component (source, component);
+ uuid = get_uuid_from_component (gcal_calendar_get_source (calendar), component);
if (g_hash_table_contains (event_cache, uuid))
{
@@ -800,7 +800,7 @@ gcal_event_new (ESource *source,
event = g_initable_new (GCAL_TYPE_EVENT,
NULL,
error,
- "source", source,
+ "calendar", calendar,
"component", component,
NULL);
@@ -1274,57 +1274,54 @@ gcal_event_set_location (GcalEvent *self,
}
/**
- * gcal_event_get_source:
+ * gcal_event_get_calendar:
* @self: a #GcalEvent
*
* Retrieves the source of the event.
*
- * Returns: (nullable): an #ESource.
+ * Returns: (nullable): a #GcalCalendar.
*/
-ESource*
-gcal_event_get_source (GcalEvent *self)
+GcalCalendar*
+gcal_event_get_calendar (GcalEvent *self)
{
g_return_val_if_fail (GCAL_IS_EVENT (self), NULL);
- return self->source;
+ return self->calendar;
}
/**
- * gcal_event_set_source:
+ * gcal_event_set_calendar:
* @self: a #GcalEvent
- * @source: an #ESource
+ * @calendar: a #GcalCalendar
*
- * Sets the source of this event. The color of the
+ * Sets the calendar of this event. The color of the
* event is automatically tied with the source's
* color.
*
* The source should only be set once.
*/
void
-gcal_event_set_source (GcalEvent *self,
- ESource *source)
+gcal_event_set_calendar (GcalEvent *self,
+ GcalCalendar *calendar)
{
g_return_if_fail (GCAL_IS_EVENT (self));
- if (self->source != source)
+ if (g_set_object (&self->calendar, calendar))
{
/* Remove previous binding */
g_clear_pointer (&self->color_binding, g_binding_unbind);
- g_set_object (&self->source, source);
-
- if (source)
+ if (calendar)
{
ESourceSelectable *extension;
- GdkRGBA color;
-
- extension = E_SOURCE_SELECTABLE (e_source_get_extension (source, E_SOURCE_EXTENSION_CALENDAR));
+ const GdkRGBA *color;
+ ESource *source;
- /* calendar default color */
- if (!gdk_rgba_parse (&color, e_source_selectable_get_color (extension)))
- gdk_rgba_parse (&color, "#ffffff");
+ color = gcal_calendar_get_color (calendar);
+ gcal_event_set_color (self, (GdkRGBA*) color);
- gcal_event_set_color (self, &color);
+ source = gcal_calendar_get_source (calendar);
+ extension = e_source_get_extension (source, E_SOURCE_EXTENSION_CALENDAR);
/* Bind the source's color with this event's color */
self->color_binding = g_object_bind_property_full (extension, "color",
@@ -1336,7 +1333,7 @@ gcal_event_set_source (GcalEvent *self,
NULL);
}
- g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_SOURCE]);
+ g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_CALENDAR]);
gcal_event_update_uid_internal (self);
}
diff --git a/src/gcal-event.h b/src/gcal-event.h
index 276f46d1..37339096 100644
--- a/src/gcal-event.h
+++ b/src/gcal-event.h
@@ -19,6 +19,7 @@
#ifndef GCAL_EVENT_H
#define GCAL_EVENT_H
+#include "gcal-calendar.h"
#include "gcal-recurrence.h"
#include <glib-object.h>
@@ -47,7 +48,7 @@ G_DECLARE_FINAL_TYPE (GcalEvent, gcal_event, GCAL, EVENT, GObject)
GQuark gcal_event_error_quark (void);
-GcalEvent* gcal_event_new (ESource *source,
+GcalEvent* gcal_event_new (GcalCalendar *calendar,
ECalComponent *component,
GError **error);
@@ -96,10 +97,10 @@ const gchar* gcal_event_get_location (GcalEvent
void gcal_event_set_location (GcalEvent *self,
const gchar *location);
-ESource* gcal_event_get_source (GcalEvent *self);
+GcalCalendar* gcal_event_get_calendar (GcalEvent *self);
-void gcal_event_set_source (GcalEvent *self,
- ESource *source);
+void gcal_event_set_calendar (GcalEvent *self,
+ GcalCalendar *calendar);
const gchar* gcal_event_get_summary (GcalEvent *self);
diff --git a/src/gcal-manager.c b/src/gcal-manager.c
index 751b3dc1..7daefabe 100644
--- a/src/gcal-manager.c
+++ b/src/gcal-manager.c
@@ -60,6 +60,12 @@ typedef struct
GcalManager *manager;
} MoveEventData;
+typedef struct
+{
+ GcalManager *manager;
+ GList *events;
+} GatherEventData;
+
struct _GcalManager
{
GObject parent;
@@ -124,13 +130,14 @@ gather_events (ECalDataModel *data_model,
time_t instance_end,
gpointer user_data)
{
+ GatherEventData *data = user_data;
+ GcalCalendar *calendar;
GcalEvent *event;
GError *error;
- GList **result;
error = NULL;
- result = user_data;
- event = gcal_event_new (e_client_get_source (E_CLIENT (client)), comp, &error);
+ calendar = g_hash_table_lookup (data->manager->clients, e_client_get_source (E_CLIENT (client)));
+ event = gcal_event_new (calendar, comp, &error);
if (error)
{
@@ -139,7 +146,7 @@ gather_events (ECalDataModel *data_model,
return TRUE;
}
- *result = g_list_append (*result, event);/* FIXME: add me sorted */
+ data->events = g_list_append (data->events, event);/* FIXME: add me sorted */
return TRUE;
}
@@ -309,8 +316,12 @@ on_event_created (GObject *source_object,
}
else
{
+ GcalCalendar *calendar;
+
g_object_ref (data->event);
- gcal_manager_set_default_source (data->manager, gcal_event_get_source (data->event));
+
+ calendar = gcal_event_get_calendar (data->event);
+ gcal_manager_set_default_source (data->manager, gcal_calendar_get_source (calendar));
g_debug ("Event: %s created successfully", new_uid);
}
@@ -781,6 +792,15 @@ gcal_manager_get_calendars (GcalManager *self)
return g_hash_table_get_values (self->clients);
}
+GcalCalendar*
+gcal_manager_get_calendar_from_source (GcalManager *self,
+ ESource *source)
+{
+ g_return_val_if_fail (GCAL_IS_MANAGER (self), NULL);
+
+ return g_hash_table_lookup (self->clients, source);
+}
+
/**
* gcal_manager_get_default_source:
* @self: a #GcalManager
@@ -917,7 +937,10 @@ GList*
gcal_manager_get_shell_search_events (GcalManager *self)
{
time_t range_start, range_end;
- GList *list = NULL;
+ GatherEventData data = {
+ .manager = self,
+ .events = NULL,
+ };
GCAL_ENTRY;
@@ -930,9 +953,9 @@ gcal_manager_get_shell_search_events (GcalManager *self)
range_start,
range_end,
gather_events,
- &list);
+ &data);
- GCAL_RETURN (list);
+ GCAL_RETURN (data.events);
}
/**
@@ -1251,16 +1274,14 @@ gcal_manager_create_event (GcalManager *self,
ECalComponent *component;
GcalCalendar *calendar;
AsyncOpsData *data;
- ESource *source;
GCAL_ENTRY;
g_return_if_fail (GCAL_IS_MANAGER (self));
g_return_if_fail (GCAL_IS_EVENT (event));
- source = gcal_event_get_source (event);
component = gcal_event_get_component (event);
- calendar = g_hash_table_lookup (self->clients, source);
+ calendar = gcal_event_get_calendar (event);
new_event_icalcomp = e_cal_component_get_icalcomponent (component);
@@ -1298,7 +1319,7 @@ gcal_manager_update_event (GcalManager *self,
g_return_if_fail (GCAL_IS_MANAGER (self));
g_return_if_fail (GCAL_IS_EVENT (event));
- calendar = g_hash_table_lookup (self->clients, gcal_event_get_source (event));
+ calendar = gcal_event_get_calendar (event);
component = gcal_event_get_component (event);
/*
@@ -1351,7 +1372,7 @@ gcal_manager_remove_event (GcalManager *self,
g_return_if_fail (GCAL_IS_EVENT (event));
component = gcal_event_get_component (event);
- calendar = g_hash_table_lookup (self->clients, gcal_event_get_source (event));
+ calendar = gcal_event_get_calendar (event);
rid = NULL;
e_cal_component_get_uid (component, &uid);
@@ -1428,7 +1449,7 @@ gcal_manager_move_event_to_source (GcalManager *self,
* created, try to remove the old component. Data loss it the last
* thing we want to happen here.
*/
- calendar = g_hash_table_lookup (self->clients, gcal_event_get_source (event));
+ calendar = gcal_event_get_calendar (event);
id = e_cal_component_get_id (ecomponent);
@@ -1470,7 +1491,10 @@ gcal_manager_get_events (GcalManager *self,
icaltimetype *end_date)
{
time_t range_start, range_end;
- GList *list = NULL;
+ GatherEventData data = {
+ .manager = self,
+ .events = NULL,
+ };
GCAL_ENTRY;
@@ -1483,9 +1507,9 @@ gcal_manager_get_events (GcalManager *self,
range_start,
range_end,
gather_events,
- &list);
+ &data);
- GCAL_RETURN (list);
+ GCAL_RETURN (data.events);
}
/**
@@ -1520,14 +1544,18 @@ gcal_manager_get_event_from_shell_search (GcalManager *self,
const gchar *uuid)
{
GcalEvent *new_event;
- GList *l, *list;
+ GList *l;
time_t range_start, range_end;
+ GatherEventData data = {
+ .manager = self,
+ .events = NULL,
+ };
+
GCAL_ENTRY;
g_return_val_if_fail (GCAL_IS_MANAGER (self), NULL);
- list = NULL;
new_event = NULL;
e_cal_data_model_get_subscriber_range (self->shell_search_data_model,
@@ -1539,9 +1567,9 @@ gcal_manager_get_event_from_shell_search (GcalManager *self,
range_start,
range_end,
gather_events,
- &list);
+ &data);
- for (l = list; l != NULL; l = g_list_next (l))
+ for (l = data.events; l != NULL; l = g_list_next (l))
{
GcalEvent *event;
@@ -1554,7 +1582,7 @@ gcal_manager_get_event_from_shell_search (GcalManager *self,
g_object_unref (event);
}
- g_list_free (list);
+ g_list_free (data.events);
GCAL_RETURN (new_event);
}
diff --git a/src/gcal-manager.h b/src/gcal-manager.h
index 2e1b68d8..cb76863b 100644
--- a/src/gcal-manager.h
+++ b/src/gcal-manager.h
@@ -35,6 +35,9 @@ GcalManager* gcal_manager_new (void);
ESource* gcal_manager_get_source (GcalManager *self,
const gchar *uid);
+GcalCalendar* gcal_manager_get_calendar_from_source (GcalManager *self,
+ ESource *source);
+
GList* gcal_manager_get_calendars (GcalManager *self);
ESource* gcal_manager_get_default_source (GcalManager *self);
diff --git a/src/gcal-quick-add-popover.c b/src/gcal-quick-add-popover.c
index c7569073..9d66cd88 100644
--- a/src/gcal-quick-add-popover.c
+++ b/src/gcal-quick-add-popover.c
@@ -639,6 +639,7 @@ edit_or_create_event (GcalQuickAddPopover *self,
GtkWidget *button)
{
ECalComponent *component;
+ GcalCalendar *calendar;
GcalManager *manager;
GDateTime *date_start, *date_end;
GTimeZone *tz;
@@ -652,6 +653,7 @@ edit_or_create_event (GcalQuickAddPopover *self,
manager = gcal_context_get_manager (self->context);
source = g_object_get_data (G_OBJECT (self->selected_row), "source");
+ calendar = gcal_manager_get_calendar_from_source (manager, source);
single_day = gcal_date_time_compare_date (self->date_end, self->date_start) == 0;
all_day = gcal_date_time_compare_date (self->date_end, self->date_start) > 1 ||
@@ -692,7 +694,7 @@ edit_or_create_event (GcalQuickAddPopover *self,
/* Create an ECalComponent from the data above */
component = build_component_from_details (summary, date_start, date_end);
- event = gcal_event_new (source, component, NULL);
+ event = gcal_event_new (calendar, component, NULL);
gcal_event_set_all_day (event, all_day);
/* If we clicked edit button, send a signal; otherwise, create the event */
diff --git a/src/gcal-window.c b/src/gcal-window.c
index e2138221..3e03bbe8 100644
--- a/src/gcal-window.c
+++ b/src/gcal-window.c
@@ -891,14 +891,18 @@ create_event_detailed_cb (GcalView *view,
gpointer end_span,
gpointer user_data)
{
+ g_autoptr (ESource) default_source = NULL;
GcalWindow *window = GCAL_WINDOW (user_data);
+ GcalCalendar *default_calendar;
GcalManager *manager;
ECalComponent *comp;
GcalEvent *event;
manager = gcal_context_get_manager (window->context);
comp = build_component_from_details ("", start_span, end_span);
- event = gcal_event_new (gcal_manager_get_default_source (manager), comp, NULL);
+ default_source = gcal_manager_get_default_source (manager);
+ default_calendar = gcal_manager_get_calendar_from_source (manager, default_source);
+ event = gcal_event_new (default_calendar, comp, NULL);
gcal_edit_dialog_set_event_is_new (GCAL_EDIT_DIALOG (window->edit_dialog), TRUE);
gcal_edit_dialog_set_event (GCAL_EDIT_DIALOG (window->edit_dialog), event);
@@ -929,6 +933,7 @@ edit_dialog_closed (GtkDialog *dialog,
gpointer user_data)
{
GcalRecurrenceModType mod;
+ GcalCalendar *calendar;
GcalManager *manager;
GcalWindow *window;
GcalEditDialog *edit_dialog;
@@ -945,7 +950,8 @@ edit_dialog_closed (GtkDialog *dialog,
event = gcal_edit_dialog_get_event (edit_dialog);
view = GCAL_VIEW (window->views[window->active_view]);
mod = GCAL_RECURRENCE_MOD_THIS_ONLY;
- source = gcal_event_get_source (event);
+ calendar = gcal_event_get_calendar (event);
+ source = gcal_calendar_get_source (calendar);
if (!gcal_edit_dialog_get_recurrence_changed (edit_dialog) &&
gcal_event_has_recurrence (event) &&
diff --git a/src/search/gcal-search-hit-event.c b/src/search/gcal-search-hit-event.c
index 9b1699d6..f4304f43 100644
--- a/src/search/gcal-search-hit-event.c
+++ b/src/search/gcal-search-hit-event.c
@@ -77,14 +77,14 @@ gcal_search_hit_event_get_icon_surface (DzlSuggestion *suggestion,
{
GcalSearchHitEvent *self;
cairo_surface_t *surface;
- ESource *source;
- GdkRGBA color;
+ const GdkRGBA *color;
+ GcalCalendar *calendar;
self = GCAL_SEARCH_HIT_EVENT (suggestion);
- source = gcal_event_get_source (self->event);
+ calendar = gcal_event_get_calendar (self->event);
- get_color_name_from_source (source, &color);
- surface = get_circle_surface_from_color (&color, 16);
+ color = gcal_calendar_get_color (calendar);
+ surface = get_circle_surface_from_color (color, 16);
/* Inject our custom style class into the given widget */
gtk_style_context_add_class (gtk_widget_get_style_context (widget), "calendar-color-image");
diff --git a/src/search/gcal-search-model.c b/src/search/gcal-search-model.c
index d8871017..b8442068 100644
--- a/src/search/gcal-search-model.c
+++ b/src/search/gcal-search-model.c
@@ -21,6 +21,8 @@
#define G_LOG_DOMAIN "GcalSearchModel"
#include "e-cal-data-model.h"
+#include "gcal-application.h"
+#include "gcal-context.h"
#include "gcal-debug.h"
#include "gcal-search-hit.h"
#include "gcal-search-hit-event.h"
@@ -98,6 +100,8 @@ gcal_search_model_component_added (ECalDataModelSubscriber *subscriber,
g_autoptr (GcalEvent) event = NULL;
g_autoptr (GError) error = NULL;
GcalSearchModel *self;
+ GcalCalendar *calendar;
+ GcalContext *context;
ESource *source;
self = GCAL_SEARCH_MODEL (subscriber);
@@ -105,8 +109,11 @@ gcal_search_model_component_added (ECalDataModelSubscriber *subscriber,
if (g_list_model_get_n_items (self->model) > self->max_results)
return;
+ /* FIXME: propagate context to the model properly */
+ context = gcal_application_get_context (GCAL_APPLICATION (g_application_get_default ()));
source = e_client_get_source (E_CLIENT (client));
- event = gcal_event_new (source, component, &error);
+ calendar = gcal_manager_get_calendar_from_source (gcal_context_get_manager (context), source);
+ event = gcal_event_new (calendar, component, &error);
if (error)
{
diff --git a/src/utils/gcal-utils.c b/src/utils/gcal-utils.c
index efcdd58e..ed0b5480 100644
--- a/src/utils/gcal-utils.c
+++ b/src/utils/gcal-utils.c
@@ -1102,13 +1102,13 @@ filter_event_list_by_uid_and_modtype (GList *widgets,
{
ECalComponentId *id;
ECalComponent *component;
- ESource *source;
+ GcalCalendar *calendar;
g_autofree gchar *id_prefix;
component = gcal_event_get_component (event);
- source = gcal_event_get_source (event);
+ calendar = gcal_event_get_calendar (event);
id = e_cal_component_get_id (component);
- id_prefix = g_strdup_printf ("%s:%s", e_source_get_uid (source), id->uid);
+ id_prefix = g_strdup_printf ("%s:%s", gcal_calendar_get_id (calendar), id->uid);
for (l = widgets; l != NULL; l = l->next)
{
diff --git a/src/views/gcal-month-cell.c b/src/views/gcal-month-cell.c
index d58fbfb8..2503d50f 100644
--- a/src/views/gcal-month-cell.c
+++ b/src/views/gcal-month-cell.c
@@ -205,6 +205,7 @@ gcal_month_cell_drag_drop (GtkWidget *widget,
{
GcalRecurrenceModType mod;
GcalMonthCell *self;
+ GcalCalendar *calendar;
GtkWidget *event_widget;
GDateTime *start_dt, *end_dt;
GcalEvent *event;
@@ -225,7 +226,8 @@ gcal_month_cell_drag_drop (GtkWidget *widget,
return FALSE;
event = gcal_event_widget_get_event (GCAL_EVENT_WIDGET (event_widget));
- source = gcal_event_get_source (event);
+ calendar = gcal_event_get_calendar (event);
+ source = gcal_calendar_get_source (calendar);
if (gcal_event_has_recurrence (event) &&
!ask_recurrence_modification_type (widget, &mod, source))
diff --git a/src/views/gcal-month-view.c b/src/views/gcal-month-view.c
index 7f67ed93..f9b7a946 100644
--- a/src/views/gcal-month-view.c
+++ b/src/views/gcal-month-view.c
@@ -1242,6 +1242,7 @@ gcal_month_view_component_added (ECalDataModelSubscriber *subscriber,
{
g_autoptr (GcalEvent) event = NULL;
GcalMonthView *self;
+ GcalCalendar *calendar;
GtkWidget *event_widget;
GError *error;
@@ -1249,7 +1250,9 @@ gcal_month_view_component_added (ECalDataModelSubscriber *subscriber,
error = NULL;
self = GCAL_MONTH_VIEW (subscriber);
- event = gcal_event_new (e_client_get_source (E_CLIENT (client)), comp, &error);
+ calendar = gcal_manager_get_calendar_from_source (gcal_context_get_manager (self->context),
+ e_client_get_source (E_CLIENT (client)));
+ event = gcal_event_new (calendar, comp, &error);
if (error)
{
@@ -1276,6 +1279,7 @@ gcal_month_view_component_modified (ECalDataModelSubscriber *subscriber,
{
g_autoptr (GcalEvent) event = NULL;
GcalMonthView *self;
+ GcalCalendar *calendar;
GtkWidget *new_widget;
GError *error;
GList *l;
@@ -1284,7 +1288,9 @@ gcal_month_view_component_modified (ECalDataModelSubscriber *subscriber,
error = NULL;
self = GCAL_MONTH_VIEW (subscriber);
- event = gcal_event_new (e_client_get_source (E_CLIENT (client)), comp, &error);
+ calendar = gcal_manager_get_calendar_from_source (gcal_context_get_manager (self->context),
+ e_client_get_source (E_CLIENT (client)));
+ event = gcal_event_new (calendar, comp, &error);
if (error)
{
diff --git a/src/views/gcal-week-grid.c b/src/views/gcal-week-grid.c
index adc8b4ae..2c4944f1 100644
--- a/src/views/gcal-week-grid.c
+++ b/src/views/gcal-week-grid.c
@@ -978,6 +978,7 @@ gcal_week_grid_drag_drop (GtkWidget *widget,
g_autoptr (GDateTime) week_start;
g_autoptr (GDateTime) dnd_date;
g_autoptr (GDateTime) new_end;
+ GcalCalendar *calendar;
GtkWidget *event_widget;
GcalEvent *event;
ESource *source;
@@ -1010,7 +1011,8 @@ gcal_week_grid_drag_drop (GtkWidget *widget,
}
event = gcal_event_widget_get_event (GCAL_EVENT_WIDGET (event_widget));
- source = gcal_event_get_source (event);
+ calendar = gcal_event_get_calendar (event);
+ source = gcal_calendar_get_source (calendar);
if (gcal_event_has_recurrence (event) &&
!ask_recurrence_modification_type (widget, &mod, source))
diff --git a/src/views/gcal-week-view.c b/src/views/gcal-week-view.c
index 3e72d81d..03b3ddda 100644
--- a/src/views/gcal-week-view.c
+++ b/src/views/gcal-week-view.c
@@ -298,10 +298,13 @@ gcal_week_view_component_added (ECalDataModelSubscriber *subscriber,
{
GcalWeekView *self = GCAL_WEEK_VIEW (subscriber);
g_autoptr (GcalEvent) event = NULL;
+ GcalCalendar *calendar;
GCAL_ENTRY;
- event = gcal_event_new (e_client_get_source (E_CLIENT (client)), comp, NULL);
+ calendar = gcal_manager_get_calendar_from_source (gcal_context_get_manager (self->context),
+ e_client_get_source (E_CLIENT (client)));
+ event = gcal_event_new (calendar, comp, NULL);
if (gcal_event_is_multiday (event) || gcal_event_get_all_day (event))
gcal_week_header_add_event (GCAL_WEEK_HEADER (self->header), event);
diff --git a/src/views/gcal-year-view.c b/src/views/gcal-year-view.c
index c64f6010..7e11e260 100644
--- a/src/views/gcal-year-view.c
+++ b/src/views/gcal-year-view.c
@@ -308,14 +308,14 @@ add_event_to_day_array (GcalYearView *year_view,
{
g_autoptr (GDateTime) second_date = NULL;
g_autoptr (GDateTime) date = NULL;
- GcalManager *manager;
+ GcalCalendar *calendar;
GtkWidget *child_widget;
GDateTime *dt_start, *dt_end;
gboolean is_readonly;
gint i;
- manager = gcal_context_get_manager (year_view->context);
- is_readonly = !gcal_manager_is_client_writable (manager, gcal_event_get_source (event));
+ calendar = gcal_event_get_calendar (event);
+ is_readonly = gcal_calendar_is_read_only (calendar);
child_widget = gcal_event_widget_new (year_view->context, event);
gcal_event_widget_set_read_only (GCAL_EVENT_WIDGET (child_widget), is_readonly);
@@ -1469,6 +1469,7 @@ navigator_drag_drop_cb (GcalYearView *self,
{
GcalRecurrenceModType mod;
GcalEventWidget *event_widget;
+ GcalCalendar *calendar;
GcalEvent *event;
GDateTime *start_dt, *end_dt;
GDateTime *drop_date;
@@ -1476,7 +1477,8 @@ navigator_drag_drop_cb (GcalYearView *self,
event_widget = GCAL_EVENT_WIDGET (gtk_drag_get_source_widget (context));
event = gcal_event_widget_get_event (event_widget);
- source = gcal_event_get_source (event);
+ calendar = gcal_event_get_calendar (event);
+ source = gcal_calendar_get_source (calendar);
mod = GCAL_RECURRENCE_MOD_THIS_ONLY;
if (gcal_event_has_recurrence (event) &&
@@ -1798,6 +1800,7 @@ gcal_year_view_component_added (ECalDataModelSubscriber *subscriber,
ECalComponent *comp)
{
g_autoptr (GcalEvent) event = NULL;
+ GcalCalendar *calendar;
GcalYearView *self;
GDateTime *event_start, *event_end;
GError *error;
@@ -1807,7 +1810,9 @@ gcal_year_view_component_added (ECalDataModelSubscriber *subscriber,
error = NULL;
self = GCAL_YEAR_VIEW (subscriber);
- event = gcal_event_new (e_client_get_source (E_CLIENT (client)), comp, &error);
+ calendar = gcal_manager_get_calendar_from_source (gcal_context_get_manager (self->context),
+ e_client_get_source (E_CLIENT (client)));
+ event = gcal_event_new (calendar, comp, &error);
if (error)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]