+ private int datetime_sort_func (TreeModel model, TreeIter a, TreeIter b) {
+ Lift la;
+ Lift lb;
+ model.get (a, Columns.LIFT, out la);
+ model.get (b, Columns.LIFT, out lb);
+ int year = la.time.year - lb.time.year;
+ if (year != 0)
+ return year;
+ int month = la.time.month - lb.time.month;
+ if (month != 0)
+ return month;
+ int day = la.time.day - lb.time.day;
+ if (day != 0)
+ return day;
+ int hour = la.time.hour - lb.time.hour;
+ // Negative hour means no exact time available
+ // - sort those entries last
+ if (la.time.hour < 0) {
+ hour += 24;
+ return hour;
+ }
+ if (lb.time.hour < 0) {
+ hour -= 24;
+ return hour;
+ }
+ if (hour != 0)
+ return hour;
+ int minute = la.time.minute - lb.time.minute;
+ return minute;
+ }
+
+ private int price_sort_func (TreeModel model, TreeIter a, TreeIter b) {
+ string pa;
+ string pb;
+ model.get (a, Columns.PRICE, out pa);
+ model.get (b, Columns.PRICE, out pb);
+ if (pa == null && pb != null)
+ return 1;
+ if (pa != null && pb == null)
+ return -1;
+ return strcmp (pa, pb);
+ }
+