history view: display date below the time

This makes the column more compact, the user doesnt need to expand
the treeview so far to the right to see the date now.

Change-Id: I3341d52c28e85edf0682bab64683bd9b1a3bda06
Tuleap: #175
diff --git a/src/historyview.cpp b/src/historyview.cpp
index 4e944c1..2c13bb2 100644
--- a/src/historyview.cpp
+++ b/src/historyview.cpp
@@ -308,55 +308,39 @@
 }
 
 static void
-render_time(G_GNUC_UNUSED GtkTreeViewColumn *tree_column,
-            GtkCellRenderer *cell,
-            GtkTreeModel *tree_model,
-            GtkTreeIter *iter,
-            G_GNUC_UNUSED gpointer data)
+render_date_time(G_GNUC_UNUSED GtkTreeViewColumn *tree_column,
+                 GtkCellRenderer *cell,
+                 GtkTreeModel *tree_model,
+                 GtkTreeIter *iter,
+                 GtkTreeView *treeview)
 {
-    /**
-     * If call, show the the time;
-     * if category, don't show anything.
-     */
-    GtkTreePath *path = gtk_tree_model_get_path(tree_model, iter);
-    int depth = gtk_tree_path_get_depth(path);
-    gtk_tree_path_free(path);
-
-    gchar *text = NULL;
-
-    QModelIndex idx = gtk_q_sort_filter_tree_model_get_source_idx(GTK_Q_SORT_FILTER_TREE_MODEL(tree_model), iter);
-    if (idx.isValid() && depth == 2) {
-        QVariant var_d = idx.data(static_cast<int>(Call::Role::DateTime));
-        QDateTime date_time = var_d.value<QDateTime>();
-        text = g_strdup_printf("%s", date_time.time().toString().toUtf8().constData());
+    // check if this iter is selected
+    gboolean is_selected = FALSE;
+    if (GTK_IS_TREE_VIEW(treeview)) {
+        auto selection = gtk_tree_view_get_selection(treeview);
+        is_selected = gtk_tree_selection_iter_is_selected(selection, iter);
     }
 
-    g_object_set(G_OBJECT(cell), "markup", text, NULL);
-    g_free(text);
-}
-
-static void
-render_date(G_GNUC_UNUSED GtkTreeViewColumn *tree_column,
-            GtkCellRenderer *cell,
-            GtkTreeModel *tree_model,
-            GtkTreeIter *iter,
-            G_GNUC_UNUSED gpointer data)
-{
-    /**
-     * If call, show the date;
-     * if category, don't show anything.
-     */
-    GtkTreePath *path = gtk_tree_model_get_path(tree_model, iter);
-    int depth = gtk_tree_path_get_depth(path);
-    gtk_tree_path_free(path);
-
     gchar *text = NULL;
 
     QModelIndex idx = gtk_q_sort_filter_tree_model_get_source_idx(GTK_Q_SORT_FILTER_TREE_MODEL(tree_model), iter);
-    if (idx.isValid() && depth == 2) {
-        QVariant var_d = idx.data(static_cast<int>(Call::Role::DateTime));
+    QVariant var_d = idx.data(static_cast<int>(Call::Role::DateTime));
+    if (idx.isValid() && var_d.isValid()) {
         QDateTime date_time = var_d.value<QDateTime>();
-        text = g_strdup_printf("%s", date_time.date().toString().toUtf8().constData());
+
+        /* we want the color of the text to be the default color if this iter is
+         * selected so that the treeview is able to invert it against the selection color */
+        if (is_selected) {
+            text = g_strdup_printf("%s\n%s",
+                                   date_time.time().toString().toUtf8().constData(),
+                                   date_time.date().toString().toUtf8().constData()
+            );
+        } else {
+            text = g_strdup_printf("%s\n<span fgcolor=\"gray\">%s</span>",
+                                   date_time.time().toString().toUtf8().constData(),
+                                   date_time.date().toString().toUtf8().constData()
+            );
+        }
     }
 
     g_object_set(G_OBJECT(cell), "markup", text, NULL);
@@ -439,32 +423,20 @@
     gtk_tree_view_column_set_resizable(column, TRUE);
     gtk_tree_view_column_set_expand(column, TRUE);
 
-    /* date column */
+    /* date time column */
     area = gtk_cell_area_box_new();
     column = gtk_tree_view_column_new_with_area(area);
     gtk_tree_view_column_set_title(column, C_("Call history", "Date"));
 
-    /* time renderer */
+    /* date time renderer */
     renderer = gtk_cell_renderer_text_new ();
     gtk_cell_area_box_pack_start(GTK_CELL_AREA_BOX(area), renderer, FALSE, FALSE, FALSE);
     /* format the time*/
     gtk_tree_view_column_set_cell_data_func(
         column,
         renderer,
-        (GtkTreeCellDataFunc)render_time,
-        NULL,
-        NULL);
-
-    /* date renderer */
-    renderer = gtk_cell_renderer_text_new ();
-    gtk_cell_area_box_pack_start(GTK_CELL_AREA_BOX(area), renderer, FALSE, FALSE, FALSE);
-    g_object_set(G_OBJECT(renderer), "ellipsize", PANGO_ELLIPSIZE_END, NULL);
-    /* format the date */
-    gtk_tree_view_column_set_cell_data_func(
-        column,
-        renderer,
-        (GtkTreeCellDataFunc)render_date,
-        NULL,
+        (GtkTreeCellDataFunc)render_date_time,
+        self,
         NULL);
 
     gtk_tree_view_append_column(GTK_TREE_VIEW(self), column);