aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui/layout.h
diff options
context:
space:
mode:
Diffstat (limited to 'calendar/gui/layout.h')
-rw-r--r--calendar/gui/layout.h20
1 files changed, 16 insertions, 4 deletions
diff --git a/calendar/gui/layout.h b/calendar/gui/layout.h
index b87cf7e36b..734b720b8b 100644
--- a/calendar/gui/layout.h
+++ b/calendar/gui/layout.h
@@ -9,17 +9,29 @@
#ifndef LAYOUT_H
#define LAYOUT_H
-#include "calendar.h"
+#include <glib.h>
+#include <time.h>
-/* This is the main layout function for overlapping events. You pass in a list of CalendarObject
- * structures and it will calculate a nice non-overlapping layout for them.
+/* Functions of this type must translate the list item into two time_t values for the start and end
+ * of an event.
+ */
+typedef void (* LayoutQueryTimeFunc) (GList *event, time_t *start, time_t *end);
+
+
+/* This is the main layout function for overlapping events. You pass in a list of (presumably)
+ * events and a function that should take a list element and return the start and end times for the
+ * event corresponding to that list element.
*
* It returns the number of slots ("columns") that you need to take into account when actually
* painting the events, the array of the first slot index that each event occupies, and the array of
* number of slots that each event occupies. You have to free both arrays.
+ *
+ * You will get somewhat better-looking results if the list of events is sorted by using the start
+ * time as the primary sort key and the end time as the secondary sort key -- so that "longer"
+ * events go first in the list.
*/
-void layout_events (GList *events, int *num_slots, int **allocations, int **slots);
+void layout_events (GList *events, LayoutQueryTimeFunc func, int *num_slots, int **allocations, int **slots);
#endif