next step for optiion one theme in all views
authorvlad <vlad@vlanout.(none)>
Wed, 1 Sep 2010 19:12:23 +0000 (22:12 +0300)
committervlad <vlad@vlanout.(none)>
Wed, 1 Sep 2010 19:12:23 +0000 (22:12 +0300)
applet/src/livewp-config.c
applet/src/livewp-config.h
applet/src/livewp-home-widget.h
applet/src/livewp-main.c
applet/src/livewp-scene.c
applet/src/livewp-settings.c
applet/src/livewp-settings.h

index 4c7a06c..0e4500d 100644 (file)
@@ -151,6 +151,25 @@ read_config(Animation_WallpaperPrivate *priv) {
 
 /*******************************************************************************/
 void
+save_one_in_all_views_to_config(gboolean one_in_all_views){
+    GConfClient *gconf_client;
+
+    gconf_client = gconf_client_get_default();
+    if (!gconf_client) {
+        fprintf(stderr, _("Failed to initialize GConf. Quitting.\n"));
+        return;
+    }
+
+    if (one_in_all_views)
+        gconf_client_set_bool(gconf_client,
+                              GCONF_KEY_ONE_IN_ALL_VIEW, TRUE, NULL);
+    else
+        gconf_client_set_bool(gconf_client,
+                              GCONF_KEY_ONE_IN_ALL_VIEW, FALSE, NULL);
+
+}
+/*******************************************************************************/
+void
 save_config(Animation_WallpaperPrivate *priv) {
 
     GConfClient *gconf_client;
@@ -207,12 +226,4 @@ save_config(Animation_WallpaperPrivate *priv) {
             str = NULL;
         }
     }
-    if (priv->one_in_all_view)
-        gconf_client_set_bool(gconf_client,
-                              GCONF_KEY_ONE_IN_ALL_VIEW, TRUE, NULL);
-    else
-        gconf_client_set_bool(gconf_client,
-                              GCONF_KEY_ONE_IN_ALL_VIEW, FALSE, NULL);
-
-    
 }
index 65e15c9..2f60514 100644 (file)
@@ -46,4 +46,6 @@ void save_config(Animation_WallpaperPrivate *priv);
 void fill_priv(Animation_WallpaperPrivate *priv);
 gint current_active_view(void);
 GSList * get_list_exthemes(void);
+void save_one_in_all_views_to_config(gboolean one_in_all_views);
+
 #endif
index c82e5e1..c6ac2f3 100644 (file)
@@ -65,8 +65,6 @@ GType animation_wallpaper_plugin_get_type(void);
 Animation_WallpaperPrivate* animation_wallpaper_plugin_new (void);
 G_END_DECLS
 void lw_settings(gpointer user_data, gpointer data);
-gint read_config(Animation_WallpaperPrivate *priv);
-void save_config(Animation_WallpaperPrivate *priv);
 //void run_long_timeout(AWallpaperPlugin *desktop_plugin);
 void get_sun_screen_pos(double alt, double azm, gint * x, gint * y);
 void show_settings(GtkWidget *widget, Animation_WallpaperPrivate *priv);
index 614092b..532b862 100644 (file)
@@ -39,16 +39,16 @@ void conky_visible(AWallpaperPlugin *desktop_plugin);
 void 
 set_live_bg (Display *display, Window xwindow, int mode)
 {
-        Atom atom;
+   Atom atom;
 
-        atom = XInternAtom (display, "_HILDON_LIVE_DESKTOP_BACKGROUND", False);
-        fprintf (stderr, "XID: 0x%x\n", (unsigned)xwindow);
+   atom = XInternAtom (display, "_HILDON_LIVE_DESKTOP_BACKGROUND", False);
+   fprintf (stderr, "XID: 0x%x\n", (unsigned)xwindow);
 
-        XChangeProperty (display,
-                      xwindow,
-                       atom,
-                       XA_INTEGER, 32, PropModeReplace,
-                       (unsigned char *) &mode, 1);
+   XChangeProperty (display,
+                 xwindow,
+                  atom,
+                  XA_INTEGER, 32, PropModeReplace,
+                  (unsigned char *) &mode, 1);
 }
 /*******************************************************************************/
 
