adde images for notifications
[livewp] / applet / src / livewp-actor.c
index cf028bc..f169e0b 100644 (file)
@@ -114,25 +114,132 @@ set_actor_position(Actor *actor, gint x, gint y, gint z, AWallpaperPlugin *deskt
                                              z);
 }
 
-int
-func_callback(void *user_data, int argc, char **argv, char **azColName)
+int get_notify_count(gchar *notify_type)
 {
-    fprintf(stderr, "callback\n");
-    int i;
-    GtkTreeIter iter;
-    GtkListStore *list = GTK_LIST_STORE(user_data);
-    gtk_list_store_append(list, &iter);
-    for(i = 0; i < argc; i++){
-        fprintf(stderr, "argc=%d, argv=%s, colname=%s\n", argc, argv, azColName[i]);
-        //if(!strcmp(azColName[i], "count"))
-            gtk_list_store_set(list, &iter, 0, atoi(argv[i]), -1);
+    sqlite3 *db = NULL;
+    sqlite3 *res = NULL;
+    gint rc = 0, result = 0;
+    gchar sql[1024];
+
+    rc = sqlite3_open("/home/user/.config/hildon-desktop/notifications.db", &db);
+    if (rc){
+        fprintf(stderr, "error open db %d %s\n", rc, sqlite3_errmsg(db));
+    }else {
+        snprintf(sql, sizeof(sql)-1, "select count(id) from notifications where icon_name='%s'", notify_type);
+        rc = sqlite3_prepare(db, sql, sizeof(sql)-1, &res, NULL);
+        if (rc != SQLITE_OK){
+            fprintf(stderr, "error prepare %d %s\n", rc, sql);
+        }
+        if (sqlite3_step(res) != SQLITE_ROW){
+            fprintf(stderr, "not sqlite_row\n");
+        }
+        result = sqlite3_column_int(res, 0);
+        //fprintf(stderr, "count missing calls = %d\n", call_count);
+        sqlite3_finalize(res);
+
+        sqlite3_close(db);
     }
-    return 0;
+    return result;
 }
+gchar * read_notification()
+{
+    gchar *message = "";
+    gint count = 0;
+    
+    fprintf(stderr, "read notification \n");
+    count = get_notify_count("general_missed");
+    if (count > 0){
+        message = g_strdup_printf("%s: %d", _("Missed calls"), count);
+    }
+    count = get_notify_count("general_sms");
+    if (count > 0){
+        if (message){
+            message = g_strdup_printf("%s \n%s: %d", message, _("Missed sms"), count);
+        }else {
+            message = g_strdup_printf("%s: %d", _("Missed sms"), count);
+        }
+    }
+    count = get_notify_count("general_chat");
+    if (count > 0){
+        if (message){
+            message = g_strdup_printf("%s \n%s: %d", message, _("Missed chat"), count);
+        }else {
+            message = g_strdup_printf("%s: %d", _("Missed chat"), count);
+        }
+    }
+    count = get_notify_count("qgn_list_messagin");
+    if (count > 0){
+        if (message){
+            message = g_strdup_printf("%s \n%s: %d", message, _("Missed mail"), count);
+        }else {
+            message = g_strdup_printf("%s: %d", _("Missed mail"), count);
+        }
+    }
+    fprintf(stderr, "notify=%s\n", message);
+    return message;
+}
+
 void 
 change_billboard(Actor * actor, AWallpaperPlugin *desktop_plugin)
 {
     GtkWidget *label;
+    gchar *mes = NULL, *message = NULL;
+    PangoFontDescription *pfd = NULL;
+    gint count = 0;
+    Actor *a = NULL;
+     
+    fprintf(stderr, "change_billboard\n");   
+    
+    if (desktop_plugin->priv->scene->notification < time(NULL)){
+        count = get_notify_count("general_missed");
+        a = g_ptr_array_index(actor->child, 0);
+        if (count > 0){
+            set_actor_visible(a, TRUE);            
+        }else {
+            set_actor_visible(a, FALSE);
+        }
+        count = get_notify_count("general_sms");
+        a = g_ptr_array_index(actor->child, 3);
+        if (count > 0){
+            set_actor_visible(a, TRUE);            
+        }else {
+            set_actor_visible(a, FALSE);
+        }
+        count = get_notify_count("general_chat");
+        a = g_ptr_array_index(actor->child, 1);
+        if (count > 0){
+            set_actor_visible(a, TRUE);            
+        }else {
+            set_actor_visible(a, FALSE);
+        }
+        count = get_notify_count("qgn_list_messagin");
+        a = g_ptr_array_index(actor->child, 2);
+        if (count > 0){
+            set_actor_visible(a, TRUE);            
+        }else {
+            set_actor_visible(a, FALSE);
+        }
+
+        #if 0
+        message = read_notification();
+        label = actor->image;
+        mes = g_markup_printf_escaped("<span bgcolor=\"%s\" foreground=\"%s\">%s</span>", "#FFFFFF", "#000000", message);
+        gtk_label_set_markup(GTK_LABEL(label), mes);
+        pfd = pango_font_description_from_string("Sans 16");
+        gtk_widget_modify_font(GTK_WIDGET(label), NULL);
+        gtk_widget_modify_font(GTK_WIDGET(label), pfd);
+        pango_font_description_free(pfd);
+#endif
+        desktop_plugin->priv->scene->notification = FALSE;
+    }
+    actor->time_start_animation = time(NULL) + 20;    
+}
+
+
+void 
+change_billboard1(Actor * actor, AWallpaperPlugin *desktop_plugin)
+{
+    GtkWidget *label;
     sqlite3 *db = NULL;
     sqlite3_stmt *res = NULL;
     gchar *errMsg = NULL, *message;
@@ -146,15 +253,6 @@ change_billboard(Actor * actor, AWallpaperPlugin *desktop_plugin)
         fprintf(stderr, "error open db %d %s\n", rc, sqlite3_errmsg(db));
     }else {
         snprintf(sql, sizeof(sql)-1, "select count(id) from Events where event_type_id=%d", 3);
-#if 0
-        gtk_list_store_new(1, G_TYPE_INT);
-        rc = sqlite3_exec(db, sql, func_callback, (void*)list, &errMsg);
-        if (rc != SQLITE_OK){
-            fprintf(stderr, "error %s\n", errMsg);
-
-        }
-        fprintf(stderr, "after exec sql=%s rc= %d err=%d \n", sql, rc, errMsg);
-#endif
 //#if 0
         rc = sqlite3_prepare(db, sql, sizeof(sql)-1, &res, NULL);
         if (rc != SQLITE_OK){