Reworked date change observers.
Hooked signals from date and time entries. Added comparison and adjustment if the interval. Removed SimpleDate and SimpleTime structs. Added _get_end_date for end-date change notification.
This commit is contained in:
committed by
Rene A. Viant Moran
parent
8af404eea1
commit
f0e5880476
+265
-90
@@ -25,35 +25,19 @@
|
|||||||
#include <libecal/libecal.h>
|
#include <libecal/libecal.h>
|
||||||
#include <glib/gi18n.h>
|
#include <glib/gi18n.h>
|
||||||
|
|
||||||
typedef struct _SimpleTime SimpleTime;
|
|
||||||
typedef struct _SimpleDate SimpleDate;
|
|
||||||
typedef struct _SimpleEventStore SimpleEventStore;
|
typedef struct _SimpleEventStore SimpleEventStore;
|
||||||
|
|
||||||
struct _SimpleTime
|
|
||||||
{
|
|
||||||
guint hour;
|
|
||||||
guint minute;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _SimpleDate
|
|
||||||
{
|
|
||||||
guint day;
|
|
||||||
guint month;
|
|
||||||
guint year;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _SimpleEventStore
|
struct _SimpleEventStore
|
||||||
{
|
{
|
||||||
gchar *summary;
|
gchar *summary;
|
||||||
|
|
||||||
gboolean all_day;
|
gboolean all_day;
|
||||||
SimpleDate *start_date;
|
icaltimetype *start_date;
|
||||||
SimpleDate *end_date;
|
icaltimetype *end_date;
|
||||||
SimpleTime *start_time;
|
icaltime_span *time_span;
|
||||||
SimpleTime *end_time;
|
|
||||||
|
|
||||||
gchar *location;
|
gchar *location;
|
||||||
gchar *description;
|
gchar *description;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _GcalEditDialogPrivate
|
struct _GcalEditDialogPrivate
|
||||||
@@ -84,6 +68,8 @@ struct _GcalEditDialogPrivate
|
|||||||
GtkWidget *notes_text;
|
GtkWidget *notes_text;
|
||||||
|
|
||||||
SimpleEventStore *ev_store;
|
SimpleEventStore *ev_store;
|
||||||
|
|
||||||
|
gboolean setting_event;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void gcal_edit_dialog_constructed (GObject *object);
|
static void gcal_edit_dialog_constructed (GObject *object);
|
||||||
@@ -110,6 +96,9 @@ static void gcal_edit_dialog_all_day_changed (GtkWidget *wi
|
|||||||
static gboolean gcal_edit_dialog_date_changed (GcalEditDialog *dialog,
|
static gboolean gcal_edit_dialog_date_changed (GcalEditDialog *dialog,
|
||||||
gboolean start_date);
|
gboolean start_date);
|
||||||
|
|
||||||
|
static void gcal_edit_dialog_date_entry_modified (GtkWidget *entry,
|
||||||
|
gpointer user_data);
|
||||||
|
|
||||||
G_DEFINE_TYPE(GcalEditDialog, gcal_edit_dialog, GTK_TYPE_DIALOG)
|
G_DEFINE_TYPE(GcalEditDialog, gcal_edit_dialog, GTK_TYPE_DIALOG)
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -138,6 +127,8 @@ gcal_edit_dialog_init (GcalEditDialog *self)
|
|||||||
priv->event_uid = NULL;
|
priv->event_uid = NULL;
|
||||||
priv->writable = TRUE;
|
priv->writable = TRUE;
|
||||||
|
|
||||||
|
priv->setting_event = FALSE;
|
||||||
|
|
||||||
gtk_style_context_add_class (
|
gtk_style_context_add_class (
|
||||||
gtk_widget_get_style_context (GTK_WIDGET (self)),
|
gtk_widget_get_style_context (GTK_WIDGET (self)),
|
||||||
"edit-dialog");
|
"edit-dialog");
|
||||||
@@ -343,11 +334,30 @@ gcal_edit_dialog_constructed (GObject* object)
|
|||||||
G_CALLBACK (gcal_edit_dialog_button_toggled),
|
G_CALLBACK (gcal_edit_dialog_button_toggled),
|
||||||
object);
|
object);
|
||||||
|
|
||||||
/* event data related signals */
|
|
||||||
g_signal_connect (priv->all_day_check,
|
g_signal_connect (priv->all_day_check,
|
||||||
"toggled",
|
"toggled",
|
||||||
G_CALLBACK (gcal_edit_dialog_all_day_changed),
|
G_CALLBACK (gcal_edit_dialog_all_day_changed),
|
||||||
object);
|
object);
|
||||||
|
|
||||||
|
g_signal_connect (priv->start_date_entry,
|
||||||
|
"modified",
|
||||||
|
G_CALLBACK (gcal_edit_dialog_date_entry_modified),
|
||||||
|
object);
|
||||||
|
|
||||||
|
g_signal_connect (priv->end_date_entry,
|
||||||
|
"modified",
|
||||||
|
G_CALLBACK (gcal_edit_dialog_date_entry_modified),
|
||||||
|
object);
|
||||||
|
|
||||||
|
g_signal_connect (priv->start_time_entry,
|
||||||
|
"modified",
|
||||||
|
G_CALLBACK (gcal_edit_dialog_date_entry_modified),
|
||||||
|
object);
|
||||||
|
|
||||||
|
g_signal_connect (priv->end_time_entry,
|
||||||
|
"modified",
|
||||||
|
G_CALLBACK (gcal_edit_dialog_date_entry_modified),
|
||||||
|
object);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -367,8 +377,7 @@ gcal_edit_dialog_finalize (GObject *object)
|
|||||||
{
|
{
|
||||||
g_free (priv->ev_store->start_date);
|
g_free (priv->ev_store->start_date);
|
||||||
g_free (priv->ev_store->end_date);
|
g_free (priv->ev_store->end_date);
|
||||||
g_free (priv->ev_store->start_time);
|
g_free (priv->ev_store->time_span);
|
||||||
g_free (priv->ev_store->end_time);
|
|
||||||
|
|
||||||
g_free (priv->ev_store);
|
g_free (priv->ev_store);
|
||||||
}
|
}
|
||||||
@@ -642,37 +651,34 @@ gcal_edit_dialog_date_changed (GcalEditDialog *dialog,
|
|||||||
gboolean start_date)
|
gboolean start_date)
|
||||||
{
|
{
|
||||||
GcalEditDialogPrivate *priv;
|
GcalEditDialogPrivate *priv;
|
||||||
guint day;
|
gint day;
|
||||||
guint month;
|
gint month;
|
||||||
guint year;
|
gint year;
|
||||||
guint hour;
|
gint hour;
|
||||||
guint minute;
|
gint minute;
|
||||||
|
|
||||||
GtkWidget *widget;
|
GtkWidget *widget;
|
||||||
SimpleDate *date;
|
icaltimetype *old_date;
|
||||||
SimpleTime *time;
|
|
||||||
priv = dialog->priv;
|
priv = dialog->priv;
|
||||||
|
|
||||||
if (start_date)
|
if (start_date)
|
||||||
{
|
{
|
||||||
widget = priv->start_date_entry;
|
widget = priv->start_date_entry;
|
||||||
date = priv->ev_store->start_date;
|
old_date = priv->ev_store->start_date;
|
||||||
time = priv->ev_store->start_time;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
widget = priv->end_date_entry;
|
widget = priv->end_date_entry;
|
||||||
date = priv->ev_store->end_date;
|
old_date = priv->ev_store->end_date;
|
||||||
time = priv->ev_store->end_time;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
gcal_date_entry_get_date (GCAL_DATE_ENTRY (widget),
|
gcal_date_entry_get_date (GCAL_DATE_ENTRY (widget),
|
||||||
&day,
|
&day,
|
||||||
&month,
|
&month,
|
||||||
&year);
|
&year);
|
||||||
if (day != date->day ||
|
if (day != old_date->day ||
|
||||||
month != date->month ||
|
month != old_date->month ||
|
||||||
year != date->year)
|
year != old_date->year)
|
||||||
{
|
{
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@@ -681,8 +687,8 @@ gcal_edit_dialog_date_changed (GcalEditDialog *dialog,
|
|||||||
gcal_time_entry_get_time (GCAL_TIME_ENTRY (widget),
|
gcal_time_entry_get_time (GCAL_TIME_ENTRY (widget),
|
||||||
&hour,
|
&hour,
|
||||||
&minute);
|
&minute);
|
||||||
if (hour != time->hour ||
|
if (hour != old_date->hour ||
|
||||||
minute != time->minute)
|
minute != old_date->minute)
|
||||||
{
|
{
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@@ -690,6 +696,139 @@ gcal_edit_dialog_date_changed (GcalEditDialog *dialog,
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gcal_edit_dialog_date_entry_modified (GtkWidget *entry,
|
||||||
|
gpointer user_data)
|
||||||
|
{
|
||||||
|
GcalEditDialogPrivate *priv;
|
||||||
|
icaltimetype start_date;
|
||||||
|
icaltimetype end_date;
|
||||||
|
|
||||||
|
priv = GCAL_EDIT_DIALOG (user_data)->priv;
|
||||||
|
|
||||||
|
if (priv->setting_event)
|
||||||
|
return;
|
||||||
|
|
||||||
|
gcal_date_entry_get_date (GCAL_DATE_ENTRY (priv->start_date_entry),
|
||||||
|
&(start_date.day),
|
||||||
|
&(start_date.month),
|
||||||
|
&(start_date.year));
|
||||||
|
gcal_date_entry_get_date (GCAL_DATE_ENTRY (priv->end_date_entry),
|
||||||
|
&(end_date.day),
|
||||||
|
&(end_date.month),
|
||||||
|
&(end_date.year));
|
||||||
|
|
||||||
|
start_date.is_date = 0;
|
||||||
|
end_date.is_date = 0;
|
||||||
|
|
||||||
|
gcal_time_entry_get_time (GCAL_TIME_ENTRY (priv->start_time_entry),
|
||||||
|
&(start_date.hour),
|
||||||
|
&(start_date.minute));
|
||||||
|
start_date.second = 0;
|
||||||
|
gcal_time_entry_get_time (GCAL_TIME_ENTRY (priv->end_time_entry),
|
||||||
|
&(end_date.hour),
|
||||||
|
&(end_date.minute));
|
||||||
|
end_date.second = 0;
|
||||||
|
|
||||||
|
if (start_date.hour == 0 &&
|
||||||
|
start_date.minute == 0 &&
|
||||||
|
end_date.hour == 0 &&
|
||||||
|
end_date.minute == 0)
|
||||||
|
{
|
||||||
|
start_date.is_date = 1;
|
||||||
|
end_date.is_date = 1;
|
||||||
|
|
||||||
|
/* block signaling */
|
||||||
|
g_signal_handlers_block_by_func (priv->all_day_check,
|
||||||
|
gcal_edit_dialog_all_day_changed,
|
||||||
|
user_data);
|
||||||
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->all_day_check), TRUE);
|
||||||
|
g_signal_handlers_unblock_by_func (priv->all_day_check,
|
||||||
|
gcal_edit_dialog_all_day_changed,
|
||||||
|
user_data);
|
||||||
|
/* unblock signaling */
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->all_day_check), FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
icaltime_set_timezone (&start_date,
|
||||||
|
gcal_manager_get_system_timezone (priv->manager));
|
||||||
|
icaltime_set_timezone (&end_date,
|
||||||
|
gcal_manager_get_system_timezone (priv->manager));
|
||||||
|
|
||||||
|
|
||||||
|
if (icaltime_compare (start_date, end_date) != -1)
|
||||||
|
{
|
||||||
|
g_signal_handlers_block_by_func (priv->start_date_entry,
|
||||||
|
gcal_edit_dialog_date_entry_modified,
|
||||||
|
user_data);
|
||||||
|
g_signal_handlers_block_by_func (priv->start_time_entry,
|
||||||
|
gcal_edit_dialog_date_entry_modified,
|
||||||
|
user_data);
|
||||||
|
g_signal_handlers_block_by_func (priv->end_date_entry,
|
||||||
|
gcal_edit_dialog_date_entry_modified,
|
||||||
|
user_data);
|
||||||
|
g_signal_handlers_block_by_func (priv->end_time_entry,
|
||||||
|
gcal_edit_dialog_date_entry_modified,
|
||||||
|
user_data);
|
||||||
|
|
||||||
|
if (entry == priv->start_date_entry ||
|
||||||
|
entry == priv->start_time_entry)
|
||||||
|
{
|
||||||
|
time_t to_end;
|
||||||
|
time_t from_start = icaltime_as_timet (start_date);
|
||||||
|
|
||||||
|
to_end = from_start + (priv->ev_store->time_span->end - priv->ev_store->time_span->start);
|
||||||
|
end_date = icaltime_from_timet (to_end, start_date.is_date);
|
||||||
|
|
||||||
|
gcal_date_entry_set_date (GCAL_DATE_ENTRY (priv->end_date_entry),
|
||||||
|
end_date.day,
|
||||||
|
end_date.month,
|
||||||
|
end_date.year);
|
||||||
|
if (start_date.is_date != 1)
|
||||||
|
{
|
||||||
|
gcal_time_entry_set_time (GCAL_TIME_ENTRY (priv->end_time_entry),
|
||||||
|
end_date.hour,
|
||||||
|
end_date.minute);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
time_t from_start;
|
||||||
|
time_t to_end = icaltime_as_timet (end_date);
|
||||||
|
|
||||||
|
from_start = to_end - (priv->ev_store->time_span->end - priv->ev_store->time_span->start);
|
||||||
|
start_date = icaltime_from_timet (from_start, end_date.is_date);
|
||||||
|
|
||||||
|
gcal_date_entry_set_date (GCAL_DATE_ENTRY (priv->start_date_entry),
|
||||||
|
start_date.day,
|
||||||
|
start_date.month,
|
||||||
|
start_date.year);
|
||||||
|
if (end_date.is_date != 1)
|
||||||
|
{
|
||||||
|
gcal_time_entry_set_time (GCAL_TIME_ENTRY (priv->start_time_entry),
|
||||||
|
start_date.hour,
|
||||||
|
start_date.minute);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
g_signal_handlers_unblock_by_func (priv->start_date_entry,
|
||||||
|
gcal_edit_dialog_date_entry_modified,
|
||||||
|
user_data);
|
||||||
|
g_signal_handlers_unblock_by_func (priv->start_time_entry,
|
||||||
|
gcal_edit_dialog_date_entry_modified,
|
||||||
|
user_data);
|
||||||
|
g_signal_handlers_unblock_by_func (priv->end_date_entry,
|
||||||
|
gcal_edit_dialog_date_entry_modified,
|
||||||
|
user_data);
|
||||||
|
g_signal_handlers_unblock_by_func (priv->end_time_entry,
|
||||||
|
gcal_edit_dialog_date_entry_modified,
|
||||||
|
user_data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Public API */
|
/* Public API */
|
||||||
GtkWidget*
|
GtkWidget*
|
||||||
gcal_edit_dialog_new (void)
|
gcal_edit_dialog_new (void)
|
||||||
@@ -714,11 +853,11 @@ gcal_edit_dialog_set_event (GcalEditDialog *dialog,
|
|||||||
const gchar *const_text;
|
const gchar *const_text;
|
||||||
gboolean all_day;
|
gboolean all_day;
|
||||||
|
|
||||||
icaltimetype *date;
|
|
||||||
|
|
||||||
priv = dialog->priv;
|
priv = dialog->priv;
|
||||||
all_day = FALSE;
|
all_day = FALSE;
|
||||||
|
|
||||||
|
priv->setting_event = TRUE;
|
||||||
|
|
||||||
if (priv->source_uid != NULL)
|
if (priv->source_uid != NULL)
|
||||||
g_free (priv->source_uid);
|
g_free (priv->source_uid);
|
||||||
priv->source_uid = g_strdup (source_uid);
|
priv->source_uid = g_strdup (source_uid);
|
||||||
@@ -733,11 +872,12 @@ gcal_edit_dialog_set_event (GcalEditDialog *dialog,
|
|||||||
if (priv->ev_store == NULL)
|
if (priv->ev_store == NULL)
|
||||||
{
|
{
|
||||||
priv->ev_store = g_new0 (SimpleEventStore, 1);
|
priv->ev_store = g_new0 (SimpleEventStore, 1);
|
||||||
|
priv->ev_store->time_span = g_new0 (icaltime_span, 1);
|
||||||
priv->ev_store->start_date = g_new0 (SimpleDate, 1);
|
}
|
||||||
priv->ev_store->end_date = g_new0 (SimpleDate, 1);
|
else
|
||||||
priv->ev_store->start_time = g_new0 (SimpleTime, 1);
|
{
|
||||||
priv->ev_store->end_time = g_new0 (SimpleTime, 1);
|
g_free (priv->ev_store->start_date);
|
||||||
|
g_free (priv->ev_store->end_date);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Load new event data */
|
/* Load new event data */
|
||||||
@@ -754,16 +894,15 @@ gcal_edit_dialog_set_event (GcalEditDialog *dialog,
|
|||||||
gcal_edit_dialog_set_calendar_selected (dialog);
|
gcal_edit_dialog_set_calendar_selected (dialog);
|
||||||
|
|
||||||
/* start date */
|
/* start date */
|
||||||
date = gcal_manager_get_event_start_date (priv->manager,
|
priv->ev_store->start_date =
|
||||||
priv->source_uid,
|
gcal_manager_get_event_start_date (priv->manager,
|
||||||
priv->event_uid);
|
priv->source_uid,
|
||||||
|
priv->event_uid);
|
||||||
|
|
||||||
gcal_date_entry_set_date (GCAL_DATE_ENTRY (priv->start_date_entry),
|
gcal_date_entry_set_date (GCAL_DATE_ENTRY (priv->start_date_entry),
|
||||||
date->day,
|
priv->ev_store->start_date->day,
|
||||||
date->month,
|
priv->ev_store->start_date->month,
|
||||||
date->year);
|
priv->ev_store->start_date->year);
|
||||||
priv->ev_store->start_date->day = date->day;
|
|
||||||
priv->ev_store->start_date->month = date->month;
|
|
||||||
priv->ev_store->start_date->year = date->year;
|
|
||||||
|
|
||||||
/* all_day */
|
/* all_day */
|
||||||
priv->ev_store->all_day = gcal_manager_get_event_all_day (priv->manager,
|
priv->ev_store->all_day = gcal_manager_get_event_all_day (priv->manager,
|
||||||
@@ -775,46 +914,36 @@ gcal_edit_dialog_set_event (GcalEditDialog *dialog,
|
|||||||
/* start time */
|
/* start time */
|
||||||
if (all_day)
|
if (all_day)
|
||||||
{
|
{
|
||||||
priv->ev_store->start_time->hour = 0;
|
priv->ev_store->start_date->hour = 0;
|
||||||
priv->ev_store->start_time->minute = 0;
|
priv->ev_store->start_date->minute = 0;
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
priv->ev_store->start_time->hour = date->hour;
|
|
||||||
priv->ev_store->start_time->minute = date->minute;
|
|
||||||
}
|
}
|
||||||
gcal_time_entry_set_time (GCAL_TIME_ENTRY (priv->start_time_entry),
|
gcal_time_entry_set_time (GCAL_TIME_ENTRY (priv->start_time_entry),
|
||||||
priv->ev_store->start_time->hour,
|
priv->ev_store->start_date->hour,
|
||||||
priv->ev_store->start_time->minute);
|
priv->ev_store->start_date->minute);
|
||||||
g_free (date);
|
|
||||||
|
|
||||||
/* end date */
|
/* end date */
|
||||||
date = gcal_manager_get_event_end_date (priv->manager,
|
priv->ev_store->end_date = gcal_manager_get_event_end_date (priv->manager,
|
||||||
priv->source_uid,
|
priv->source_uid,
|
||||||
priv->event_uid);
|
priv->event_uid);
|
||||||
gcal_date_entry_set_date (GCAL_DATE_ENTRY (priv->end_date_entry),
|
gcal_date_entry_set_date (GCAL_DATE_ENTRY (priv->end_date_entry),
|
||||||
date->day,
|
priv->ev_store->end_date->day,
|
||||||
date->month,
|
priv->ev_store->end_date->month,
|
||||||
date->year);
|
priv->ev_store->end_date->year);
|
||||||
priv->ev_store->end_date->day = date->day;
|
|
||||||
priv->ev_store->end_date->month = date->month;
|
|
||||||
priv->ev_store->end_date->year = date->year;
|
|
||||||
|
|
||||||
/* end time */
|
/* end time */
|
||||||
if (all_day)
|
if (all_day)
|
||||||
{
|
{
|
||||||
priv->ev_store->end_time->hour = 0;
|
priv->ev_store->end_date->hour = 0;
|
||||||
priv->ev_store->end_time->minute = 0;
|
priv->ev_store->end_date->minute = 0;
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
priv->ev_store->end_time->hour = date->hour;
|
|
||||||
priv->ev_store->end_time->minute = date->minute;
|
|
||||||
}
|
}
|
||||||
gcal_time_entry_set_time (GCAL_TIME_ENTRY (priv->end_time_entry),
|
gcal_time_entry_set_time (GCAL_TIME_ENTRY (priv->end_time_entry),
|
||||||
priv->ev_store->end_time->hour,
|
priv->ev_store->end_date->hour,
|
||||||
priv->ev_store->end_time->minute);
|
priv->ev_store->end_date->minute);
|
||||||
g_free (date);
|
|
||||||
|
/* getting span before going on */
|
||||||
|
*(priv->ev_store->time_span) = icaltime_span_new (*(priv->ev_store->start_date),
|
||||||
|
*(priv->ev_store->end_date),
|
||||||
|
0);
|
||||||
|
|
||||||
/* location */
|
/* location */
|
||||||
const_text = gcal_manager_get_event_location (priv->manager,
|
const_text = gcal_manager_get_event_location (priv->manager,
|
||||||
@@ -841,6 +970,8 @@ gcal_edit_dialog_set_event (GcalEditDialog *dialog,
|
|||||||
dialog,
|
dialog,
|
||||||
! gcal_manager_get_source_readonly (priv->manager,
|
! gcal_manager_get_source_readonly (priv->manager,
|
||||||
priv->source_uid));
|
priv->source_uid));
|
||||||
|
|
||||||
|
priv->setting_event = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -1059,14 +1190,17 @@ gcal_edit_dialog_get_start_date (GcalEditDialog *dialog)
|
|||||||
GcalEditDialogPrivate *priv;
|
GcalEditDialogPrivate *priv;
|
||||||
icaltimetype *date;
|
icaltimetype *date;
|
||||||
|
|
||||||
guint value1;
|
gint value1;
|
||||||
guint value2;
|
gint value2;
|
||||||
guint value3;
|
gint value3;
|
||||||
|
|
||||||
priv = dialog->priv;
|
priv = dialog->priv;
|
||||||
|
|
||||||
date = g_new0 (icaltimetype, 1);
|
date = g_new0 (icaltimetype, 1);
|
||||||
|
|
||||||
|
icaltime_set_timezone (date,
|
||||||
|
gcal_manager_get_system_timezone (priv->manager));
|
||||||
|
|
||||||
gcal_date_entry_get_date (GCAL_DATE_ENTRY (priv->start_date_entry),
|
gcal_date_entry_get_date (GCAL_DATE_ENTRY (priv->start_date_entry),
|
||||||
&value1,
|
&value1,
|
||||||
&value2,
|
&value2,
|
||||||
@@ -1090,3 +1224,44 @@ gcal_edit_dialog_get_start_date (GcalEditDialog *dialog)
|
|||||||
|
|
||||||
return date;
|
return date;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
icaltimetype*
|
||||||
|
gcal_edit_dialog_get_end_date (GcalEditDialog *dialog)
|
||||||
|
{
|
||||||
|
GcalEditDialogPrivate *priv;
|
||||||
|
icaltimetype *date;
|
||||||
|
|
||||||
|
gint value1;
|
||||||
|
gint value2;
|
||||||
|
gint value3;
|
||||||
|
|
||||||
|
priv = dialog->priv;
|
||||||
|
|
||||||
|
date = g_new0 (icaltimetype, 1);
|
||||||
|
|
||||||
|
icaltime_set_timezone (date,
|
||||||
|
gcal_manager_get_system_timezone (priv->manager));
|
||||||
|
|
||||||
|
gcal_date_entry_get_date (GCAL_DATE_ENTRY (priv->end_date_entry),
|
||||||
|
&value1,
|
||||||
|
&value2,
|
||||||
|
&value3);
|
||||||
|
date->day = value1;
|
||||||
|
date->month = value2;
|
||||||
|
date->year = value3;
|
||||||
|
|
||||||
|
value1 = value2 = 0;
|
||||||
|
gcal_time_entry_get_time (GCAL_TIME_ENTRY (priv->end_time_entry),
|
||||||
|
&value1,
|
||||||
|
&value2);
|
||||||
|
date->hour = value1;
|
||||||
|
date->minute = value2;
|
||||||
|
|
||||||
|
if (date->hour == 0 &&
|
||||||
|
date->minute == 0)
|
||||||
|
{
|
||||||
|
date->is_date = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return date;
|
||||||
|
}
|
||||||
|
|||||||
@@ -80,6 +80,8 @@ gchar* gcal_edit_dialog_get_event_description (GcalEditDialog *d
|
|||||||
|
|
||||||
icaltimetype* gcal_edit_dialog_get_start_date (GcalEditDialog *dialog);
|
icaltimetype* gcal_edit_dialog_get_start_date (GcalEditDialog *dialog);
|
||||||
|
|
||||||
|
icaltimetype* gcal_edit_dialog_get_end_date (GcalEditDialog *dialog);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* __GCAL_EDIT_DIALOG_H__ */
|
#endif /* __GCAL_EDIT_DIALOG_H__ */
|
||||||
|
|||||||
Reference in New Issue
Block a user