Browse Source

Bug fix: When synchronization changes preview is turned off, and changes are found, but none of them match synchronization options, no feedback is provided.

Source commit: 73c3a8e6603ed99a805b36fd3381e5e9385295d8
Martin Prikryl 7 years ago
parent
commit
acfe00019d

+ 13 - 0
source/core/RemoteFiles.cpp

@@ -2804,6 +2804,19 @@ int TSynchronizeChecklist::GetCount() const
   return FList->Count;
 }
 //---------------------------------------------------------------------------
+int TSynchronizeChecklist::GetCheckedCount() const
+{
+  int Result = 0;
+  for (int Index = 0; (Index < Count); Index++)
+  {
+    if (Item[Index]->Checked)
+    {
+      Result++;
+    }
+  }
+  return Result;
+}
+//---------------------------------------------------------------------------
 const TSynchronizeChecklist::TItem * TSynchronizeChecklist::GetItem(int Index) const
 {
   return static_cast<TItem *>(FList->Items[Index]);

+ 2 - 0
source/core/RemoteFiles.h

@@ -498,6 +498,7 @@ public:
   static bool __fastcall IsItemSizeIrrelevant(TAction Action);
 
   __property int Count = { read = GetCount };
+  __property int CheckedCount = { read = GetCheckedCount };
   __property const TItem * Item[int Index] = { read = GetItem };
 
 protected:
@@ -507,6 +508,7 @@ protected:
   void Add(TItem * Item);
 
   int GetCount() const;
+  int GetCheckedCount() const;
   const TItem * GetItem(int Index) const;
 
 private:

+ 27 - 16
source/forms/CustomScpExplorer.cpp

@@ -5386,6 +5386,12 @@ void __fastcall TCustomScpExplorerForm::DoSynchronizeChecklistCalculateSize(
   }
 }
 //---------------------------------------------------------------------------
+void __fastcall TCustomScpExplorerForm::SynchronizeNoDifferences()
+{
+  UnicodeString Message = MainInstructions(LoadStr(COMPARE_NO_DIFFERENCES));
+  MessageDialog(Message, qtInformation, qaOK, HELP_SYNCHRONIZE_NO_DIFFERENCES);
+}
+//---------------------------------------------------------------------------
 bool __fastcall TCustomScpExplorerForm::DoFullSynchronizeDirectories(
   UnicodeString & LocalDirectory, UnicodeString & RemoteDirectory,
   TSynchronizeMode & Mode, bool & SaveMode, bool UseDefaults)
@@ -5443,23 +5449,17 @@ bool __fastcall TCustomScpExplorerForm::DoFullSynchronizeDirectories(
         SAFE_DESTROY(FSynchronizeProgressForm);
       }
 
-      if (Checklist->Count == 0)
+      TSynchronizeParams SynchronizeParams;
+      SynchronizeParams.LocalDirectory = LocalDirectory;
+      SynchronizeParams.RemoteDirectory = RemoteDirectory;
+      SynchronizeParams.Mode = Mode;
+      SynchronizeParams.CopyParam = &CopyParam;
+      SynchronizeParams.Params = Params;
+      SynchronizeParams.Checklist = Checklist;
+      SynchronizeParams.StartTime = &StartTime;
+      if (FLAGSET(Params, TTerminal::spPreviewChanges))
       {
-        UnicodeString Message = MainInstructions(LoadStr(COMPARE_NO_DIFFERENCES));
-        MessageDialog(Message, qtInformation, qaOK,
-          HELP_SYNCHRONIZE_NO_DIFFERENCES);
-      }
-      else
-      {
-        TSynchronizeParams SynchronizeParams;
-        SynchronizeParams.LocalDirectory = LocalDirectory;
-        SynchronizeParams.RemoteDirectory = RemoteDirectory;
-        SynchronizeParams.Mode = Mode;
-        SynchronizeParams.CopyParam = &CopyParam;
-        SynchronizeParams.Params = Params;
-        SynchronizeParams.Checklist = Checklist;
-        SynchronizeParams.StartTime = &StartTime;
-        if (FLAGSET(Params, TTerminal::spPreviewChanges))
+        if (Checklist->Count > 0)
         {
           Result =
             DoSynchronizeChecklistDialog(
@@ -5467,9 +5467,20 @@ bool __fastcall TCustomScpExplorerForm::DoFullSynchronizeDirectories(
               DoSynchronizeChecklistCalculateSize, &SynchronizeParams);
         }
         else
+        {
+          SynchronizeNoDifferences();
+        }
+      }
+      else
+      {
+        if (Checklist->CheckedCount > 0)
         {
           FullSynchronize(SynchronizeParams, NULL, NULL);
         }
+        else
+        {
+          SynchronizeNoDifferences();
+        }
       }
     }
     __finally

+ 1 - 0
source/forms/CustomScpExplorer.h

@@ -423,6 +423,7 @@ protected:
   void __fastcall GetSynchronizeOptions(int Params, TSynchronizeOptions & Options);
   void __fastcall SynchronizeInNewWindow(const TSynchronizeParamType & Params, const TCopyParamType * CopyParams);
   bool __fastcall SynchronizeAllowSelectedOnly();
+  void __fastcall SynchronizeNoDifferences();
   virtual void __fastcall BatchStart(void *& Storage);
   virtual void __fastcall BatchEnd(void * Storage);
   bool __fastcall ExecuteFileOperation(TFileOperation Operation, TOperationSide Side,