FileFind.h 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. //---------------------------------------------------------------------------
  2. #ifndef FileFindH
  3. #define FileFindH
  4. //---------------------------------------------------------------------------
  5. #include <Classes.hpp>
  6. #include <Controls.hpp>
  7. #include <StdCtrls.hpp>
  8. #include <Forms.hpp>
  9. #include <HistoryComboBox.hpp>
  10. #include <WinInterface.h>
  11. #include <GUITools.h>
  12. #include <ComCtrls.hpp>
  13. #include <ExtCtrls.hpp>
  14. #include "IEListView.hpp"
  15. #include "NortonLikeListView.hpp"
  16. #include <Vcl.Imaging.pngimage.hpp>
  17. #include <Vcl.ImgList.hpp>
  18. #include "PngImageList.hpp"
  19. #include <System.Actions.hpp>
  20. #include <Vcl.ActnList.hpp>
  21. #include <Vcl.Menus.hpp>
  22. //---------------------------------------------------------------------------
  23. class TFileFindDialog : public TForm
  24. {
  25. __published:
  26. TGroupBox *FilterGroup;
  27. TLabel *MaskLabel;
  28. TLabel *RemoteDirectoryLabel;
  29. THistoryComboBox *RemoteDirectoryEdit;
  30. THistoryComboBox *MaskEdit;
  31. TButton *StartStopButton;
  32. TButton *HelpButton;
  33. TIEListView *FileView;
  34. TStatusBar *StatusBar;
  35. TButton *FocusButton;
  36. TStaticText *MaskHintText;
  37. TButton *MaskButton;
  38. TPaintBox *AnimationPaintBox;
  39. TButton *CopyButton;
  40. TButton *DeleteButton;
  41. TPopupMenu *FileViewPopupMenu;
  42. TMenuItem *N2;
  43. TMenuItem *SelectAllItem;
  44. TActionList *ActionList;
  45. TAction *SelectAllAction;
  46. TAction *DeleteAction;
  47. TAction *FocusAction;
  48. TAction *CopyAction;
  49. TMenuItem *Focus1;
  50. TMenuItem *Delete1;
  51. TMenuItem *N1;
  52. TMenuItem *N3;
  53. TMenuItem *CopyResults1;
  54. TButton *DownloadButton;
  55. TAction *DownloadAction;
  56. TMenuItem *Download1;
  57. TAction *EditAction;
  58. TButton *EditButton;
  59. TMenuItem *Edit1;
  60. TPanel *FileViewPanel;
  61. void __fastcall ControlChange(TObject *Sender);
  62. void __fastcall StartStopButtonClick(TObject *Sender);
  63. void __fastcall StopButtonClick(TObject *Sender);
  64. void __fastcall FormShow(TObject *Sender);
  65. void __fastcall FormCloseQuery(TObject *Sender, bool &CanClose);
  66. void __fastcall HelpButtonClick(TObject *Sender);
  67. void __fastcall FormKeyDown(TObject *Sender, WORD &Key,
  68. TShiftState Shift);
  69. void __fastcall MaskEditExit(TObject *Sender);
  70. void __fastcall FileViewDblClick(TObject *Sender);
  71. void __fastcall FileViewSelectItem(TObject *Sender, TListItem *Item,
  72. bool Selected);
  73. void __fastcall MaskButtonClick(TObject *Sender);
  74. void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
  75. void __fastcall FileViewContextPopup(TObject *Sender, TPoint &MousePos, bool &Handled);
  76. void __fastcall DeleteActionExecute(TObject *Sender);
  77. void __fastcall CopyActionExecute(TObject *Sender);
  78. void __fastcall FocusActionExecute(TObject *Sender);
  79. void __fastcall SelectAllActionExecute(TObject *Sender);
  80. void __fastcall DownloadActionExecute(TObject *Sender);
  81. void __fastcall EditActionExecute(TObject *Sender);
  82. void __fastcall FileViewCompare(TObject *Sender, TListItem *Item1, TListItem *Item2, int Data, int &Compare);
  83. public:
  84. __fastcall TFileFindDialog(TComponent * Owner);
  85. virtual __fastcall ~TFileFindDialog();
  86. void __fastcall Init(
  87. TTerminal * Terminal, UnicodeString Directory, TFindEvent OnFind, TFocusFileEvent OnFocusFile,
  88. TFileListOperationEvent OnDeleteFiles, TFileListOperationEvent OnDownloadFiles,
  89. TFileListOperationEvent OnEditFiles);
  90. protected:
  91. void __fastcall Clear();
  92. void __fastcall Start();
  93. void __fastcall Stop();
  94. bool __fastcall StopIfFinding();
  95. void __fastcall GlobalMinimize(TObject * Sender);
  96. void __fastcall UpdateControls();
  97. bool __fastcall IsFinding();
  98. void __fastcall UpdateImages();
  99. virtual void __fastcall CreateParams(TCreateParams & Params);
  100. virtual void __fastcall Dispatch(void * Message);
  101. private:
  102. enum { ffInit, ffFinding, ffAborting, ffAborted, ffDone } FState;
  103. bool FMinimizedByMe;
  104. TTerminal * FTerminal;
  105. UnicodeString FTerminalName;
  106. UnicodeString FFindingInDirectory;
  107. UnicodeString FDirectory;
  108. UnicodeString FWindowParams;
  109. TFindEvent FOnFind;
  110. TFocusFileEvent FOnFocusFile;
  111. TFileListOperationEvent FOnDeleteFiles;
  112. TFileListOperationEvent FOnDownloadFiles;
  113. TFileListOperationEvent FOnEditFiles;
  114. TFrameAnimation FFrameAnimation;
  115. UnicodeString FFocusPath;
  116. typedef std::map<UnicodeString, TListItem *> TFileItemMap;
  117. TFileItemMap FFileItemMap;
  118. bool FClosePending;
  119. void __fastcall FileFound(TTerminal * Terminal,
  120. const UnicodeString FileName, const TRemoteFile * File, bool & Cancel);
  121. void __fastcall FindingFile(TTerminal * Terminal, const UnicodeString Directory,
  122. bool & Cancel);
  123. void __fastcall CopyToClipboard();
  124. void __fastcall FocusFile();
  125. void __fastcall DoFocusFile(const UnicodeString & Path);
  126. void __fastcall CMDialogKey(TWMKeyDown & Message);
  127. void __fastcall CMDpiChanged(TMessage & Message);
  128. void __fastcall ClearItem(TListItem * Item);
  129. void __fastcall FileDeleteFinished(TOperationSide Side, const UnicodeString & FileName, bool Success);
  130. void __fastcall FileDownloadFinished(TOperationSide Side, const UnicodeString & FileName, bool Success);
  131. TListItem * __fastcall FileOperationFinished(const UnicodeString & FileName);
  132. void __fastcall FileListOperation(TFileListOperationEvent Operation, TFileOperationFinishedEvent OnFileOperationFinished);
  133. TIEListViewColProperties * GetColProperties();
  134. int FilesCompare(const TRemoteFile * File1, const TRemoteFile * File2);
  135. INTERFACE_HOOK;
  136. };
  137. //---------------------------------------------------------------------------
  138. #endif