one theme in all views almost done
[livewp] / applet / src / livewp-settings.c
index c9ae452..fa81c7b 100644 (file)
@@ -25,7 +25,8 @@
 #include "livewp-settings.h"
 /*******************************************************************************/
 void lw_about(void){
-
+    
+    gchar *about_string;
     GtkWidget *window = NULL,
     *vbox = NULL,
     *label_about = NULL;
@@ -34,15 +35,18 @@ void lw_about(void){
     gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
     gtk_window_set_modal(GTK_WINDOW(window), TRUE);
     vbox = gtk_vbox_new (FALSE, 5);
-    label_about = gtk_label_new (_("Live Wallpaper Version 0.8.1 \n Copyright(c) 2010\n \
+    about_string = g_strdup_printf(_("Live Wallpaper Version %s \n Copyright(c) 2010\n \
 Tanya Makova\n Vlad Vasiliev\n \
 Copyright(c) 2010 for design themes Berlin, Modern and Accel Vasya Bobrikov\n \
 Copyright(c) 2010 for design theme Matrix and icons Andrew Zhilin\n \
 Translators:\n \
 Finnish - Marko Vertainen\n \
 Spain  - Alejandro López\n \
+Italian  - Emanuele Cassioli\n \
 Russian - Tanya Makova \n \
-          Vlad Vasiliev\n")); 
+          Vlad Vasiliev\n"), VERSION);
+
+    label_about = gtk_label_new (about_string);
     gtk_box_pack_start (GTK_BOX (vbox), label_about, FALSE, FALSE, 0);
     gtk_box_pack_start(GTK_BOX(GTK_DIALOG(window)->vbox),
                                    vbox, TRUE, TRUE, 0);
@@ -113,12 +117,23 @@ set_button_image(GtkWidget * button, Animation_WallpaperPrivate *priv, gboolean
         else 
             str = g_strdup_printf( "%s/%s/%s", THEME_PATH, 
                             priv->theme, "icon.png");
+            if (access(str, F_OK) != 0){
+                g_free(str);
+                str = g_strdup_printf( "%s/%s/%s", THEME_PATH, 
+                            "Video", "icon.png");
+            }
+
     }else {
         if (icon_off)
             str = g_strdup_printf("%s", icon_off);
-        else
+        else 
             str = g_strdup_printf( "%s/%s/%s", THEME_PATH, 
                             priv->theme, "icond.png");
+            if (access(str, F_OK) != 0){
+                g_free(str);
+                str = g_strdup_printf( "%s/%s/%s", THEME_PATH, 
+                            "Video", "icond.png");
+            }
     }
     pixbuf = gdk_pixbuf_new_from_file_at_size (str, 
                                                  124, 
@@ -148,7 +163,6 @@ set_button_image(GtkWidget * button, Animation_WallpaperPrivate *priv, gboolean
 /********************************************************************************/
 GtkWidget *
 create_image_button (gint view, DBusConnection *conn_sess){
-    GtkWidget *button;
     GtkWidget *event_box;
 
     Animation_WallpaperPrivate *priv = g_new0(Animation_WallpaperPrivate, 1);
@@ -179,6 +193,14 @@ create_image_button (gint view, DBusConnection *conn_sess){
 }
 /********************************************************************************/
 void
+changed_value_one_in_all_cb (GtkWidget *toggle, Animation_WallpaperPrivate *priv)
+{
+    priv->one_in_all_view = hildon_check_button_get_active((HildonCheckButton *)toggle);
+    create_themes_buttons_hbox(priv);
+    fprintf(stderr, "changed_value_one_in_all_cb\n");
+}
+/********************************************************************************/
+void
 changed_value_theme_cb (HildonPickerButton *picker, Animation_WallpaperPrivate *priv)
 {
     const gchar *choice = hildon_button_get_value(HILDON_BUTTON (picker));
@@ -233,9 +255,8 @@ changed_value_category_cb (HildonPickerButton *picker, Animation_WallpaperPrivat
     /* check xscreensaver category */
     if (choice){
         if (!strcmp(choice,"Xscreensaver"))
-            if (access("/usr/bin/xcreensaver", F_OK) != 0){
-                hildon_banner_show_information(GTK_WIDGET(picker), NULL, 
-                _("You haven't got the installed package Xscreensaver. Please install it via using Application Manager"));
+            if (access("/usr/bin/xscreensaver", F_OK) != 0){
+                show_problem_package((GtkWidget *)picker, "Xscreensaver");
             }
 
     }
@@ -305,14 +326,14 @@ fill_theme_button (Animation_WallpaperPrivate *priv, GtkWidget *button, gchar *c
     if (!strcmp(category, "Unknown")){
         store = priv->extheme_list;
         while (store){  
-            if (!strcmp("Sherman's Aquarium" , g_hash_table_lookup(store->data, "name"))){
+            if (!strcmp("Shermans Aquarium" , g_hash_table_lookup(store->data, "name"))){
                 flag = TRUE;
                 break;
             }
             store = g_slist_next(store);
         }
         if (!flag)
-            hildon_touch_selector_append_text (HILDON_TOUCH_SELECTOR (selector), "Sherman's Aquarium");
+            hildon_touch_selector_append_text (HILDON_TOUCH_SELECTOR (selector), "Shermans Aquarium");
     }
 
         hildon_picker_button_set_selector (HILDON_PICKER_BUTTON (button),
@@ -394,7 +415,7 @@ GtkWidget *
 create_bool_button (gboolean active, gchar *name)
 {
     GtkWidget *button;
-    button = hildon_check_button_new (HILDON_SIZE_AUTO);
+    button = hildon_check_button_new (HILDON_SIZE_FINGER_HEIGHT);
     gtk_button_set_label (GTK_BUTTON (button), name);
     hildon_check_button_set_active(HILDON_CHECK_BUTTON(button), active);
     return button;
@@ -416,49 +437,82 @@ show_settings(GtkWidget *widget, Animation_WallpaperPrivate *priv){
     lw_main_settings(priv, NULL);
 }
 /*******************************************************************************/
-void 
-lw_main_settings(Animation_WallpaperPrivate *priv, gpointer data){
-    gint result;
-    GtkWidget *window = NULL;
+void
+create_themes_buttons_hbox(Animation_WallpaperPrivate *priv){
+    GtkWidget *hbox = NULL;
+    GtkWidget *area_hbox = NULL;
     GtkWidget *theme_button1;
     GtkWidget *theme_button2;
     GtkWidget *theme_button3;
-    GtkWidget *theme_button4;
-    GtkWidget *hbox;
-    Animation_WallpaperPrivate *priv_temp = NULL;
-
-    window = gtk_dialog_new();
+    GtkWidget *theme_button4;    
 
-    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 Theme button */
+        
+    area_hbox = g_object_get_data(G_OBJECT(priv->window), "area_hbox");
+    if (!area_hbox)
+        return;
+    hbox = g_object_get_data(G_OBJECT(priv->window), "custom_hbox");
+    if (hbox){
+        gtk_widget_destroy(hbox);
+    }
     hbox = gtk_hbox_new(FALSE, 0);
+    g_object_set_data(G_OBJECT(priv->window), "custom_hbox", hbox);
+    gtk_box_pack_start(GTK_BOX(area_hbox),
+                                   hbox, FALSE, FALSE, 5);
+    /* Create Theme buttons */
     theme_button1 = create_image_button(1, priv->dbus_conn_session);
     gtk_box_pack_start(GTK_BOX(hbox),
                                    theme_button1, TRUE, TRUE, 0);
+    gtk_widget_show (theme_button1);
+    gtk_widget_show (hbox);
+    if (priv->one_in_all_view)
+        return;
     theme_button2 = create_image_button(2, priv->dbus_conn_session);
     gtk_box_pack_start(GTK_BOX(hbox),
                                    theme_button2, TRUE, TRUE, 0);
+    gtk_widget_show (theme_button2);
     theme_button3 = create_image_button(3, priv->dbus_conn_session);
     gtk_box_pack_start(GTK_BOX(hbox),
                                    theme_button3, TRUE, TRUE, 0);
+    gtk_widget_show (theme_button3);
     theme_button4 = create_image_button(4, priv->dbus_conn_session);
     gtk_box_pack_start(GTK_BOX(hbox),
                                    theme_button4, TRUE, TRUE, 0);
+    gtk_widget_show (theme_button4);
+}
+/*******************************************************************************/
+void 
+lw_main_settings(Animation_WallpaperPrivate *priv, gpointer data){
+    gint result;
+    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 = 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);
+    one_in_all_view_button = create_bool_button(priv->one_in_all_view, _("One theme in all views"));
+    g_signal_connect (G_OBJECT (one_in_all_view_button), "toggled",  G_CALLBACK (changed_value_one_in_all_cb), priv);
+    gtk_box_pack_start(GTK_BOX(GTK_DIALOG(window)->vbox), one_in_all_view_button, TRUE, TRUE, 5);
+    area_hbox = gtk_vbox_new(FALSE, 2);
+    g_object_set_data(G_OBJECT(window), "area_hbox", area_hbox);
+    create_themes_buttons_hbox(priv);
     gtk_box_pack_start(GTK_BOX(GTK_DIALOG(window)->vbox),
-                                   hbox, TRUE, TRUE, 5);
+                                   area_hbox, TRUE, TRUE, 0);
 
-    gtk_widget_show (theme_button1);
-    gtk_widget_show (theme_button2);
-    gtk_widget_show (theme_button3);
-    gtk_widget_show (theme_button4);
-    gtk_widget_show_all (hbox);
+    gtk_widget_show (one_in_all_view_button);
+    gtk_widget_show_all (area_hbox);
     gtk_widget_show (window);
     gtk_dialog_add_button(GTK_DIALOG(window), _("About"), GTK_RESPONSE_NO);
 
     result = gtk_dialog_run(GTK_DIALOG(window));
-
+/*
     priv_temp = g_object_get_data(G_OBJECT(theme_button1), "priv");
     if (priv_temp){
         g_free(priv_temp);
@@ -479,7 +533,7 @@ lw_main_settings(Animation_WallpaperPrivate *priv, gpointer data){
         g_free(priv_temp);
         priv_temp =NULL;
     }
-
+*/
 
     switch(result){
         case GTK_RESPONSE_NO:
@@ -489,7 +543,19 @@ 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(1);
+            stop_applet(2);
+            stop_applet(3);
+            stop_applet(4);
+            start_applet(1);
+            start_applet(2);
+            start_applet(3);
+            start_applet(4);
+        }
+    }
     if (window)
         gtk_widget_destroy(window);
 }
@@ -528,7 +594,6 @@ void
 additional_parametr_for_theme_video(GtkWidget *vbox, Animation_WallpaperPrivate *priv){
 
     GtkWidget *file_button;
-    GtkWidget *sound_button;
     GtkWidget *rich_animation_button;
 
     if (priv->theme_string_parametr1)
@@ -549,17 +614,28 @@ additional_parametr_for_theme_video(GtkWidget *vbox, Animation_WallpaperPrivate
                                    rich_animation_button, TRUE, TRUE, 5);
     g_object_set_data(G_OBJECT(priv->window), "rich_animation_button", rich_animation_button);
     /* Create sound button */  
+#if 0
+
+    /* Doesn't work in real device. Hardware volume buttons can to change volume for mutted track */
     sound_button = create_bool_button(priv->theme_bool_parametr1, _("Sound"));
     gtk_box_pack_start(GTK_BOX(vbox),
                                    sound_button, TRUE, TRUE, 5);
     g_object_set_data(G_OBJECT(priv->window), "sound_button", sound_button);
-
-    gtk_widget_show (file_button);
     gtk_widget_show (sound_button);
+#endif
+    gtk_widget_show (file_button);
     gtk_widget_show (rich_animation_button);
 
 }
 /*******************************************************************************/
+void
+show_problem_package (GtkWidget *widget, gchar *package_name){
+    gchar *text;
+    text = g_strdup_printf(_("You haven't got the installed package %s. Please install it via using Application Manager"), package_name);
+    hildon_banner_show_information(GTK_WIDGET(widget), NULL, text);
+    g_free(text);
+}
+/*******************************************************************************/
 void 
 lw_theme_settings(GtkWidget *button, Animation_WallpaperPrivate *priv) {
     gint result;
@@ -570,7 +646,6 @@ lw_theme_settings(GtkWidget *button, Animation_WallpaperPrivate *priv) {
     GtkWidget *category_button;
     GtkWidget *enable_button;
     GtkWidget *vbox;
-    GtkWidget *temp_button;
     GtkWidget *area_vbox;
     GtkWidget *button1 = NULL;
     GtkWidget *rich_animation_button = NULL;
@@ -639,17 +714,39 @@ lw_theme_settings(GtkWidget *button, Animation_WallpaperPrivate *priv) {
                 /* Check Xsnow program */
                 if (!strcmp(hildon_button_get_value(HILDON_BUTTON (theme_button)), _("Xsnow"))){
                     if (access("/usr/bin/xsnow", F_OK) != 0){
-                        hildon_banner_show_information(GTK_WIDGET(button), NULL, 
-                        _("You haven't got the installed package Xsnow. Please install it via using Application Manager"));
+                        show_problem_package(button, "Xsnow");
                         /* if not scuccess exit from wthout saving */ 
                         break;
                     }
                 }
-                /* Check Xsnow program */
-                if (!strcmp(hildon_button_get_value(HILDON_BUTTON (theme_button)), "Sherman's Aquarium")){
+                /* Check Shermans program */
+                if (!strcmp(hildon_button_get_value(HILDON_BUTTON (theme_button)), "Shermans Aquarium")){
                     if (access("/usr/bin/shermans", F_OK) != 0){
-                        hildon_banner_show_information(GTK_WIDGET(button), NULL, 
-                        _("You haven't got the installed package 'Sherman's Aquarium'. Please install it via using Application Manager"));
+                        show_problem_package(button,"'Sherman's Aquarium'");
+                        /* if not scuccess exit from wthout saving */ 
+                        break;
+                    }
+                }
+                /* Check Conky program */
+                if (!strcmp(hildon_button_get_value(HILDON_BUTTON (theme_button)), "Conky")){
+                    if (access("/usr/bin/conky", F_OK) != 0){
+                        show_problem_package(button,"'Conky'");
+                        /* if not scuccess exit from wthout saving */ 
+                        break;
+                    }
+                }
+                /* Check Orrery program */
+                if (!strcmp(hildon_button_get_value(HILDON_BUTTON (theme_button)), "Orrery")){
+                    if (access("/opt/maemo/usr/bin/orrery", F_OK) != 0){
+                        show_problem_package(button,"'Orrery'");
+                        /* if not scuccess exit from wthout saving */ 
+                        break;
+                    }
+                }
+                /* Check Colorflood program */
+                if (!strcmp(hildon_button_get_value(HILDON_BUTTON (theme_button)), "Colorflood")){
+                    if (access("/usr/bin/colorflood", F_OK) != 0){
+                        show_problem_package(button,"'Colorflood'");
                         /* if not scuccess exit from wthout saving */ 
                         break;
                     }
@@ -673,14 +770,15 @@ lw_theme_settings(GtkWidget *button, Animation_WallpaperPrivate *priv) {
                             g_free(priv->theme_string_parametr1);
                         priv->theme_string_parametr1 = g_strdup((gchar*)hildon_button_get_value (HILDON_BUTTON(button1)));
                     }
+                    /* 
                     temp_button = g_object_get_data(G_OBJECT(priv->window), "sound_button");
                     if (temp_button){
-                        /* Check rich animation */
                         if (hildon_check_button_get_active (HILDON_CHECK_BUTTON(temp_button)))
                             priv->theme_bool_parametr1 = TRUE;
                         else
                             priv->theme_bool_parametr1 = FALSE;
                     }
+                    */
                 }
                 /* Check external themes */
                 GSList *store = priv->extheme_list;