You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
4.8 KiB
112 lines
4.8 KiB
//--------------------------------------------------------------------------
|
|
// OE4Imp.h
|
|
//--------------------------------------------------------------------------
|
|
#pragma once
|
|
|
|
//--------------------------------------------------------------------------
|
|
// Depends
|
|
//--------------------------------------------------------------------------
|
|
#include <newimp.h>
|
|
|
|
//--------------------------------------------------------------------------
|
|
// Forward Decls
|
|
//--------------------------------------------------------------------------
|
|
typedef struct tagIMPFOLDERNODE IMPFOLDERNODE;
|
|
typedef struct tagFLDINFO *LPFLDINFO;
|
|
|
|
//--------------------------------------------------------------------------
|
|
// {BCE9E2E7-1FDD-11d2-9A79-00C04FA309D4}
|
|
//--------------------------------------------------------------------------
|
|
DEFINE_GUID(CLSID_COE4Import, 0xbce9e2e7, 0x1fdd, 0x11d2, 0x9a, 0x79, 0x0, 0xc0, 0x4f, 0xa3, 0x9, 0xd4);
|
|
|
|
//--------------------------------------------------------------------------
|
|
// {B977CB11-1FF5-11d2-9A7A-00C04FA309D4}
|
|
//--------------------------------------------------------------------------
|
|
DEFINE_GUID(CLSID_CIMN1Import, 0xb977cb11, 0x1ff5, 0x11d2, 0x9a, 0x7a, 0x0, 0xc0, 0x4f, 0xa3, 0x9, 0xd4);
|
|
|
|
//--------------------------------------------------------------------------
|
|
// COE4EnumFolders
|
|
//--------------------------------------------------------------------------
|
|
class COE4EnumFolders : public IEnumFOLDERS
|
|
{
|
|
public:
|
|
//----------------------------------------------------------------------
|
|
// Construction
|
|
//----------------------------------------------------------------------
|
|
COE4EnumFolders(IMPFOLDERNODE *plist);
|
|
~COE4EnumFolders(void);
|
|
|
|
//----------------------------------------------------------------------
|
|
// IUnknown Members
|
|
//----------------------------------------------------------------------
|
|
STDMETHODIMP QueryInterface(REFIID, LPVOID *);
|
|
STDMETHODIMP_(ULONG) AddRef(void);
|
|
STDMETHODIMP_(ULONG) Release(void);
|
|
|
|
//----------------------------------------------------------------------
|
|
// IEnumFOLDERS Members
|
|
//----------------------------------------------------------------------
|
|
STDMETHODIMP Next(IMPORTFOLDER *pfldr);
|
|
STDMETHODIMP Reset(void);
|
|
|
|
private:
|
|
//----------------------------------------------------------------------
|
|
// Private Data
|
|
//----------------------------------------------------------------------
|
|
LONG m_cRef;
|
|
IMPFOLDERNODE *m_pList;
|
|
IMPFOLDERNODE *m_pNext;
|
|
};
|
|
|
|
//--------------------------------------------------------------------------
|
|
// COE4Import
|
|
//--------------------------------------------------------------------------
|
|
class COE4Import : public IMailImport
|
|
{
|
|
public:
|
|
//----------------------------------------------------------------------
|
|
// Construction
|
|
//----------------------------------------------------------------------
|
|
COE4Import(void);
|
|
~COE4Import(void);
|
|
|
|
//----------------------------------------------------------------------
|
|
// IUnknown Members
|
|
//----------------------------------------------------------------------
|
|
STDMETHODIMP QueryInterface(REFIID, LPVOID *);
|
|
STDMETHODIMP_(ULONG) AddRef(void);
|
|
STDMETHODIMP_(ULONG) Release(void);
|
|
|
|
//----------------------------------------------------------------------
|
|
// IMailImport Members
|
|
//----------------------------------------------------------------------
|
|
STDMETHODIMP InitializeImport(HWND hwnd);
|
|
STDMETHODIMP GetDirectory(LPSTR pszDir, UINT cch);
|
|
STDMETHODIMP SetDirectory(LPSTR pszDir);
|
|
STDMETHODIMP EnumerateFolders(DWORD_PTR dwCookie, IEnumFOLDERS **ppEnum);
|
|
STDMETHODIMP ImportFolder(DWORD_PTR dwCookie, IFolderImport *pImport);
|
|
|
|
private:
|
|
//----------------------------------------------------------------------
|
|
// Private Methods
|
|
//----------------------------------------------------------------------
|
|
HRESULT _BuildFolderHierarchy(DWORD cDepth, DWORD idParent, IMPFOLDERNODE *pParent, DWORD cFolders, LPFLDINFO prgFolder);
|
|
HRESULT _EnumerateV1Folders(void);
|
|
void _FreeFolderList(IMPFOLDERNODE *pNode);
|
|
void _Cleanup(void);
|
|
|
|
private:
|
|
//----------------------------------------------------------------------
|
|
// Private Data
|
|
//----------------------------------------------------------------------
|
|
LONG m_cRef;
|
|
CHAR m_szDirectory[MAX_PATH];
|
|
DWORD m_cFolders;
|
|
LPFLDINFO m_prgFolder;
|
|
IMPFOLDERNODE *m_pList;
|
|
};
|
|
|
|
//--------------------------------------------------------------------------
|
|
// Prototypes
|
|
//--------------------------------------------------------------------------
|
|
COE4Import_CreateInstance(IUnknown *pUnkOuter, IUnknown **ppUnknown);
|