From: tanya Date: Mon, 19 Jul 2010 11:57:18 +0000 (+0300) Subject: modified start settings and read and save config X-Git-Url: https://vcs.maemo.org/git/?a=commitdiff_plain;h=ad784a71dd2701e6065c3f5d76a80d428ab2ba4c;p=livewp modified start settings and read and save config --- diff --git a/applet/src/livewp-common.h b/applet/src/livewp-common.h index 0b0acf6..a50aeab 100644 --- a/applet/src/livewp-common.h +++ b/applet/src/livewp-common.h @@ -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; diff --git a/applet/src/livewp-config.c b/applet/src/livewp-config.c index b9ab3d8..8c2fcb6 100644 --- a/applet/src/livewp-config.c +++ b/applet/src/livewp-config.c @@ -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; + } } diff --git a/applet/src/livewp-config.h b/applet/src/livewp-config.h index 54082cb..06c8411 100644 --- a/applet/src/livewp-config.h +++ b/applet/src/livewp-config.h @@ -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 diff --git a/applet/src/livewp-home-widget.c b/applet/src/livewp-home-widget.c index 08412f3..356f69b 100644 --- a/applet/src/livewp-home-widget.c +++ b/applet/src/livewp-home-widget.c @@ -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 */ diff --git a/applet/src/livewp-settings.c b/applet/src/livewp-settings.c index 109af6b..f0ae29a 100644 --- a/applet/src/livewp-settings.c +++ b/applet/src/livewp-settings.c @@ -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"); diff --git a/applet/src/livewp-settings.h b/applet/src/livewp-settings.h index 34b3920..1e37988 100644 --- a/applet/src/livewp-settings.h +++ b/applet/src/livewp-settings.h @@ -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);