Windows2003-3790/inetcore/outlookexpress/oemiglib/oe5imp.h
2020-09-30 16:53:55 +02:00

123 lines
5.0 KiB
C++

//--------------------------------------------------------------------------
// oe5imp.h
//--------------------------------------------------------------------------
#pragma once
//--------------------------------------------------------------------------
// Depends
//--------------------------------------------------------------------------
#include <newimp.h>
#include <oestore.h>
#include <shared.h>
#include <database.h>
//--------------------------------------------------------------------------
// Forward Decls
//--------------------------------------------------------------------------
typedef struct tagIMPFOLDERNODE IMPFOLDERNODE;
typedef struct tagFLDINFO *LPFLDINFO;
//--------------------------------------------------------------------------
// {A1006DE3-2173-11d2-9A7C-00C04FA309D4}
//--------------------------------------------------------------------------
DEFINE_GUID(CLSID_COE5Import, 0xa1006de3, 0x2173, 0x11d2, 0x9a, 0x7c, 0x0, 0xc0, 0x4f, 0xa3, 0x9, 0xd4);
//--------------------------------------------------------------------------
// IMPORTOPTIONS
//--------------------------------------------------------------------------
typedef struct tagIMPORTOPTIONS {
CHAR szStoreRoot[MAX_PATH + MAX_PATH];
BOOL fOE5Only;
} IMPORTOPTIONS, *LPIMPORTOPTIONS;
//--------------------------------------------------------------------------
// COE5EnumFolders
//--------------------------------------------------------------------------
class COE5EnumFolders : public IEnumFOLDERS
{
public:
//----------------------------------------------------------------------
// Construction
//----------------------------------------------------------------------
COE5EnumFolders(IMPFOLDERNODE *plist);
~COE5EnumFolders(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;
};
//--------------------------------------------------------------------------
// COE5Import
//--------------------------------------------------------------------------
class COE5Import : public IMailImport
{
public:
//----------------------------------------------------------------------
// Construction
//----------------------------------------------------------------------
COE5Import(void);
~COE5Import(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
//----------------------------------------------------------------------
void _FreeFolderList(IMPFOLDERNODE *pNode);
HRESULT _BuildFolderList(IDatabase *pDB);
HRESULT _BuildFolderHierarchy(DWORD cDepth, FOLDERID idParent, IMPFOLDERNODE *pParent);
private:
//----------------------------------------------------------------------
// Private Data
//----------------------------------------------------------------------
LONG m_cRef;
CHAR m_szDirectory[MAX_PATH];
DWORD m_cFolders;
LPFOLDERINFO m_prgFolder;
IMPFOLDERNODE *m_pList;
BOOL m_fGotMeSomeFolders;
IMPORTOPTIONS m_Options;
IDatabase *m_pFolderDB;
IDatabaseSession *m_pSession;
HWND m_hwndParent;
};
//--------------------------------------------------------------------------
// Prototypes
//--------------------------------------------------------------------------
COE5Import_CreateInstance(IUnknown *pUnkOuter, IUnknown **ppUnknown);