//-------------------------------------------------------------------------- // oe5imp.h //-------------------------------------------------------------------------- #pragma once //-------------------------------------------------------------------------- // Depends //-------------------------------------------------------------------------- #include #include #include #include //-------------------------------------------------------------------------- // 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);