diff options
author | Damon Chaplin <damon@ximian.com> | 2001-09-27 12:02:17 +0800 |
---|---|---|
committer | Damon Chaplin <damon@src.gnome.org> | 2001-09-27 12:02:17 +0800 |
commit | b235a79effc13b17b0bffc78189b831493bd37d6 (patch) | |
tree | 1717b8309b347b794dd05f7bfd657c57d1707f82 /calendar/gui/e-calendar-table.c | |
parent | f0c38138fa31e7e03c289f75c85d4c214ff9dcca (diff) | |
download | gsoc2013-evolution-b235a79effc13b17b0bffc78189b831493bd37d6.tar.gz gsoc2013-evolution-b235a79effc13b17b0bffc78189b831493bd37d6.tar.zst gsoc2013-evolution-b235a79effc13b17b0bffc78189b831493bd37d6.zip |
added comparison functions for these special cell types. But the date and
2001-09-26 Damon Chaplin <damon@ximian.com>
* gui/e-calendar-table.c (date_compare_cb):
(percent_compare_cb):
(priority_compare_cb): added comparison functions for these special
cell types. But the date and percent ones don't work yet due to the
use of static text buffers for return cell values.
(e_calendar_table_init): added the comparison functions to the
ETableExtras. NOTE: task_compare_cb() never seems to be called.
I'm not sure why it is there.
* gui/e-calendar-table.etspec: set the comparison function names for
the date/percent/priority fields.
* cal-util/cal-util.c (cal_util_priority_to_string):
(cal_util_priority_from_string): new utility functions.
* gui/calendar-model.c (get_priority):
(set_priority): used above utility functions, and removed the warning
dialog which isn't useful now that the field isn't editable.
* gui/dialogs/event-page.c (times_updated): handle timezones and for
all-day events make sure it stays an all-day event after adjusting.
Fixes bugs #5945 and #10222.
* gui/calendar-commands.c (pixmaps): fixed the E_PIXMAP paths - the
edit items were moved beneath 'EditPlaceholder'. This gets rid of
those long Bonobo warnings! (and we get the icons back)
* gui/dialogs/comp-editor.c (pixmaps): removed the PrintPreview toolbar
icon, since it doesn't appear in the xml file. Gets rid of warning.
* gui/dialogs/event-page.c (notify_dates_changed): new function to
emit the notification signal when the dates are changed. It also
handles timezones now.
* gui/dialogs/comp-editor-page.h (CompEditorPageDates): used
CalComponentDateTime for start/end/due so we have the timezone as well
as the time.
* gui/dialogs/comp-editor-util.c (comp_editor_dates): updated to get
the timezones as well as the times.
(comp_editor_free_dates): new function needed to free all the structs.
* gui/dialogs/recurrence-page.c (recurrence_page_set_dates): added call
to preview_recur() to make sure the preview gets updated.
* gui/dialogs/alarm-page.c (alarm_page_fill_widgets): free the
CompEditorPageDates struct after use.
* gui/tag-calendar.c (tag_calendar_by_comp): added 'comp_is_on_server'
argument. If FALSE, we try to use builtin timezones first. This is
needed for the recurrence page of the event editor, because the
timezones may not have been added to the server yet. This and the
changes to the notification stuff should fix bug #5034.
* gui/gnome-cal.c (dn_query_obj_updated_cb): call above
tag_calendar_by_comp() with TRUE since the events will be on the
server in this case.
* gui/e-day-view-layout.c:
* gui/e-day-view.c: made sure an event always takes up at least one
row, even when the start & end times are the same. Fixes bug #5944.
I don't know if we should try to also handle events with the end time
before the start time.
* gui/e-week-view.c (e_week_view_style_set): check that the small font
is actually smaller than the normal font. If it isn't, don't use it.
Hopefully fixes bug #6876.
(e_week_view_on_new_appointment): if only one day is selected, then
we set the initial time of the event to 1/2-hour from the start of the
working day, to differentiate 'New Appointment' from 'New All Day
Event'. Fixes bug #8892.
* gui/e-day-view.c (e_day_view_on_new_appointment): do the same as the
above.
svn path=/trunk/; revision=13186
Diffstat (limited to 'calendar/gui/e-calendar-table.c')
-rw-r--r-- | calendar/gui/e-calendar-table.c | 66 |
1 files changed, 65 insertions, 1 deletions
diff --git a/calendar/gui/e-calendar-table.c b/calendar/gui/e-calendar-table.c index 1b37c8662e..8d8856ed2a 100644 --- a/calendar/gui/e-calendar-table.c +++ b/calendar/gui/e-calendar-table.c @@ -186,6 +186,12 @@ compare_priorities (int *a, int *b) /* Comparison function for the task-sort column. Sorts by due date and then by * priority. + * + * FIXME: Does this ever get called?? It doesn't seem to. + * I specified that the table should be sorted by this column, but it still + * never calls this function. + * Also, this assumes it is passed pointers to CalComponents, but I think it + * may just be passed pointers to the 2 cell values. */ static gint task_compare_cb (gconstpointer a, gconstpointer b) @@ -195,6 +201,8 @@ task_compare_cb (gconstpointer a, gconstpointer b) int *prio_a, *prio_b; int retval; + g_print ("In task_compare_cb\n"); + ca = CAL_COMPONENT (a); cb = CAL_COMPONENT (b); @@ -206,7 +214,8 @@ task_compare_cb (gconstpointer a, gconstpointer b) if (due_a.value && due_b.value) { int v; - /* FIXME: TIMEZONES. */ + /* FIXME: TIMEZONES. But currently we have no way to get the + CalClient, so we can't get the timezone. */ v = icaltime_compare (*due_a.value, *due_b.value); if (v == 0) @@ -232,6 +241,54 @@ task_compare_cb (gconstpointer a, gconstpointer b) return retval; } +static gint +date_compare_cb (gconstpointer a, gconstpointer b) +{ + const char *value1 = a, *value2 = b; + + g_print ("In date_compare_cb '%s' '%s'\n", value1, value2); + + return 0; +} + +static gint +percent_compare_cb (gconstpointer a, gconstpointer b) +{ + const char *value1 = a, *value2 = b; + + /* FIXME: Currently this isn't working as the ETableSorter caches + all the values in the table before sorting, but our get_value() + function returns a pointer to a static buffer. So all the cached + pointers point to the same buffer. */ + + g_print ("In percent_compare_cb '%s' '%s'\n", value1, value2); + + return 0; +} + +static gint +priority_compare_cb (gconstpointer a, gconstpointer b) +{ + int priority1, priority2; + + priority1 = cal_util_priority_from_string ((const char*) a); + priority2 = cal_util_priority_from_string ((const char*) b); + + /* We change undefined priorities so they appear after 'Low'. */ + if (priority1 <= 0) + priority1 = 10; + if (priority2 <= 0) + priority2 = 10; + + /* We'll just use the ordering of the priority values. */ + if (priority1 < priority2) + return -1; + else if (priority1 > priority2) + return 1; + else + return 0; +} + static void e_calendar_table_init (ECalendarTable *cal_table) { @@ -413,6 +470,13 @@ e_calendar_table_init (ECalendarTable *cal_table) */ e_table_extras_add_compare (extras, "task-sort", task_compare_cb); + e_table_extras_add_compare (extras, "date-compare", + date_compare_cb); + e_table_extras_add_compare (extras, "percent-compare", + percent_compare_cb); + e_table_extras_add_compare (extras, "priority-compare", + priority_compare_cb); + /* Create pixmaps */ if (!icon_pixbufs[0]) |