UnixDirView.h 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. //---------------------------------------------------------------------------
  2. #ifndef UnixDirViewH
  3. #define UnixDirViewH
  4. //---------------------------------------------------------------------------
  5. #include <SysUtils.hpp>
  6. #include <Controls.hpp>
  7. #include <Classes.hpp>
  8. #include <Forms.hpp>
  9. #include "CustomUnixDirView.hpp"
  10. #ifndef DESIGN_ONLY
  11. #include <Terminal.h>
  12. #else
  13. struct TCopyParamType {};
  14. #endif
  15. //---------------------------------------------------------------------------
  16. class TUnixDirView;
  17. enum TTransferDirection { tdToRemote, tdToLocal };
  18. enum TTransferType { ttCopy, ttMove };
  19. typedef void __fastcall (__closure *TGetCopyParamEvent)
  20. (TUnixDirView * Sender, TTransferDirection Direction, TTransferType Type,
  21. AnsiString &TargetDirectory, TStrings * FileList, TCopyParamType & CopyParam);
  22. typedef void __fastcall (__closure *TWarnLackOfTempSpaceEvent)
  23. (TUnixDirView * Sender, const AnsiString Path, __int64 RequiredSpace,
  24. bool & Continue);
  25. typedef void __fastcall (__closure *TDDTargetDropEvent)
  26. (TUnixDirView * Sender, int DropEffect, bool & Continue);
  27. #define DefaultDDDeleteDelay 120
  28. #define HOMEDIRECTORY ""
  29. #define CURRENTDIRECTORY "."
  30. //---------------------------------------------------------------------------
  31. class PACKAGE TUnixDirView : public TCustomUnixDirView
  32. {
  33. private:
  34. bool FDDAllowMove;
  35. int FDDDeleteDelay;
  36. bool FDirLoadedAfterChangeDir;
  37. int FLastDropEffect;
  38. __int64 FDDTotalSize;
  39. TNotifyEvent FOldChangeDirectory;
  40. TNotifyEvent FOldReadDirectory;
  41. TNotifyEvent FOnDisplayProperties;
  42. TGetCopyParamEvent FOnGetCopyParam;
  43. bool FFullLoad;
  44. #ifndef DESIGN_ONLY
  45. TTerminal *FTerminal;
  46. #endif
  47. AnsiString FUniqTempDir;
  48. bool FShowInaccesibleDirectories;
  49. AnsiString FDDTemporaryDirectory;
  50. TWarnLackOfTempSpaceEvent FOnWarnLackOfTempSpace;
  51. AnsiString FDragDropSshTerminate;
  52. TStrings * FDDFileList;
  53. TDDTargetDropEvent FOnDDTargetDrop;
  54. bool __fastcall GetActive();
  55. TTimer * FDelayedDeletionTimer;
  56. TStrings * FDelayedDeletionList;
  57. void __fastcall SetDDAllowMove(bool value);
  58. void __fastcall SetDDDeleteDelay(int value);
  59. #ifndef DESIGN_ONLY
  60. void __fastcall SetTerminal(TTerminal *value);
  61. #endif
  62. void __fastcall SetShowInaccesibleDirectories(bool value);
  63. protected:
  64. void __fastcall AddDelayedDirectoryDeletion(
  65. const AnsiString TempDir, int SecDelay);
  66. virtual void __fastcall DDDragDetect(int grfKeyState, const TPoint &DetectStart,
  67. const TPoint &Point, TDragDetectStatus DragStatus);
  68. virtual void __fastcall DDGiveFeedback(int dwEffect, HRESULT & Result);
  69. virtual void __fastcall DDMenuDone(TObject* Sender, HMENU AMenu);
  70. virtual void __fastcall DDQueryContinueDrag(BOOL FEscapePressed, int grfKeyState, HRESULT & Result);
  71. void __fastcall DDTargetDrop();
  72. virtual void __fastcall DDChooseEffect(int grfKeyState, int &dwEffect);
  73. virtual void __fastcall AddToDragFileList(TFileList* FileList, TListItem* Item);
  74. void __fastcall DisplayContextMenu(const TPoint &Where);
  75. void __fastcall DoChangeDirectory(TObject * Sender);
  76. void __fastcall DoDelayedDeletion(TObject * Sender);
  77. void __fastcall DoReadDirectory(TObject * Sender, bool ReloadOnly);
  78. virtual void __fastcall ExecuteFile(TListItem * Item);
  79. virtual bool __fastcall GetDirOK();
  80. virtual void __fastcall GetDisplayInfo(TListItem * ListItem, tagLVITEMA &DispInfo);
  81. virtual TDropEffectSet __fastcall GetDragSourceEffects();
  82. virtual bool __fastcall GetIsRoot();
  83. virtual AnsiString __fastcall GetPath();
  84. virtual AnsiString __fastcall GetPathName();
  85. AnsiString __fastcall GetUniqTempDir();
  86. void __fastcall ChangeDirectory(AnsiString Path);
  87. virtual void __fastcall InternalEdit(const tagLVITEMA & HItem);
  88. virtual TColor __fastcall ItemColor(TListItem * Item);
  89. virtual AnsiString __fastcall ItemDragFileName(TListItem * Item);
  90. virtual AnsiString __fastcall ItemFileName(TListItem * Item);
  91. virtual __int64 __fastcall ItemFileSize(TListItem * Item);
  92. virtual int __fastcall ItemImageIndex(TListItem * Item, bool Cache);
  93. virtual bool __fastcall ItemIsFile(TListItem * Item);
  94. virtual bool __fastcall ItemMatchesFilter(TListItem * Item, const TFileFilter &Filter);
  95. virtual Word __fastcall ItemOverlayIndexes(TListItem * Item);
  96. virtual void __fastcall LoadFiles();
  97. virtual AnsiString __fastcall MinimizePath(AnsiString Path, int Length);
  98. virtual void __fastcall PerformItemDragDropOperation(TListItem * Item, int Effect);
  99. virtual void __fastcall SetAddParentDir(bool Value);
  100. virtual void __fastcall SetItemImageIndex(TListItem * Item, int Index);
  101. virtual void __fastcall SetPath(AnsiString Value);
  102. virtual void __fastcall SortItems();
  103. virtual bool __fastcall TargetHasDropHandler(TListItem * Item, int Effect);
  104. virtual TDateTime __fastcall ItemFileTime(TListItem * Item,
  105. TDateTimePrecision & Precision);
  106. void __fastcall DoWarnLackOfTempSpace(const AnsiString Path, __int64 RequiredSpace,
  107. bool & Continue);
  108. DYNAMIC bool __fastcall CanEdit(TListItem* Item);
  109. public:
  110. __fastcall TUnixDirView(TComponent* Owner);
  111. virtual __fastcall ~TUnixDirView();
  112. virtual void __fastcall CreateDirectory(AnsiString DirName);
  113. virtual void __fastcall DisplayPropertiesMenu();
  114. virtual void __fastcall ExecuteHomeDirectory();
  115. virtual void __fastcall ExecuteParentDirectory();
  116. virtual void __fastcall ExecuteRootDirectory();
  117. virtual void __fastcall ReloadDirectory();
  118. virtual bool __fastcall ItemIsDirectory(TListItem * Item);
  119. virtual bool __fastcall ItemIsParentDirectory(TListItem * Item);
  120. virtual AnsiString __fastcall ItemFullFileName(TListItem * Item);
  121. __property bool Active = { read = GetActive };
  122. __property AnsiString DDTemporaryDirectory = { read=FDDTemporaryDirectory, write=FDDTemporaryDirectory };
  123. #ifndef DESIGN_ONLY
  124. __property TTerminal *Terminal = { read = FTerminal, write = SetTerminal };
  125. #endif
  126. __published:
  127. __property bool DDAllowMove = { read = FDDAllowMove,
  128. write = SetDDAllowMove, default = False };
  129. __property int DDDeleteDelay = { read = FDDDeleteDelay,
  130. write = SetDDDeleteDelay, default = DefaultDDDeleteDelay };
  131. __property TGetCopyParamEvent OnGetCopyParam = { read = FOnGetCopyParam,
  132. write = FOnGetCopyParam};
  133. __property TDDTargetDropEvent OnDDTargetDrop = { read = FOnDDTargetDrop,
  134. write = FOnDDTargetDrop};
  135. __property bool ShowInaccesibleDirectories =
  136. { read=FShowInaccesibleDirectories, write=SetShowInaccesibleDirectories,
  137. default=true };
  138. __property PathComboBox;
  139. __property StatusBar;
  140. __property PathLabel;
  141. __property LoadAnimation;
  142. __property OnGetSelectFilter;
  143. __property AddParentDir;
  144. __property DimmHiddenFiles;
  145. __property ShowDirectories;
  146. __property DirsOnTop;
  147. __property ShowSubDirSize;
  148. __property ShowHiddenFiles;
  149. __property SingleClickToExec;
  150. __property WantUseDragImages;
  151. __property TargetPopupMenu;
  152. __property OnSelectItem;
  153. __property OnStartLoading;
  154. __property OnLoaded;
  155. __property OnExecFile;
  156. __property OnDDDragEnter;
  157. __property OnDDDragLeave;
  158. __property OnDDDragOver;
  159. __property OnDDDrop;
  160. __property OnDDQueryContinueDrag;
  161. __property OnDDGiveFeedback;
  162. __property OnDDDragDetect;
  163. __property OnDDEnd;
  164. __property OnDDCreateDragFileList;
  165. __property OnDDTargetHasDropHandler;
  166. __property OnDDProcessDropped;
  167. __property OnDDError;
  168. __property OnDDExecuted;
  169. __property OnDDFileOperation;
  170. __property OnDDFileOperationExecuted;
  171. __property OnDDCreateDataObject;
  172. __property OnDDMenuPopup;
  173. __property OnContextPopup;
  174. __property OnBeginRename;
  175. __property OnEndRename;
  176. __property ColumnClick;
  177. __property MultiSelect;
  178. __property TNotifyEvent OnDisplayProperties = { read = FOnDisplayProperties, write = FOnDisplayProperties };
  179. __property TWarnLackOfTempSpaceEvent OnWarnLackOfTempSpace = { read=FOnWarnLackOfTempSpace, write=FOnWarnLackOfTempSpace };
  180. __property ReadOnly;
  181. __property HeaderImages;
  182. };
  183. //---------------------------------------------------------------------------
  184. AnsiString __fastcall UniqTempDir(const AnsiString BaseDir = "");
  185. //---------------------------------------------------------------------------
  186. #endif