@@ -291,7 +291,10 @@ create_xwindow (Animation_WallpaperPrivate *priv){
     label = gtk_label_new(_("Loading Livewallpaper scene ..."));
     gtk_container_add (GTK_CONTAINER (main_widget), label);
     gtk_widget_show_all(GTK_WIDGET(main_widget));
-    set_live_bg(GDK_WINDOW_XDISPLAY (main_widget->window), GDK_WINDOW_XID (main_widget->window), priv->view);
+    if (priv->one_in_all_view)
+        set_live_bg(GDK_WINDOW_XDISPLAY (main_widget->window), GDK_WINDOW_XID (main_widget->window), -1);
+    else
+        set_live_bg(GDK_WINDOW_XDISPLAY (main_widget->window), GDK_WINDOW_XID (main_widget->window), priv->view);
 }
 /*******************************************************************************/
 int
@@ -335,15 +338,23 @@ main(int argc, char *argv[])
     priv->running = FALSE;
     /* fprintf(stderr,"XWINDOW %i\n",GDK_WINDOW_XID (main_widget->window)); */
     priv->desktop_plugin = desktop_plugin;
+
+
     priv->view = view;
+    fill_priv(priv);
+    fprintf(stderr,"THEME %s\n", priv->theme);
+
+    /* Check activity of opition "One theme in all views" */
+    if (priv->one_in_all_view && view >1)
+        return -1;   
 
-    if (current_active_view() == view) 
+
+    if (current_active_view() == view || priv->one_in_all_view) 
         priv->visible = TRUE;
     else 
         priv->visible = FALSE;
 
-    fill_priv(priv);
-    
+
     create_xwindow(priv);
     /* Initialize DBUS */
     livewp_initialize_dbus(priv);
index dc2dec8..247b643 100644 (file)
@@ -101,7 +101,9 @@ reload_scene(AWallpaperPlugin *desktop_plugin)
     fprintf(stderr,"Reload scene %s\n", desktop_plugin->priv->theme); 
     destroy_scene(desktop_plugin);
     fill_priv(desktop_plugin->priv);
-    gtk_widget_destroy(desktop_plugin->priv->window);
+    gtk_widget_destroy(desktop_plugin->priv->window); 
+    if (desktop_plugin->priv->one_in_all_view && desktop_plugin->priv->view >1)
+        exit(-1);   
     create_xwindow(desktop_plugin->priv);
     init_scene_theme(desktop_plugin);
 }
index 471e904..0471269 100644 (file)
@@ -486,11 +486,13 @@ lw_main_settings(Animation_WallpaperPrivate *priv, gpointer data){
     GtkWidget *window = NULL;
     GtkWidget *area_hbox;
     GtkWidget *one_in_all_view_button; 
+    gboolean one_in_all_view;
     Animation_WallpaperPrivate *priv_temp = NULL;
 
     window = gtk_dialog_new();
     priv->window = window;
 
+    one_in_all_view_button = priv->one_in_all_view;
     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);
@@ -540,7 +542,15 @@ lw_main_settings(Animation_WallpaperPrivate *priv, gpointer data){
         break;
     }
 
-
+    if (hildon_check_button_get_active (HILDON_CHECK_BUTTON(one_in_all_view_button)) != one_in_all_view){
+        save_one_in_all_views_to_config(hildon_check_button_get_active (HILDON_CHECK_BUTTON(one_in_all_view_button)));
+        if (hildon_check_button_get_active (HILDON_CHECK_BUTTON(one_in_all_view_button))){
+            stop_applet(2);
+            stop_applet(3);
+            stop_applet(4);
+        }
+        send_dbus_signal (priv, LIVEWP_SIGNAL_INTERFACE, LIVEWP_SIGNAL_PATH, LIVEWP_RELOAD_CONFIG);
+    }
     if (window)
         gtk_widget_destroy(window);
 }
index c5464c7..d841b9e 100644 (file)
@@ -45,3 +45,4 @@ void additional_parametr_for_theme_video(GtkWidget *vbox, Animation_WallpaperPri
 GSList * get_list_exthemes(void);
 void show_problem_package (GtkWidget *widget, gchar *package_name);
 void changed_value_one_in_all_cb (GtkWidget *toggle, Animation_WallpaperPrivate *priv);
+void save_one_in_all_views_to_config(gboolean one_in_all_views);