fixed gcc warnings
[livewp] / applet / src / livewp-settings.c
index 27e3ceb..5a515e9 100644 (file)
@@ -40,7 +40,7 @@ Copyright(c) 2010 for design themes Berlin and Modern Vasya Bobrikov\n \
 Copyright(c) 2010 for design theme Matrix Andrew Zhilin\n \
 Translators:\n \
 Finnish - Marko Vertainen\n \
-Russian - Tanya Makova \n
+Russian - Tanya Makova \n \
           Vlad Vasiliev\n")); 
     gtk_box_pack_start (GTK_BOX (vbox), label_about, FALSE, FALSE, 0);
     gtk_box_pack_start(GTK_BOX(GTK_DIALOG(window)->vbox),
@@ -101,7 +101,17 @@ create_rich_animation_button (gboolean active)
     GtkWidget *button;
     button = hildon_check_button_new (HILDON_SIZE_AUTO);
     gtk_button_set_label (GTK_BUTTON (button), _("Rich Animation"));
-    hildon_check_button_set_active(button, active);
+    hildon_check_button_set_active(HILDON_CHECK_BUTTON(button), active);
+    return button;
+}
+/*******************************************************************************/
+GtkWidget *
+create_enable_button (gboolean active)
+{
+    GtkWidget *button;
+    button = hildon_check_button_new (HILDON_SIZE_AUTO);
+    gtk_button_set_label (GTK_BUTTON (button), _("Enable"));
+    hildon_check_button_set_active(HILDON_CHECK_BUTTON(button), active);
     return button;
 }
 
@@ -117,6 +127,7 @@ lw_settings(Animation_WallpaperPrivate *priv, gpointer data){
     GtkWidget *window = NULL;
     GtkWidget *save_button;
     GtkWidget *theme_button;
+    GtkWidget *enable_button;
     GtkWidget *rich_animation_button;
 
     window = gtk_dialog_new();
@@ -124,6 +135,10 @@ lw_settings(Animation_WallpaperPrivate *priv, gpointer data){
     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()); 
+    gtk_box_pack_start(GTK_BOX(GTK_DIALOG(window)->vbox),
+                                   enable_button, TRUE, TRUE, 5);
     /* Create Theme button */
     theme_button = create_themes_button(priv->theme);
     gtk_box_pack_start(GTK_BOX(GTK_DIALOG(window)->vbox),
@@ -132,6 +147,7 @@ lw_settings(Animation_WallpaperPrivate *priv, gpointer data){
     rich_animation_button = create_rich_animation_button(priv->rich_animation);
     gtk_box_pack_start(GTK_BOX(GTK_DIALOG(window)->vbox),
                                    rich_animation_button, TRUE, TRUE, 5);
+    gtk_widget_show (enable_button);
     gtk_widget_show (theme_button);
     gtk_widget_show (rich_animation_button);
     gtk_widget_show (window);
@@ -141,6 +157,7 @@ lw_settings(Animation_WallpaperPrivate *priv, gpointer data){
 
     switch(result){
         case GTK_RESPONSE_YES:
+            /* Check theme */
             if (hildon_button_get_value(HILDON_BUTTON (theme_button))){
                 if (priv->theme)
                     g_free(priv->theme);
@@ -150,17 +167,28 @@ lw_settings(Animation_WallpaperPrivate *priv, gpointer data){
                     priv->theme = g_strdup("Modern");
                 if (!strcmp(hildon_button_get_value(HILDON_BUTTON (theme_button)), _("Matrix")))
                     priv->theme = g_strdup("Matrix");
-                if (hildon_check_button_get_active (rich_animation_button))
-                    priv->rich_animation = TRUE;
-                else
-                    priv->rich_animation = FALSE;
             }
+            /* Check rich animation */
+            if (hildon_check_button_get_active (HILDON_CHECK_BUTTON(rich_animation_button)))
+                priv->rich_animation = TRUE;
+            else
+                priv->rich_animation = FALSE;
+            /* Save config */
             save_config(priv);
-            send_dbus_signal (priv,
+            /* action with applet */
+            if (hildon_check_button_get_active (HILDON_CHECK_BUTTON(enable_button))){
+                    if (!check_applet_state())
+                        start_applet();
+                    else
+                        send_dbus_signal (priv,
                               LIVEWP_SIGNAL_INTERFACE,
                               LIVEWP_SIGNAL_PATH,
                               LIVEWP_RELOAD_CONFIG);
-        break;
+            }else
+                    if (check_applet_state())
+                        stop_applet();
+
+            break;
         default:
         case GTK_RESPONSE_OK:
         break;
@@ -173,4 +201,70 @@ lw_settings(Animation_WallpaperPrivate *priv, gpointer data){
     if (window)
         gtk_widget_destroy(window);
 }
+/*******************************************************************************/
+gboolean
+check_applet_state(void){
+    FILE    *file_in;
+    gchar buffer[2048];
+    gboolean result = FALSE;
 
+    file_in = fopen("/home/user/.config/hildon-desktop/home.plugins","r");
+    while (!feof(file_in)) {
+            memset(buffer, 0, sizeof(buffer));
+            fgets(buffer, sizeof(buffer) - 1, file_in);
+            if (!strcmp(buffer, 
+                        "X-Desktop-File=/usr/share/applications/hildon-home/livewp-home-widget.desktop\n")){
+                result = TRUE;
+                break;
+            }
+   }
+   fclose(file_in);
+
+    return result;
+}
+/*******************************************************************************/
+void
+start_applet(void){
+    FILE    *file_out;
+
+    file_out = fopen("/home/user/.config/hildon-desktop/home.plugins","w+");
+    if (file_out){
+        fputs("\n", file_out);
+        fputs("[livewp-home-widget.desktop-0]\n",file_out);
+        fputs("X-Desktop-File=/usr/share/applications/hildon-home/livewp-home-widget.desktop\n",file_out);
+        fclose(file_out);
+    }
+}
+/*******************************************************************************/
+void
+stop_applet(void){
+    FILE    *file_in;
+    FILE    *file_out;
+    gchar buffer[2048];
+
+    file_in = fopen("/home/user/.config/hildon-desktop/home.plugins","r");
+    file_out = fopen("/tmp/livewallpaper.plugins","w");
+    if (file_in && file_out){
+        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") &&
+                strcmp(buffer, "X-Desktop-File=/usr/share/applications/hildon-home/livewp-home-widget.desktop\n"))
+                fputs(buffer, file_out);
+        }
+        fclose(file_out);
+        fclose(file_in);
+        file_in = fopen("/tmp/livewallpaper.plugins","r");
+        file_out = fopen("/home/user/.config/hildon-desktop/home.plugins","w");
+        if (file_in && file_out){
+            while (!feof(file_in)){
+                memset(buffer, 0, sizeof(buffer));
+                fgets(buffer, sizeof(buffer) - 1, file_in);
+                fputs(buffer, file_out);
+            }
+            fclose(file_out);
+            fclose(file_in);
+            unlink ("/tmp/livewallpaper.plugins");
+        }
+    }
+}