125 lines
5.6 KiB
C++
125 lines
5.6 KiB
C++
/*****************************************************************************\
|
|
FILE: view.h
|
|
|
|
DESCRIPTION:
|
|
This is our ShellView which implements FTP specific behavior. We get
|
|
the default DefView implementation and then use IShellFolderViewCB to
|
|
override behavior specific to us.
|
|
\*****************************************************************************/
|
|
|
|
#ifndef _FTPVIEW_H
|
|
#define _FTPVIEW_H
|
|
|
|
#include "isfvcb.h"
|
|
#include "statusbr.h"
|
|
#include "msieftp.h"
|
|
#include "dspsprt.h"
|
|
|
|
|
|
CFtpView * GetCFtpViewFromDefViewSite(IUnknown * punkSite);
|
|
CStatusBar * GetCStatusBarFromDefViewSite(IUnknown * punkSite);
|
|
HRESULT FtpView_SetRedirectPidl(IUnknown * punkSite, LPCITEMIDLIST pidl);
|
|
|
|
|
|
class CFtpView
|
|
: public CBaseFolderViewCB
|
|
, public IFtpWebView
|
|
, public CImpIDispatch
|
|
{
|
|
public:
|
|
//////////////////////////////////////////////////////
|
|
// Public Interfaces
|
|
//////////////////////////////////////////////////////
|
|
|
|
// *** IUnknown ***
|
|
virtual STDMETHODIMP QueryInterface(REFIID riid, LPVOID * ppvObj);
|
|
virtual STDMETHODIMP_(ULONG) AddRef(void) {return CBaseFolderViewCB::AddRef();};
|
|
virtual STDMETHODIMP_(ULONG) Release(void) {return CBaseFolderViewCB::Release();};
|
|
|
|
// *** IDispatch methods ***
|
|
virtual STDMETHODIMP GetTypeInfoCount(UINT * pctinfo);
|
|
virtual STDMETHODIMP GetTypeInfo(UINT itinfo, LCID lcid, ITypeInfo * * pptinfo);
|
|
virtual STDMETHODIMP GetIDsOfNames(REFIID riid, OLECHAR * * rgszNames, UINT cNames, LCID lcid, DISPID * rgdispid);
|
|
virtual STDMETHODIMP Invoke(DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS * pdispparams, VARIANT * pvarResult, EXCEPINFO * pexcepinfo, UINT * puArgErr);
|
|
|
|
// *** IFtpWebView methods ***
|
|
virtual STDMETHODIMP get_Server(BSTR * pbstr);
|
|
virtual STDMETHODIMP get_Directory(BSTR * pbstr);
|
|
virtual STDMETHODIMP get_UserName(BSTR * pbstr);
|
|
virtual STDMETHODIMP get_PasswordLength(long * plLength);
|
|
virtual STDMETHODIMP get_EmailAddress(BSTR * pbstr);
|
|
virtual STDMETHODIMP put_EmailAddress(BSTR bstr);
|
|
virtual STDMETHODIMP get_CurrentLoginAnonymous(VARIANT_BOOL * pfAnonymousLogin);
|
|
virtual STDMETHODIMP get_MessageOfTheDay(BSTR * pbstr);
|
|
virtual STDMETHODIMP LoginAnonymously(void);
|
|
virtual STDMETHODIMP LoginWithPassword(BSTR bUserName, BSTR bPassword);
|
|
virtual STDMETHODIMP LoginWithoutPassword(BSTR bUserName);
|
|
virtual STDMETHODIMP InvokeHelp(void) {return _OnInvokeFtpHelp(m_hwndOwner);};
|
|
|
|
// *** CFtpViewPriv methods ***
|
|
BOOL IsForegroundThread(void);
|
|
CStatusBar * GetStatusBar(void) { return m_psb; };
|
|
HRESULT SetRedirectPidl(LPCITEMIDLIST pidlRedirect);
|
|
|
|
public:
|
|
// Public Member Functions
|
|
static HRESULT DummyHintCallback(HWND hwnd, CFtpFolder * pff, HINTERNET hint, LPVOID pv1, LPVOID pv2);
|
|
|
|
// Friend Functions
|
|
friend HRESULT CFtpView_Create(CFtpFolder * pff, HWND hwndOwner, REFIID riid, LPVOID * ppv);
|
|
|
|
protected:
|
|
// Private Member Variables
|
|
HWND m_hwndOwner; // The owner window
|
|
HWND m_hwndStatusBar; // The Status Bar window
|
|
CFtpFolder * m_pff; // The owner Folder
|
|
LPGLOBALTIMEOUTINFO m_hgtiWelcome; // The timeout for the welcome message
|
|
CStatusBar * m_psb; // The timeout for the welcome message
|
|
HINSTANCE m_hinstInetCpl; // HANDLE to Internet Control panel for View.Options.
|
|
RECT m_rcPrev; // Previous size so we know when to ignore resizes.
|
|
UINT m_idMergedMenus; // Where did I start merging menus?
|
|
UINT m_nMenuItemsAdded; // How many menu items did I had?
|
|
LPITEMIDLIST m_pidlRedirect; // We want to redirect to this pidl. See the comments in _OnBackGroundEnumDone().
|
|
UINT m_nThreadID; // What is the main thread?
|
|
|
|
// Private Member Functions
|
|
CFtpView(CFtpFolder * pff, HWND hwndOwner);
|
|
~CFtpView();
|
|
|
|
void _InitStatusBar(void);
|
|
void _ShowMotd(void);
|
|
HRESULT _OnInvokeFtpHelp(HWND hwnd);
|
|
HRESULT _LoginWithPassword(LPCTSTR pszUserName, LPCTSTR pszPassword);
|
|
|
|
virtual HRESULT _OnWindowCreated(void);
|
|
virtual HRESULT _OnDefItemCount(LPINT pi);
|
|
virtual HRESULT _OnGetHelpText(LPARAM lParam, WPARAM wParam);
|
|
virtual HRESULT _OnGetZone(DWORD * pdwZone, WPARAM wParam);
|
|
virtual HRESULT _OnGetPane(DWORD dwPaneID, DWORD * pdwPane);
|
|
virtual HRESULT _OnRefresh(BOOL fReload);
|
|
virtual HRESULT _OnDidDragDrop(DROPEFFECT de, IDataObject * pdto);
|
|
virtual HRESULT _OnGetDetailsOf(UINT ici, PDETAILSINFO pdi);
|
|
virtual HRESULT _OnInvokeCommand(UINT idc);
|
|
virtual HRESULT _OnMergeMenu(LPQCMINFO pqcm);
|
|
virtual HRESULT _OnUnMergeMenu(HMENU hMenu);
|
|
virtual HRESULT _OnColumnClick(UINT ici);
|
|
virtual HRESULT _OnGetNotify(LPITEMIDLIST * ppidl, LONG * lEvents);
|
|
virtual HRESULT _OnSize(LONG x, LONG y);
|
|
virtual HRESULT _OnUpdateStatusBar(void);
|
|
virtual HRESULT _OnThisIDList(LPITEMIDLIST * ppidl);
|
|
virtual HRESULT _OnAddPropertyPages(SFVM_PROPPAGE_DATA * pData);
|
|
virtual HRESULT _OnInitMenuPopup(HMENU hmenu, UINT idCmdFirst, UINT nIndex);
|
|
virtual HRESULT _OnGetHelpTopic(SFVM_HELPTOPIC_DATA * phtd);
|
|
virtual HRESULT _OnBackGroundEnumDone(void);
|
|
|
|
HRESULT _OnInvokeLoginAs(HWND hwndOwner);
|
|
HRESULT _OnInvokeNewFolder(HWND hwndOwner);
|
|
|
|
void _ShowMotdPsf(HWND hwndOwner);
|
|
|
|
private:
|
|
static INT_PTR CALLBACK _MOTDDialogProc(HWND hDlg, UINT wm, WPARAM wParam, LPARAM lParam);
|
|
};
|
|
|
|
#endif // _FTPVIEW_H
|