+static gint
+cmp_rows (GtkTreeModel *tree_model, GtkTreeIter *iter1, GtkTreeIter *iter2,
+ gpointer user_data)
+{
+ gint col_id = GPOINTER_TO_INT (user_data);
+ gint val1, val2;
+
+ g_return_val_if_fail (GTK_IS_TREE_MODEL(tree_model), -1);
+
+ switch (col_id) {
+
+ case SORT_COLUMN_RECEIVED:
+ gtk_tree_model_get (tree_model, iter1, TNY_MSG_HEADER_LIST_MODEL_DATE_RECEIVED_COLUMN,
+ &val1,-1);
+ gtk_tree_model_get (tree_model, iter2, TNY_MSG_HEADER_LIST_MODEL_DATE_RECEIVED_COLUMN,
+ &val2,-1);
+
+ g_message ("%d %d %d %d", col_id, val1, val2, val1 - val2);
+
+ return val1 - val2;
+
+ case SORT_COLUMN_SENT:
+ gtk_tree_model_get (tree_model, iter1, TNY_MSG_HEADER_LIST_MODEL_DATE_SENT_COLUMN,
+ &val1,-1);
+ gtk_tree_model_get (tree_model, iter2, TNY_MSG_HEADER_LIST_MODEL_DATE_SENT_COLUMN,
+ &val2,-1);
+ return val1 - val2;
+
+ case SORT_COLUMN_ATTACH:
+ gtk_tree_model_get (tree_model, iter1, TNY_MSG_HEADER_LIST_MODEL_FLAGS_COLUMN,
+ &val1,-1);
+ gtk_tree_model_get (tree_model, iter2, TNY_MSG_HEADER_LIST_MODEL_FLAGS_COLUMN,
+ &val2,-1);
+
+ return (val1 & TNY_MSG_HEADER_FLAG_ATTACHMENTS) - (val2 & TNY_MSG_HEADER_FLAG_ATTACHMENTS);
+
+
+ case SORT_COLUMN_MSGTYPE:
+ gtk_tree_model_get (tree_model, iter1, TNY_MSG_HEADER_LIST_MODEL_FLAGS_COLUMN,
+ &val1,-1);
+ gtk_tree_model_get (tree_model, iter2, TNY_MSG_HEADER_LIST_MODEL_FLAGS_COLUMN,
+ &val2,-1);
+
+ return (val1 & TNY_MSG_HEADER_FLAG_SEEN) - (val2 & TNY_MSG_HEADER_FLAG_SEEN);
+
+ default:
+ g_message ("%p %p", iter1, iter2);
+ return &iter1 - &iter2;
+ }
+}
+
+
+