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.
This commit is contained in:
Georges Basile Stavracas Neto
2019-05-04 12:05:39 -03:00
parent 810ef7956b
commit 1118c74881
16 changed files with 168 additions and 107 deletions
+10 -8
View File
@@ -751,6 +751,7 @@ on_action_button_clicked_cb (GtkWidget *widget,
{ {
GcalRecurrenceFrequency freq; GcalRecurrenceFrequency freq;
GcalRecurrence *old_recur; GcalRecurrence *old_recur;
GcalCalendar *calendar;
GDateTime *start_date, *end_date; GDateTime *start_date, *end_date;
gboolean was_all_day; gboolean was_all_day;
gboolean all_day; gboolean all_day;
@@ -870,12 +871,15 @@ on_action_button_clicked_cb (GtkWidget *widget,
} }
/* Update the source if needed */ /* Update the source if needed */
calendar = gcal_event_get_calendar (self->event);
if (self->selected_source && 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) 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 else
{ {
@@ -1404,11 +1408,10 @@ gcal_edit_dialog_set_event (GcalEditDialog *self,
GcalRecurrenceFrequency frequency; GcalRecurrenceFrequency frequency;
GcalRecurrence *recur; GcalRecurrence *recur;
GtkAdjustment *count_adjustment; GtkAdjustment *count_adjustment;
GcalManager *manager; GcalCalendar *calendar;
GDateTime *date_start; GDateTime *date_start;
GDateTime *date_end; GDateTime *date_end;
cairo_surface_t *surface; cairo_surface_t *surface;
ESource *source;
const gchar *summary; const gchar *summary;
gboolean all_day; gboolean all_day;
@@ -1464,7 +1467,7 @@ gcal_edit_dialog_set_event (GcalEditDialog *self,
} }
all_day = gcal_event_get_all_day (event); all_day = gcal_event_get_all_day (event);
source = gcal_event_get_source (event); calendar = gcal_event_get_calendar (event);
/* Clear event data */ /* Clear event data */
gcal_edit_dialog_clear_data (self); 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); gtk_image_set_from_surface (GTK_IMAGE (self->source_image), surface);
g_clear_pointer (&surface, cairo_surface_destroy); 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 */ /* retrieve start and end dates */
date_start = gcal_event_get_date_start (event); date_start = gcal_event_get_date_start (event);
@@ -1536,8 +1539,7 @@ gcal_edit_dialog_set_event (GcalEditDialog *self,
gcal_event_get_description (event), gcal_event_get_description (event),
-1); -1);
manager = gcal_context_get_manager (self->context); set_writable (self, !gcal_calendar_is_read_only (calendar));
set_writable (self, gcal_manager_is_client_writable (manager, source));
g_clear_pointer (&date_start, g_date_time_unref); g_clear_pointer (&date_start, g_date_time_unref);
g_clear_pointer (&date_end, g_date_time_unref); g_clear_pointer (&date_end, g_date_time_unref);
-3
View File
@@ -1162,9 +1162,6 @@ gboolean
gcal_event_widget_equal (GcalEventWidget *widget1, gcal_event_widget_equal (GcalEventWidget *widget1,
GcalEventWidget *widget2) 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; return g_strcmp0 (gcal_event_get_uid (widget1->event), gcal_event_get_uid (widget2->event)) == 0;
} }
+45 -48
View File
@@ -55,7 +55,7 @@
* GError *error; * GError *error;
* *
* error = NULL; * error = NULL;
* event = gcal_event_new (source, component, &error); * event = gcal_event_new (calendar, component, &error);
* *
* if (error) * if (error)
* { * {
@@ -94,7 +94,7 @@ struct _GcalEvent
GHashTable *alarms; GHashTable *alarms;
ECalComponent *component; ECalComponent *component;
ESource *source; GcalCalendar *calendar;
GcalRecurrence *recurrence; GcalRecurrence *recurrence;
@@ -118,7 +118,7 @@ enum {
PROP_DATE_END, PROP_DATE_END,
PROP_DATE_START, PROP_DATE_START,
PROP_LOCATION, PROP_LOCATION,
PROP_SOURCE, PROP_CALENDAR,
PROP_SUMMARY, PROP_SUMMARY,
PROP_TIMEZONE, PROP_TIMEZONE,
PROP_UID, PROP_UID,
@@ -264,7 +264,7 @@ gcal_event_update_uid_internal (GcalEvent *self)
const gchar *source_id; const gchar *source_id;
/* Setup event uid */ /* 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); id = e_cal_component_get_id (self->component);
/* Clear the previous uid */ /* Clear the previous uid */
@@ -470,7 +470,7 @@ gcal_event_finalize (GObject *object)
g_clear_pointer (&self->uid, g_free); g_clear_pointer (&self->uid, g_free);
g_clear_pointer (&self->color, gdk_rgba_free); g_clear_pointer (&self->color, gdk_rgba_free);
g_clear_object (&self->component); g_clear_object (&self->component);
g_clear_object (&self->source); g_clear_object (&self->calendar);
g_clear_pointer (&self->recurrence, gcal_recurrence_unref); g_clear_pointer (&self->recurrence, gcal_recurrence_unref);
G_OBJECT_CLASS (gcal_event_parent_class)->finalize (object); 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); g_value_set_boxed (value, self->color);
break; break;
case PROP_CALENDAR:
g_value_set_object (value, self->calendar);
break;
case PROP_COMPONENT: case PROP_COMPONENT:
g_value_set_object (value, self->component); g_value_set_object (value, self->component);
break; break;
@@ -514,10 +518,6 @@ gcal_event_get_property (GObject *object,
g_value_set_string (value, gcal_event_get_location (self)); g_value_set_string (value, gcal_event_get_location (self));
break; break;
case PROP_SOURCE:
g_value_set_object (value, self->source);
break;
case PROP_SUMMARY: case PROP_SUMMARY:
g_value_set_string (value, gcal_event_get_summary (self)); g_value_set_string (value, gcal_event_get_summary (self));
break; break;
@@ -553,6 +553,10 @@ gcal_event_set_property (GObject *object,
gcal_event_set_all_day (self, g_value_get_boolean (value)); gcal_event_set_all_day (self, g_value_get_boolean (value));
break; break;
case PROP_CALENDAR:
gcal_event_set_calendar (self, g_value_get_object (value));
break;
case PROP_COLOR: case PROP_COLOR:
gcal_event_set_color (self, g_value_get_boxed (value)); gcal_event_set_color (self, g_value_get_boxed (value));
break; break;
@@ -577,10 +581,6 @@ gcal_event_set_property (GObject *object,
gcal_event_set_location (self, g_value_get_string (value)); gcal_event_set_location (self, g_value_get_string (value));
break; break;
case PROP_SOURCE:
gcal_event_set_source (self, g_value_get_object (value));
break;
case PROP_SUMMARY: case PROP_SUMMARY:
gcal_event_set_summary (self, g_value_get_string (value)); gcal_event_set_summary (self, g_value_get_string (value));
break; break;
@@ -704,15 +704,15 @@ gcal_event_class_init (GcalEventClass *klass)
G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS); 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", properties[PROP_CALENDAR] = g_param_spec_object ("calendar",
"ESource", "Calendar",
"The ESource this event belongs to", "The calendar this event belongs to",
E_TYPE_SOURCE, GCAL_TYPE_CALENDAR,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS); G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS);
/** /**
* GcalEvent::summary: * GcalEvent::summary:
@@ -767,25 +767,25 @@ gcal_event_init (GcalEvent *self)
/** /**
* gcal_event_new: * gcal_event_new:
* @source: (nullable): an #ESource * @calendar: (nullable): a #GcalCalendar
* @component: a #ECalComponent * @component: a #ECalComponent
* @error: (nullable): return location for a #GError * @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 * is represented by @component. New events will have
* a %NULL @source. * a %NULL @calendar.
* *
* Returns: (transfer full)(nullable): a #GcalEvent * Returns: (transfer full)(nullable): a #GcalEvent
*/ */
GcalEvent* GcalEvent*
gcal_event_new (ESource *source, gcal_event_new (GcalCalendar *calendar,
ECalComponent *component, ECalComponent *component,
GError **error) GError **error)
{ {
GcalEvent *event; GcalEvent *event;
g_autofree gchar *uuid; 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)) if (g_hash_table_contains (event_cache, uuid))
{ {
@@ -800,7 +800,7 @@ gcal_event_new (ESource *source,
event = g_initable_new (GCAL_TYPE_EVENT, event = g_initable_new (GCAL_TYPE_EVENT,
NULL, NULL,
error, error,
"source", source, "calendar", calendar,
"component", component, "component", component,
NULL); NULL);
@@ -1274,57 +1274,54 @@ gcal_event_set_location (GcalEvent *self,
} }
/** /**
* gcal_event_get_source: * gcal_event_get_calendar:
* @self: a #GcalEvent * @self: a #GcalEvent
* *
* Retrieves the source of the event. * Retrieves the source of the event.
* *
* Returns: (nullable): an #ESource. * Returns: (nullable): a #GcalCalendar.
*/ */
ESource* GcalCalendar*
gcal_event_get_source (GcalEvent *self) gcal_event_get_calendar (GcalEvent *self)
{ {
g_return_val_if_fail (GCAL_IS_EVENT (self), NULL); 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 * @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 * event is automatically tied with the source's
* color. * color.
* *
* The source should only be set once. * The source should only be set once.
*/ */
void void
gcal_event_set_source (GcalEvent *self, gcal_event_set_calendar (GcalEvent *self,
ESource *source) GcalCalendar *calendar)
{ {
g_return_if_fail (GCAL_IS_EVENT (self)); g_return_if_fail (GCAL_IS_EVENT (self));
if (self->source != source) if (g_set_object (&self->calendar, calendar))
{ {
/* Remove previous binding */ /* Remove previous binding */
g_clear_pointer (&self->color_binding, g_binding_unbind); g_clear_pointer (&self->color_binding, g_binding_unbind);
g_set_object (&self->source, source); if (calendar)
if (source)
{ {
ESourceSelectable *extension; ESourceSelectable *extension;
GdkRGBA color; const GdkRGBA *color;
ESource *source;
extension = E_SOURCE_SELECTABLE (e_source_get_extension (source, E_SOURCE_EXTENSION_CALENDAR)); color = gcal_calendar_get_color (calendar);
gcal_event_set_color (self, (GdkRGBA*) color);
/* calendar default color */ source = gcal_calendar_get_source (calendar);
if (!gdk_rgba_parse (&color, e_source_selectable_get_color (extension))) extension = e_source_get_extension (source, E_SOURCE_EXTENSION_CALENDAR);
gdk_rgba_parse (&color, "#ffffff");
gcal_event_set_color (self, &color);
/* Bind the source's color with this event's color */ /* Bind the source's color with this event's color */
self->color_binding = g_object_bind_property_full (extension, "color", self->color_binding = g_object_bind_property_full (extension, "color",
@@ -1336,7 +1333,7 @@ gcal_event_set_source (GcalEvent *self,
NULL); 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); gcal_event_update_uid_internal (self);
} }
+5 -4
View File
@@ -19,6 +19,7 @@
#ifndef GCAL_EVENT_H #ifndef GCAL_EVENT_H
#define GCAL_EVENT_H #define GCAL_EVENT_H
#include "gcal-calendar.h"
#include "gcal-recurrence.h" #include "gcal-recurrence.h"
#include <glib-object.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); GQuark gcal_event_error_quark (void);
GcalEvent* gcal_event_new (ESource *source, GcalEvent* gcal_event_new (GcalCalendar *calendar,
ECalComponent *component, ECalComponent *component,
GError **error); GError **error);
@@ -96,10 +97,10 @@ const gchar* gcal_event_get_location (GcalEvent
void gcal_event_set_location (GcalEvent *self, void gcal_event_set_location (GcalEvent *self,
const gchar *location); const gchar *location);
ESource* gcal_event_get_source (GcalEvent *self); GcalCalendar* gcal_event_get_calendar (GcalEvent *self);
void gcal_event_set_source (GcalEvent *self, void gcal_event_set_calendar (GcalEvent *self,
ESource *source); GcalCalendar *calendar);
const gchar* gcal_event_get_summary (GcalEvent *self); const gchar* gcal_event_get_summary (GcalEvent *self);
+50 -22
View File
@@ -60,6 +60,12 @@ typedef struct
GcalManager *manager; GcalManager *manager;
} MoveEventData; } MoveEventData;
typedef struct
{
GcalManager *manager;
GList *events;
} GatherEventData;
struct _GcalManager struct _GcalManager
{ {
GObject parent; GObject parent;
@@ -124,13 +130,14 @@ gather_events (ECalDataModel *data_model,
time_t instance_end, time_t instance_end,
gpointer user_data) gpointer user_data)
{ {
GatherEventData *data = user_data;
GcalCalendar *calendar;
GcalEvent *event; GcalEvent *event;
GError *error; GError *error;
GList **result;
error = NULL; error = NULL;
result = user_data; calendar = g_hash_table_lookup (data->manager->clients, e_client_get_source (E_CLIENT (client)));
event = gcal_event_new (e_client_get_source (E_CLIENT (client)), comp, &error); event = gcal_event_new (calendar, comp, &error);
if (error) if (error)
{ {
@@ -139,7 +146,7 @@ gather_events (ECalDataModel *data_model,
return TRUE; 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; return TRUE;
} }
@@ -309,8 +316,12 @@ on_event_created (GObject *source_object,
} }
else else
{ {
GcalCalendar *calendar;
g_object_ref (data->event); 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); 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); 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: * gcal_manager_get_default_source:
* @self: a #GcalManager * @self: a #GcalManager
@@ -917,7 +937,10 @@ GList*
gcal_manager_get_shell_search_events (GcalManager *self) gcal_manager_get_shell_search_events (GcalManager *self)
{ {
time_t range_start, range_end; time_t range_start, range_end;
GList *list = NULL; GatherEventData data = {
.manager = self,
.events = NULL,
};
GCAL_ENTRY; GCAL_ENTRY;
@@ -930,9 +953,9 @@ gcal_manager_get_shell_search_events (GcalManager *self)
range_start, range_start,
range_end, range_end,
gather_events, gather_events,
&list); &data);
GCAL_RETURN (list); GCAL_RETURN (data.events);
} }
/** /**
@@ -1251,16 +1274,14 @@ gcal_manager_create_event (GcalManager *self,
ECalComponent *component; ECalComponent *component;
GcalCalendar *calendar; GcalCalendar *calendar;
AsyncOpsData *data; AsyncOpsData *data;
ESource *source;
GCAL_ENTRY; GCAL_ENTRY;
g_return_if_fail (GCAL_IS_MANAGER (self)); g_return_if_fail (GCAL_IS_MANAGER (self));
g_return_if_fail (GCAL_IS_EVENT (event)); g_return_if_fail (GCAL_IS_EVENT (event));
source = gcal_event_get_source (event);
component = gcal_event_get_component (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); 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_MANAGER (self));
g_return_if_fail (GCAL_IS_EVENT (event)); 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); component = gcal_event_get_component (event);
/* /*
@@ -1351,7 +1372,7 @@ gcal_manager_remove_event (GcalManager *self,
g_return_if_fail (GCAL_IS_EVENT (event)); g_return_if_fail (GCAL_IS_EVENT (event));
component = gcal_event_get_component (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; rid = NULL;
e_cal_component_get_uid (component, &uid); 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 * created, try to remove the old component. Data loss it the last
* thing we want to happen here. * 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); id = e_cal_component_get_id (ecomponent);
@@ -1470,7 +1491,10 @@ gcal_manager_get_events (GcalManager *self,
icaltimetype *end_date) icaltimetype *end_date)
{ {
time_t range_start, range_end; time_t range_start, range_end;
GList *list = NULL; GatherEventData data = {
.manager = self,
.events = NULL,
};
GCAL_ENTRY; GCAL_ENTRY;
@@ -1483,9 +1507,9 @@ gcal_manager_get_events (GcalManager *self,
range_start, range_start,
range_end, range_end,
gather_events, 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) const gchar *uuid)
{ {
GcalEvent *new_event; GcalEvent *new_event;
GList *l, *list; GList *l;
time_t range_start, range_end; time_t range_start, range_end;
GatherEventData data = {
.manager = self,
.events = NULL,
};
GCAL_ENTRY; GCAL_ENTRY;
g_return_val_if_fail (GCAL_IS_MANAGER (self), NULL); g_return_val_if_fail (GCAL_IS_MANAGER (self), NULL);
list = NULL;
new_event = NULL; new_event = NULL;
e_cal_data_model_get_subscriber_range (self->shell_search_data_model, 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_start,
range_end, range_end,
gather_events, 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; GcalEvent *event;
@@ -1554,7 +1582,7 @@ gcal_manager_get_event_from_shell_search (GcalManager *self,
g_object_unref (event); g_object_unref (event);
} }
g_list_free (list); g_list_free (data.events);
GCAL_RETURN (new_event); GCAL_RETURN (new_event);
} }
+3
View File
@@ -35,6 +35,9 @@ GcalManager* gcal_manager_new (void);
ESource* gcal_manager_get_source (GcalManager *self, ESource* gcal_manager_get_source (GcalManager *self,
const gchar *uid); const gchar *uid);
GcalCalendar* gcal_manager_get_calendar_from_source (GcalManager *self,
ESource *source);
GList* gcal_manager_get_calendars (GcalManager *self); GList* gcal_manager_get_calendars (GcalManager *self);
ESource* gcal_manager_get_default_source (GcalManager *self); ESource* gcal_manager_get_default_source (GcalManager *self);
+3 -1
View File
@@ -639,6 +639,7 @@ edit_or_create_event (GcalQuickAddPopover *self,
GtkWidget *button) GtkWidget *button)
{ {
ECalComponent *component; ECalComponent *component;
GcalCalendar *calendar;
GcalManager *manager; GcalManager *manager;
GDateTime *date_start, *date_end; GDateTime *date_start, *date_end;
GTimeZone *tz; GTimeZone *tz;
@@ -652,6 +653,7 @@ edit_or_create_event (GcalQuickAddPopover *self,
manager = gcal_context_get_manager (self->context); manager = gcal_context_get_manager (self->context);
source = g_object_get_data (G_OBJECT (self->selected_row), "source"); 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; 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 || 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 */ /* Create an ECalComponent from the data above */
component = build_component_from_details (summary, date_start, date_end); 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); gcal_event_set_all_day (event, all_day);
/* If we clicked edit button, send a signal; otherwise, create the event */ /* If we clicked edit button, send a signal; otherwise, create the event */
+8 -2
View File
@@ -891,14 +891,18 @@ create_event_detailed_cb (GcalView *view,
gpointer end_span, gpointer end_span,
gpointer user_data) gpointer user_data)
{ {
g_autoptr (ESource) default_source = NULL;
GcalWindow *window = GCAL_WINDOW (user_data); GcalWindow *window = GCAL_WINDOW (user_data);
GcalCalendar *default_calendar;
GcalManager *manager; GcalManager *manager;
ECalComponent *comp; ECalComponent *comp;
GcalEvent *event; GcalEvent *event;
manager = gcal_context_get_manager (window->context); manager = gcal_context_get_manager (window->context);
comp = build_component_from_details ("", start_span, end_span); 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_is_new (GCAL_EDIT_DIALOG (window->edit_dialog), TRUE);
gcal_edit_dialog_set_event (GCAL_EDIT_DIALOG (window->edit_dialog), event); gcal_edit_dialog_set_event (GCAL_EDIT_DIALOG (window->edit_dialog), event);
@@ -929,6 +933,7 @@ edit_dialog_closed (GtkDialog *dialog,
gpointer user_data) gpointer user_data)
{ {
GcalRecurrenceModType mod; GcalRecurrenceModType mod;
GcalCalendar *calendar;
GcalManager *manager; GcalManager *manager;
GcalWindow *window; GcalWindow *window;
GcalEditDialog *edit_dialog; GcalEditDialog *edit_dialog;
@@ -945,7 +950,8 @@ edit_dialog_closed (GtkDialog *dialog,
event = gcal_edit_dialog_get_event (edit_dialog); event = gcal_edit_dialog_get_event (edit_dialog);
view = GCAL_VIEW (window->views[window->active_view]); view = GCAL_VIEW (window->views[window->active_view]);
mod = GCAL_RECURRENCE_MOD_THIS_ONLY; 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) && if (!gcal_edit_dialog_get_recurrence_changed (edit_dialog) &&
gcal_event_has_recurrence (event) && gcal_event_has_recurrence (event) &&
+5 -5
View File
@@ -77,14 +77,14 @@ gcal_search_hit_event_get_icon_surface (DzlSuggestion *suggestion,
{ {
GcalSearchHitEvent *self; GcalSearchHitEvent *self;
cairo_surface_t *surface; cairo_surface_t *surface;
ESource *source; const GdkRGBA *color;
GdkRGBA color; GcalCalendar *calendar;
self = GCAL_SEARCH_HIT_EVENT (suggestion); 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); color = gcal_calendar_get_color (calendar);
surface = get_circle_surface_from_color (&color, 16); surface = get_circle_surface_from_color (color, 16);
/* Inject our custom style class into the given widget */ /* Inject our custom style class into the given widget */
gtk_style_context_add_class (gtk_widget_get_style_context (widget), "calendar-color-image"); gtk_style_context_add_class (gtk_widget_get_style_context (widget), "calendar-color-image");
+8 -1
View File
@@ -21,6 +21,8 @@
#define G_LOG_DOMAIN "GcalSearchModel" #define G_LOG_DOMAIN "GcalSearchModel"
#include "e-cal-data-model.h" #include "e-cal-data-model.h"
#include "gcal-application.h"
#include "gcal-context.h"
#include "gcal-debug.h" #include "gcal-debug.h"
#include "gcal-search-hit.h" #include "gcal-search-hit.h"
#include "gcal-search-hit-event.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 (GcalEvent) event = NULL;
g_autoptr (GError) error = NULL; g_autoptr (GError) error = NULL;
GcalSearchModel *self; GcalSearchModel *self;
GcalCalendar *calendar;
GcalContext *context;
ESource *source; ESource *source;
self = GCAL_SEARCH_MODEL (subscriber); 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) if (g_list_model_get_n_items (self->model) > self->max_results)
return; 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)); 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) if (error)
{ {
+3 -3
View File
@@ -1102,13 +1102,13 @@ filter_event_list_by_uid_and_modtype (GList *widgets,
{ {
ECalComponentId *id; ECalComponentId *id;
ECalComponent *component; ECalComponent *component;
ESource *source; GcalCalendar *calendar;
g_autofree gchar *id_prefix; g_autofree gchar *id_prefix;
component = gcal_event_get_component (event); 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 = 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) for (l = widgets; l != NULL; l = l->next)
{ {
+3 -1
View File
@@ -205,6 +205,7 @@ gcal_month_cell_drag_drop (GtkWidget *widget,
{ {
GcalRecurrenceModType mod; GcalRecurrenceModType mod;
GcalMonthCell *self; GcalMonthCell *self;
GcalCalendar *calendar;
GtkWidget *event_widget; GtkWidget *event_widget;
GDateTime *start_dt, *end_dt; GDateTime *start_dt, *end_dt;
GcalEvent *event; GcalEvent *event;
@@ -225,7 +226,8 @@ gcal_month_cell_drag_drop (GtkWidget *widget,
return FALSE; return FALSE;
event = gcal_event_widget_get_event (GCAL_EVENT_WIDGET (event_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) && if (gcal_event_has_recurrence (event) &&
!ask_recurrence_modification_type (widget, &mod, source)) !ask_recurrence_modification_type (widget, &mod, source))
+8 -2
View File
@@ -1242,6 +1242,7 @@ gcal_month_view_component_added (ECalDataModelSubscriber *subscriber,
{ {
g_autoptr (GcalEvent) event = NULL; g_autoptr (GcalEvent) event = NULL;
GcalMonthView *self; GcalMonthView *self;
GcalCalendar *calendar;
GtkWidget *event_widget; GtkWidget *event_widget;
GError *error; GError *error;
@@ -1249,7 +1250,9 @@ gcal_month_view_component_added (ECalDataModelSubscriber *subscriber,
error = NULL; error = NULL;
self = GCAL_MONTH_VIEW (subscriber); 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) if (error)
{ {
@@ -1276,6 +1279,7 @@ gcal_month_view_component_modified (ECalDataModelSubscriber *subscriber,
{ {
g_autoptr (GcalEvent) event = NULL; g_autoptr (GcalEvent) event = NULL;
GcalMonthView *self; GcalMonthView *self;
GcalCalendar *calendar;
GtkWidget *new_widget; GtkWidget *new_widget;
GError *error; GError *error;
GList *l; GList *l;
@@ -1284,7 +1288,9 @@ gcal_month_view_component_modified (ECalDataModelSubscriber *subscriber,
error = NULL; error = NULL;
self = GCAL_MONTH_VIEW (subscriber); 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) if (error)
{ {
+3 -1
View File
@@ -978,6 +978,7 @@ gcal_week_grid_drag_drop (GtkWidget *widget,
g_autoptr (GDateTime) week_start; g_autoptr (GDateTime) week_start;
g_autoptr (GDateTime) dnd_date; g_autoptr (GDateTime) dnd_date;
g_autoptr (GDateTime) new_end; g_autoptr (GDateTime) new_end;
GcalCalendar *calendar;
GtkWidget *event_widget; GtkWidget *event_widget;
GcalEvent *event; GcalEvent *event;
ESource *source; ESource *source;
@@ -1010,7 +1011,8 @@ gcal_week_grid_drag_drop (GtkWidget *widget,
} }
event = gcal_event_widget_get_event (GCAL_EVENT_WIDGET (event_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) && if (gcal_event_has_recurrence (event) &&
!ask_recurrence_modification_type (widget, &mod, source)) !ask_recurrence_modification_type (widget, &mod, source))
+4 -1
View File
@@ -298,10 +298,13 @@ gcal_week_view_component_added (ECalDataModelSubscriber *subscriber,
{ {
GcalWeekView *self = GCAL_WEEK_VIEW (subscriber); GcalWeekView *self = GCAL_WEEK_VIEW (subscriber);
g_autoptr (GcalEvent) event = NULL; g_autoptr (GcalEvent) event = NULL;
GcalCalendar *calendar;
GCAL_ENTRY; 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)) if (gcal_event_is_multiday (event) || gcal_event_get_all_day (event))
gcal_week_header_add_event (GCAL_WEEK_HEADER (self->header), event); gcal_week_header_add_event (GCAL_WEEK_HEADER (self->header), event);
+10 -5
View File
@@ -308,14 +308,14 @@ add_event_to_day_array (GcalYearView *year_view,
{ {
g_autoptr (GDateTime) second_date = NULL; g_autoptr (GDateTime) second_date = NULL;
g_autoptr (GDateTime) date = NULL; g_autoptr (GDateTime) date = NULL;
GcalManager *manager; GcalCalendar *calendar;
GtkWidget *child_widget; GtkWidget *child_widget;
GDateTime *dt_start, *dt_end; GDateTime *dt_start, *dt_end;
gboolean is_readonly; gboolean is_readonly;
gint i; gint i;
manager = gcal_context_get_manager (year_view->context); calendar = gcal_event_get_calendar (event);
is_readonly = !gcal_manager_is_client_writable (manager, gcal_event_get_source (event)); is_readonly = gcal_calendar_is_read_only (calendar);
child_widget = gcal_event_widget_new (year_view->context, event); child_widget = gcal_event_widget_new (year_view->context, event);
gcal_event_widget_set_read_only (GCAL_EVENT_WIDGET (child_widget), is_readonly); 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; GcalRecurrenceModType mod;
GcalEventWidget *event_widget; GcalEventWidget *event_widget;
GcalCalendar *calendar;
GcalEvent *event; GcalEvent *event;
GDateTime *start_dt, *end_dt; GDateTime *start_dt, *end_dt;
GDateTime *drop_date; 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_widget = GCAL_EVENT_WIDGET (gtk_drag_get_source_widget (context));
event = gcal_event_widget_get_event (event_widget); 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; mod = GCAL_RECURRENCE_MOD_THIS_ONLY;
if (gcal_event_has_recurrence (event) && if (gcal_event_has_recurrence (event) &&
@@ -1798,6 +1800,7 @@ gcal_year_view_component_added (ECalDataModelSubscriber *subscriber,
ECalComponent *comp) ECalComponent *comp)
{ {
g_autoptr (GcalEvent) event = NULL; g_autoptr (GcalEvent) event = NULL;
GcalCalendar *calendar;
GcalYearView *self; GcalYearView *self;
GDateTime *event_start, *event_end; GDateTime *event_start, *event_end;
GError *error; GError *error;
@@ -1807,7 +1810,9 @@ gcal_year_view_component_added (ECalDataModelSubscriber *subscriber,
error = NULL; error = NULL;
self = GCAL_YEAR_VIEW (subscriber); 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) if (error)
{ {