1
0
mirror of https://github.com/winscp/winscp.git synced 2026-10-24 02:28:55 +03:00
Files
winscp/source/components/UnixDirView.h
Martin Prikryl 3a3f514c59 Issue 912 – Thumbnail view in file panel (remote)
https://winscp.net/tracker/912

Source commit: 8fbf80f9ea42f043cfb856821f474c80da45aa5e
2024-09-05 13:05:19 +02:00

178 lines
7.9 KiB
C++

//---------------------------------------------------------------------------
#ifndef UnixDirViewH
#define UnixDirViewH
//---------------------------------------------------------------------------
#include <SysUtils.hpp>
#include <Controls.hpp>
#include <Classes.hpp>
#include <Forms.hpp>
#include "CustomUnixDirView.hpp"
//---------------------------------------------------------------------------
class TTerminal;
class TUnixDirView;
class TCustomUnixDriveView;
class TRemoteFile;
class TRemoteProperties;
//---------------------------------------------------------------------------
enum TTransferDirection { tdToRemote, tdToLocal };
enum TTransferType { ttCopy, ttMove };
typedef void __fastcall (__closure *TDDDragFileName)
(TObject * Sender, TRemoteFile * File, UnicodeString & FileName);
typedef void __fastcall (__closure *TThumbnailNeededEvent)
(TUnixDirView * Sender, TListItem * Item, TRemoteFile * File, const TSize & Size, TBitmap *& Bitmap);
//---------------------------------------------------------------------------
class PACKAGE TUnixDirView : public TCustomUnixDirView
{
friend class TCustomUnixDriveView;
private:
bool FDDAllowMove;
bool FDirLoadedAfterChangeDir;
TNotifyEvent FOnDisplayProperties;
bool FFullLoad;
int FHiddenCount;
int FFilteredCount;
TTerminal *FTerminal;
bool FShowInaccesibleDirectories;
TDDDragFileName FOnDDDragFileName;
bool __fastcall GetActive();
TCustomUnixDriveView * FDriveView;
TNotifyEvent FOnRead;
TNotifyEvent FOnStartReading;
TThumbnailNeededEvent FOnThumbnailNeeded;
TObject * FAnnouncedDriveViewState;
void __fastcall SetTerminal(TTerminal *value);
void __fastcall DoSetTerminal(TTerminal *value, bool Replace);
void __fastcall SetShowInaccesibleDirectories(bool value);
protected:
virtual void __fastcall DDDragDetect(int grfKeyState, const TPoint &DetectStart,
const TPoint &Point, TDragDetectStatus DragStatus);
virtual void __fastcall DDMenuDone(TObject* Sender, HMENU AMenu);
virtual void __fastcall DDChooseEffect(int grfKeyState, int &dwEffect, int PreferredEffect);
virtual void __fastcall AddToDragFileList(TFileList* FileList, TListItem* Item);
void __fastcall DoReadDirectory(TObject * Sender, bool ReloadOnly);
void __fastcall DoReadDirectoryImpl(TObject * Sender, bool ReloadOnly);
void __fastcall DoStartReadDirectory(TObject * Sender);
virtual bool __fastcall DoExecFile(TListItem * Item, bool ForceEnter);
virtual void __fastcall ExecuteFile(TListItem * Item);
virtual bool __fastcall GetDirOK();
virtual void __fastcall GetDisplayInfo(TListItem * ListItem, tagLVITEMW &DispInfo);
virtual TDropEffectSet __fastcall GetDragSourceEffects();
virtual bool __fastcall GetIsRoot();
virtual UnicodeString __fastcall GetPath();
virtual UnicodeString __fastcall GetPathName();
void __fastcall ChangeDirectory(UnicodeString Path);
virtual void __fastcall InternalEdit(const tagLVITEMW & HItem);
virtual TColor __fastcall ItemColor(TListItem * Item);
virtual UnicodeString __fastcall ItemFileName(TListItem * Item);
virtual int __fastcall ItemImageIndex(TListItem * Item, bool Cache);
virtual TBitmap * __fastcall ItemThumbnail(TListItem * Item, const TSize & Size);
virtual TObject * __fastcall ItemData(TListItem * Item);
virtual bool __fastcall ItemIsFile(TListItem * Item);
virtual bool __fastcall ItemMatchesFilter(TListItem * Item, const TFileFilter &Filter);
virtual Word __fastcall ItemOverlayIndexes(TListItem * Item);
virtual void __fastcall LoadFiles();
virtual void __fastcall PerformItemDragDropOperation(TListItem * Item, int Effect, bool Paste);
virtual void __fastcall SetAddParentDir(bool Value);
virtual void __fastcall SetItemImageIndex(TListItem * Item, int Index);
virtual void __fastcall SetPath(UnicodeString Value);
virtual void __fastcall SortItems();
virtual bool __fastcall TargetHasDropHandler(TListItem * Item, int Effect);
virtual TDateTime __fastcall ItemFileTime(TListItem * Item,
TDateTimePrecision & Precision);
DYNAMIC bool __fastcall CanEdit(TListItem* Item);
void __fastcall SetDriveView(TCustomUnixDriveView * Value);
virtual int __fastcall HiddenCount();
virtual int __fastcall FilteredCount();
DYNAMIC void __fastcall UpdatePathLabelCaption();
__property TCustomUnixDriveView * DriveView = { read = FDriveView, write = SetDriveView };
public:
__fastcall TUnixDirView(TComponent* Owner);
virtual __fastcall ~TUnixDirView();
virtual void __fastcall CreateDirectory(UnicodeString DirName);
void __fastcall CreateDirectoryEx(UnicodeString DirName, const TRemoteProperties * Properties);
virtual void __fastcall DisplayPropertiesMenu();
virtual void __fastcall ExecuteHomeDirectory();
virtual void __fastcall ExecuteParentDirectory();
virtual void __fastcall ExecuteRootDirectory();
virtual void __fastcall ReloadDirectory();
virtual bool __fastcall ItemIsDirectory(TListItem * Item);
virtual bool __fastcall ItemIsParentDirectory(TListItem * Item);
virtual UnicodeString __fastcall ItemFullFileName(TListItem * Item);
virtual __int64 __fastcall ItemFileSize(TListItem * Item);
virtual void __fastcall SetItemCalculatedSize(TListItem * Item, __int64 Size);
virtual bool __fastcall PasteFromClipBoard(UnicodeString TargetPath = L"");
void __fastcall UpdateFiles();
void __fastcall DisplayContextMenu(const TPoint &Where);
void __fastcall ReplaceTerminal(TTerminal * value);
virtual void __fastcall AnnounceState(TObject * State);
virtual void __fastcall RestoreState(TObject * State);
virtual TObject * __fastcall SaveState();
__property bool Active = { read = GetActive };
__property TTerminal *Terminal = { read = FTerminal, write = SetTerminal };
__published:
__property bool DDAllowMove = { read = FDDAllowMove, write = FDDAllowMove, default = false };
__property TDDDragFileName OnDDDragFileName = { read = FOnDDDragFileName,
write = FOnDDDragFileName};
__property OnBusy;
__property OnChangeFocus;
__property bool ShowInaccesibleDirectories =
{ read=FShowInaccesibleDirectories, write=SetShowInaccesibleDirectories,
default=true };
__property OnUpdateStatusBar;
__property PathLabel;
__property AddParentDir;
__property DimmHiddenFiles;
__property ShowHiddenFiles;
__property WantUseDragImages;
__property TargetPopupMenu;
__property OnSelectItem;
__property OnStartLoading;
__property OnLoaded;
__property OnExecFile;
__property OnMatchMask;
__property OnGetOverlay;
__property OnGetItemColor;
__property OnDDDragEnter;
__property OnDDDragLeave;
__property OnDDDragOver;
__property OnDDDrop;
__property OnDDQueryContinueDrag;
__property OnDDGiveFeedback;
__property OnDDChooseEffect;
__property OnDDDragDetect;
__property OnDDEnd;
__property OnDDCreateDragFileList;
__property OnDDTargetHasDropHandler;
__property OnDDProcessDropped;
__property OnDDError;
__property OnDDExecuted;
__property OnDDFileOperation;
__property OnDDFileOperationExecuted;
__property OnDDCreateDataObject;
__property OnContextPopup;
__property OnHistoryChange;
__property OnHistoryGo;
__property OnPathChange;
__property ColumnClick;
__property MultiSelect;
__property TNotifyEvent OnDisplayProperties = { read = FOnDisplayProperties, write = FOnDisplayProperties };
__property ReadOnly;
__property DirViewStyle;
__property TNotifyEvent OnRead = { read = FOnRead, write = FOnRead };
__property TNotifyEvent OnStartReading = { read = FOnStartReading, write = FOnStartReading };
__property TThumbnailNeededEvent OnThumbnailNeeded = { read = FOnThumbnailNeeded, write = FOnThumbnailNeeded };
// The only way to make Items stored automatically and survive handle recreation.
// Though we should implement custom persisting to avoid publishing this
__property Items;
};
//---------------------------------------------------------------------------
#endif