started to do info in billboard
authortanya <tanya@tanin.oblgaz>
Wed, 5 May 2010 13:51:45 +0000 (16:51 +0300)
committertanya <tanya@tanin.oblgaz>
Wed, 5 May 2010 13:51:45 +0000 (16:51 +0300)
applet/data/theme/Modern/el.db [new file with mode: 0644]
applet/src/livewp-actor.c
applet/src/livewp-actor.h
applet/src/livewp-home-widget.c
applet/src/livewp-scene.c

diff --git a/applet/data/theme/Modern/el.db b/applet/data/theme/Modern/el.db
new file mode 100644 (file)
index 0000000..d06084d
Binary files /dev/null and b/applet/data/theme/Modern/el.db differ
index ce92008..be02fe1 100644 (file)
@@ -114,6 +114,80 @@ 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)
+{
+    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);
+    }
+    return 0;
+}
+void 
+change_billboard(Actor * actor, AWallpaperPlugin *desktop_plugin)
+{
+    GtkWidget *label;
+    sqlite3 *db = NULL;
+    sqlite3_stmt *res = NULL;
+    gchar *errMsg = NULL;
+    gchar sql[1024], str[2048];
+    gint call_count=0, sms_count=0, rc=0;
+    GtkListStore *list = NULL;
+    
+    rc = sqlite3_open("/home/user/.rtcom-eventlogger/el.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 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){
+            fprintf(stderr, "error prepare %d %s\n", rc, sql);
+        }
+        if (sqlite3_step(res) != SQLITE_ROW){
+            fprintf(stderr, "not sqlite_row\n");
+        }
+        call_count = sqlite3_column_int(res, 0);
+        fprintf(stderr, "count missing calls = %d\n", call_count);
+        sqlite3_finalize(res);
+
+        snprintf(sql, sizeof(sql)-1, "select count(id) from Events where event_type_id=%d and is_read=%d", 7, 0);
+        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");
+        }
+        sms_count = sqlite3_column_int(res, 0);
+        fprintf(stderr, "count sms = %d\n", sms_count);
+        sqlite3_finalize(res);
+
+//#endif
+        sqlite3_close(db);
+    }
+    label = actor->image;
+    snprintf(str, sizeof(str)-1, "Missed calls: %d\nUnread sms: %d", call_count, sms_count);
+    gtk_label_set_text(label, str);
+    actor->time_start_animation = time(NULL) + 20;    
+}
+
+
 void 
 change_moon(Actor * actor, AWallpaperPlugin *desktop_plugin)
 {
index 4816432..cfe92a5 100644 (file)
@@ -28,6 +28,7 @@
 #include "livewp-common.h" 
 #include <sys/time.h>
 #include "livewp-rules.h"
+#include <sqlite3.h>
 
 typedef struct _Actor Actor;
 struct _Actor
@@ -73,6 +74,7 @@ void destroy_actor(Actor *actor);
 void set_actor_position(Actor *actor, gint x, gint y, gint z, AWallpaperPlugin *desktop_plugin);
 void set_actor_scale(Actor *actor, double scalex, double scaley);
 void set_actor_visible(Actor *actor, gboolean visible);
+void change_billboard(Actor * actor, AWallpaperPlugin *desktop_plugin);
 void change_moon(Actor * actor, AWallpaperPlugin *desktop_plugin);
 void change_sun(Actor * actor, AWallpaperPlugin *desktop_plugin);
 void change_tram(Actor * actor, AWallpaperPlugin *desktop_plugin);
index d5c7e9b..d55208c 100644 (file)
@@ -162,6 +162,41 @@ destroy_hildon_actor(Actor *actor)
     actor->widget = NULL;
 }
 
+void
+create_hildon_actor_text(Actor *actor, AWallpaperPlugin *desktop_plugin, gchar *text) 
+{
+  GtkWidget *ha = NULL;
+  GdkPixbuf *pixbuf = NULL;
+  GtkWidget *image = NULL;
+  GtkWidget *label = NULL;
+  gchar     *str = NULL;
+
+  ha = hildon_animation_actor_new();
+  label = gtk_label_new(text);  
+
+  if (label){
+    //g_signal_connect(G_OBJECT(label), "expose_event",
+      //                     G_CALLBACK(expose_event), NULL);
+
+    gtk_container_add (GTK_CONTAINER (ha), label);
+  }  
+  realize(ha);
+  gtk_widget_show(label);
+  gtk_widget_show_all(ha);
+  
+  /* TO DO check it */
+  /*  gdk_flush (); */
+
+  //g_object_set_data(G_OBJECT(ha), "image", image);
+  actor->image = label;
+  hildon_animation_actor_set_parent (HILDON_ANIMATION_ACTOR (ha), GTK_WINDOW(desktop_plugin));
+  actor->widget = ha;
+  set_actor_position(actor, actor->x, actor->y, actor->z, desktop_plugin);
+  set_actor_scale(actor, (double)actor->scale/100, (double)actor->scale/100);
+  set_actor_visible(actor, actor->visible);
+}
+
+
 
 void
 create_hildon_actor(Actor *actor, AWallpaperPlugin *desktop_plugin) 
@@ -412,7 +447,7 @@ animation_wallpaper_plugin_init (AWallpaperPlugin *desktop_plugin)
     g_hash_table_insert(priv->hash_scene_func, g_strdup("Modern"), (gpointer)&init_scene_Modern);
     g_hash_table_insert(priv->hash_scene_func, g_strdup("Matrix"), (gpointer)&init_scene_Matrix);
 //#endif
-    //priv->theme = g_strdup("Modern");
+    priv->theme = g_strdup("Modern");
     desktop_plugin->priv->main_widget = gtk_fixed_new();
 
     gtk_widget_set_size_request(desktop_plugin->priv->main_widget, 100, 32);
index 3cf4667..1ec0db5 100644 (file)
@@ -213,12 +213,21 @@ init_scene_Modern(AWallpaperPlugin *desktop_plugin)
   scene->actors = g_slist_append(scene->actors, actor);
 
   actor = init_object(desktop_plugin, "stend", "stend0.png", 
-                      482, 146, 9, 300, 305, 
+                      452, 166, 9, 300, 305, 
                       TRUE, TRUE, 100, 255, 
                       (gpointer)&change_static_actor, NULL, NULL);
   change_static_actor(actor, desktop_plugin);
   scene->actors = g_slist_append(scene->actors, actor);
 
+  actor = init_object(desktop_plugin, "billboard_text", "",
+                      460, 180, 9, 300, 108,
+                      TRUE, FALSE, 100, 255,
+                      (gpointer)&change_billboard, NULL, NULL);
+  create_hildon_actor_text(actor, desktop_plugin, "");
+  //actor->time_start_animation = time(NULL) + 20;
+  change_billboard(actor, desktop_plugin);
+  scene->actors = g_slist_append(scene->actors, actor);
+
   actor = init_object(desktop_plugin, "tram", "tram.png", 
                       -300, 225, 10, 350, 210, 
                       FALSE, FALSE, 100, 255,