summaryrefslogtreecommitdiff
path: root/src/nautilus-preferences-window.c
diff options
context:
space:
mode:
authorvyasgiridhar <vyasgiridhar27@gmail.com>2017-02-25 23:24:35 +0530
committerCarlos Soriano <csoriano@localhost.localdomain>2017-08-17 15:54:27 +0200
commit611f381d561024b0a590237c31fc0612e6698530 (patch)
tree8fb99f77fff3526016489159de9ff7449e709d3b /src/nautilus-preferences-window.c
parent33694f0e17b81d509f77a1236e3a90ab8277551e (diff)
downloadnautilus-611f381d561024b0a590237c31fc0612e6698530.tar.gz
preferences-window: Use spin button for thumbnail limit
File sizes (especially compressed images) are arbitrary values that are highly dependant on the camera resolution, and contents of the image. Therefore it does not make sense to have this be a drop-down with preset hard-coded values: A 21MP camera often produces 12MB images... but the only option is 10MB, or 100MB. This commit changes the combobox in the preferences to a spinbutton and changes the signal handler for thumbnail-limit. The value is in MB, with a maximum of 4096 and a minimum of 1. https://bugzilla.gnome.org/show_bug.cgi?id=779165
Diffstat (limited to 'src/nautilus-preferences-window.c')
-rw-r--r--src/nautilus-preferences-window.c95
1 files changed, 34 insertions, 61 deletions
diff --git a/src/nautilus-preferences-window.c b/src/nautilus-preferences-window.c
index 0e4a5a413..9116692cd 100644
--- a/src/nautilus-preferences-window.c
+++ b/src/nautilus-preferences-window.c
@@ -64,7 +64,7 @@
/* int enums */
#define NAUTILUS_PREFERENCES_DIALOG_THUMBNAIL_LIMIT_WIDGET \
- "preview_image_size_combobox"
+ "preview_image_size_spinbutton"
static const char * const speed_tradeoff_values[] =
{
@@ -106,12 +106,6 @@ static const char * const count_components[] =
"count_only_this_computer_radiobutton", "count_all_files_radiobutton", "count_never_radiobutton", NULL
};
-static const guint64 thumbnail_limit_values[] =
-{
- 102400, 512000, 1048576, 3145728, 5242880,
- 10485760, 104857600, 1073741824, 2147483648U, 4294967295U
-};
-
static const char * const icon_captions_components[] =
{
"captions_0_combobox", "captions_1_combobox", "captions_2_combobox", NULL
@@ -360,68 +354,48 @@ nautilus_preferences_window_setup_list_column_page (GtkBuilder *builder)
gtk_box_pack_start (GTK_BOX (box), chooser, TRUE, TRUE, 0);
}
-static void bind_builder_bool(GtkBuilder *builder,
- GSettings *settings,
- const char *widget_name,
- const char *prefs)
+static gboolean format_spin_button(GtkSpinButton *spin_button,
+ gpointer user_data)
{
- g_settings_bind (settings, prefs, gtk_builder_get_object (builder, widget_name),
- "active", G_SETTINGS_BIND_DEFAULT);
+ GtkAdjustment *adjustment;
+ int value;
+ gchar *text;
+
+ adjustment = gtk_spin_button_get_adjustment (spin_button);
+ value = (int)gtk_adjustment_get_value (adjustment);
+ text = g_strdup_printf ("%d MB",value);
+ gtk_entry_set_text (GTK_ENTRY (spin_button), text);
+
+ return TRUE;
}
-typedef struct
+static void nautilus_preferences_window_setup_thumbnail_limit_formatting (GtkBuilder *builder)
{
- const guint64 *values;
- int n_values;
-} UIntEnumBinding;
+ GtkSpinButton *spin;
-static gboolean uint_enum_get_mapping(GValue *value,
- GVariant *variant,
- gpointer user_data)
-{
- UIntEnumBinding *binding = user_data;
- guint64 v;
- int i;
+ spin = GTK_SPIN_BUTTON (gtk_builder_get_object (builder, "preview_image_size_spinbutton"));
- 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;
- }
- }
+ g_signal_connect (spin, "output", G_CALLBACK (format_spin_button),
+ spin);
- return FALSE;
}
-static GVariant *uint_enum_set_mapping(const GValue *value,
- const GVariantType *expected_type,
- gpointer user_data)
+static void bind_builder_bool(GtkBuilder *builder,
+ GSettings *settings,
+ const char *widget_name,
+ const char *prefs)
{
- UIntEnumBinding *binding = user_data;
-
- return g_variant_new_uint64 (binding->values[g_value_get_int (value)]);
+ g_settings_bind (settings, prefs, gtk_builder_get_object (builder, widget_name),
+ "active", G_SETTINGS_BIND_DEFAULT);
}
-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);
+static void bind_builder_uint_spin(GtkBuilder *builder,
+ GSettings *settings,
+ const char *widget_name,
+ const char *prefs)
+{
+ g_settings_bind (settings, prefs, gtk_builder_get_object (builder, widget_name),
+ "value", G_SETTINGS_BIND_DEFAULT);
}
static GVariant *radio_mapping_set(const GValue *gvalue,
@@ -527,12 +501,11 @@ static void nautilus_preferences_window_setup(GtkBuilder *builder,
NAUTILUS_PREFERENCES_SHOW_DIRECTORY_ITEM_COUNTS,
(const char **) speed_tradeoff_values);
- bind_builder_uint_enum (builder, nautilus_preferences,
+ bind_builder_uint_spin (builder, nautilus_preferences,
NAUTILUS_PREFERENCES_DIALOG_THUMBNAIL_LIMIT_WIDGET,
- NAUTILUS_PREFERENCES_FILE_THUMBNAIL_LIMIT,
- thumbnail_limit_values,
- G_N_ELEMENTS (thumbnail_limit_values));
+ NAUTILUS_PREFERENCES_FILE_THUMBNAIL_LIMIT);
+ nautilus_preferences_window_setup_thumbnail_limit_formatting (builder);
nautilus_preferences_window_setup_icon_caption_page (builder);
nautilus_preferences_window_setup_list_column_page (builder);