modified start settings and read and save config
authortanya <tanyshk@gmail.com>
Mon, 19 Jul 2010 11:57:18 +0000 (14:57 +0300)
committertanya <tanyshk@gmail.com>
Mon, 19 Jul 2010 11:57:18 +0000 (14:57 +0300)
applet/src/livewp-common.h
applet/src/livewp-config.c
applet/src/livewp-config.h
applet/src/livewp-home-widget.c
applet/src/livewp-settings.c
applet/src/livewp-settings.h

index 0b0acf6..a50aeab 100644 (file)
@@ -76,6 +76,7 @@ struct _Animation_WallpaperPrivate
     gchar *theme;
     gboolean visible;
     gboolean rich_animation;
+    gboolean enable;
     GtkWidget *main_widget;
     GtkWidget *right_corner;
     AWallpaperPlugin *desktop_plugin;
index b9ab3d8..8c2fcb6 100644 (file)
@@ -32,7 +32,8 @@ read_config(Animation_WallpaperPrivate *priv) {
     GConfValue *value = NULL;
     gint id = priv->view;
     gchar * str = NULL;
-    
+
+    fprintf(stderr,"read_config\n");
     gconf_client = gconf_client_get_default();
     if (!gconf_client) {
         fprintf(stderr, _("Failed to initialize GConf. Quitting.\n"));
@@ -62,6 +63,19 @@ read_config(Animation_WallpaperPrivate *priv) {
         gconf_value_free(value);
     } else
         priv->rich_animation = TRUE;
+    
+    str = g_strdup_printf("%s%i", GCONF_KEY_ENABLE, id);
+    value = gconf_client_get(gconf_client, str, NULL);
+    if (str){ 
+        g_free(str);
+        str = NULL;
+    } 
+    if (value) {
+        priv->enable = gconf_value_get_bool(value);
+        gconf_value_free(value);
+    } else
+        priv->enable = FALSE;
+
 
     return 0;
 }
@@ -71,21 +85,48 @@ void
 save_config(Animation_WallpaperPrivate *priv) {
 
     GConfClient *gconf_client;
+    gchar * str = NULL;
+    gint id = priv->view;
+
     gconf_client = gconf_client_get_default();
     if (!gconf_client) {
         fprintf(stderr, _("Failed to initialize GConf. Quitting.\n"));
         return;
     }
-    /* Save Weather source name. */
-    if (priv->theme)
+    
+    if (priv->theme){
+        str = g_strdup_printf("%s%i", GCONF_KEY_THEME, id);
         gconf_client_set_string(gconf_client,
-                  GCONF_KEY_THEME,
+                  str,
                   priv->theme, NULL);
+        if (str){
+            g_free(str);
+            str = NULL;
+        }
+    }
+
+    str = g_strdup_printf("%s%i", GCONF_KEY_RANIMATION, id);
     if (priv->rich_animation)
         gconf_client_set_bool(gconf_client,
-                              GCONF_KEY_RANIMATION, TRUE, NULL);
+                              str, TRUE, NULL);
+    else
+        gconf_client_set_bool(gconf_client,
+                              str, FALSE, NULL);
+    if (str){
+        g_free(str);
+        str = NULL;
+    }
+    
+    str = g_strdup_printf("%s%i", GCONF_KEY_ENABLE, id);
+    if (priv->enable)
+        gconf_client_set_bool(gconf_client,
+                              str, TRUE, NULL);
     else
         gconf_client_set_bool(gconf_client,
-                              GCONF_KEY_RANIMATION, FALSE, NULL);
+                              str, FALSE, NULL);
+    if (str){
+        g_free(str);
+        str = NULL;
+    }
 
 }
index 54082cb..06c8411 100644 (file)
@@ -31,6 +31,7 @@
 #define GCONF_KEY_PREFIX                            "/apps/maemo/livewp"
 #define GCONF_KEY_THEME                             GCONF_KEY_PREFIX"/theme"
 #define GCONF_KEY_RANIMATION                        GCONF_KEY_PREFIX"/rich_animation"
+#define GCONF_KEY_ENABLE                            GCONF_KEY_PREFIX"/enable"
 gint read_config(Animation_WallpaperPrivate *priv); 
 void save_config(Animation_WallpaperPrivate *priv); 
 #endif
