UnixDirView.h 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  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. //---------------------------------------------------------------------------
  11. class TTerminal;
  12. class TUnixDirView;
  13. class TCustomUnixDriveView;
  14. class TRemoteFile;
  15. class TRemoteProperties;
  16. //---------------------------------------------------------------------------
  17. #ifdef DESIGN_ONLY
  18. class TRemoteFile
  19. {
  20. };
  21. #endif
  22. //---------------------------------------------------------------------------
  23. enum TTransferDirection { tdToRemote, tdToLocal };
  24. enum TTransferType { ttCopy, ttMove };
  25. typedef void __fastcall (__closure *TDDDragFileName)
  26. (TObject * Sender, TRemoteFile * File, UnicodeString & FileName);
  27. typedef void __fastcall (__closure *TThumbnailNeededEvent)
  28. (TUnixDirView * Sender, TListItem * Item, TRemoteFile * File, const TSize & Size, TBitmap *& Bitmap);
  29. //---------------------------------------------------------------------------
  30. class PACKAGE TUnixDirView : public TCustomUnixDirView
  31. {
  32. friend class TCustomUnixDriveView;
  33. private:
  34. bool FDDAllowMove;
  35. bool FDirLoadedAfterChangeDir;
  36. TNotifyEvent FOnDisplayProperties;
  37. bool FFullLoad;
  38. int FHiddenCount;
  39. int FFilteredCount;
  40. TTerminal *FTerminal;
  41. bool FShowInaccesibleDirectories;
  42. TDDDragFileName FOnDDDragFileName;
  43. bool __fastcall GetActive();
  44. TCustomUnixDriveView * FDriveView;
  45. TNotifyEvent FOnRead;
  46. TNotifyEvent FOnStartReading;
  47. TThumbnailNeededEvent FOnThumbnailNeeded;
  48. TObject * FAnnouncedDriveViewState;
  49. void __fastcall SetTerminal(TTerminal *value);
  50. void __fastcall DoSetTerminal(TTerminal *value, bool Replace);
  51. void __fastcall SetShowInaccesibleDirectories(bool value);
  52. protected:
  53. virtual void __fastcall DDDragDetect(int grfKeyState, const TPoint &DetectStart,
  54. const TPoint &Point, TDragDetectStatus DragStatus);
  55. virtual void __fastcall DDMenuDone(TObject* Sender, HMENU AMenu);
  56. virtual void __fastcall DDChooseEffect(int grfKeyState, int &dwEffect, int PreferredEffect);
  57. virtual void __fastcall AddToDragFileList(TFileList* FileList, TListItem* Item);
  58. void __fastcall DoReadDirectory(TObject * Sender, bool ReloadOnly);
  59. void __fastcall DoReadDirectoryImpl(TObject * Sender, bool ReloadOnly);
  60. void __fastcall DoStartReadDirectory(TObject * Sender);
  61. virtual bool __fastcall DoExecFile(TListItem * Item, bool ForceEnter);
  62. virtual void __fastcall ExecuteFile(TListItem * Item);
  63. virtual bool __fastcall GetDirOK();
  64. virtual void __fastcall GetDisplayInfo(TListItem * ListItem, tagLVITEMW &DispInfo);
  65. virtual TDropEffectSet __fastcall GetDragSourceEffects();
  66. virtual bool __fastcall GetIsRoot();
  67. virtual UnicodeString __fastcall GetPath();
  68. virtual UnicodeString __fastcall GetPathName();
  69. void __fastcall ChangeDirectory(UnicodeString Path);
  70. virtual void __fastcall InternalEdit(const tagLVITEMW & HItem);
  71. virtual TColor __fastcall ItemColor(TListItem * Item);
  72. virtual UnicodeString __fastcall ItemFileName(TListItem * Item);
  73. virtual int __fastcall ItemImageIndex(TListItem * Item, bool Cache);
  74. virtual TBitmap * __fastcall ItemThumbnail(TListItem * Item, const TSize & Size);
  75. virtual TObject * __fastcall ItemData(TListItem * Item);
  76. virtual bool __fastcall ItemIsFile(TListItem * Item);
  77. virtual bool __fastcall ItemMatchesFilter(TListItem * Item, const TFileFilter &Filter);
  78. virtual Word __fastcall ItemOverlayIndexes(TListItem * Item);
  79. virtual void __fastcall LoadFiles();
  80. virtual void __fastcall PerformItemDragDropOperation(TListItem * Item, int Effect, bool Paste);
  81. virtual void __fastcall SetAddParentDir(bool Value);
  82. virtual void __fastcall SetItemImageIndex(TListItem * Item, int Index);
  83. virtual void __fastcall SetPath(UnicodeString Value);
  84. virtual void __fastcall SortItems();
  85. virtual bool __fastcall TargetHasDropHandler(TListItem * Item, int Effect);
  86. virtual TDateTime __fastcall ItemFileTime(TListItem * Item,
  87. TDateTimePrecision & Precision);
  88. DYNAMIC bool __fastcall CanEdit(TListItem* Item);
  89. void __fastcall SetDriveView(TCustomUnixDriveView * Value);
  90. virtual int __fastcall HiddenCount();
  91. virtual int __fastcall FilteredCount();
  92. DYNAMIC void __fastcall UpdatePathLabelCaption();
  93. __property TCustomUnixDriveView * DriveView = { read = FDriveView, write = SetDriveView };
  94. public:
  95. __fastcall TUnixDirView(TComponent* Owner);
  96. virtual __fastcall ~TUnixDirView();
  97. virtual void __fastcall CreateDirectory(UnicodeString DirName);
  98. void __fastcall CreateDirectoryEx(UnicodeString DirName, const TRemoteProperties * Properties);
  99. virtual void __fastcall DisplayPropertiesMenu();
  100. virtual void __fastcall ExecuteHomeDirectory();
  101. virtual void __fastcall ExecuteParentDirectory();
  102. virtual void __fastcall ExecuteRootDirectory();
  103. virtual void __fastcall ReloadDirectory();
  104. virtual bool __fastcall ItemIsDirectory(TListItem * Item);
  105. virtual bool __fastcall ItemIsParentDirectory(TListItem * Item);
  106. virtual UnicodeString __fastcall ItemFullFileName(TListItem * Item);
  107. virtual __int64 __fastcall ItemFileSize(TListItem * Item);
  108. virtual void __fastcall SetItemCalculatedSize(TListItem * Item, __int64 Size);
  109. virtual bool __fastcall PasteFromClipBoard(UnicodeString TargetPath = L"");
  110. void __fastcall UpdateFiles();
  111. void __fastcall DisplayContextMenu(const TPoint &Where);
  112. void __fastcall ReplaceTerminal(TTerminal * value);
  113. virtual void __fastcall AnnounceState(TObject * State);
  114. virtual void __fastcall RestoreState(TObject * State);
  115. virtual TObject * __fastcall SaveState();
  116. __property bool Active = { read = GetActive };
  117. __property TTerminal *Terminal = { read = FTerminal, write = SetTerminal };
  118. __published:
  119. __property bool DDAllowMove = { read = FDDAllowMove, write = FDDAllowMove, default = false };
  120. __property TDDDragFileName OnDDDragFileName = { read = FOnDDDragFileName,
  121. write = FOnDDDragFileName};
  122. __property OnBusy;
  123. __property OnChangeFocus;
  124. __property bool ShowInaccesibleDirectories =
  125. { read=FShowInaccesibleDirectories, write=SetShowInaccesibleDirectories,
  126. default=true };
  127. __property OnUpdateStatusBar;
  128. __property PathLabel;
  129. __property AddParentDir;
  130. __property DimmHiddenFiles;
  131. __property ShowHiddenFiles;
  132. __property WantUseDragImages;
  133. __property TargetPopupMenu;
  134. __property OnSelectItem;
  135. __property OnStartLoading;
  136. __property OnLoaded;
  137. __property OnExecFile;
  138. __property OnMatchMask;
  139. __property OnGetOverlay;
  140. __property OnGetItemColor;
  141. __property OnDDDragEnter;
  142. __property OnDDDragLeave;
  143. __property OnDDDragOver;
  144. __property OnDDDrop;
  145. __property OnDDQueryContinueDrag;
  146. __property OnDDGiveFeedback;
  147. __property OnDDChooseEffect;
  148. __property OnDDDragDetect;
  149. __property OnDDEnd;
  150. __property OnDDCreateDragFileList;
  151. __property OnDDTargetHasDropHandler;
  152. __property OnDDProcessDropped;
  153. __property OnDDError;
  154. __property OnDDExecuted;
  155. __property OnDDFileOperation;
  156. __property OnDDFileOperationExecuted;
  157. __property OnDDCreateDataObject;
  158. __property OnContextPopup;
  159. __property OnHistoryChange;
  160. __property OnHistoryGo;
  161. __property OnPathChange;
  162. __property ColumnClick;
  163. __property MultiSelect;
  164. __property TNotifyEvent OnDisplayProperties = { read = FOnDisplayProperties, write = FOnDisplayProperties };
  165. __property ReadOnly;
  166. __property DirViewStyle;
  167. __property TNotifyEvent OnRead = { read = FOnRead, write = FOnRead };
  168. __property TNotifyEvent OnStartReading = { read = FOnStartReading, write = FOnStartReading };
  169. __property TThumbnailNeededEvent OnThumbnailNeeded = { read = FOnThumbnailNeeded, write = FOnThumbnailNeeded };
  170. // The only way to make Items stored automatically and survive handle recreation.
  171. // Though we should implement custom persisting to avoid publishing this
  172. __property Items;
  173. };
  174. //---------------------------------------------------------------------------
  175. #endif