next step for config
authorVlad Vasiliev <vlad@toshiba2.oblgaz>
Sun, 4 Apr 2010 18:42:25 +0000 (21:42 +0300)
committerVlad Vasiliev <vlad@toshiba2.oblgaz>
Sun, 4 Apr 2010 18:42:25 +0000 (21:42 +0300)
applet/src/livewp-common.h
applet/src/livewp-home-widget.c
applet/src/livewp-home-widget.h
applet/src/livewp-settings.c
applet/src/livewp-settings.h

index 7f50bb1..29887d6 100644 (file)
@@ -25,7 +25,7 @@
 #include <gtk/gtk.h>
 #include <hildon/hildon.h>
 #include <locale.h>
-
+#include <libhildondesktop/libhildondesktop.h>
 
 #define GETTEXT_PACKAGE "livewp"
 #include <glib/gi18n-lib.h>
@@ -43,10 +43,28 @@ typedef struct {
 
 } MultiActor;
 
+typedef struct _AWallpaperPlugin AWallpaperPlugin;
+typedef struct _AWallpaperPluginClass AWallpaperPluginClass;
 typedef struct _Animation_WallpaperPrivate Animation_WallpaperPrivate;
+
 struct _Animation_WallpaperPrivate
 {
-      gint timer;
-      gchar *theme;
+    gint timer;
+    gchar *theme;
+    AWallpaperPlugin *desktop_plugin;
+};
+
+struct _AWallpaperPlugin
+{
+    HDHomePluginItem hitem;
+    GObject *parent;
+    Animation_WallpaperPrivate *priv;
 };
 
+struct _AWallpaperPluginClass
+{
+    HDHomePluginItemClass parent_class;
+
+};
+
+
index 47bcca8..808b705 100644 (file)
@@ -287,6 +287,10 @@ void change_background(GtkWidget * actor, gpointer data)
     }
 }
 
+void
+reload_scene(AWallpaperPlugin *desktop_plugin){
+    fprintf(stderr,"Reload scene\n");
+}
 static void
 init_scene(AWallpaperPlugin *desktop_plugin)
 {
@@ -555,12 +559,13 @@ animation_wallpaper_plugin_init (AWallpaperPlugin *desktop_plugin)
     desktop_plugin->priv =  Animation_Wallpaper_HOME_PLUGIN_GET_PRIVATE (desktop_plugin);
     /* Load config */
     read_config(priv);
+    priv->desktop_plugin = desktop_plugin;
     label = gtk_label_new (""); 
     gtk_widget_set_size_request(label, 95, 30);
     gtk_widget_show (label);
     hd_home_plugin_item_set_settings (HD_HOME_PLUGIN_ITEM (desktop_plugin), TRUE);
     g_signal_connect (desktop_plugin, "show-settings",
-                            G_CALLBACK (lw_settings), NULL);
+                            G_CALLBACK (lw_settings), priv);
     g_signal_connect (desktop_plugin, "notify::is-on-current-desktop",
                      G_CALLBACK (desktop_plugin_visible_notify), desktop_plugin);
 
index 58e8293..aaf949f 100644 (file)
 
 #include <glib-object.h>
 
-#include <libhildondesktop/libhildondesktop.h>
 
 G_BEGIN_DECLS
 
-typedef struct _AWallpaperPlugin AWallpaperPlugin;
-typedef struct _AWallpaperPluginClass AWallpaperPluginClass;
 
 #define Animation_Wallpaper_TYPE_HOME_PLUGIN (animation_wallpaper_plugin_get_type ())
 
@@ -51,19 +48,6 @@ typedef struct _AWallpaperPluginClass AWallpaperPluginClass;
                         Animation_Wallpaper_TYPE_HOME_PLUGIN, AWallpaperPluginClass))
 
 
