SynchronizeChecklist.h 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. //----------------------------------------------------------------------------
  2. #ifndef SynchronizeChecklistH
  3. #define SynchronizeChecklistH
  4. //----------------------------------------------------------------------------
  5. #include "IEListView.hpp"
  6. #include "NortonLikeListView.hpp"
  7. #include <System.Classes.hpp>
  8. #include <Vcl.ComCtrls.hpp>
  9. #include <Vcl.Controls.hpp>
  10. #include <Vcl.ExtCtrls.hpp>
  11. #include <Vcl.ImgList.hpp>
  12. #include <Vcl.Menus.hpp>
  13. #include <Vcl.StdCtrls.hpp>
  14. #include "PngImageList.hpp"
  15. //----------------------------------------------------------------------------
  16. #include <Terminal.h>
  17. #include <System.Actions.hpp>
  18. #include <Vcl.ActnList.hpp>
  19. //----------------------------------------------------------------------------
  20. class TSynchronizeChecklistDialog : public TForm
  21. {
  22. __published:
  23. TPanel * Panel;
  24. TIEListView *ListView;
  25. TStatusBar *StatusBar;
  26. TPngImageList *ActionImages;
  27. TButton *OkButton;
  28. TButton *CancelButton;
  29. TButton *CheckAllButton;
  30. TButton *UncheckAllButton;
  31. TButton *CheckButton;
  32. TButton *UncheckButton;
  33. TPopupMenu *ListViewPopupMenu;
  34. TMenuItem *CheckItem;
  35. TMenuItem *UncheckItem;
  36. TMenuItem *N1;
  37. TMenuItem *SelectAllItem;
  38. TTimer *UpdateTimer;
  39. TButton *HelpButton;
  40. TButton *CustomCommandsButton2;
  41. TActionList *ActionList;
  42. TAction *CheckAction;
  43. TAction *UncheckAction;
  44. TAction *CheckAllAction;
  45. TAction *UncheckAllAction;
  46. TAction *SelectAllAction;
  47. TAction *CustomCommandsAction;
  48. TMenuItem *N2;
  49. TButton *ReverseButton;
  50. TAction *ReverseAction;
  51. TMenuItem *ReverseItem;
  52. void __fastcall HelpButtonClick(TObject * Sender);
  53. void __fastcall FormShow(TObject * Sender);
  54. void __fastcall StatusBarDrawPanel(TStatusBar *StatusBar,
  55. TStatusPanel *Panel, const TRect &Rect);
  56. void __fastcall StatusBarMouseMove(TObject *Sender, TShiftState Shift,
  57. int X, int Y);
  58. void __fastcall ListViewChange(TObject *Sender, TListItem *Item,
  59. TItemChange Change);
  60. void __fastcall ListViewChanging(TObject *Sender, TListItem *Item,
  61. TItemChange Change, bool &AllowChange);
  62. void __fastcall CheckAllActionExecute(TObject *Sender);
  63. void __fastcall CheckActionExecute(TObject *Sender);
  64. void __fastcall ListViewSelectItem(TObject *Sender, TListItem *Item,
  65. bool Selected);
  66. void __fastcall UpdateTimerTimer(TObject *Sender);
  67. void __fastcall SelectAllActionExecute(TObject *Sender);
  68. void __fastcall StatusBarMouseDown(TObject *Sender, TMouseButton Button,
  69. TShiftState Shift, int X, int Y);
  70. void __fastcall ListViewCompare(TObject *Sender, TListItem *Item1,
  71. TListItem *Item2, int Data, int &Compare);
  72. void __fastcall ListViewSecondaryColumnHeader(TCustomIEListView *Sender,
  73. int Index, int &SecondaryColumn);
  74. void __fastcall ListViewContextPopup(TObject *Sender, TPoint &MousePos,
  75. bool &Handled);
  76. void __fastcall CustomCommandsActionExecute(TObject *Sender);
  77. void __fastcall ListViewAdvancedCustomDrawSubItem(TCustomListView *Sender, TListItem *Item,
  78. int SubItem, TCustomDrawState State, TCustomDrawStage Stage, bool &DefaultDraw);
  79. void __fastcall StatusBarResize(TObject *Sender);
  80. void __fastcall UncheckActionExecute(TObject *Sender);
  81. void __fastcall UncheckAllActionExecute(TObject *Sender);
  82. void __fastcall ReverseActionExecute(TObject *Sender);
  83. void __fastcall ListViewClick(TObject *Sender);
  84. public:
  85. __fastcall TSynchronizeChecklistDialog(TComponent * AOwner,
  86. TSynchronizeMode Mode, int Params, const UnicodeString LocalDirectory,
  87. const UnicodeString RemoteDirectory, TCustomCommandMenuEvent OnCustomCommandMenu);
  88. virtual __fastcall ~TSynchronizeChecklistDialog();
  89. bool __fastcall Execute(TSynchronizeChecklist * Checklist);
  90. protected:
  91. bool FFormRestored;
  92. TSynchronizeChecklist * FChecklist;
  93. TSynchronizeMode FMode;
  94. int FParams;
  95. UnicodeString FLocalDirectory;
  96. UnicodeString FRemoteDirectory;
  97. TImageList * FSystemImageList;
  98. TWndMethod FOrigListViewWindowProc;
  99. int FTotals[1 + TSynchronizeChecklist::ActionCount];
  100. int FChecked[1 + TSynchronizeChecklist::ActionCount];
  101. __int64 FCheckedSize[1 + TSynchronizeChecklist::ActionCount];
  102. TListItem * FChangingItem;
  103. bool FChangingItemChecked;
  104. bool FChangingItemIgnore;
  105. bool FChangingItemMass;
  106. UnicodeString FGeneralHint;
  107. TCustomCommandMenuEvent FOnCustomCommandMenu;
  108. typedef std::map<const TSynchronizeChecklist::TItem *, TSynchronizeChecklist::TAction> TActions;
  109. TActions FActions;
  110. void __fastcall UpdateControls();
  111. virtual void __fastcall CreateParams(TCreateParams & Params);
  112. void __fastcall LoadItem(TListItem * Item);
  113. void __fastcall LoadList();
  114. void __fastcall ListViewWindowProc(TMessage & Message);
  115. int __fastcall PanelAt(int X);
  116. void __fastcall CheckAll(bool Check);
  117. void __fastcall Check(bool Check);
  118. TListItem * __fastcall SelectAll(bool Select, int Action = 0,
  119. bool OnlyTheAction = true);
  120. bool __fastcall IsItemSizeIrrelevant(TSynchronizeChecklist::TAction Action);
  121. __int64 __fastcall GetItemSize(const TSynchronizeChecklist::TItem * Item);
  122. void __fastcall UpdateStatusBarSize();
  123. int __fastcall PanelCount();
  124. inline const TSynchronizeChecklist::TItem * GetChecklistItem(TListItem * Item);
  125. TSynchronizeChecklist::TAction & GetChecklistItemAction(
  126. const TSynchronizeChecklist::TItem * ChecklistItem);
  127. void __fastcall AddSubItem(TListItem * Item, int & Index, const UnicodeString & S);
  128. TRect __fastcall GetColumnHeaderRect(int Index);
  129. static int __fastcall CompareNumber(__int64 Value1, __int64 Value2);
  130. };
  131. //----------------------------------------------------------------------------
  132. #endif