123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- #ifndef ECMESSAGE_H
- #define ECMESSAGE_H
- #include <kopano/zcdefs.h>
- #include <kopano/ECMemTable.h>
- #include <kopano/Util.h>
- #include <mapidefs.h>
- #include "WSTransport.h"
- #include "ECMsgStore.h"
- #include "ECMAPIProp.h"
- class ECAttach;
- class IAttachFactory {
- public:
- virtual HRESULT Create(ECMsgStore *lpMsgStore, ULONG ulObjType, BOOL fModify, ULONG ulAttachNum, ECMAPIProp *lpRoot, ECAttach **lppAttach) const = 0;
- };
- class ECMessage : public ECMAPIProp {
- protected:
-
- ECMessage(ECMsgStore *lpMsgStore, BOOL fNew, BOOL fModify, ULONG ulFlags, BOOL bEmbedded, ECMAPIProp *lpRoot);
- virtual ~ECMessage();
- public:
-
- static HRESULT Create(ECMsgStore *lpMsgStore, BOOL fNew, BOOL fModify, ULONG ulFlags, BOOL bEmbedded, ECMAPIProp *lpRoot, ECMessage **lpMessage);
-
- static HRESULT GetPropHandler(ULONG ulPropTag, void* lpProvider, ULONG ulFlags, LPSPropValue lpsPropValue, void *lpParam, void *lpBase);
-
-
- static HRESULT SetPropHandler(ULONG ulPropTag, void *lpProvider, const SPropValue *lpsPropValue, void *lpParam);
- virtual HRESULT QueryInterface(REFIID refiid, void **lppInterface) _kc_override;
- virtual HRESULT OpenProperty(ULONG ulPropTag, LPCIID lpiid, ULONG ulInterfaceOptions, ULONG ulFlags, LPUNKNOWN *lppUnk);
- virtual HRESULT GetAttachmentTable(ULONG ulFlags, LPMAPITABLE *lppTable);
- virtual HRESULT OpenAttach(ULONG ulAttachmentNum, LPCIID lpInterface, ULONG ulFlags, LPATTACH *lppAttach);
- virtual HRESULT CreateAttach(LPCIID lpInterface, ULONG ulFlags, ULONG *lpulAttachmentNum, LPATTACH *lppAttach);
- virtual HRESULT DeleteAttach(ULONG ulAttachmentNum, ULONG ulUIParam, LPMAPIPROGRESS lpProgress, ULONG ulFlags);
- virtual HRESULT GetRecipientTable(ULONG ulFlags, LPMAPITABLE *lppTable);
- virtual HRESULT ModifyRecipients(ULONG ulFlags, const ADRLIST *lpMods);
- virtual HRESULT SubmitMessage(ULONG ulFlags);
- virtual HRESULT SetReadFlag(ULONG ulFlags);
-
- virtual HRESULT SaveChanges(ULONG ulFlags);
- virtual HRESULT HrSaveChild(ULONG ulFlags, MAPIOBJECT *lpsMapiObject);
-
- virtual HRESULT CopyTo(ULONG ciidExclude, LPCIID rgiidExclude, const SPropTagArray *lpExcludeProps, ULONG ulUIParam, LPMAPIPROGRESS lpProgress, LPCIID lpInterface, LPVOID lpDestObj, ULONG ulFlags, LPSPropProblemArray *lppProblems);
- virtual HRESULT CopyProps(const SPropTagArray *lpIncludeProps, ULONG ulUIParam, LPMAPIPROGRESS lpProgress, LPCIID lpInterface, LPVOID lpDestObj, ULONG ulFlags, LPSPropProblemArray *lppProblems);
-
- virtual HRESULT SetProps(ULONG cValues, const SPropValue *lpPropArray, LPSPropProblemArray *lppProblems);
- virtual HRESULT DeleteProps(const SPropTagArray *lpPropTagArray, LPSPropProblemArray *lppProblems);
- virtual HRESULT HrLoadProps();
-
- static HRESULT TableRowGetProp(void* lpProvider, struct propVal *lpsPropValSrc, LPSPropValue lpsPropValDst, void **lpBase, ULONG ulType);
-
- virtual HRESULT HrSetRealProp(const SPropValue *lpsPropValue);
- class xMessage _kc_final : public IMessage {
- #include <kopano/xclsfrag/IUnknown.hpp>
- #include <kopano/xclsfrag/IMAPIProp.hpp>
-
- virtual HRESULT __stdcall GetAttachmentTable(ULONG flags, LPMAPITABLE *lppTable) _kc_override;
- virtual HRESULT __stdcall OpenAttach(ULONG ulAttachmentNum, LPCIID lpInterface, ULONG flags, LPATTACH *lppAttach) _kc_override;
- virtual HRESULT __stdcall CreateAttach(LPCIID lpInterface, ULONG flags, ULONG *lpulAttachmentNum, LPATTACH *lppAttach) _kc_override;
- virtual HRESULT __stdcall DeleteAttach(ULONG ulAttachmentNum, ULONG ui_param, LPMAPIPROGRESS lpProgress, ULONG flags) _kc_override;
- virtual HRESULT __stdcall GetRecipientTable(ULONG flags, LPMAPITABLE *lppTable) _kc_override;
- virtual HRESULT __stdcall ModifyRecipients(ULONG flags, const ADRLIST *lpMods) _kc_override;
- virtual HRESULT __stdcall SubmitMessage(ULONG flags) _kc_override;
- virtual HRESULT __stdcall SetReadFlag(ULONG flags) _kc_override;
- } m_xMessage;
- protected:
- void RecursiveMarkDelete(MAPIOBJECT *lpObj);
- HRESULT CreateAttach(LPCIID lpInterface, ULONG ulFlags, const IAttachFactory &refFactory, ULONG *lpulAttachmentNum, LPATTACH *lppAttach);
- HRESULT GetRtfData(std::string *lpstrRtfData);
- HRESULT GetCodePage(unsigned int *lpulCodePage);
- private:
- enum eSyncChange {syncChangeNone, syncChangeBody, syncChangeRTF, syncChangeHTML};
- enum eBodyType { bodyTypeUnknown, bodyTypePlain, bodyTypeRTF, bodyTypeHTML };
- HRESULT UpdateTable(ECMemTable *lpTable, ULONG ulObjType, ULONG ulObjKeyProp);
- HRESULT SaveRecips();
- HRESULT SyncAttachments();
- BOOL HasAttachment();
- HRESULT SyncRecips();
- HRESULT SyncSubject();
- HRESULT GetBodyType(eBodyType *lpulBodyType);
-
-
- virtual HRESULT GetProps(const SPropTagArray *lpPropTagArray, ULONG ulFlags, ULONG *lpcValues, LPSPropValue *lppPropArray);
- virtual HRESULT GetPropList(ULONG ulFlags, LPSPropTagArray *lppPropTagArray);
- HRESULT GetSyncedBodyProp(ULONG ulPropTag, ULONG ulFlags, void *lpBase, LPSPropValue lpsPropValue);
- HRESULT SyncBody(ULONG ulPropTag);
- HRESULT SyncPlainToRtf();
- HRESULT SyncPlainToHtml();
- HRESULT SyncRtf();
- HRESULT SyncHtmlToPlain();
- HRESULT SyncHtmlToRtf();
-
- BOOL fNew;
- BOOL m_bEmbedded;
- BOOL m_bExplicitSubjectPrefix = false;
- BOOL m_bRecipsDirty = false, m_bInhibitSync = false;
- eBodyType m_ulBodyType = bodyTypeUnknown;
- public:
- ULONG m_cbParentID = 0;
- ENTRYID *m_lpParentID = nullptr;
- ECMemTable *lpRecips = nullptr, *lpAttachments = nullptr;
- ULONG ulNextRecipUniqueId = 0, ulNextAttUniqueId = 0;
- ALLOC_WRAP_FRIEND;
- };
- class ECMessageFactory _kc_final : public IMessageFactory {
- public:
- HRESULT Create(ECMsgStore *lpMsgStore, BOOL fNew, BOOL fModify, ULONG ulFlags, BOOL bEmbedded, ECMAPIProp *lpRoot, ECMessage **lpMessage) const;
- };
- #endif
|