Make priority sorting work
[milk] / src / milk-main-window.c
index abf9ec7..9754c45 100644 (file)
@@ -369,11 +369,47 @@ create_menu (gpointer user_data)
 }
 
 static void
-contact_column_render_func (GtkCellLayout   *cell_layout,
-                            GtkCellRenderer *renderer,
-                            GtkTreeModel    *model,
-                            GtkTreeIter     *iter,
-                            gpointer         user_data)
+priority_column_render_func (GtkCellLayout   *cell_layout,
+                             GtkCellRenderer *renderer,
+                             GtkTreeModel    *model,
+                             GtkTreeIter     *iter,
+                             gpointer         user_data)
+{
+        RtmTask *task;
+        const char *priority;
+        GdkColor color = {};
+        gboolean color_set = TRUE;
+
+        gtk_tree_model_get (
+                        model, iter, MILK_TASK_MODEL_COLUMN_TASK, &task, -1);
+
+        priority = rtm_task_get_priority (task);
+
+        if (FALSE) {
+        } else if (!g_strcmp0 (priority, "1")) {
+                gdk_color_parse ("#ea5200", &color);
+        } else if (!g_strcmp0 (priority, "2")) {
+                gdk_color_parse ("#0060bf", &color);
+        } else if (!g_strcmp0 (priority, "3")) {
+                gdk_color_parse ("#359aff", &color);
+        } else {
+                color_set = FALSE;
+        }
+
+        g_object_set (renderer,
+                        "cell-background-gdk", color_set ? &color : NULL,
+                        "cell-background-set", color_set,
+                        NULL);
+
+        g_object_unref (task);
+}
+
+static void
+name_column_render_func (GtkCellLayout   *cell_layout,
+                         GtkCellRenderer *renderer,
+                         GtkTreeModel    *model,
+                         GtkTreeIter     *iter,
+                         gpointer         user_data)
 {
         RtmTask *task;
 
@@ -432,18 +468,32 @@ milk_main_window_constructed (GObject* object)
         model = GTK_TREE_MODEL (milk_task_model_new ());
         w = hildon_touch_selector_new ();
 
+        col = hildon_touch_selector_append_column (
+                        HILDON_TOUCH_SELECTOR (w), model, NULL, NULL);
+
         renderer = gtk_cell_renderer_text_new ();
         g_object_set (renderer,
-                        "ellipsize", PANGO_ELLIPSIZE_END,
+                        "width", HILDON_ICON_PIXEL_SIZE_XSMALL,
+                        "width-chars", 1,
                         NULL);
+        gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (col), renderer, FALSE);
+        gtk_cell_layout_set_cell_data_func (
+                        GTK_CELL_LAYOUT (col), renderer,
+                        (GtkCellLayoutDataFunc) priority_column_render_func,
+                        self, NULL);
 
-        col = hildon_touch_selector_append_column (
-                        HILDON_TOUCH_SELECTOR (w), model, NULL, NULL);
+        renderer = gtk_cell_renderer_text_new ();
+        g_object_set (renderer,
+                        "ellipsize", PANGO_ELLIPSIZE_END,
+                        "alignment", PANGO_ALIGN_LEFT,
+                        "xpad", HILDON_MARGIN_DEFAULT,
+                        NULL);
         gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (col), renderer, TRUE);
         gtk_cell_layout_set_cell_data_func (
                         GTK_CELL_LAYOUT (col), renderer,
-                        (GtkCellLayoutDataFunc) contact_column_render_func,
+                        (GtkCellLayoutDataFunc) name_column_render_func,
                         self, NULL);
+
         g_object_unref (model);
 
         hildon_touch_selector_set_column_selection_mode (