Progress.h 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. //----------------------------------------------------------------------------
  2. #ifndef ProgressH
  3. #define ProgressH
  4. //----------------------------------------------------------------------------
  5. #include "PathLabel.hpp"
  6. #include <System.Classes.hpp>
  7. #include <Vcl.ComCtrls.hpp>
  8. #include <Vcl.Controls.hpp>
  9. #include <Vcl.ExtCtrls.hpp>
  10. #include <Vcl.StdCtrls.hpp>
  11. //----------------------------------------------------------------------------
  12. #include <FileOperationProgress.h>
  13. #include <Vcl.Menus.hpp>
  14. #include "PngImageList.hpp"
  15. #include <Vcl.Imaging.pngimage.hpp>
  16. #include <Vcl.ImgList.hpp>
  17. //----------------------------------------------------------------------------
  18. #include <GUITools.h>
  19. #include "TB2Dock.hpp"
  20. #include "TB2Item.hpp"
  21. #include "TB2Toolbar.hpp"
  22. #include "TBX.hpp"
  23. #include "TB2ExtItems.hpp"
  24. #include "TBXExtItems.hpp"
  25. #include <Vcl.AppEvnts.hpp>
  26. #include <System.ImageList.hpp>
  27. #include <list>
  28. //----------------------------------------------------------------------------
  29. class TProgressForm : public TForm
  30. {
  31. __published:
  32. TPanel *MainPanel;
  33. TLabel *PathLabel;
  34. TPathLabel *FileLabel;
  35. TLabel *TargetLabel;
  36. TPathLabel *TargetPathLabel;
  37. TProgressBar *OperationProgress;
  38. TPanel *TransferPanel;
  39. TLabel *Label3;
  40. TLabel *TimeElapsedLabel;
  41. TLabel *StartTimeLabelLabel;
  42. TLabel *StartTimeLabel;
  43. TLabel *Label4;
  44. TLabel *BytesTransferredLabel;
  45. TLabel *Label12;
  46. TLabel *CPSLabel;
  47. TProgressBar *FileProgress;
  48. TTimer *UpdateTimer;
  49. TLabel *TimeLeftLabelLabel;
  50. TLabel *TimeLeftLabel;
  51. TPaintBox *AnimationPaintBox;
  52. TPngImageList *ImageList;
  53. TPanel *ToolbarPanel;
  54. TTBXDock *Dock;
  55. TTBXToolbar *Toolbar;
  56. TTBXItem *CancelItem;
  57. TTBXItem *MinimizeItem;
  58. TTBXItem *MoveToQueueItem;
  59. TTBXSubmenuItem *CycleOnceDoneItem;
  60. TTBXItem *IdleOnceDoneItem;
  61. TTBXItem *DisconnectOnceDoneItem;
  62. TTBXItem *SuspendOnceDoneItem;
  63. TTBXItem *ShutDownOnceDoneItem;
  64. TTBXComboBoxItem *SpeedComboBoxItem;
  65. TPanel *ComponentsPanel;
  66. TPngImageList *ImageList120;
  67. TPngImageList *ImageList144;
  68. TPngImageList *ImageList192;
  69. TApplicationEvents *ApplicationEvents;
  70. TTBXItem *SkipItem;
  71. void __fastcall UpdateTimerTimer(TObject *Sender);
  72. void __fastcall FormShow(TObject *Sender);
  73. void __fastcall FormHide(TObject *Sender);
  74. void __fastcall CancelItemClick(TObject *Sender);
  75. void __fastcall MinimizeItemClick(TObject *Sender);
  76. void __fastcall MoveToQueueItemClick(TObject *Sender);
  77. void __fastcall OnceDoneItemClick(TObject *Sender);
  78. void __fastcall CycleOnceDoneItemClick(TObject *Sender);
  79. void __fastcall SpeedComboBoxItemAcceptText(TObject *Sender, UnicodeString &NewText,
  80. bool &Accept);
  81. void __fastcall SpeedComboBoxItemItemClick(TObject *Sender);
  82. void __fastcall SpeedComboBoxItemAdjustImageIndex(TTBXComboBoxItem *Sender, const UnicodeString AText,
  83. int AIndex, int &ImageIndex);
  84. void __fastcall ApplicationModalBegin(TObject * Sender);
  85. void __fastcall SpeedComboBoxItemClick(TObject *Sender);
  86. void __fastcall SkipItemClick(TObject *Sender);
  87. private:
  88. TCancelStatus FCancel;
  89. bool FPendingSkip;
  90. bool FMoveToQueue;
  91. TFileOperationProgressType FData;
  92. bool FDataGot;
  93. bool FDataReceived;
  94. TFileOperation FLastOperation;
  95. TOperationSide FLastSide;
  96. bool FLastTotalSizeSet;
  97. bool FMinimizedByMe;
  98. int FUpdateCounter;
  99. void * FShowAsModalStorage;
  100. bool FDeleteLocalToRecycleBin;
  101. bool FDeleteRemoteToRecycleBin;
  102. bool FReadOnly;
  103. unsigned long FCPSLimit;
  104. TDateTime FStarted;
  105. int FSinceLastUpdate;
  106. bool FModalBeginHooked;
  107. int FModalLevel;
  108. TFrameAnimation FFrameAnimation;
  109. typedef BiDiMap<TOnceDoneOperation, TTBCustomItem *> TOnceDoneItems;
  110. TOnceDoneItems FOnceDoneItems;
  111. bool FAllowSkip;
  112. TSynchronizeProgress * FSynchronizeProgress;
  113. UnicodeString FProgressStr;
  114. int FWheelDelta;
  115. void __fastcall SetOnceDoneOperation(TOnceDoneOperation value);
  116. TTBCustomItem * __fastcall CurrentOnceDoneItem();
  117. TOnceDoneOperation __fastcall GetOnceDoneOperation();
  118. void __fastcall SetOnceDoneItem(TTBCustomItem * Item);
  119. void __fastcall SetAllowMinimize(bool value);
  120. bool __fastcall GetAllowMinimize();
  121. void __fastcall SetReadOnly(bool value);
  122. void __fastcall GlobalMinimize(TObject * Sender);
  123. UnicodeString __fastcall ItemSpeed(const UnicodeString & Text, TTBXComboBoxItem * Item);
  124. void __fastcall CMDialogKey(TCMDialogKey & Message);
  125. protected:
  126. void __fastcall CancelOperation();
  127. void __fastcall UpdateControls();
  128. void __fastcall ResetOnceDoneOperation();
  129. bool __fastcall ReceiveData(bool Force, int ModalLevelOffset);
  130. void __fastcall Minimize(TObject * Sender);
  131. virtual void __fastcall Dispatch(void * Message);
  132. void __fastcall SetCancelLower(TCancelStatus ACancel);
  133. DYNAMIC void __fastcall MouseWheelHandler(TMessage & Message);
  134. virtual void __fastcall CreateWnd();
  135. INTERFACE_HOOK
  136. public:
  137. static UnicodeString __fastcall ProgressStr(
  138. const TSynchronizeProgress * SynchronizeProgress, const TFileOperationProgressType * ProgressData);
  139. static void SizeToolbar(TForm * Form, TTBXToolbar * Toolbar, TTBXDock * Dock, TPanel * ToolbarPanel);
  140. virtual __fastcall TProgressForm(
  141. TComponent * AOwner, bool AllowMoveToQueue, bool AllowSkip, TSynchronizeProgress * SynchronizeProgress);
  142. virtual __fastcall ~TProgressForm();
  143. void __fastcall SetProgressData(TFileOperationProgressType & AData);
  144. void __fastcall ClearCancel();
  145. UnicodeString __fastcall ProgressStr();
  146. __property TCancelStatus Cancel = { read = FCancel };
  147. __property bool MoveToQueue = { read = FMoveToQueue };
  148. __property TOnceDoneOperation OnceDoneOperation = { read=GetOnceDoneOperation, write=SetOnceDoneOperation };
  149. __property bool AllowMinimize = { read=GetAllowMinimize, write=SetAllowMinimize };
  150. __property bool DeleteLocalToRecycleBin = { read=FDeleteLocalToRecycleBin, write=FDeleteLocalToRecycleBin };
  151. __property bool DeleteRemoteToRecycleBin = { read=FDeleteRemoteToRecycleBin, write=FDeleteRemoteToRecycleBin };
  152. __property bool ReadOnly = { read=FReadOnly, write=SetReadOnly };
  153. __property TSynchronizeProgress * SynchronizeProgress = { read = FSynchronizeProgress };
  154. };
  155. //----------------------------------------------------------------------------
  156. #endif