-struct _AWallpaperPlugin
-{
-    HDHomePluginItem hitem;
-    GObject *parent;
-    Animation_WallpaperPrivate *priv;
-};
-
-struct _AWallpaperPluginClass
-{
-    HDHomePluginItemClass parent_class;
-
-};
-
 typedef struct {
     GtkWidget * window;
     GSList * static_actors;
index 31eb31f..b680fda 100644 (file)
@@ -44,7 +44,7 @@ void lw_about(void){
     gtk_dialog_run(GTK_DIALOG(window));
 
 }
-
+/*******************************************************************************/
 GtkWidget *
 create_theme_selector (void)
 {
@@ -54,27 +54,39 @@ create_theme_selector (void)
 
       hildon_touch_selector_append_text (HILDON_TOUCH_SELECTOR (selector), _("Berlin"));
       hildon_touch_selector_append_text (HILDON_TOUCH_SELECTOR (selector), _("Modern"));
-      hildon_touch_selector_set_active (HILDON_TOUCH_SELECTOR (selector), 0, 2);
       return selector;
 }
-
+/*******************************************************************************/
 GtkWidget *
-create_themes_button (HildonTouchSelector *selector){
+create_themes_button (gchar *theme){
 
     GtkWidget *button;
+    GtkWidget *selector;
 
+    selector = create_theme_selector();
     button = hildon_picker_button_new (HILDON_SIZE_AUTO, HILDON_BUTTON_ARRANGEMENT_VERTICAL);
     hildon_button_set_title (HILDON_BUTTON (button), "Theme");
     hildon_picker_button_set_selector (HILDON_PICKER_BUTTON (button),
                                                        HILDON_TOUCH_SELECTOR (selector));
+    if (theme) {
+        if (!strcmp(theme, _("Berlin"))){
+            hildon_touch_selector_set_active (HILDON_TOUCH_SELECTOR (selector), 0, 0);
+            hildon_button_set_value(button, _("Berlin"));
+        }
+        if (!strcmp(theme, _("Modern"))){
+            hildon_touch_selector_set_active (HILDON_TOUCH_SELECTOR (selector), 0, 1);
+            hildon_button_set_value(button, _("Modern"));
+        }
+
+    }
     return button;
 }
-
+/*******************************************************************************/
 void 
-lw_settings(GtkWidget *widget, gpointer user_data){
+lw_settings(GtkWidget *widget, Animation_WallpaperPrivate *priv){
     gint result;
     GtkWidget *window = NULL;
-    GtkWidget *selector, *save_button;
+    GtkWidget *save_button;
     GtkWidget *theme_button;
 
     window = gtk_dialog_new();
@@ -82,9 +94,7 @@ lw_settings(GtkWidget *widget, gpointer user_data){
     gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
     gtk_window_set_modal(GTK_WINDOW(window), TRUE);
     /* Create Theme button */
-    selector = create_theme_selector();
-    theme_button = create_themes_button(selector);
-
+    theme_button = create_themes_button(priv->theme);
     gtk_box_pack_start(GTK_BOX(GTK_DIALOG(window)->vbox),
                                    theme_button, TRUE, TRUE, 0);
     gtk_widget_show (theme_button);
@@ -96,6 +106,16 @@ lw_settings(GtkWidget *widget, gpointer user_data){
     switch(result){
         case GTK_RESPONSE_YES:
                fprintf(stderr,"Yes\n");
+            if (hildon_button_get_value(HILDON_BUTTON (theme_button))){
+                if (priv->theme)
+                    g_free(priv->theme);
+                if (!strcmp(hildon_button_get_value(HILDON_BUTTON (theme_button)), _("Berlin")))
+                    priv->theme = g_strdup("Berlin");
+                if (!strcmp(hildon_button_get_value(HILDON_BUTTON (theme_button)), _("Modern")))
+                    priv->theme = g_strdup("Modern");
+            }
+            save_config(priv);
+            reload_scene(priv->desktop_plugin);
         break;
         default:
         case GTK_RESPONSE_OK:
index d93d58e..e65c1e4 100644 (file)
@@ -23,4 +23,7 @@
 */
 /*******************************************************************************/
 #include "livewp-common.h"
-void lw_settings(GtkWidget *widget, gpointer user_data);
+void lw_settings(GtkWidget *widget, Animation_WallpaperPrivate *priv);
+void save_config(Animation_WallpaperPrivate *priv);
+void reload_scene(AWallpaperPlugin *desktop_plugin);
+