Synchronize.h 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. //---------------------------------------------------------------------------
  2. #ifndef SynchronizeH
  3. #define SynchronizeH
  4. //---------------------------------------------------------------------------
  5. #include <Classes.hpp>
  6. #include <Controls.hpp>
  7. #include <StdCtrls.hpp>
  8. #include <Forms.hpp>
  9. #include <HistoryComboBox.hpp>
  10. #include "GrayedCheckBox.hpp"
  11. #include <ComCtrls.hpp>
  12. #include <ExtCtrls.hpp>
  13. #include <Vcl.Imaging.pngimage.hpp>
  14. #include <Vcl.Menus.hpp>
  15. //---------------------------------------------------------------------------
  16. #include <WinInterface.h>
  17. #include <GUITools.h>
  18. //---------------------------------------------------------------------------
  19. struct TLogItemData;
  20. //---------------------------------------------------------------------------
  21. class TSynchronizeDialog : public TForm
  22. {
  23. __published:
  24. TGroupBox *DirectoriesGroup;
  25. TButton *StopButton;
  26. TButton *CancelButton;
  27. TLabel *LocalDirectoryLabel;
  28. TLabel *RemoteDirectoryLabel;
  29. THistoryComboBox *RemoteDirectoryEdit;
  30. THistoryComboBox *LocalDirectoryEdit;
  31. TGroupBox *OptionsGroup;
  32. TCheckBox *SynchronizeDeleteCheck;
  33. TButton *LocalDirectoryBrowseButton;
  34. TCheckBox *SaveSettingsCheck;
  35. TCheckBox *SynchronizeExistingOnlyCheck;
  36. TButton *StartButton;
  37. TButton *MinimizeButton;
  38. TButton *TransferSettingsButton;
  39. TCheckBox *SynchronizeRecursiveCheck;
  40. TGrayedCheckBox *SynchronizeSynchronizeCheck;
  41. TGroupBox *CopyParamGroup;
  42. TLabel *CopyParamLabel;
  43. TButton *HelpButton;
  44. TCheckBox *SynchronizeSelectedOnlyCheck;
  45. TPanel *LogPanel;
  46. TListView *LogView;
  47. TImage *Image;
  48. TCheckBox *ContinueOnErrorCheck;
  49. TPopupMenu *MinimizeMenu;
  50. TMenuItem *Minimize1;
  51. TMenuItem *MinimizetoTray1;
  52. TPopupMenu *StartMenu;
  53. TMenuItem *Start1;
  54. TMenuItem *StartInNewWindowItem;
  55. void __fastcall ControlChange(TObject *Sender);
  56. void __fastcall LocalDirectoryBrowseButtonClick(TObject *Sender);
  57. void __fastcall TransferSettingsButtonClick(TObject *Sender);
  58. void __fastcall StartButtonClick(TObject *Sender);
  59. void __fastcall StopButtonClick(TObject *Sender);
  60. void __fastcall MinimizeButtonClick(TObject *Sender);
  61. void __fastcall FormShow(TObject *Sender);
  62. void __fastcall FormCloseQuery(TObject *Sender, bool &CanClose);
  63. void __fastcall CopyParamGroupContextPopup(TObject *Sender,
  64. TPoint &MousePos, bool &Handled);
  65. void __fastcall CopyParamGroupClick(TObject *Sender);
  66. void __fastcall HelpButtonClick(TObject *Sender);
  67. void __fastcall LogViewKeyDown(TObject *Sender, WORD &Key,
  68. TShiftState Shift);
  69. void __fastcall FormKeyDown(TObject *Sender, WORD &Key,
  70. TShiftState Shift);
  71. void __fastcall TransferSettingsButtonDropDownClick(TObject *Sender);
  72. void __fastcall LogViewCustomDrawItem(TCustomListView *Sender, TListItem *Item,
  73. TCustomDrawState State, bool &DefaultDraw);
  74. void __fastcall LogViewDeletion(TObject *Sender, TListItem *Item);
  75. void __fastcall LogViewDblClick(TObject *Sender);
  76. void __fastcall Minimize1Click(TObject *Sender);
  77. void __fastcall MinimizetoTray1Click(TObject *Sender);
  78. void __fastcall MinimizeButtonDropDownClick(TObject *Sender);
  79. void __fastcall StartInNewWindowItemClick(TObject *Sender);
  80. void __fastcall StartButtonDropDownClick(TObject *Sender);
  81. private:
  82. TSynchronizeParamType FParams;
  83. TSynchronizeStartStopEvent FOnStartStop;
  84. TGetSynchronizeOptionsEvent FOnGetOptions;
  85. TSynchronizeSessionLog FOnSynchronizeSessionLog;
  86. int FOptions;
  87. int FCopyParamAttrs;
  88. bool FSynchronizing;
  89. bool FMinimizedByMe;
  90. bool FAbort;
  91. bool FClose;
  92. bool FStartImmediately;
  93. TCopyParamType FCopyParams;
  94. TPopupMenu * FPresetsMenu;
  95. UnicodeString FPreset;
  96. TSynchronizeOptions * FSynchronizeOptions;
  97. TFeedSynchronizeError * FOnFeedSynchronizeError;
  98. TSynchronizeInNewWindow FOnSynchronizeInNewWindow;
  99. static const MaxLogItems;
  100. void __fastcall SetParams(const TSynchronizeParamType& value);
  101. TSynchronizeParamType __fastcall GetParams();
  102. void __fastcall SetSaveSettings(bool value);
  103. bool __fastcall GetSaveSettings();
  104. void __fastcall SetCopyParams(const TCopyParamType & value);
  105. TCopyParamType __fastcall GetCopyParams();
  106. void __fastcall SetOptions(int value);
  107. protected:
  108. void __fastcall DoStartStop(bool Start, bool Synchronize);
  109. void __fastcall DoAbort(TObject * Sender, bool Close);
  110. void __fastcall DoLogInternal(TSynchronizeLogEntry Entry, const UnicodeString & Message,
  111. TStrings * MoreMessages, TQueryType Type, const UnicodeString & HelpKeyword);
  112. void __fastcall DoLog(TSynchronizeController * Controller, TSynchronizeLogEntry Entry,
  113. const UnicodeString Message);
  114. void __fastcall OnlyStop();
  115. void __fastcall Stop();
  116. virtual void __fastcall Dispatch(void * Message);
  117. void __fastcall CopyParamClick(TObject * Sender);
  118. void __fastcall ClearLog();
  119. void __fastcall CopyLog();
  120. int __fastcall ActualCopyParamAttrs();
  121. void __fastcall GlobalMinimize(TObject * Sender);
  122. void __fastcall CopyParamListPopup(TRect R, int AdditionalOptions);
  123. void __fastcall FeedSynchronizeError(
  124. const UnicodeString & Message, TStrings * MoreMessages, TQueryType Type,
  125. const UnicodeString & HelpKeyword);
  126. void __fastcall SynchronizeAbort(TObject *);
  127. TLogItemData * __fastcall GetLogItemData(TListItem * Item);
  128. void __fastcall Minimize(TObject * Sender);
  129. void __fastcall Start();
  130. void __fastcall StartInNewWindow();
  131. void __fastcall SaveHistory();
  132. void __fastcall UpdateControls();
  133. bool __fastcall AllowStartInNewWindow();
  134. bool __fastcall CanStartInNewWindow();
  135. void Abort(bool Close);
  136. INTERFACE_HOOK;
  137. public:
  138. __fastcall TSynchronizeDialog(TComponent * Owner);
  139. void __fastcall Init(TSynchronizeStartStopEvent OnStartStop,
  140. TGetSynchronizeOptionsEvent OnGetOptions,
  141. TSynchronizeSessionLog OnSynchronizeSessionLog,
  142. TFeedSynchronizeError & OnFeedSynchronizeError,
  143. TNotifyEvent & OnSynchronizeAbort,
  144. TSynchronizeInNewWindow OnSynchronizeInNewWindow,
  145. int AutoSubmit);
  146. virtual __fastcall ~TSynchronizeDialog();
  147. bool __fastcall Execute();
  148. __property TSynchronizeParamType Params = { read = GetParams, write = SetParams };
  149. __property bool SaveSettings = { read = GetSaveSettings, write = SetSaveSettings };
  150. __property int Options = { read = FOptions, write = SetOptions };
  151. __property int CopyParamAttrs = { read = FCopyParamAttrs, write = FCopyParamAttrs };
  152. __property TCopyParamType CopyParams = { read = GetCopyParams, write = SetCopyParams };
  153. };
  154. //---------------------------------------------------------------------------
  155. #endif