Pārlūkot izejas kodu

Disabling Calculate All command, when there are no directories

Source commit: 0b913598b4fe771535bae8e341f8709cd5b20f70
Martin Prikryl 1 gadu atpakaļ
vecāks
revīzija
c8da3df357

+ 8 - 0
source/forms/SynchronizeChecklist.cpp

@@ -70,6 +70,7 @@ __fastcall TSynchronizeChecklistDialog::TSynchronizeChecklistDialog(
   FChangingItemIgnore = false;
   FChangingItemMass = false;
   FSynchronizing = false;
+  FDirectories = 0;
 
   SelectScaledImageList(ActionImages);
 
@@ -191,6 +192,7 @@ void __fastcall TSynchronizeChecklistDialog::UpdateControls()
   ReverseAction->Enabled = (ListView->SelCount > 0) && DebugAlwaysTrue(!FSynchronizing);
   MoveAction->Enabled = (GetMoveItems() != TSynchronizeMoveItems());
   CalculateSizeAction->Enabled = (ListView->SelCount > 0) && AnyDirectory && DebugAlwaysTrue(!FSynchronizing);
+  CalculateSizeAllAction->Enabled = (FDirectories > 0) && !FSynchronizing;
   TSynchronizeChecklist::TAction SelectedItemAction =
     (ListView->SelCount == 1) ? GetChecklistItemAction(GetChecklistItem(ListView->Selected)) : TSynchronizeChecklist::saNone;
   BrowseLocalAction->Enabled = (ListView->SelCount == 1) && (SelectedItemAction != TSynchronizeChecklist::saDeleteRemote);
@@ -369,6 +371,10 @@ void __fastcall TSynchronizeChecklistDialog::CountItemTotal(const TSynchronizeCh
   FTotals[0] += Factor;
   int ActionIndex = int(GetChecklistItemAction(ChecklistItem));
   FTotals[ActionIndex] += Factor;
+  if (ChecklistItem->IsDirectory)
+  {
+    FDirectories += Factor;
+  }
 }
 //---------------------------------------------------------------------------
 void __fastcall TSynchronizeChecklistDialog::LoadList()
@@ -376,6 +382,7 @@ void __fastcall TSynchronizeChecklistDialog::LoadList()
   memset(&FTotals, 0, sizeof(FTotals));
   memset(&FChecked, 0, sizeof(FChecked));
   memset(&FCheckedSize, 0, sizeof(FCheckedSize));
+  FDirectories = 0;
 
   ListView->Items->BeginUpdate();
   try
@@ -1332,6 +1339,7 @@ void __fastcall TSynchronizeChecklistDialog::MoveActionExecute(TObject *)
 
   DeleteItem(Item1);
   DeleteItem(Item2);
+  UpdateControls();
 }
 //---------------------------------------------------------------------------
 void __fastcall TSynchronizeChecklistDialog::CheckDirectory(bool Check)

+ 1 - 0
source/forms/SynchronizeChecklist.h

@@ -153,6 +153,7 @@ protected:
   bool FSynchronizing;
   std::unique_ptr<Exception> FException;
   std::map<const TSynchronizeChecklist::TItem *, TListItem *> FChecklistToListViewMap;
+  int FDirectories;
 
   void __fastcall UpdateControls();
   void __fastcall UpdateCaption();