diff pidgin-twitter.c @ 153:07cedffb1c63

implemented UI for configuring icon update.
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Fri, 25 Jul 2008 16:53:43 +0900
parents 588da540685a
children d6ecbdee0afa
line wrap: on
line diff
--- a/pidgin-twitter.c	Fri Jul 25 07:05:04 2008 +0900
+++ b/pidgin-twitter.c	Fri Jul 25 16:53:43 2008 +0900
@@ -1809,7 +1809,7 @@
 
     size = purple_prefs_get_int(OPT_ICON_SIZE);
     if(size == 0)
-        size = 48; /* twitter icon size */
+        size = DEFAULT_ICON_SIZE;
 
     dest = gdk_pixbuf_scale_simple(src, size, size, GDK_INTERP_HYPER);
     gdk_pixbuf_unref (src);
@@ -2562,6 +2562,9 @@
     gchar *filename;
     GtkWidget *window, *notebook, *e;
     const gchar *text;
+    GtkSpinButton *spin;
+    GtkObject *adjust;
+    gint value;
 
     builder = gtk_builder_new();
 
@@ -2587,11 +2590,13 @@
 
     gtk_container_remove(GTK_CONTAINER(window), notebook);
 
-    g_signal_connect(notebook, "destroy",
-                     G_CALLBACK(gtk_widget_destroyed), &notebook);
+//    g_signal_connect(notebook, "destroy",
+//                     G_CALLBACK(gtk_widget_destroyed), &notebook);
+
 
     /* connect to signals */
 
+
     /* account page */
     e = GTK_WIDGET(gtk_builder_get_object (builder, "account_twitter"));
     g_object_set_data(G_OBJECT(e), "pref", OPT_SCREEN_NAME_TWITTER);
@@ -2658,8 +2663,11 @@
     g_signal_connect(e, "toggled",
                      G_CALLBACK(bool_toggled_cb), &e);
 
-    /* utility page */
-    e = GTK_WIDGET(gtk_builder_get_object (builder, "utility_show_icon"));
+
+
+
+    /* icon page */
+    e = GTK_WIDGET(gtk_builder_get_object (builder, "icon_show_icon"));
     g_object_set_data(G_OBJECT(e), "pref", OPT_SHOW_ICON);
     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(e),
                                  purple_prefs_get_bool(OPT_SHOW_ICON));
@@ -2667,15 +2675,15 @@
                      G_CALLBACK(bool_toggled_cb), &e);
 
     /* setup spin */
-    e = GTK_WIDGET(gtk_builder_get_object (builder, "utility_icon_size_spin"));
+    e = GTK_WIDGET(gtk_builder_get_object (builder, "icon_icon_size_spin"));
     g_object_set_data(G_OBJECT(e), "pref", OPT_ICON_SIZE);
 
-    GtkSpinButton *spin = GTK_SPIN_BUTTON(e);
-
-    int value = purple_prefs_get_int(OPT_ICON_SIZE);
+    spin = GTK_SPIN_BUTTON(e);
+
+    value = purple_prefs_get_int(OPT_ICON_SIZE);
     twitter_debug("spin value = %d\n", value);
 
-	GtkObject *adjust = gtk_adjustment_new(value, 16, 128, 4, 1, 1);
+	adjust = gtk_adjustment_new(value, 16, 128, 4, 1, 1);
     gtk_spin_button_set_adjustment(spin, GTK_ADJUSTMENT(adjust));
     gtk_widget_set_size_request(GTK_WIDGET(spin), 50, -1);
 
@@ -2689,37 +2697,58 @@
     purple_prefs_connect_callback(plugin, OPT_ICON_SIZE,
                                   icon_size_prefs_cb, NULL);
 
-
-
-    e = GTK_WIDGET(gtk_builder_get_object (builder, "utility_counter"));
-    g_object_set_data(G_OBJECT(e), "pref", OPT_COUNTER);
+    /* enable update */
+    e = GTK_WIDGET(gtk_builder_get_object (builder, "icon_enable_update"));
+    g_object_set_data(G_OBJECT(e), "pref", OPT_UPDATE_ICON);
     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(e),
