Forráskód Böngészése

Exposing Calculate All command and adding keyboard shortcut to Calculate command on Synchronization checklist dialog

Source commit: 5dee19608ba61b89517c572fdc5187496f51d402
Martin Prikryl 1 éve
szülő
commit
ecc43e1545

+ 14 - 5
source/forms/SynchronizeChecklist.cpp

@@ -1195,10 +1195,10 @@ void __fastcall TSynchronizeChecklistDialog::OkButtonClick(TObject * /*Sender*/)
   }
 }
 //---------------------------------------------------------------------------
-void __fastcall TSynchronizeChecklistDialog::CalculateSizeActionExecute(TObject * /*Sender*/)
+void TSynchronizeChecklistDialog::CalculateSize(bool All)
 {
   TItemStates States;
-  if (!IsKeyPressed(VK_CONTROL))
+  if (!All)
   {
     States << isSelected;
   }
@@ -1224,10 +1224,14 @@ void __fastcall TSynchronizeChecklistDialog::CalculateSizeActionExecute(TObject
   }
 }
 //---------------------------------------------------------------------------
-void __fastcall TSynchronizeChecklistDialog::CalculateSizeAllActionExecute(TObject * Sender)
+void __fastcall TSynchronizeChecklistDialog::CalculateSizeActionExecute(TObject *)
 {
-  DebugAssert(IsKeyPressed(VK_CONTROL));
-  CalculateSizeActionExecute(Sender);
+  CalculateSize(false);
+}
+//---------------------------------------------------------------------------
+void __fastcall TSynchronizeChecklistDialog::CalculateSizeAllActionExecute(TObject *)
+{
+  CalculateSize(true);
 }
 //---------------------------------------------------------------------------
 TSynchronizeChecklistDialog::TSynchronizeMoveItems __fastcall TSynchronizeChecklistDialog::GetMoveItems()
@@ -1424,3 +1428,8 @@ void __fastcall TSynchronizeChecklistDialog::ListViewRecreate(TObject *)
   }
 }
 //---------------------------------------------------------------------------
+void __fastcall TSynchronizeChecklistDialog::CalculateSizeButtonDropDownClick(TObject *)
+{
+  MenuPopup(CalculateSizePopupMenu, CalculateSizeButton);
+}
+//---------------------------------------------------------------------------

+ 22 - 1
source/forms/SynchronizeChecklist.dfm

@@ -1469,7 +1469,9 @@ object SynchronizeChecklistDialog: TSynchronizeChecklistDialog
       Height = 25
       Action = CalculateSizeAction
       Anchors = [akLeft, akTop, akRight]
+      Style = bsSplitButton
       TabOrder = 10
+      OnDropDownClick = CalculateSizeButtonDropDownClick
     end
     object MoveButton: TButton
       Left = 8
@@ -2096,6 +2098,12 @@ object SynchronizeChecklistDialog: TSynchronizeChecklistDialog
     end
     object Calculate1: TMenuItem
       Action = CalculateSizeAction
+      object Calculate3: TMenuItem
+        Action = CalculateSizeAction
+      end
+      object CalculateAll1: TMenuItem
+        Action = CalculateSizeAllAction
+      end
     end
     object TMenuItem
       Action = CustomCommandsAction
@@ -2156,10 +2164,12 @@ object SynchronizeChecklistDialog: TSynchronizeChecklistDialog
     end
     object CalculateSizeAction: TAction
       Caption = 'C&alculate'
+      ShortCut = 40973
       OnExecute = CalculateSizeActionExecute
     end
     object CalculateSizeAllAction: TAction
-      ShortCut = 49217
+      Caption = 'Calc&ulate All'
+      ShortCut = 57357
       OnExecute = CalculateSizeAllActionExecute
     end
     object MoveAction: TAction
@@ -3668,4 +3678,15 @@ object SynchronizeChecklistDialog: TSynchronizeChecklistDialog
     Left = 312
     Top = 416
   end
+  object CalculateSizePopupMenu: TPopupMenu
+    Left = 88
+    Top = 336
+    object Calculate2: TMenuItem
+      Action = CalculateSizeAction
+      Default = True
+    end
+    object CalculateAll2: TMenuItem
+      Action = CalculateSizeAllAction
+    end
+  end
 end

+ 7 - 0
source/forms/SynchronizeChecklist.h

@@ -69,6 +69,11 @@ __published:
   TAction *BrowseRemoteAction;
   TMenuItem *BrowseLocalDirectory1;
   TMenuItem *BrowseLocalDirectory2;
