1
0
mirror of https://gitlab.gnome.org/GNOME/nautilus synced 2024-06-30 23:46:35 +00:00

filename-validator: Introduce :allow-override

This property is going to be set to TRUE by the upcoming FileChooser.

If turned on, the validator will still provide feedback on duplated
names, but it will accept them nonetheless if otherwise valid. It's
up to the FileChooser to confirm the user wants to override the
existing file.
This commit is contained in:
António Fernandes 2024-06-23 19:55:16 +01:00
parent 300c8af5da
commit b1d7eaf666
2 changed files with 21 additions and 1 deletions

View File

@ -17,6 +17,7 @@ struct _NautilusFilenameValidator
NautilusDirectory *containing_directory;
gboolean target_is_folder;
gboolean allow_override;
char *original_name;
const char *feedback_text;
@ -43,6 +44,7 @@ enum
PROP_NEW_NAME,
PROP_CONTAINING_DIRECTORY,
PROP_PASSED,
PROP_ALLOW_OVERRIDE,
PROP_TARGET_IS_FOLDER,
NUM_PROPERTIES
};
@ -200,7 +202,8 @@ filename_validator_process_new_name (NautilusFilenameValidator *self)
!nautilus_filename_validator_ignore_existing_file (self,
existing_file);
gboolean passed = (self->valid_name && !self->duplicated_name);
gboolean passed = (self->valid_name &&
(self->allow_override || !self->duplicated_name));
if (self->passed != passed)
{
@ -378,6 +381,12 @@ nautilus_filename_validator_set_property (GObject *object,
}
break;
case PROP_ALLOW_OVERRIDE:
{
self->allow_override = g_value_get_boolean (value);
}
break;
case PROP_TARGET_IS_FOLDER:
{
self->target_is_folder = g_value_get_boolean (value);
@ -453,6 +462,10 @@ nautilus_filename_validator_class_init (NautilusFilenameValidatorClass *klass)
g_param_spec_object ("containing-directory", NULL, NULL,
NAUTILUS_TYPE_DIRECTORY,
G_PARAM_WRITABLE | G_PARAM_STATIC_STRINGS);
properties[PROP_ALLOW_OVERRIDE] =
g_param_spec_boolean ("allow-override", NULL, NULL,
FALSE,
G_PARAM_WRITABLE | G_PARAM_STATIC_STRINGS);
properties[PROP_TARGET_IS_FOLDER] =
g_param_spec_boolean ("target-is-folder", NULL, NULL,
FALSE,
@ -460,3 +473,9 @@ nautilus_filename_validator_class_init (NautilusFilenameValidatorClass *klass)
g_object_class_install_properties (object_class, NUM_PROPERTIES, properties);
}
gboolean
nautilus_filename_validator_will_override (NautilusFilenameValidator *self)
{
return (self->allow_override && self->passed && self->duplicated_name);
}

View File

@ -24,3 +24,4 @@ void nautilus_filename_validator_set_original_name (NautilusFilenameVa
const char *original_name);
void nautilus_filename_validator_validate (NautilusFilenameValidator *self);
void nautilus_filename_validator_try_accept (NautilusFilenameValidator *self);
gboolean nautilus_filename_validator_will_override (NautilusFilenameValidator *self);