-                                 purple_prefs_get_bool(OPT_COUNTER));
+                                 purple_prefs_get_bool(OPT_UPDATE_ICON));
     g_signal_connect(e, "toggled",
                      G_CALLBACK(bool_toggled_cb), &e);
-    purple_prefs_connect_callback(plugin, OPT_COUNTER, /* xxx */
-                                  counter_prefs_cb, NULL);
-
-    e = GTK_WIDGET(gtk_builder_get_object (builder, "utility_pseudo"));
-    g_object_set_data(G_OBJECT(e), "pref", OPT_ESCAPE_PSEUDO);
-    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(e),
-                                 purple_prefs_get_bool(OPT_ESCAPE_PSEUDO));
-    g_signal_connect(e, "toggled",
-                     G_CALLBACK(bool_toggled_cb), &e);
-
-    e = GTK_WIDGET(gtk_builder_get_object (builder, "utility_oops"));
-    g_object_set_data(G_OBJECT(e), "pref", OPT_SUPPRESS_OOPS);
-    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(e),
-                                 purple_prefs_get_bool(OPT_SUPPRESS_OOPS));
-    g_signal_connect(e, "toggled",
-                     G_CALLBACK(bool_toggled_cb), &e);
-
-    e = GTK_WIDGET(gtk_builder_get_object (builder, "utility_notify"));
-    g_object_set_data(G_OBJECT(e), "pref", OPT_PREVENT_NOTIFICATION);
-    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(e),
-                                 purple_prefs_get_bool(OPT_PREVENT_NOTIFICATION));
-    g_signal_connect(e, "toggled",
-                     G_CALLBACK(bool_toggled_cb), &e);
+
+    /* setup count spin */
+    e = GTK_WIDGET(gtk_builder_get_object (builder, "icon_max_count_spin"));
+    g_object_set_data(G_OBJECT(e), "pref", OPT_ICON_MAX_COUNT);
+
+    spin = GTK_SPIN_BUTTON(e);
+
+    value = purple_prefs_get_int(OPT_ICON_MAX_COUNT);
+    twitter_debug("spin value = %d\n", value);
+
+	adjust = gtk_adjustment_new(value, 2, 10000, 1, 10, 10);
+    gtk_spin_button_set_adjustment(spin, GTK_ADJUSTMENT(adjust));
+    gtk_widget_set_size_request(GTK_WIDGET(spin), 50, -1);
+
+    if(value == 0) {
+        value = DEFAULT_ICON_MAX_COUNT;
+        purple_prefs_set_int(OPT_ICON_MAX_COUNT, value);
+    }
+    gtk_spin_button_set_value(GTK_SPIN_BUTTON(e), (gdouble)value);
+    g_signal_connect(e, "value-changed",
+                     G_CALLBACK(spin_changed_cb), &e);
+
+
+    /* setup days spin */
+    e = GTK_WIDGET(gtk_builder_get_object (builder, "icon_max_days_spin"));
+    g_object_set_data(G_OBJECT(e), "pref", OPT_ICON_MAX_DAYS);
+
+    spin = GTK_SPIN_BUTTON(e);
+
+    value = purple_prefs_get_int(OPT_ICON_MAX_DAYS);
+    twitter_debug("spin value = %d\n", value);
+
+	adjust = gtk_adjustment_new(value, 1, 180, 1, 10, 10);
+    gtk_spin_button_set_adjustment(spin, GTK_ADJUSTMENT(adjust));
+    gtk_widget_set_size_request(GTK_WIDGET(spin), 50, -1);
+
+    if(value == 0) {
+        value = DEFAULT_ICON_MAX_DAYS;
+        purple_prefs_set_int(OPT_ICON_MAX_DAYS, value);
+    }
+    gtk_spin_button_set_value(GTK_SPIN_BUTTON(e), (gdouble)value);
+    g_signal_connect(e, "value-changed",
+                     G_CALLBACK(spin_changed_cb), &e);
+
+
 
 
     /* sound page */
