diff --git a/src/Files.App/Filesystem/FilesystemOperations/Helpers/FilesystemHelpers.cs b/src/Files.App/Filesystem/FilesystemOperations/Helpers/FilesystemHelpers.cs index 62e9769e8380..2db1ae34ca0c 100644 --- a/src/Files.App/Filesystem/FilesystemOperations/Helpers/FilesystemHelpers.cs +++ b/src/Files.App/Filesystem/FilesystemOperations/Helpers/FilesystemHelpers.cs @@ -561,9 +561,14 @@ await DialogDisplayHelper.ShowDialogAsync( history = await filesystemOperations.RenameAsync(source, newName, collision, progress, cancellationToken); break; + // Prompt user when extension has changed, not when file name has changed case FilesystemItemType.File: - if (showExtensionDialog && - Path.GetExtension(source.Path) != Path.GetExtension(newName)) // Only prompt user when extension has changed, not when file name has changed + if + ( + showExtensionDialog && + Path.GetExtension(source.Path) != Path.GetExtension(newName) && + UserSettingsService.FoldersSettingsService.ShowFileExtensionWarning + ) { var yesSelected = await DialogDisplayHelper.ShowDialogAsync("Rename".GetLocalizedResource(), "RenameFileDialog/Text".GetLocalizedResource(), "Yes".GetLocalizedResource(), "No".GetLocalizedResource()); if (yesSelected) diff --git a/src/Files.App/ServicesImplementation/Settings/FoldersSettingsService.cs b/src/Files.App/ServicesImplementation/Settings/FoldersSettingsService.cs index ad7c6ef1c39a..b208d4a6868e 100644 --- a/src/Files.App/ServicesImplementation/Settings/FoldersSettingsService.cs +++ b/src/Files.App/ServicesImplementation/Settings/FoldersSettingsService.cs @@ -268,6 +268,12 @@ public bool DoubleClickToGoUp set => Set(value); } + public bool ShowFileExtensionWarning + { + get => Get(true); + set => Set(value); + } + protected override void RaiseOnSettingChangedEvent(object sender, SettingChangedEventArgs e) { switch (e.SettingName) @@ -298,6 +304,7 @@ protected override void RaiseOnSettingChangedEvent(object sender, SettingChanged case nameof(DeleteConfirmationPolicy): case nameof(SelectFilesOnHover): case nameof(DoubleClickToGoUp): + case nameof(ShowFileExtensionWarning): Analytics.TrackEvent($"Set {e.SettingName} to {e.NewValue}"); break; } diff --git a/src/Files.App/Strings/en-US/Resources.resw b/src/Files.App/Strings/en-US/Resources.resw index bb725732c167..1b3e78c7f00a 100644 --- a/src/Files.App/Strings/en-US/Resources.resw +++ b/src/Files.App/Strings/en-US/Resources.resw @@ -2667,4 +2667,7 @@ Toggle Selection - + + Show warning when changing file extensions + + \ No newline at end of file diff --git a/src/Files.App/ViewModels/Settings/FoldersViewModel.cs b/src/Files.App/ViewModels/Settings/FoldersViewModel.cs index f631a85c3ed0..51c19566df91 100644 --- a/src/Files.App/ViewModels/Settings/FoldersViewModel.cs +++ b/src/Files.App/ViewModels/Settings/FoldersViewModel.cs @@ -407,6 +407,20 @@ public bool DoubleClickToGoUp } } + public bool ShowFileExtensionWarning + { + get => UserSettingsService.FoldersSettingsService.ShowFileExtensionWarning; + set + { + if (value != UserSettingsService.FoldersSettingsService.ShowFileExtensionWarning) + { + UserSettingsService.FoldersSettingsService.ShowFileExtensionWarning = value; + + OnPropertyChanged(); + } + } + } + public void ResetLayoutPreferences() { // Is this proper practice? diff --git a/src/Files.App/Views/Settings/FoldersPage.xaml b/src/Files.App/Views/Settings/FoldersPage.xaml index b24548b4f885..b7830173958f 100644 --- a/src/Files.App/Views/Settings/FoldersPage.xaml +++ b/src/Files.App/Views/Settings/FoldersPage.xaml @@ -289,6 +289,18 @@ + + + + + + + + + diff --git a/src/Files.Backend/Services/Settings/IFoldersSettingsService.cs b/src/Files.Backend/Services/Settings/IFoldersSettingsService.cs index 8534d5899dba..f9a2a19a069e 100644 --- a/src/Files.Backend/Services/Settings/IFoldersSettingsService.cs +++ b/src/Files.Backend/Services/Settings/IFoldersSettingsService.cs @@ -189,5 +189,10 @@ public interface IFoldersSettingsService : IBaseSettingsService, INotifyProperty /// Gets or sets a value indicating if double clicking a blank space should go up a directory. /// bool DoubleClickToGoUp { get; set; } + + /// + /// Gets or sets a value indicating if a warning dialog show be shown when changing file extensions. + /// + bool ShowFileExtensionWarning { get; set; } } }