Sfoglia il codice sorgente

Ctrl+Alt+A shortcut (or Ctrl+Click on Calculate command) to calculate sizes of all directories on synchronization checklist (addition to 14a6e2524)

Source commit: 90e3f19d6e1bfe837374de7977e60a38d39232e9
Martin Prikryl 7 anni fa
parent
commit
d4a534321f

+ 13 - 3
source/forms/SynchronizeChecklist.cpp

@@ -1121,9 +1121,14 @@ void __fastcall TSynchronizeChecklistDialog::OkButtonClick(TObject * /*Sender*/)
 //---------------------------------------------------------------------------
 void __fastcall TSynchronizeChecklistDialog::CalculateSizeActionExecute(TObject * /*Sender*/)
 {
+  TItemStates States;
+  if (!IsKeyPressed(VK_CONTROL))
+  {
+    States << isSelected;
+  }
   TSynchronizeChecklist::TItemList Items;
-  TListItem * Item = ListView->Selected;
-  while (Item != NULL)
+  TListItem * Item = NULL;
+  while ((Item = ListView->GetNextItem(Item, sdAll, States)) != NULL)
   {
     const TSynchronizeChecklist::TItem * ChecklistItem = GetChecklistItem(Item);
     Items.push_back(ChecklistItem);
@@ -1131,7 +1136,6 @@ void __fastcall TSynchronizeChecklistDialog::CalculateSizeActionExecute(TObject
     {
       CountItemSize(ChecklistItem, -1);
     }
-    Item = ListView->GetNextItem(Item, sdAll, TItemStates() << isSelected);
   }
 
   try
@@ -1144,3 +1148,9 @@ void __fastcall TSynchronizeChecklistDialog::CalculateSizeActionExecute(TObject
   }
 }
 //---------------------------------------------------------------------------
+void __fastcall TSynchronizeChecklistDialog::CalculateSizeAllActionExecute(TObject * Sender)
+{
+  DebugAssert(IsKeyPressed(VK_CONTROL));
+  CalculateSizeActionExecute(Sender);
+}
+//---------------------------------------------------------------------------

+ 4 - 0
source/forms/SynchronizeChecklist.dfm

@@ -2390,6 +2390,10 @@ object SynchronizeChecklistDialog: TSynchronizeChecklistDialog
       Caption = 'C&alculate'
       OnExecute = CalculateSizeActionExecute
     end
+    object CalculateSizeAllAction: TAction
+      ShortCut = 49217
+      OnExecute = CalculateSizeAllActionExecute
+    end
   end
   object ActionImages120: TPngImageList
     Height = 20

+ 2 - 0
source/forms/SynchronizeChecklist.h

@@ -55,6 +55,7 @@ __published:
   TAction *CalculateSizeAction;
   TMenuItem *Calculate1;
   TButton *CalculateSizeButton;
+  TAction *CalculateSizeAllAction;
   void __fastcall HelpButtonClick(TObject * Sender);
   void __fastcall FormShow(TObject * Sender);
   void __fastcall StatusBarDrawPanel(TStatusBar *StatusBar,
@@ -89,6 +90,7 @@ __published:
   void __fastcall ListViewClick(TObject *Sender);
   void __fastcall OkButtonClick(TObject *Sender);
   void __fastcall CalculateSizeActionExecute(TObject *Sender);
+  void __fastcall CalculateSizeAllActionExecute(TObject *Sender);
 
 public:
   __fastcall TSynchronizeChecklistDialog(

+ 13 - 0
source/packages/my/NortonLikeListView.pas

@@ -847,6 +847,19 @@ begin
       Result := inherited GetNextItem(StartItem, Direction, States);
     end
       else
+    if States = [] then
+    begin
+      if Assigned(StartItem) then
+        Start := StartItem.Index
+      else
+        Start := -1;
+      Inc(Start);
+      if Start < Items.Count then
+        Result := Items[Start]
+      else
+        Result := nil;
+    end
+      else
     begin
       Assert(False);
       Result := nil;