quick-add-popover: fix event creation again
This commit is contained in:
@@ -607,6 +607,7 @@ gcal_edit_dialog_set_event (GcalEditDialog *dialog,
|
||||
if (!event)
|
||||
goto out;
|
||||
|
||||
all_day = gcal_event_get_all_day (event);
|
||||
source = gcal_event_get_source (event);
|
||||
|
||||
/* Clear event data */
|
||||
@@ -636,8 +637,11 @@ gcal_edit_dialog_set_event (GcalEditDialog *dialog,
|
||||
e_source_get_display_name (source));
|
||||
|
||||
/* retrieve start and end dates */
|
||||
date_start = g_date_time_to_local (gcal_event_get_date_start (event));
|
||||
date_end = g_date_time_to_local (gcal_event_get_date_end (event));
|
||||
date_start = gcal_event_get_date_start (event);
|
||||
date_start = all_day ? g_date_time_ref (date_start) : g_date_time_to_local (date_start);
|
||||
|
||||
date_end = gcal_event_get_date_end (event);
|
||||
date_end = all_day ? g_date_time_ref (date_end) : g_date_time_to_local (date_end);
|
||||
|
||||
/* date */
|
||||
gcal_date_selector_set_date (GCAL_DATE_SELECTOR (dialog->start_date_selector), date_start);
|
||||
@@ -648,8 +652,6 @@ gcal_edit_dialog_set_event (GcalEditDialog *dialog,
|
||||
gcal_time_selector_set_time (GCAL_TIME_SELECTOR (dialog->end_time_selector), date_end);
|
||||
|
||||
/* all_day */
|
||||
all_day = gcal_event_get_all_day (event);
|
||||
|
||||
gtk_widget_set_sensitive (dialog->start_time_selector, dialog->writable && !all_day);
|
||||
gtk_widget_set_sensitive (dialog->end_time_selector, dialog->writable && !all_day);
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dialog->all_day_check), all_day);
|
||||
|
||||
+14
-11
@@ -1000,28 +1000,31 @@ gcal_event_set_timezone (GcalEvent *self,
|
||||
|
||||
if (self->timezone != timezone)
|
||||
{
|
||||
GDateTime *new_dtstart;
|
||||
|
||||
g_clear_pointer (&self->timezone, g_time_zone_unref);
|
||||
self->timezone = g_time_zone_ref (timezone);
|
||||
|
||||
/* Swap the timezone from the component start & end dates*/
|
||||
new_dtstart = g_date_time_to_timezone (self->dt_start, timezone);
|
||||
gcal_event_set_date_start (self, new_dtstart);
|
||||
|
||||
if (self->dt_end)
|
||||
if (!self->all_day)
|
||||
{
|
||||
GDateTime *new_dtend;
|
||||
GDateTime *new_dtstart;
|
||||
|
||||
new_dtend = g_date_time_to_timezone (self->dt_end, timezone);
|
||||
gcal_event_set_date_end (self, new_dtend);
|
||||
new_dtstart = g_date_time_to_timezone (self->dt_start, timezone);
|
||||
gcal_event_set_date_start (self, new_dtstart);
|
||||
|
||||
if (self->dt_end)
|
||||
{
|
||||
GDateTime *new_dtend;
|
||||
|
||||
new_dtend = g_date_time_to_timezone (self->dt_end, timezone);
|
||||
gcal_event_set_date_end (self, new_dtend);
|
||||
|
||||
g_clear_pointer (&new_dtstart, g_date_time_unref);
|
||||
}
|
||||
|
||||
g_clear_pointer (&new_dtstart, g_date_time_unref);
|
||||
}
|
||||
|
||||
g_object_notify (G_OBJECT (self), "timezone");
|
||||
|
||||
g_clear_pointer (&new_dtstart, g_date_time_unref);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+22
-10
@@ -264,8 +264,8 @@ show_popover_for_position (GcalMonthView *view,
|
||||
{
|
||||
GDateTime *start_dt, *end_dt;
|
||||
|
||||
start_dt = g_date_time_new_local (priv->date->year, priv->date->month, start_day, 0, 0, 0);
|
||||
end_dt = g_date_time_new_local (priv->date->year, priv->date->month, end_day + 1, 0, 0, 0);
|
||||
start_dt = g_date_time_new_utc (priv->date->year, priv->date->month, start_day, 0, 0, 0);
|
||||
end_dt = g_date_time_new_utc (priv->date->year, priv->date->month, end_day + 1, 0, 0, 0);
|
||||
|
||||
/* Swap dates if start > end */
|
||||
if (start_day > end_day)
|
||||
@@ -750,7 +750,7 @@ add_new_event_button_cb (GtkWidget *button,
|
||||
gtk_widget_hide (priv->overflow_popover);
|
||||
|
||||
day = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (priv->overflow_popover), "selected-day"));
|
||||
start_date = g_date_time_new_local (priv->date->year, priv->date->month, day, 0, 0, 0);
|
||||
start_date = g_date_time_new_utc (priv->date->year, priv->date->month, day, 0, 0, 0);
|
||||
|
||||
g_signal_emit_by_name (GCAL_VIEW (user_data), "create-event-detailed", start_date, NULL);
|
||||
|
||||
@@ -1081,7 +1081,7 @@ gcal_month_view_size_allocate (GtkWidget *widget,
|
||||
for (l = ppriv->multi_cell_children; l != NULL; l = g_list_next (l))
|
||||
{
|
||||
gint first_cell, last_cell, first_row, last_row, start, end;
|
||||
gboolean visible;
|
||||
gboolean visible, all_day;
|
||||
|
||||
GDateTime *date;
|
||||
GcalEvent *event;
|
||||
@@ -1090,6 +1090,7 @@ gcal_month_view_size_allocate (GtkWidget *widget,
|
||||
child_widget = (GtkWidget*) l->data;
|
||||
event = gcal_event_widget_get_event (l->data);
|
||||
uuid = gcal_event_get_uid (event);
|
||||
all_day = gcal_event_get_all_day (event);
|
||||
|
||||
if (!gtk_widget_is_visible (child_widget) && !g_hash_table_contains (ppriv->hidden_as_overflow, uuid))
|
||||
continue;
|
||||
@@ -1103,7 +1104,8 @@ gcal_month_view_size_allocate (GtkWidget *widget,
|
||||
* month. Otherwise, the first cell is the 1st day of the month.
|
||||
*/
|
||||
j = 1;
|
||||
date = g_date_time_to_local (gcal_event_get_date_start (event));
|
||||
date = gcal_event_get_date_start (event);
|
||||
date = all_day ? g_date_time_ref (date) : g_date_time_to_local (date);
|
||||
|
||||
if (g_date_time_get_month (date) == priv->date->month)
|
||||
j = g_date_time_get_day_of_month (date);
|
||||
@@ -1123,14 +1125,15 @@ gcal_month_view_size_allocate (GtkWidget *widget,
|
||||
* if the event is all day or not.
|
||||
*/
|
||||
j = icaltime_days_in_month (priv->date->month, priv->date->year);
|
||||
date = g_date_time_to_local (gcal_event_get_date_end (event));
|
||||
date = gcal_event_get_date_end (event);
|
||||
date = all_day ? g_date_time_ref (date) : g_date_time_to_local (date);
|
||||
|
||||
if (g_date_time_get_month (date) == priv->date->month)
|
||||
{
|
||||
j = g_date_time_get_day_of_month (date);
|
||||
|
||||
/* If the event is all day, we have to subtract 1 to find the the real date */
|
||||
if (gcal_event_get_all_day (event))
|
||||
if (all_day)
|
||||
j--;
|
||||
}
|
||||
j += priv->days_delay;
|
||||
@@ -1855,11 +1858,20 @@ gcal_month_view_get_child_cell (GcalSubscriberView *subscriber,
|
||||
gint cell;
|
||||
|
||||
event = gcal_event_widget_get_event (child);
|
||||
dt = g_date_time_to_local (gcal_event_get_date_start (event));
|
||||
dt = gcal_event_get_date_start (event);
|
||||
|
||||
cell = g_date_time_get_day_of_month (dt);
|
||||
/* Don't adjust the date when the event is all day */
|
||||
if (gcal_event_get_all_day (event))
|
||||
{
|
||||
cell = g_date_time_get_day_of_month (dt);
|
||||
}
|
||||
else
|
||||
{
|
||||
dt = g_date_time_to_local (dt);
|
||||
cell = g_date_time_get_day_of_month (dt);
|
||||
|
||||
g_clear_pointer (&dt, g_date_time_unref);
|
||||
g_clear_pointer (&dt, g_date_time_unref);
|
||||
}
|
||||
|
||||
return cell;
|
||||
}
|
||||
|
||||
@@ -406,7 +406,9 @@ 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);
|
||||
gcal_event_set_all_day (event, TRUE);
|
||||
|
||||
/* If we clicked edit button, send a signal; otherwise, create the event */
|
||||
if (button == self->add_button)
|
||||
|
||||
Reference in New Issue
Block a user