Browse Source

On extension file conflict, make the filename unique, instead of asking for overwrite. Better user experience + Prevents data inconsistency when Preferences dialog is canceled

Source commit: b1ac7aecdd0ab7247a2f332fe87fb2bf457232a8
Martin Prikryl 9 năm trước cách đây
mục cha
commit
46f8550caf
1 tập tin đã thay đổi với 9 bổ sung3 xóa
  1. 9 3
      source/forms/Preferences.cpp

+ 9 - 3
source/forms/Preferences.cpp

@@ -2541,12 +2541,18 @@ void __fastcall TPreferencesDialog::AddExtension()
 
         ExtensionPath = IncludeTrailingBackslash(UserExtensionsPath) + FileName;
 
-        if (FileExists(ExtensionPath) &&
-            (MessageDialog(MainInstructions(FMTLOAD(FILE_OVERWRITE, (ExtensionPath))), qtConfirmation, qaOK | qaCancel) == qaCancel))
+        int Counter = 1;
+        UnicodeString OriginalExtensionPath = ExtensionPath;
+        int P = Pos(UpperCase(WinSCPExtensionExt), UpperCase(OriginalExtensionPath));
+
+        while (FileExists(ApiPath(ExtensionPath)))
         {
-          Abort();
+          Counter++;
+          ExtensionPath = LeftStr(OriginalExtensionPath, P - 1) + IntToStr(Counter) + RightStr(OriginalExtensionPath, OriginalExtensionPath.Length() - P + 1);
         }
+
         Lines->SaveToFile(ApiPath(ExtensionPath));
+
         FAddedExtensions->Add(ExtensionPath);
       }