#ifndef _MSGSITE_H #define _MSGSITE_H #include "imsgsite.h" // Current MsgSite Action // These are the only ones that the msg site worries about. enum { MSA_IDLE = 0, MSA_DELETE, MSA_COPYMOVE, MSA_SAVE, MSA_SEND, MSA_GET_MESSAGE }; // CopyMove function used enum { CMF_UNINITED = 0, CMF_MSG_TO_FOLDER, CMF_TABLE_TO_FOLDER, CMF_STORE_TO_FOLDER, CMF_FAT_TO_FOLDER, }; // Original Folder is IMAP state enum { OFIMAP_UNDEFINED = 0, OFIMAP_TRUE, OFIMAP_FALSE, }; class COEMsgSite : public IOEMsgSite { public: COEMsgSite(); ~COEMsgSite(); // IUnknown HRESULT STDMETHODCALLTYPE QueryInterface(REFIID, LPVOID FAR *); ULONG STDMETHODCALLTYPE AddRef(); ULONG STDMETHODCALLTYPE Release(); // IMsgSite Methods virtual HRESULT STDMETHODCALLTYPE Init(INIT_MSGSITE_STRUCT *pInitStruct); virtual HRESULT STDMETHODCALLTYPE GetStatusFlags(DWORD *dwflags); virtual HRESULT STDMETHODCALLTYPE GetFolderID(FOLDERID *folderID); virtual HRESULT STDMETHODCALLTYPE Delete(DELETEMESSAGEFLAGS dwFlags); virtual HRESULT STDMETHODCALLTYPE DoNextPrev(BOOL fNext, DWORD dwFlags); virtual HRESULT STDMETHODCALLTYPE DoCopyMoveToFolder(BOOL fCopy, IMimeMessage *pMsg, BOOL fUnSent); virtual HRESULT STDMETHODCALLTYPE Save(IMimeMessage *pMsg, DWORD dwflags, IImnAccount *pAcct); #ifdef SMIME_V3 virtual HRESULT STDMETHODCALLTYPE SendToOutbox(IMimeMessage *pMsg, BOOL fSendImmediate, IHeaderSite *pHeaderSite); #else virtual HRESULT STDMETHODCALLTYPE SendToOutbox(IMimeMessage *pMsg, BOOL fSendImmediate); #endif // SMIME_V3 virtual HRESULT STDMETHODCALLTYPE MarkMessage(MARK_TYPE dwType, APPLYCHILDRENTYPE dwApplyType); virtual HRESULT STDMETHODCALLTYPE GetMessageFlags(MESSAGEFLAGS *pdwFlags); virtual HRESULT STDMETHODCALLTYPE GetDefaultAccount(ACCTTYPE acctType, IImnAccount **ppAcct); virtual HRESULT STDMETHODCALLTYPE GetMessage(IMimeMessage **ppMsg, BOOL *pfCompleteMsg, DWORD dwMessageFlags, HRESULT *phr); virtual HRESULT STDMETHODCALLTYPE Close(void); virtual HRESULT STDMETHODCALLTYPE SetStoreCallback(IStoreCallback *pStoreCB); virtual HRESULT STDMETHODCALLTYPE GetLocation(LPWSTR rgwchLocation, DWORD cchSize); virtual HRESULT STDMETHODCALLTYPE SwitchLanguage(HCHARSET hOldCharset, HCHARSET hNewCharset); virtual HRESULT STDMETHODCALLTYPE OnComplete(STOREOPERATIONTYPE tyOperation, HRESULT hrComplete, STOREOPERATIONTYPE *ptyNewOp = NULL); virtual HRESULT STDMETHODCALLTYPE UpdateCallbackInfo(LPSTOREOPERATIONINFO pOpInfo); virtual HRESULT STDMETHODCALLTYPE Notify(DWORD dwNotifyID); protected: HWND GetCallbackHwnd(void); void HandlePut(HRESULT hr, STOREOPERATIONTYPE *ptyNewOp); void HandleDelete(HRESULT hr); void HandleCopyMove(HRESULT hr); void HandleGetMessage(HRESULT hr); BOOL FCanConnect(void); BOOL ThreadingEnabled(void); BOOL NeedToSendNews(IMimePropertySet *pPropSet); BOOL NeedToSendMail(IMimePropertySet *pPropSet); HRESULT LoadMessage(void); HRESULT LoadMessageFromFAT(BOOL fOriginal, HRESULT *phr); HRESULT LoadMessageFromTable(BOOL fOriginal, HRESULT *phr); HRESULT LoadMessageFromStore(void); HRESULT LoadMessageFromRow(IMimeMessage **ppMsg, ROWINDEX row); HRESULT CreateMsgWithAccountInfo(void); HRESULT SetAccountInfo(void); HRESULT DoCopyMoveFromFATToFldr(BOOL fUnSent); HRESULT DoCopyMoveFromTableToFldr(void); HRESULT DoCopyMoveFromStoreToFldr(BOOL fUnSent); HRESULT DoCopyMoveFromMsgToFldr(IMimeMessage *pMsg, BOOL fUnSent); HRESULT DeleteFromMsgTable(DELETEMESSAGEFLAGS dwFlags); HRESULT DeleteFromStore(DELETEMESSAGEFLAGS dwFlags); #ifdef SMIME_V3 HRESULT SendMsg(IMimeMessage *pMsg, BOOL fSendImmediately, BOOL fMail, IHeaderSite *pHeaderSite); #else HRESULT SendMsg(IMimeMessage *pMsg, BOOL fSendImmediately, BOOL fMail); #endif // SMIME_V3 HRESULT ClearHeaders(ULONG cNames, LPCSTR *prgszName, IMimePropertySet *pPropSet); private: BOOL m_fValidMessage, m_fReloadMessageFlag, m_fNeedToLoadMsg, m_fThreadingEnabled, m_fCBCopy, m_fCBSavedInDrafts, m_fCBSaveInFolderAndDelOrig, m_fGotNewID, m_fHaveCBMessageID, m_fHeaderOnly; DWORD m_dwInitType, m_dwCMFState, m_dwOrigFolderIsImap, m_dwArfFlags, m_dwMSAction; ULONG m_cRef; IMimeMessage *m_pMsg, *m_pOrigMsg; IMessageTable *m_pMsgTable; IMessageFolder *m_pCBMsgFolder; IMessageFolder *m_pFolderReleaseOnComplete; IListSelector *m_pListSelect; IStoreCallback *m_pStoreCB; MESSAGEID m_MessageID, m_CBMessageID, m_NewMessageID; FOLDERID m_FolderID, m_CBFolderID; MESSAGEID m_idBookmark, m_idNewBookmark; WCHAR m_rgwchFileName[MAX_PATH]; DWORD m_dwMDNFlags; }; #endif