windows-nt/Source/XPSP1/NT/shell/ext/ftp/ftpprop.h
2020-09-26 16:20:57 +08:00

78 lines
2.6 KiB
C++

/*****************************************************************************
* ftpprop.h
*****************************************************************************/
#ifndef _FTPPROP_H
#define _FTPPROP_H
#include "ftpdhlp.h"
#include "ftppl.h"
HRESULT CFtpProp_DoProp(CFtpPidlList * pflHfpl, CFtpFolder * pff, HWND hwnd);
/*****************************************************************************\
CLASS: CFtpProp
DESCRIPTION:
NOTE! that we use the IShellFolder on the wrong thread!
Take careful note that all the CFtpFolder methods we call are thread-safe.
The Change UNIX Permissions feature works by sending the command
"SITE CHMOD <permissions> <filename>" to the server.
\*****************************************************************************/
class CFtpProp : public IUnknown
{
public:
//////////////////////////////////////////////////////
// Public Interfaces
//////////////////////////////////////////////////////
// *** IUnknown ***
virtual STDMETHODIMP_(ULONG) AddRef(void);
virtual STDMETHODIMP_(ULONG) Release(void);
virtual STDMETHODIMP QueryInterface(REFIID riid, LPVOID * ppvObj);
public:
CFtpProp();
~CFtpProp(void);
// Friend Functions
friend HRESULT CFtpProp_Create(CFtpPidlList * pflHfpl, CFtpFolder * pff, HWND hwnd, CFtpProp ** ppfp);
static HRESULT _CommitCHMOD_CB(HINTERNET hint, HINTPROCINFO * phpi, LPVOID pv, BOOL * pfReleaseHint);
static DWORD _PropertySheetThreadProc(LPVOID pvCFtpProp) {return ((CFtpProp *) pvCFtpProp)->_PropertySheetThread(); };
protected:
// Public Member Variables
int m_cRef;
CFtpFolder * m_pff; // Folder that owns the pidls
CFtpPidlList * m_pflHfpl; //
HWND m_hwnd; // browser window for UI and Legacy ChangeNotify
CFtpDialogTemplate m_ftpDialogTemplate;
BOOL m_fChangeModeSupported;
DWORD m_dwNewPermissions;
// Public Member Functions
BOOL OnInitDialog(HWND hdlg);
BOOL OnClose(HWND hDlg);
BOOL OnDestroy(HWND hDlg);
DWORD _PropertySheetThread(void);
void _HideCHMOD_UI(HWND hDlg);
HRESULT _SetCHMOD_UI(HWND hDlg);
DWORD _GetCHMOD_UI(HWND hDlg);
DWORD _GetUnixPermissions(void);
HRESULT _CommitCHMOD(HINTERNET hint, HINTPROCINFO * phpi, BOOL * pfReleaseHint);
INT_PTR _SetWhiteBGCtlColor(HWND hDlg, HDC hdc, HWND hwndCtl);
static INT_PTR DlgProc(HWND hdlg, UINT wm, WPARAM wp, LPARAM lp);
};
DWORD DoProp_OnThread(LPVOID pv);
#endif // _FTPPROP_H