evolution r37100 - in trunk/calendar: . gui
- From: mcrha svn gnome org
- To: svn-commits-list gnome org
- Subject: evolution r37100 - in trunk/calendar: . gui
- Date: Mon, 19 Jan 2009 16:41:41 +0000 (UTC)
Author: mcrha
Date: Mon Jan 19 16:41:40 2009
New Revision: 37100
URL: http://svn.gnome.org/viewvc/evolution?rev=37100&view=rev
Log:
2009-01-19 Milan Crha <mcrha redhat com>
** Fix for bug #567850
* gui/e-cal-model.h: (e_cal_model_set_default_time_func):
* gui/e-cal-model.c: (struct _ECalModelPrivate), (ecm_append_row),
(e_cal_model_set_default_time_func):
New functionality to retrieve a default time for a model's new
event created from a "click-to-add" row.
* gui/gnome-cal.c: (gc_get_default_time), (setup_widgets):
Set the new time callback for the memo table.
Modified:
trunk/calendar/ChangeLog
trunk/calendar/gui/e-cal-model.c
trunk/calendar/gui/e-cal-model.h
trunk/calendar/gui/gnome-cal.c
Modified: trunk/calendar/gui/e-cal-model.c
==============================================================================
--- trunk/calendar/gui/e-cal-model.c (original)
+++ trunk/calendar/gui/e-cal-model.c Mon Jan 19 16:41:40 2009
@@ -77,6 +77,10 @@
/* Whether we display dates in 24-hour format. */
gboolean use_24_hour_format;
+
+ /* callback, to retrieve start time for newly added rows by click-to-add */
+ ECalModelDefaultTimeFunc get_default_time;
+ gpointer get_default_time_user_data;
};
#define E_CAL_MODEL_COMPONENT_GET_PRIVATE(obj) \
@@ -816,9 +820,26 @@
set_categories (&comp_data, e_table_model_value_at (source, E_CAL_MODEL_FIELD_CATEGORIES, row));
set_classification (&comp_data, e_table_model_value_at (source, E_CAL_MODEL_FIELD_CLASSIFICATION, row));
set_description (&comp_data, e_table_model_value_at (source, E_CAL_MODEL_FIELD_DESCRIPTION, row));
- set_dtstart (model, &comp_data, e_table_model_value_at (source, E_CAL_MODEL_FIELD_DTSTART, row));
set_summary (&comp_data, e_table_model_value_at (source, E_CAL_MODEL_FIELD_SUMMARY, row));
+ if (e_table_model_value_at (source, E_CAL_MODEL_FIELD_DTSTART, row)) {
+ set_dtstart (model, &comp_data, e_table_model_value_at (source, E_CAL_MODEL_FIELD_DTSTART, row));
+ } else if (model->priv->get_default_time) {
+ time_t tt = model->priv->get_default_time (model, model->priv->get_default_time_user_data);
+
+ if (tt > 0) {
+ struct icaltimetype itt = icaltime_from_timet_with_zone (tt, FALSE, e_cal_model_get_timezone (model));
+ icalproperty *prop = icalcomponent_get_first_property (comp_data.icalcomp, ICAL_DTSTART_PROPERTY);
+
+ if (prop) {
+ icalproperty_set_dtstart (prop, itt);
+ } else {
+ prop = icalproperty_new_dtstart (itt);
+ icalcomponent_add_property (comp_data.icalcomp, prop);
+ }
+ }
+ }
+
/* call the class' method for filling the component */
model_class = (ECalModelClass *) G_OBJECT_GET_CLASS (model);
if (model_class->fill_component_from_model != NULL) {
@@ -2460,3 +2481,17 @@
}
comp_data->instance_end = icaltime_as_timet_with_zone (end_time, zone);
}
+
+/**
+ * e_cal_model_set_default_time_func:
+ * This function will be used when creating new item from the "click-to-add",
+ * when user didn't fill a start date there.
+ **/
+void
+e_cal_model_set_default_time_func (ECalModel *model, ECalModelDefaultTimeFunc func, gpointer user_data)
+{
+ g_return_if_fail (E_IS_CAL_MODEL (model));
+
+ model->priv->get_default_time = func;
+ model->priv->get_default_time_user_data = user_data;
+}
Modified: trunk/calendar/gui/e-cal-model.h
==============================================================================
--- trunk/calendar/gui/e-cal-model.h (original)
+++ trunk/calendar/gui/e-cal-model.h Mon Jan 19 16:41:40 2009
@@ -121,6 +121,8 @@
void (* cal_view_done) (ECalModel *model, ECalendarStatus status, ECalSourceType type);
} ECalModelClass;
+typedef time_t (*ECalModelDefaultTimeFunc)(ECalModel *model, gpointer user_data);
+
GType e_cal_model_get_type (void);
GType e_cal_model_component_get_type (void);
icalcomponent_kind e_cal_model_get_component_kind (ECalModel *model);
@@ -184,6 +186,8 @@
gboolean e_cal_model_test_row_editable (ECalModel *model, int row);
+void e_cal_model_set_default_time_func (ECalModel *model, ECalModelDefaultTimeFunc func, gpointer user_data);
+
G_END_DECLS
#endif
Modified: trunk/calendar/gui/gnome-cal.c
==============================================================================
--- trunk/calendar/gui/gnome-cal.c (original)
+++ trunk/calendar/gui/gnome-cal.c Mon Jan 19 16:41:40 2009
@@ -1595,6 +1595,20 @@
return GTK_WIDGET (gcal->priv->date_navigator);
}
+static time_t
+gc_get_default_time (ECalModel *model, gpointer user_data)
+{
+ GnomeCalendar *gcal = user_data;
+ time_t res = 0, end;
+
+ g_return_val_if_fail (model != NULL, 0);
+ g_return_val_if_fail (GNOME_IS_CALENDAR (user_data), 0);
+
+ gnome_calendar_get_current_time_range (gcal, &res, &end);
+
+ return res;
+}
+
static void
setup_widgets (GnomeCalendar *gcal)
{
@@ -1821,6 +1835,8 @@
"MemoPad", NULL);
e_memo_table_load_state (E_MEMO_TABLE (priv->memo), filename);
+ e_cal_model_set_default_time_func (e_memo_table_get_model (E_MEMO_TABLE (priv->memo)), gc_get_default_time, gcal);
+
update_memo_view (gcal);
g_free (filename);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]