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; }
}
}