index 08412f3..356f69b 100644 (file)
@@ -49,7 +49,7 @@ lw_applet_realize (GtkWidget *widget)
     fprintf(stderr,"ddddddddddddd %s\n", hd_plugin_item_get_plugin_id (HD_PLUGIN_ITEM (widget)));
     strid = g_strdup(hd_plugin_item_get_plugin_id (HD_PLUGIN_ITEM (widget)));
     id = strid[strlen(strid)-1] - '0';
-    desktop_plugin->priv->view = id + 1;
+    desktop_plugin->priv->view = id;
     g_free(strid); 
     
     /* Load config */
index 109af6b..f0ae29a 100644 (file)
@@ -54,8 +54,7 @@ Russian - Tanya Makova \n \
 }
 /*******************************************************************************/
 GtkWidget *
-create_theme_selector (void)
-{
+create_theme_selector (void){
       GtkWidget *selector;
 
       selector = hildon_touch_selector_new_text ();
@@ -66,16 +65,27 @@ create_theme_selector (void)
       return selector;
 }
 /*******************************************************************************/
+void
+theme_button_clicked(GtkButton *button, Animation_WallpaperPrivate *priv){
+
+    lw_theme_settings(priv, NULL);
+}
+/********************************************************************************/
+
 GtkWidget *
-create_image_button (gchar *theme)
-{
+create_image_button (gchar *theme, gint view){
     GtkWidget *button;
     GtkWidget *image;
     gchar * str;
     GdkPixbuf * pixbuf;
     
+    fprintf(stderr,"create_image_button\n");
+    Animation_WallpaperPrivate *priv = g_new0(Animation_WallpaperPrivate, 1);
+    priv->view = view;
+    read_config(priv);
     button = hildon_button_new(HILDON_SIZE_AUTO_WIDTH | HILDON_SIZE_FINGER_HEIGHT,
                                     HILDON_BUTTON_ARRANGEMENT_VERTICAL);
+    g_object_set_data(G_OBJECT(button), "view", GINT_TO_POINTER(view));
     str = g_strdup_printf( "%s/%s/%s", THEME_PATH, 
                         theme, "icon.png");
     pixbuf = gdk_pixbuf_new_from_file_at_size (str, 
@@ -88,7 +98,9 @@ create_image_button (gchar *theme)
         image = gtk_image_new_from_pixbuf (pixbuf);
         g_object_unref(G_OBJECT(pixbuf));
     }
+
     hildon_button_set_image (HILDON_BUTTON (button), image);
+    g_signal_connect(button, "clicked", G_CALLBACK(theme_button_clicked), priv);
     //hildon_button_set_image_position (HILDON_BUTTON (button), GTK_POS_RIGHT);
     return button;
 
@@ -160,6 +172,7 @@ lw_main_settings(Animation_WallpaperPrivate *priv, gpointer data){
     GtkWidget *theme_button4;
     GtkWidget *hbox;
 
+    fprintf(stderr,"lw_main_settings\n");
     window = gtk_dialog_new();
 
     gtk_window_set_title(GTK_WINDOW(window), _("Live Wallpaper Settings"));
@@ -167,16 +180,16 @@ lw_main_settings(Animation_WallpaperPrivate *priv, gpointer data){
     gtk_window_set_modal(GTK_WINDOW(window), TRUE);
     /* Create Theme button */
     hbox = gtk_hbox_new(FALSE, 5);
-    theme_button1 = create_image_button("Matrix");
+    theme_button1 = create_image_button("Matrix", 0);
     gtk_box_pack_start(GTK_BOX(hbox),
                                    theme_button1, TRUE, TRUE, 5);
-    theme_button2 = create_image_button("Matrix");
+    theme_button2 = create_image_button("Matrix", 1);
     gtk_box_pack_start(GTK_BOX(hbox),
                                    theme_button2, TRUE, TRUE, 5);
-    theme_button3 = create_image_button("Matrix");
+    theme_button3 = create_image_button("Matrix", 2);
     gtk_box_pack_start(GTK_BOX(hbox),
                                    theme_button3, TRUE, TRUE, 5);
-    theme_button4 = create_image_button("Matrix");
+    theme_button4 = create_image_button("Matrix", 3);
     gtk_box_pack_start(GTK_BOX(hbox),
                                    theme_button4, TRUE, TRUE, 5);
     gtk_box_pack_start(GTK_BOX(GTK_DIALOG(window)->vbox),
@@ -205,21 +218,23 @@ lw_main_settings(Animation_WallpaperPrivate *priv, gpointer data){
 
 /*******************************************************************************/
 void 
-lw_theme_settings(Animation_WallpaperPrivate *priv, gpointer data){
+lw_theme_settings(Animation_WallpaperPrivate *priv, gpointer  data){
     gint result;
     GtkWidget *window = NULL;
     GtkWidget *save_button;
     GtkWidget *theme_button;
     GtkWidget *enable_button;
     GtkWidget *rich_animation_button;
+    gint view = priv->view;
 
+    fprintf(stderr,"lw_theme_settings\n");
     window = gtk_dialog_new();
 
     gtk_window_set_title(GTK_WINDOW(window), _("Live Wallpaper Settings"));
     gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
     gtk_window_set_modal(GTK_WINDOW(window), TRUE);
     /* Create Enable button */
-    enable_button = create_enable_button(check_applet_state(0)); 
+    enable_button = create_enable_button(check_applet_state(view)); 
     gtk_box_pack_start(GTK_BOX(GTK_DIALOG(window)->vbox),
                                    enable_button, TRUE, TRUE, 5);
     /* Create Theme button */
@@ -261,16 +276,16 @@ lw_theme_settings(Animation_WallpaperPrivate *priv, gpointer data){
             save_config(priv);
             /* action with applet */
             if (hildon_check_button_get_active (HILDON_CHECK_BUTTON(enable_button))){
-                    if (!check_applet_state(0))
-                        start_applet(0);
+                    if (!check_applet_state(view))
+                        start_applet(view);
                     else
                         send_dbus_signal (priv,
                               LIVEWP_SIGNAL_INTERFACE,
                               LIVEWP_SIGNAL_PATH,
                               LIVEWP_RELOAD_CONFIG);
             }else
-                    if (check_applet_state(0))
-                        stop_applet();
+                    if (check_applet_state(view))
+                        stop_applet(view);
 
             break;
         default:
@@ -293,9 +308,9 @@ check_applet_state(gint number){
     GKeyFile *gkey_file = NULL;
     gchar *str = NULL;
     gboolean result = FALSE;
-
+fprintf(stderr,"check_applet_state\n");
     if (number > 3 || number < 0)
-        return;
+        return FALSE;
 
     str = g_strdup_printf("livewp-home-widget.desktop-%i",number);
     config_file = hd_config_file_new(NULL, "/home/user/.config/hildon-desktop/", "home.plugins");
@@ -353,10 +368,11 @@ start_applet(gint number){
 }
 /*******************************************************************************/
 void
-stop_applet(void){
+stop_applet(gint number){
     FILE    *file_in;
     FILE    *file_out;
     gchar buffer[2048];
+    gchar * str = NULL;
 
     file_in = fopen("/home/user/.config/hildon-desktop/home.plugins","r");
     file_out = fopen("/tmp/livewallpaper.plugins","w");
@@ -364,10 +380,14 @@ stop_applet(void){
         while (!feof(file_in)) {
             memset(buffer, 0, sizeof(buffer));
             fgets(buffer, sizeof(buffer) - 1, file_in);
-            if (strcmp(buffer, "[livewp-home-widget.desktop-0]\n") &&
+            str = g_strdup_printf("[livewp-home-widget.desktop-%i]\n", number);
+            if (strcmp(buffer, str) &&
                 strcmp(buffer, "X-Desktop-File=/usr/share/applications/hildon-home/livewp-home-widget.desktop\n"))
                 fputs(buffer, file_out);
         }
+        if (str){
+            g_free(str);
+        }
         fclose(file_out);
         fclose(file_in);
         file_in = fopen("/tmp/livewallpaper.plugins","r");
index 34b3920..1e37988 100644 (file)
@@ -31,7 +31,7 @@ void reload_scene(AWallpaperPlugin *desktop_plugin);
 GtkWidget* create_settings(void);
 void show_settings(GtkWidget *widget, Animation_WallpaperPrivate *priv);
 void start_applet(gint number);
-void stop_applet(void);
+void stop_applet(gint number);
 void send_dbus_signal (Animation_WallpaperPrivate *priv, const gchar *interface,
                   const gchar *path, const gchar *member);