+  TMenuItem *Calculate3;
+  TMenuItem *CalculateAll1;
+  TPopupMenu *CalculateSizePopupMenu;
+  TMenuItem *Calculate2;
+  TMenuItem *CalculateAll2;
   void __fastcall HelpButtonClick(TObject * Sender);
   void __fastcall FormShow(TObject * Sender);
   void __fastcall StatusBarDrawPanel(TStatusBar *StatusBar,
@@ -108,6 +113,7 @@ __published:
   void __fastcall BrowseLocalActionExecute(TObject *Sender);
   void __fastcall BrowseRemoteActionExecute(TObject *Sender);
   void __fastcall ListViewRecreate(TObject *Sender);
+  void __fastcall CalculateSizeButtonDropDownClick(TObject *Sender);
 
 public:
   __fastcall TSynchronizeChecklistDialog(
@@ -184,6 +190,7 @@ protected:
   void __fastcall ListViewHintShow(TCMHintShow & HintShow);
   void __fastcall StatusBarHintShow(TCMHintShow & HintShow);
   DYNAMIC void __fastcall KeyDown(Word & Key, TShiftState Shift);
+  void CalculateSize(bool All);
 };
 //----------------------------------------------------------------------------
 #endif

+ 20 - 4
source/windows/UserInterface.cpp

@@ -621,8 +621,9 @@ static TComponent * LastPopupComponent = NULL;
 static TRect LastPopupRect(-1, -1, -1, -1);
 static TDateTime LastCloseUp;
 //---------------------------------------------------------------------------
-static void __fastcall ConvertMenu(TMenuItem * AItems, TTBCustomItem * Items)
+static void __fastcall ConvertMenu(TMenuItem * AItems, TTBCustomItem * Items, TBasicAction * ParentAction, TTBCustomItem *& ParentActionItem)
 {
+  ParentActionItem = NULL;
   for (int Index = 0; Index < AItems->Count; Index++)
   {
     TMenuItem * AItem = AItems->Items[Index];
@@ -639,6 +640,7 @@ static void __fastcall ConvertMenu(TMenuItem * AItems, TTBCustomItem * Items)
     }
     else
     {
+      TTBXSubmenuItem * SubmenuItem = NULL;
       // see TB2DsgnConverter.pas DoConvert
       if (AItem->Caption == L"-")
       {
@@ -648,13 +650,18 @@ static void __fastcall ConvertMenu(TMenuItem * AItems, TTBCustomItem * Items)
       {
         if (AItem->Count > 0)
         {
-          Item = new TTBXSubmenuItem(Items->Owner);
+          SubmenuItem = new TTBXSubmenuItem(Items->Owner);
+          Item = SubmenuItem;
         }
         else
         {
           Item = new TTBXItem(Items->Owner);
         }
         Item->Action = AItem->Action;
+        if ((ParentAction != NULL) && (Item->Action == ParentAction))
+        {
+          ParentActionItem = Item;
+        }
         Item->AutoCheck = AItem->AutoCheck;
         Item->Caption = AItem->Caption;
         Item->Checked = AItem->Checked;
@@ -677,7 +684,15 @@ static void __fastcall ConvertMenu(TMenuItem * AItems, TTBCustomItem * Items)
 
       if (AItem->Count > 0)
       {
-        ConvertMenu(AItem, Item);
+        TTBCustomItem * ActionItem;
+        ConvertMenu(AItem, Item, AItem->Action, ActionItem);
+        if ((AItem->Action != NULL) && (ActionItem != NULL) && DebugAlwaysTrue(SubmenuItem != NULL))
+        {
+          SubmenuItem->DropdownCombo = true;
+          TTBItemOptions Options = ActionItem->Options;
+          ActionItem->Options = Options << tboDefault;
+          SubmenuItem->DropdownCombo = true;
+        }
       }
     }
 
@@ -713,7 +728,8 @@ void __fastcall MenuPopup(TPopupMenu * AMenu, TRect Rect,
       Menu->OnPopup = AMenu->OnPopup;
       Menu->Items->SubMenuImages = AMenu->Images;
 
-      ConvertMenu(AMenu->Items, Menu->Items);
+      TTBCustomItem * Dummy;
+      ConvertMenu(AMenu->Items, Menu->Items, NULL, Dummy);
     }
 
     Menu->PopupComponent = PopupComponent;