@@ -2770,6 +2799,43 @@
                      G_CALLBACK(combo_changed_cb), &e);
 
 
+
+
+
+    /* utility page */
+    e = GTK_WIDGET(gtk_builder_get_object (builder, "utility_counter"));
+    g_object_set_data(G_OBJECT(e), "pref", OPT_COUNTER);
+    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(e),
+                                 purple_prefs_get_bool(OPT_COUNTER));
+    g_signal_connect(e, "toggled",
+                     G_CALLBACK(bool_toggled_cb), &e);
+    purple_prefs_connect_callback(plugin, OPT_COUNTER, /* xxx */
+                                  counter_prefs_cb, NULL);
+
+    e = GTK_WIDGET(gtk_builder_get_object (builder, "utility_pseudo"));
+    g_object_set_data(G_OBJECT(e), "pref", OPT_ESCAPE_PSEUDO);
+    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(e),
+                                 purple_prefs_get_bool(OPT_ESCAPE_PSEUDO));
+    g_signal_connect(e, "toggled",
+                     G_CALLBACK(bool_toggled_cb), &e);
+
+    e = GTK_WIDGET(gtk_builder_get_object (builder, "utility_oops"));
+    g_object_set_data(G_OBJECT(e), "pref", OPT_SUPPRESS_OOPS);
+    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(e),
+                                 purple_prefs_get_bool(OPT_SUPPRESS_OOPS));
+    g_signal_connect(e, "toggled",
+                     G_CALLBACK(bool_toggled_cb), &e);
+
+    e = GTK_WIDGET(gtk_builder_get_object (builder, "utility_notify"));
+    g_object_set_data(G_OBJECT(e), "pref", OPT_PREVENT_NOTIFICATION);
+    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(e),
+                                 purple_prefs_get_bool(OPT_PREVENT_NOTIFICATION));
+    g_signal_connect(e, "toggled",
+                     G_CALLBACK(bool_toggled_cb), &e);
+
+
+
+
     gtk_widget_show_all(notebook);
     return notebook;
 }
@@ -2836,20 +2902,19 @@
     purple_prefs_add_bool(OPT_COUNTER, TRUE);
     purple_prefs_add_bool(OPT_SUPPRESS_OOPS, TRUE);
     purple_prefs_add_bool(OPT_PREVENT_NOTIFICATION, FALSE);
-    purple_prefs_add_bool(OPT_SHOW_ICON, TRUE);
 
     purple_prefs_add_bool(OPT_API_BASE_POST, FALSE);
+    purple_prefs_add_int(OPT_API_BASE_GET_INTERVAL, TWITTER_DEFAULT_INTERVAL);
     purple_prefs_add_string(OPT_SCREEN_NAME_TWITTER, EMPTY);
     purple_prefs_add_string(OPT_PASSWORD_TWITTER, EMPTY);
-
-    purple_prefs_add_int(OPT_ICON_SIZE, DEFAULT_ICON_SIZE);
     purple_prefs_add_string(OPT_SCREEN_NAME_WASSR, EMPTY);
     purple_prefs_add_string(OPT_SCREEN_NAME_IDENTICA, EMPTY);
-    purple_prefs_add_int(OPT_API_BASE_GET_INTERVAL, TWITTER_DEFAULT_INTERVAL);
-
+
+    purple_prefs_add_bool(OPT_SHOW_ICON, TRUE);
+    purple_prefs_add_int(OPT_ICON_SIZE, DEFAULT_ICON_SIZE);
+    purple_prefs_add_bool(OPT_UPDATE_ICON, TRUE);
     purple_prefs_add_int(OPT_ICON_MAX_COUNT, DEFAULT_ICON_MAX_COUNT);
     purple_prefs_add_int(OPT_ICON_MAX_DAYS, DEFAULT_ICON_MAX_DAYS);
-
 }
 
 PURPLE_INIT_PLUGIN(pidgin_twitter, init_plugin, info)