[gnome-todo] panel-scheduled: Change task list order
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-todo] panel-scheduled: Change task list order
- Date: Fri, 12 Feb 2016 01:00:18 +0000 (UTC)
commit feb4a35d49e2fa54613b1ffe03faacb4fdb6bed9
Author: Isaque Galdino <igaldino gmail com>
Date: Thu Feb 11 20:34:14 2016 -0200
panel-scheduled: Change task list order
All panels use the same task list order as task list view.
For scheduled panel it was requested to change the order of the items
and sort them only by due date, in descending order. In order to keep
things a little bit more organized, it was also sorted by title.
A new API was created in task list view to support it and this patch
uses that API to implement the new sort function.
https://bugzilla.gnome.org/show_bug.cgi?id=760846
plugins/eds/gtd-panel-scheduled.c | 40 +++++++++++++++++++++++++++++++++++++
1 files changed, 40 insertions(+), 0 deletions(-)
---
diff --git a/plugins/eds/gtd-panel-scheduled.c b/plugins/eds/gtd-panel-scheduled.c
index 1f2957b..3e1ad8e 100644
--- a/plugins/eds/gtd-panel-scheduled.c
+++ b/plugins/eds/gtd-panel-scheduled.c
@@ -185,6 +185,42 @@ gtd_panel_scheduled_header_func (GtkListBoxRow *row,
g_clear_pointer (&dt, g_date_time_unref);
}
+static gint
+gtd_panel_scheduled_sort_func (GtkListBoxRow *row1,
+ GtdTask *row1_task,
+ GtkListBoxRow *row2,
+ GtdTask *row2_task,
+ GtdPanelScheduled *panel)
+{
+ GDateTime *dt1;
+ GDateTime *dt2;
+ gint retval;
+
+ dt1 = dt2 = NULL;
+
+ if (row1_task)
+ dt1 = gtd_task_get_due_date (row1_task);
+ if (row2_task)
+ dt2 = gtd_task_get_due_date (row2_task);
+
+ if (!dt1 && !dt2)
+ retval = 0;
+ else if (!dt1)
+ retval = 1;
+ else if (!dt2)
+ retval = -1;
+ else
+ retval = g_date_time_compare (dt1, dt2);
+
+ g_clear_pointer (&dt1, g_date_time_unref);
+ g_clear_pointer (&dt2, g_date_time_unref);
+
+ if (retval != 0)
+ return retval;
+
+ return g_strcmp0 (gtd_task_get_title (row1_task), gtd_task_get_title (row2_task));
+}
+
static void
gtd_panel_scheduled_clear (GtdPanelScheduled *panel)
{
@@ -413,6 +449,10 @@ gtd_panel_scheduled_init (GtdPanelScheduled *self)
(GtdTaskListViewHeaderFunc) gtd_panel_scheduled_header_func,
self);
+ gtd_task_list_view_set_sort_func (GTD_TASK_LIST_VIEW (self->view),
+ (GtdTaskListViewSortFunc) gtd_panel_scheduled_sort_func,
+ self);
+
gtk_widget_show_all (GTK_WIDGET (self));
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]