Browse Source

Not showing "Operation was successfully completed" message, after command-line synchronization operation, where there were no files to be synchronized

Source commit: 31da274e936029e4ea1a38de656f4754eae3ea8c
Martin Prikryl 7 years ago
parent
commit
6a8808264d

+ 20 - 8
source/forms/CustomScpExplorer.cpp

@@ -5455,11 +5455,11 @@ void __fastcall TCustomScpExplorerForm::SynchronizeNoDifferences()
   MessageDialog(Message, qtInformation, qaOK, HELP_SYNCHRONIZE_NO_DIFFERENCES);
 }
 //---------------------------------------------------------------------------
-bool __fastcall TCustomScpExplorerForm::DoFullSynchronizeDirectories(
+int __fastcall TCustomScpExplorerForm::DoFullSynchronizeDirectories(
   UnicodeString & LocalDirectory, UnicodeString & RemoteDirectory,
   TSynchronizeMode & Mode, bool & SaveMode, bool UseDefaults)
 {
-  bool Result;
+  int Result;
   int Params = GUIConfiguration->SynchronizeParams;
 
   bool SaveSettings = false;
@@ -5468,10 +5468,11 @@ bool __fastcall TCustomScpExplorerForm::DoFullSynchronizeDirectories(
     FLAGMASK(SynchronizeAllowSelectedOnly(), fsoAllowSelectedOnly);
   TCopyParamType CopyParam = GUIConfiguration->CurrentCopyParam;
   TUsableCopyParamAttrs CopyParamAttrs = Terminal->UsableCopyParamAttrs(0);
-  Result = UseDefaults ||
+  bool Continue =
+    UseDefaults ||
     DoFullSynchronizeDialog(Mode, Params, LocalDirectory, RemoteDirectory,
       &CopyParam, SaveSettings, SaveMode, Options, CopyParamAttrs);
-  if (Result)
+  if (Continue)
   {
     Configuration->Usage->Inc(L"Synchronizations");
     UpdateCopyParamCounters(CopyParam);
@@ -5525,10 +5526,16 @@ bool __fastcall TCustomScpExplorerForm::DoFullSynchronizeDirectories(
       {
         if (Checklist->Count > 0)
         {
-          Result =
-            DoSynchronizeChecklistDialog(
-              Checklist, Mode, Params, LocalDirectory, RemoteDirectory, CustomCommandMenu, DoFullSynchronize,
-              DoSynchronizeChecklistCalculateSize, &SynchronizeParams);
+          if (DoSynchronizeChecklistDialog(
+                Checklist, Mode, Params, LocalDirectory, RemoteDirectory, CustomCommandMenu, DoFullSynchronize,
+                DoSynchronizeChecklistCalculateSize, &SynchronizeParams))
+          {
+            Result = Checklist->Count;
+          }
+          else
+          {
+            Result = -1;
+          }
         }
         else
         {
@@ -5537,6 +5544,7 @@ bool __fastcall TCustomScpExplorerForm::DoFullSynchronizeDirectories(
       }
       else
       {
+        Result = Checklist->CheckedCount;
         if (Checklist->CheckedCount > 0)
         {
           FullSynchronize(SynchronizeParams, NULL, NULL);
@@ -5554,6 +5562,10 @@ bool __fastcall TCustomScpExplorerForm::DoFullSynchronizeDirectories(
 
     OperationComplete(StartTime);
   }
+  else
+  {
+    Result = -1;
+  }
 
   return Result;
 }

+ 1 - 1
source/forms/CustomScpExplorer.h

@@ -704,7 +704,7 @@ public:
   void __fastcall QueueEmptyNoteClicked(TObject * Sender);
   bool __fastcall DoSynchronizeDirectories(UnicodeString & LocalDirectory,
     UnicodeString & RemoteDirectory, bool UseDefaults);
-  bool __fastcall DoFullSynchronizeDirectories(UnicodeString & LocalDirectory,
+  int __fastcall DoFullSynchronizeDirectories(UnicodeString & LocalDirectory,
     UnicodeString & RemoteDirectory, TSynchronizeMode & Mode, bool & SaveMode,
     bool UseDefaults);
   void __fastcall StandaloneEdit(const UnicodeString & FileName);

+ 1 - 2
source/forms/ScpCommander.cpp

@@ -943,8 +943,7 @@ void __fastcall TScpCommanderForm::FullSynchronizeDirectories()
   TSynchronizeMode Mode =
     (SaveMode ? (TSynchronizeMode)GUIConfiguration->SynchronizeModeAuto :
       ((FCurrentSide == osLocal) ? smRemote : smLocal));
-  if (DoFullSynchronizeDirectories(LocalDirectory, RemoteDirectory, Mode,
-        SaveMode, false))
+  if (DoFullSynchronizeDirectories(LocalDirectory, RemoteDirectory, Mode, SaveMode, false) >= 0)
   {
     if (SaveMode)
     {

+ 1 - 2
source/forms/ScpExplorer.cpp

@@ -240,8 +240,7 @@ void __fastcall TScpExplorerForm::FullSynchronizeDirectories()
   UnicodeString RemoteDirectory = RemoteDirView->PathName;
   bool SaveMode = true;
   TSynchronizeMode Mode = (TSynchronizeMode)GUIConfiguration->SynchronizeMode;
-  if (DoFullSynchronizeDirectories(LocalDirectory, RemoteDirectory, Mode,
-        SaveMode, false))
+  if (DoFullSynchronizeDirectories(LocalDirectory, RemoteDirectory, Mode, SaveMode, false) >= 0)
   {
     WinConfiguration->ScpExplorer.LastLocalTargetDirectory = LocalDirectory;
     if (SaveMode)

+ 11 - 3
source/windows/WinMain.cpp

@@ -223,15 +223,23 @@ void __fastcall FullSynchronize(TTerminal * Terminal, TCustomScpExplorerForm * S
   bool SaveMode = true;
   // bit ugly
   TSynchronizeMode Mode = (TSynchronizeMode)GUIConfiguration->SynchronizeMode;
-  if (ScpExplorer->DoFullSynchronizeDirectories(LocalDirectory,
-        RemoteDirectory, Mode, SaveMode, UseDefaults))
+  int Result =
+    ScpExplorer->DoFullSynchronizeDirectories(LocalDirectory, RemoteDirectory, Mode, SaveMode, UseDefaults);
+  if (Result >= 0)
   {
     if (SaveMode)
     {
       GUIConfiguration->SynchronizeMode = Mode;
     }
 
-    Terminal->CloseOnCompletion();
+    if (Result > 0)
+    {
+      Terminal->CloseOnCompletion();
+    }
+    else
+    {
+      Abort();
+    }
   }
   else
   {