Show total of conversations as well in the empty view
authorArtem Garmash <artemgarmash@gmail.com>
Sat, 6 Feb 2010 09:13:55 +0000 (11:13 +0200)
committerArtem Garmash <artem.garmash@nokia.com>
Sun, 27 Jun 2010 19:13:46 +0000 (22:13 +0300)
src/el-home-applet.c

index d292828..582d635 100644 (file)
@@ -1097,43 +1097,47 @@ query_unread_events (RTComEl *el)
         return count;
 }
 
-static gint
-query_read_events (RTComEl *el, const gchar *service)
+static gboolean
+query_read_events (RTComEl *el, const gchar *service, gint *events, gint *conversations)
 {
         sqlite3 *db;
         sqlite3_stmt *stmt;
         int ret;
-        gint count = -1;
+        gboolean result = TRUE;
 
         g_object_get (el, "db", &db, NULL);
 
         if (sqlite3_prepare_v2 (db,
-                                "SELECT SUM(total_events) FROM GroupCache, Services "
+                                "SELECT SUM(total_events), COUNT(group_uid) FROM GroupCache, Services "
                                 "WHERE GroupCache.service_id=Services.id AND Services.name=?;",
                                 -1,
                                 &stmt,
                                 NULL) != SQLITE_OK) {
                 g_error ("%s: can't compile SQL", G_STRFUNC);
-                return -1;
+                return FALSE;
         }
         if (sqlite3_bind_text (stmt, 1, service, -1, SQLITE_STATIC) != SQLITE_OK)  {
                 g_error ("Failed to bind %s to SQL stmt", service);
+                result = FALSE;
                 goto DONE;
         }
 
         while (SQLITE_BUSY == (ret = sqlite3_step (stmt)));
 
         if (ret == SQLITE_ROW) {
-                count = sqlite3_column_int (stmt, 0);
+                *events = sqlite3_column_int (stmt, 0);
+                *conversations = sqlite3_column_int (stmt, 1);
         }
         else {
                 g_error ("%s: error while executing SQL", G_STRFUNC);
+                result = FALSE;
+                goto DONE;
         }
 
  DONE:
         sqlite3_finalize (stmt);
 
-        return count;
+        return result;
 }
 
 static void
@@ -1174,18 +1178,24 @@ read_event (ELHomeApplet *self)
                 }
         }
         else {
-                gint n_sms_events = query_read_events (priv->eventlogger,
-                                                       "RTCOM_EL_SERVICE_SMS");
-                gint n_chat_events = query_read_events (priv->eventlogger,
-                                                        "RTCOM_EL_SERVICE_CHAT");
                 gchar *text;
-
-                text = g_strdup_printf ("%d", n_sms_events);
-                gtk_label_set_text (GTK_LABEL (priv->sms_total), text);
+                gint n_sms_events = 0, n_sms_convs = 0;
+                gint n_chat_events = 0, n_chat_convs = 0;
+                const gchar *fmt = "%d <span size=\"small\">(%d)</span>";
+
+                query_read_events (priv->eventlogger,
+                                   "RTCOM_EL_SERVICE_SMS",
+                                   &n_sms_events, &n_sms_convs);
+                query_read_events (priv->eventlogger,
+                                   "RTCOM_EL_SERVICE_CHAT",
+                                   &n_chat_events, &n_chat_convs);
+
+                text = g_strdup_printf (fmt, n_sms_convs, n_sms_events);
+                gtk_label_set_markup (GTK_LABEL (priv->sms_total), text);
                 g_free (text);
 
-                text = g_strdup_printf ("%d", n_chat_events);
-                gtk_label_set_text (GTK_LABEL (priv->chat_total), text);
+                text = g_strdup_printf (fmt, n_chat_convs, n_chat_events);
+                gtk_label_set_markup (GTK_LABEL (priv->chat_total), text);
                 g_free (text);
 
                 gtk_label_set_text (GTK_LABEL (priv->sender),
@@ -1660,13 +1670,13 @@ el_home_applet_init (ELHomeApplet *self)
         gtk_widget_set_name (priv->sms_total, "hildon-shadow-label");
         gtk_fixed_put (GTK_FIXED (priv->empty), priv->sms_total,
                        5*HILDON_MARGIN_DOUBLE  + HILDON_ICON_PIXEL_SIZE_FINGER,
-                       2*HILDON_MARGIN_DOUBLE + HILDON_MARGIN_DEFAULT);
+                       2*HILDON_MARGIN_DOUBLE + HILDON_MARGIN_HALF);
 
         priv->chat_total = gtk_label_new (NULL);
         gtk_widget_set_name (priv->chat_total, "hildon-shadow-label");
         gtk_fixed_put (GTK_FIXED (priv->empty), priv->chat_total,
                        5*HILDON_MARGIN_DOUBLE  + HILDON_ICON_PIXEL_SIZE_FINGER,
-                       3*HILDON_MARGIN_DOUBLE + HILDON_MARGIN_DEFAULT + HILDON_ICON_PIXEL_SIZE_FINGER);
+                       3*HILDON_MARGIN_DOUBLE + HILDON_MARGIN_HALF + HILDON_ICON_PIXEL_SIZE_FINGER);
 
         gtk_widget_show_all (GTK_WIDGET (priv->empty));
         gtk_widget_hide (GTK_WIDGET (priv->empty));