From 16be9e9816c2201c049c411572343b0c4c408552 Mon Sep 17 00:00:00 2001 From: Stefano Karapetsas Date: Wed, 5 Sep 2012 17:20:48 +0200 Subject: convert preview settings to gsettings --- src/caja-file-management-properties.c | 85 +++++++++++++++++++++++++++++------ src/file-manager/fm-directory-view.c | 10 +++-- src/file-manager/fm-icon-view.c | 5 ++- 3 files changed, 80 insertions(+), 20 deletions(-) (limited to 'src') diff --git a/src/caja-file-management-properties.c b/src/caja-file-management-properties.c index 2b57f7a6..2fa8f9bb 100644 --- a/src/caja-file-management-properties.c +++ b/src/caja-file-management-properties.c @@ -150,7 +150,7 @@ static const char * const executable_text_values[] = NULL }; -static const guint thumbnail_limit_values[] = +static const guint64 thumbnail_limit_values[] = { 102400, 512000, @@ -791,6 +791,63 @@ bind_builder_enum (GtkBuilder *builder, enum_values, NULL); } +typedef struct { + const guint64 *values; + int n_values; +} UIntEnumBinding; + +static gboolean +uint_enum_get_mapping (GValue *value, + GVariant *variant, + gpointer user_data) +{ + UIntEnumBinding *binding = user_data; + guint64 v; + int i; + + v = g_variant_get_uint64 (variant); + for (i = 0; i < binding->n_values; i++) { + if (binding->values[i] >= v) { + g_value_set_int (value, i); + return TRUE; + } + } + + return FALSE; +} + +static GVariant * +uint_enum_set_mapping (const GValue *value, + const GVariantType *expected_type, + gpointer user_data) +{ + UIntEnumBinding *binding = user_data; + + return g_variant_new_uint64 (binding->values[g_value_get_int (value)]); +} + +static void +bind_builder_uint_enum (GtkBuilder *builder, + GSettings *settings, + const char *widget_name, + const char *prefs, + const guint64 *values, + int n_values) +{ + UIntEnumBinding *binding; + + binding = g_new (UIntEnumBinding, 1); + binding->values = values; + binding->n_values = n_values; + + g_settings_bind_with_mapping (settings, prefs, + gtk_builder_get_object (builder, widget_name), + "active", G_SETTINGS_BIND_DEFAULT, + uint_enum_get_mapping, + uint_enum_set_mapping, + binding, g_free); +} + typedef struct { GtkWidget *button; const char *value; @@ -962,14 +1019,14 @@ caja_file_management_properties_dialog_setup (GtkBuilder *builder, GtkWindow *wi CAJA_FILE_MANAGEMENT_PROPERTIES_PREVIEW_TEXT_WIDGET, CAJA_PREFERENCES_SHOW_TEXT_IN_ICONS, (const char **) preview_values); - eel_preferences_builder_connect_string_enum_combo_box (builder, - CAJA_FILE_MANAGEMENT_PROPERTIES_PREVIEW_IMAGE_WIDGET, - CAJA_PREFERENCES_SHOW_IMAGE_FILE_THUMBNAILS, - (const char **) preview_values); - eel_preferences_builder_connect_string_enum_combo_box (builder, - CAJA_FILE_MANAGEMENT_PROPERTIES_PREVIEW_SOUND_WIDGET, - CAJA_PREFERENCES_PREVIEW_SOUND, - (const char **) preview_values); + bind_builder_enum (builder, caja_preferences, + CAJA_FILE_MANAGEMENT_PROPERTIES_PREVIEW_IMAGE_WIDGET, + CAJA_PREFERENCES_SHOW_IMAGE_FILE_THUMBNAILS, + (const char **) preview_values); + bind_builder_enum (builder, caja_preferences, + CAJA_FILE_MANAGEMENT_PROPERTIES_PREVIEW_SOUND_WIDGET, + CAJA_PREFERENCES_PREVIEW_SOUND, + (const char **) preview_values); bind_builder_enum (builder, caja_preferences, CAJA_FILE_MANAGEMENT_PROPERTIES_PREVIEW_FOLDER_WIDGET, CAJA_PREFERENCES_SHOW_DIRECTORY_ITEM_COUNTS, @@ -988,11 +1045,11 @@ caja_file_management_properties_dialog_setup (GtkBuilder *builder, GtkWindow *wi CAJA_PREFERENCES_EXECUTABLE_TEXT_ACTIVATION, (const char **) executable_text_values); - eel_preferences_builder_connect_uint_enum (builder, - CAJA_FILE_MANAGEMENT_PROPERTIES_THUMBNAIL_LIMIT_WIDGET, - CAJA_PREFERENCES_IMAGE_FILE_THUMBNAIL_LIMIT, - (const guint *) thumbnail_limit_values, - G_N_ELEMENTS (thumbnail_limit_values)); + bind_builder_uint_enum (builder, caja_preferences, + CAJA_FILE_MANAGEMENT_PROPERTIES_THUMBNAIL_LIMIT_WIDGET, + CAJA_PREFERENCES_IMAGE_FILE_THUMBNAIL_LIMIT, + thumbnail_limit_values, + G_N_ELEMENTS (thumbnail_limit_values)); caja_file_management_properties_dialog_setup_icon_caption_page (builder); caja_file_management_properties_dialog_setup_list_column_page (builder); diff --git a/src/file-manager/fm-directory-view.c b/src/file-manager/fm-directory-view.c index c12cb3aa..a678ec88 100644 --- a/src/file-manager/fm-directory-view.c +++ b/src/file-manager/fm-directory-view.c @@ -2043,8 +2043,10 @@ fm_directory_view_init (FMDirectoryView *view) schedule_update_menus_callback, view); eel_preferences_add_callback (CAJA_PREFERENCES_ICON_VIEW_CAPTIONS, text_attribute_names_changed_callback, view); - eel_preferences_add_callback (CAJA_PREFERENCES_SHOW_IMAGE_FILE_THUMBNAILS, - image_display_policy_changed_callback, view); + g_signal_connect_swapped (caja_preferences, + "changed::" CAJA_PREFERENCES_SHOW_IMAGE_FILE_THUMBNAILS, + G_CALLBACK (image_display_policy_changed_callback), + view); g_signal_connect_swapped (caja_preferences, "changed::" CAJA_PREFERENCES_CLICK_POLICY, G_CALLBACK(click_policy_changed_callback), @@ -2176,8 +2178,8 @@ fm_directory_view_finalize (GObject *object) schedule_update_menus_callback, view); eel_preferences_remove_callback (CAJA_PREFERENCES_ICON_VIEW_CAPTIONS, text_attribute_names_changed_callback, view); - eel_preferences_remove_callback (CAJA_PREFERENCES_SHOW_IMAGE_FILE_THUMBNAILS, - image_display_policy_changed_callback, view); + g_signal_handlers_disconnect_by_func (caja_preferences, + image_display_policy_changed_callback, view); g_signal_handlers_disconnect_by_func (caja_preferences, click_policy_changed_callback, view); g_signal_handlers_disconnect_by_func (caja_preferences, diff --git a/src/file-manager/fm-icon-view.c b/src/file-manager/fm-icon-view.c index 5ecf6e8c..d5ab000e 100644 --- a/src/file-manager/fm-icon-view.c +++ b/src/file-manager/fm-icon-view.c @@ -3283,8 +3283,9 @@ fm_icon_view_init (FMIconView *icon_view) if (!setup_sound_preview) { - eel_preferences_add_auto_enum (CAJA_PREFERENCES_PREVIEW_SOUND, - &preview_sound_auto_value); + eel_g_settings_add_auto_enum (caja_preferences, + CAJA_PREFERENCES_PREVIEW_SOUND, + &preview_sound_auto_value); setup_sound_preview = TRUE; } -- cgit v1.2.1