[Goodies-commits] r6434 - in sion/trunk: . src
Enrico Troeger
enrico at xfce.org
Mon Jan 12 00:08:36 CET 2009
Author: enrico
Date: 2009-01-11 23:08:36 +0000 (Sun, 11 Jan 2009)
New Revision: 6434
Modified:
sion/trunk/ChangeLog
sion/trunk/src/bookmarkdialog.c
sion/trunk/src/preferencesdialog.c
sion/trunk/src/settings.c
sion/trunk/src/window.c
Log:
Make bookmark auto connect interval configurable.
Modified: sion/trunk/ChangeLog
===================================================================
--- sion/trunk/ChangeLog 2009-01-11 17:21:00 UTC (rev 6433)
+++ sion/trunk/ChangeLog 2009-01-11 23:08:36 UTC (rev 6434)
@@ -3,6 +3,9 @@
* src/backendgvfs.c:
Fix crashes with older GVFS versions
(#4794, patch by Colin Leroy, thanks).
+ * src/bookmarkdialog.c, src/preferencesdialog.c, src/settings.c,
+ src/window.c:
+ Make bookmark auto connect interval configurable.
2009-01-10 Enrico Tröger <enrico(at)xfce(dot)org>
Modified: sion/trunk/src/bookmarkdialog.c
===================================================================
--- sion/trunk/src/bookmarkdialog.c 2009-01-11 17:21:00 UTC (rev 6433)
+++ sion/trunk/src/bookmarkdialog.c 2009-01-11 23:08:36 UTC (rev 6434)
@@ -161,6 +161,7 @@
update_row_in_model(SION_BOOKMARK_DIALOG(dialog), &iter, bm);
sion_window_update_bookmarks(SION_WINDOW(priv->parent));
+ sion_window_do_autoconnect(SION_WINDOW(priv->parent));
}
gtk_widget_destroy(edit_dialog);
}
Modified: sion/trunk/src/preferencesdialog.c
===================================================================
--- sion/trunk/src/preferencesdialog.c 2009-01-11 17:21:00 UTC (rev 6433)
+++ sion/trunk/src/preferencesdialog.c 2009-01-11 23:08:36 UTC (rev 6434)
@@ -301,10 +301,38 @@
}
+static void spin_value_changed_cb(GtkSpinButton *spin, SionSettings *settings)
+{
+ gint interval = gtk_spin_button_get_value_as_int(spin);
+ const gchar *property = g_object_get_data(G_OBJECT(spin), "property");
+
+ g_object_set(settings, property, interval, NULL);
+}
+
+
+static GtkWidget *add_spinbutton(SionSettings *settings, const gchar *property)
+{
+ GtkWidget *widget;
+ gint timeout;
+
+ widget = gtk_spin_button_new_with_range(0, G_MAXUINT, 1);
+ g_object_get(settings, property, &timeout, NULL);
+
+ gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget), timeout);
+
+ g_object_set_data(G_OBJECT(widget), "property", (gpointer) property);
+ g_signal_connect(widget, "activate", G_CALLBACK(spin_value_changed_cb), settings);
+ g_signal_connect(widget, "value-changed", G_CALLBACK(spin_value_changed_cb), settings);
+
+ return widget;
+}
+
+
static void set_settings(SionPreferencesDialog *dialog, SionSettings *settings)
{
GtkWidget *frame_vbox, *notebook_vbox, *vbox, *hbox, *notebook;
- GtkWidget *radio1, *radio2, *checkbox, *combo, *entry, *combo_toolbar_style, *combo_toolbar_orient;
+ GtkWidget *radio1, *radio2, *checkbox, *combo, *entry, *combo_toolbar_style;
+ GtkWidget *combo_toolbar_orient, *spinbutton;
GtkWidget *label1, *label2, *label3, *label4, *label_volman, *image;
GSList *rlist;
GtkSizeGroup *sg;
@@ -348,6 +376,19 @@
gtk_box_pack_start(GTK_BOX(hbox), entry, FALSE, FALSE, 0);
entry_check_input(GTK_ENTRY(entry));
+ hbox = gtk_hbox_new(FALSE, 6);
+ gtk_box_pack_start(GTK_BOX(frame_vbox), hbox, FALSE, FALSE, 0);
+
+ label1 = gtk_label_new_with_mnemonic(_("_Bookmark Auto-Connect Interval"));
+ gtk_misc_set_alignment(GTK_MISC(label1), 0.0f, 0.5f);
+ gtk_box_pack_start(GTK_BOX(hbox), label1, FALSE, FALSE, 0);
+
+ spinbutton = add_spinbutton(settings, "autoconnect-interval");
+ gtk_widget_set_tooltip_text(spinbutton,
+ _("How often to try auto connecting bookmarks, in seconds. Zero disables checking."));
+ gtk_label_set_mnemonic_widget(GTK_LABEL(label1), spinbutton);
+ gtk_box_pack_start(GTK_BOX(hbox), spinbutton, FALSE, FALSE, 10);
+
gtk_box_pack_start(GTK_BOX(frame_vbox), gtk_label_new(""), FALSE, FALSE, 0);
label_volman = gtk_label_new(_("The HAL based volume manager implementation requires the tool 'gnome-mount' to mount local resources like disks. The Unix based volume manager implementation can mount such resources directly and also lists other local devices.\nIf you are unsure, use the HAL based monitor."));
Modified: sion/trunk/src/settings.c
===================================================================
--- sion/trunk/src/settings.c 2009-01-11 17:21:00 UTC (rev 6433)
+++ sion/trunk/src/settings.c 2009-01-11 23:08:36 UTC (rev 6434)
@@ -47,6 +47,7 @@
gint view_mode;
gchar *file_manager;
+ gint autoconnect_interval;
gchar *vm_impl; // GVolumeMonitor implementation to use
gint *geometry; // window size and position, field 4 is a flag for maximized state
@@ -63,11 +64,16 @@
#define SECTION_GENERAL "general"
#define SECTION_UI "ui"
+/* default values */
+#define DEFAULT_AUTOCONNECT_INTERVAL 60
+#define DEFAULT_VM_IMPL "hal"
+
enum
{
PROP_0,
PROP_FILE_MANAGER,
+ PROP_AUTOCONNECT_INTERVAL,
PROP_SAVE_GEOMETRY,
PROP_SHOW_TRAYICON,
@@ -77,6 +83,7 @@
PROP_VIEW_MODE
};
+
GType sion_settings_get_type(void)
{
static GType self_type = 0;
@@ -131,6 +138,9 @@
g_free(priv->file_manager);
priv->file_manager = g_value_dup_string(value);
break;
+ case PROP_AUTOCONNECT_INTERVAL:
+ priv->autoconnect_interval = g_value_get_int(value);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
break;
@@ -165,6 +175,11 @@
case PROP_FILE_MANAGER:
g_value_set_string(value, priv->file_manager);
break;
+ case PROP_AUTOCONNECT_INTERVAL:
+ if (priv->autoconnect_interval < 0)
+ g_object_set(object, "autoconnect-interval", DEFAULT_AUTOCONNECT_INTERVAL, NULL);
+ g_value_set_int(value, priv->autoconnect_interval);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
break;
@@ -238,6 +253,14 @@
"A program for use to open mount points",
NULL,
G_PARAM_READWRITE));
+ g_object_class_install_property(gobject_class,
+ PROP_AUTOCONNECT_INTERVAL,
+ g_param_spec_int(
+ "autoconnect-interval",
+ "autoconnect-interval",
+ "Autoconnect interval",
+ 0, G_MAXINT, 0,
+ G_PARAM_READWRITE));
}
@@ -351,6 +374,7 @@
g_key_file_set_string(k, SECTION_GENERAL, "vm_impl", priv->vm_impl);
if (priv->file_manager != NULL)
g_key_file_set_string(k, SECTION_GENERAL, "file_manager", priv->file_manager);
+ g_key_file_set_integer(k, SECTION_GENERAL, "autoconnect_interval", priv->autoconnect_interval);
if (priv->geometry != NULL)
g_key_file_set_integer_list(k, SECTION_UI, "geometry", priv->geometry, 5);
@@ -437,7 +461,6 @@
{
GKeyFile *k;
GError *error = NULL;
- const gchar *default_vm_impl = "hal";
gsize i;
k = g_key_file_new();
@@ -448,8 +471,10 @@
error = NULL;
}
- priv->vm_impl = get_setting_string(k, SECTION_GENERAL, "vm_impl", default_vm_impl);
+ priv->vm_impl = get_setting_string(k, SECTION_GENERAL, "vm_impl", DEFAULT_VM_IMPL);
priv->file_manager = get_setting_string(k, SECTION_GENERAL, "file_manager", "gvfs-open");
+ priv->autoconnect_interval = get_setting_int(k, SECTION_GENERAL, "autoconnect_interval",
+ DEFAULT_AUTOCONNECT_INTERVAL);
priv->save_geometry = get_setting_boolean(k, SECTION_UI, "save_geometry", TRUE);
priv->show_trayicon = get_setting_boolean(k, SECTION_UI, "show_trayicon", TRUE);
Modified: sion/trunk/src/window.c
===================================================================
--- sion/trunk/src/window.c 2009-01-11 17:21:00 UTC (rev 6433)
+++ sion/trunk/src/window.c 2009-01-11 23:08:36 UTC (rev 6434)
@@ -73,6 +73,8 @@
GtkWidget *toolbar;
GtkStatusIcon *trayicon;
GtkWidget *trayicon_popup_menu;
+
+ guint autoconnect_timeout_id;
};
enum
@@ -136,11 +138,25 @@
}
+static void remove_autoconnect_timeout(SionWindow *window)
+{
+ SionWindowPrivate *priv = SION_WINDOW_GET_PRIVATE(window);
+
+ if (priv->autoconnect_timeout_id != (guint) -1)
+ {
+ g_source_remove(priv->autoconnect_timeout_id);
+ priv->autoconnect_timeout_id = (guint) -1;
+ }
+}
+
+
static gboolean sion_window_delete_event(GtkWidget *widget, G_GNUC_UNUSED GdkEventAny *event)
{
SionWindowPrivate *priv = SION_WINDOW_GET_PRIVATE(widget);
gint geo[5];
+ remove_autoconnect_timeout(SION_WINDOW(widget));
+
if (sion_settings_get_boolean(priv->settings, "save-geometry"))
{
gtk_window_get_position(GTK_WINDOW(widget), &geo[0], &geo[1]);
@@ -334,6 +350,7 @@
dialog = sion_preferences_dialog_new(GTK_WINDOW(window), priv->settings);
gtk_dialog_run(GTK_DIALOG(dialog));
+ sion_window_do_autoconnect(window);
gtk_widget_destroy(dialog);
}
@@ -735,12 +752,30 @@
gboolean sion_window_do_autoconnect(gpointer data)
{
- static gboolean timeout_added = FALSE;
SionWindow *window = SION_WINDOW(data);
SionWindowPrivate *priv = SION_WINDOW_GET_PRIVATE(window);
SionBookmarkList *bookmarks = sion_settings_get_bookmarks(priv->settings);
+ static gint old_interval = -1;
+ gint interval;
guint i;
+ interval = sion_settings_get_integer(priv->settings, "autoconnect-interval");
+ if (old_interval != interval)
+ {
+ if (priv->autoconnect_timeout_id != (guint) -1)
+ remove_autoconnect_timeout(window);
+
+ priv->autoconnect_timeout_id = g_timeout_add_seconds(
+ interval, sion_window_do_autoconnect, data);
+ old_interval = interval;
+ }
+
+ if (interval == 0)
+ {
+ remove_autoconnect_timeout(window);
+ return FALSE;
+ }
+
for (i = 0; i < bookmarks->len; i++)
{
SionBookmark *bm = g_ptr_array_index(bookmarks, i);
@@ -749,12 +784,6 @@
mount_from_bookmark(window, bm);
}
}
-
- if (! timeout_added)
- {
- g_timeout_add_seconds(60, sion_window_do_autoconnect, data);
- timeout_added = TRUE;
- }
return TRUE;
}
@@ -1118,6 +1147,8 @@
GtkUIManager *ui_manager;
SionWindowPrivate *priv = SION_WINDOW_GET_PRIVATE(window);
+ priv->autoconnect_timeout_id = (guint) -1;
+
gtk_window_set_title(GTK_WINDOW(window), _("Sion"));
gtk_window_set_icon_name(GTK_WINDOW(window), sion_window_get_icon_name());
gtk_window_set_default_size(GTK_WINDOW(window), 550, 350);
More information about the Goodies-commits
mailing list