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:
+10
-8
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
+45
-48
@@ -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;
|
||||
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 */
|
||||
if (!gdk_rgba_parse (&color, e_source_selectable_get_color (extension)))
|
||||
gdk_rgba_parse (&color, "#ffffff");
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
+5
-4
@@ -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);
|
||||
|
||||
|
||||
+50
-22
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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 */
|
||||
|
||||
+8
-2
@@ -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) &&
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user