[gnome-calendar/wip/gbsneto/alarms: 12/12] edit-dialog: sort alarms by relative date



commit db2983be6157ff997e7a14b2ab3ca3e54971748b
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Wed Jul 6 02:49:12 2016 -0300

    edit-dialog: sort alarms by relative date

 src/gcal-edit-dialog.c |   25 +++++++++++++++++++++++++
 1 files changed, 25 insertions(+), 0 deletions(-)
---
diff --git a/src/gcal-edit-dialog.c b/src/gcal-edit-dialog.c
index 0410b19..91cece0 100644
--- a/src/gcal-edit-dialog.c
+++ b/src/gcal-edit-dialog.c
@@ -251,6 +251,26 @@ update_summary (GtkEntry   *entry,
   gtk_widget_set_sensitive (dialog->done_button, gtk_entry_get_text_length (entry) > 0);
 }
 
+static gint
+sort_alarms_func (GtkListBoxRow *a,
+                  GtkListBoxRow *b,
+                  gpointer       user_data)
+{
+  ECalComponentAlarm *alarm_a, *alarm_b;
+  GcalEvent *event_a, *event_b;
+  gint minutes_a, minutes_b;
+
+  alarm_a = g_object_get_data (G_OBJECT (a), "alarm");
+  alarm_b = g_object_get_data (G_OBJECT (b), "alarm");
+  event_a = g_object_get_data (G_OBJECT (a), "event");
+  event_b = g_object_get_data (G_OBJECT (b), "event");
+
+  minutes_a = get_alarm_trigger_minutes (event_a, alarm_a);
+  minutes_b = get_alarm_trigger_minutes (event_b, alarm_b);
+
+  return minutes_a - minutes_b;
+}
+
 static void
 gcal_edit_dialog_get_property (GObject    *object,
                                guint       prop_id,
@@ -403,6 +423,11 @@ gcal_edit_dialog_init (GcalEditDialog *self)
   self->writable = TRUE;
 
   gtk_widget_init_template (GTK_WIDGET (self));
+
+  gtk_list_box_set_sort_func (GTK_LIST_BOX (self->alarms_listbox),
+                              sort_alarms_func,
+                              self,
+                              NULL);
 }
 
 static void


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]