Leaked source code of windows server 2003
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.

145 lines
5.2 KiB

  1. #ifndef _MSGSITE_H
  2. #define _MSGSITE_H
  3. #include "imsgsite.h"
  4. // Current MsgSite Action
  5. // These are the only ones that the msg site worries about.
  6. enum {
  7. MSA_IDLE = 0,
  8. MSA_DELETE,
  9. MSA_COPYMOVE,
  10. MSA_SAVE,
  11. MSA_SEND,
  12. MSA_GET_MESSAGE
  13. };
  14. // CopyMove function used
  15. enum {
  16. CMF_UNINITED = 0,
  17. CMF_MSG_TO_FOLDER,
  18. CMF_TABLE_TO_FOLDER,
  19. CMF_STORE_TO_FOLDER,
  20. CMF_FAT_TO_FOLDER,
  21. };
  22. // Original Folder is IMAP state
  23. enum {
  24. OFIMAP_UNDEFINED = 0,
  25. OFIMAP_TRUE,
  26. OFIMAP_FALSE,
  27. };
  28. class COEMsgSite : public IOEMsgSite {
  29. public:
  30. COEMsgSite();
  31. ~COEMsgSite();
  32. // IUnknown
  33. HRESULT STDMETHODCALLTYPE QueryInterface(REFIID, LPVOID FAR *);
  34. ULONG STDMETHODCALLTYPE AddRef();
  35. ULONG STDMETHODCALLTYPE Release();
  36. // IMsgSite Methods
  37. virtual HRESULT STDMETHODCALLTYPE Init(INIT_MSGSITE_STRUCT *pInitStruct);
  38. virtual HRESULT STDMETHODCALLTYPE GetStatusFlags(DWORD *dwflags);
  39. virtual HRESULT STDMETHODCALLTYPE GetFolderID(FOLDERID *folderID);
  40. virtual HRESULT STDMETHODCALLTYPE Delete(DELETEMESSAGEFLAGS dwFlags);
  41. virtual HRESULT STDMETHODCALLTYPE DoNextPrev(BOOL fNext, DWORD dwFlags);
  42. virtual HRESULT STDMETHODCALLTYPE DoCopyMoveToFolder(BOOL fCopy, IMimeMessage *pMsg, BOOL fUnSent);
  43. virtual HRESULT STDMETHODCALLTYPE Save(IMimeMessage *pMsg, DWORD dwflags, IImnAccount *pAcct);
  44. #ifdef SMIME_V3
  45. virtual HRESULT STDMETHODCALLTYPE SendToOutbox(IMimeMessage *pMsg, BOOL fSendImmediate, IHeaderSite *pHeaderSite);
  46. #else
  47. virtual HRESULT STDMETHODCALLTYPE SendToOutbox(IMimeMessage *pMsg, BOOL fSendImmediate);
  48. #endif // SMIME_V3
  49. virtual HRESULT STDMETHODCALLTYPE MarkMessage(MARK_TYPE dwType, APPLYCHILDRENTYPE dwApplyType);
  50. virtual HRESULT STDMETHODCALLTYPE GetMessageFlags(MESSAGEFLAGS *pdwFlags);
  51. virtual HRESULT STDMETHODCALLTYPE GetDefaultAccount(ACCTTYPE acctType, IImnAccount **ppAcct);
  52. virtual HRESULT STDMETHODCALLTYPE GetMessage(IMimeMessage **ppMsg, BOOL *pfCompleteMsg, DWORD dwMessageFlags, HRESULT *phr);
  53. virtual HRESULT STDMETHODCALLTYPE Close(void);
  54. virtual HRESULT STDMETHODCALLTYPE SetStoreCallback(IStoreCallback *pStoreCB);
  55. virtual HRESULT STDMETHODCALLTYPE GetLocation(LPWSTR rgwchLocation, DWORD cchSize);
  56. virtual HRESULT STDMETHODCALLTYPE SwitchLanguage(HCHARSET hOldCharset, HCHARSET hNewCharset);
  57. virtual HRESULT STDMETHODCALLTYPE OnComplete(STOREOPERATIONTYPE tyOperation, HRESULT hrComplete, STOREOPERATIONTYPE *ptyNewOp = NULL);
  58. virtual HRESULT STDMETHODCALLTYPE UpdateCallbackInfo(LPSTOREOPERATIONINFO pOpInfo);
  59. virtual HRESULT STDMETHODCALLTYPE Notify(DWORD dwNotifyID);
  60. protected:
  61. HWND GetCallbackHwnd(void);
  62. void HandlePut(HRESULT hr, STOREOPERATIONTYPE *ptyNewOp);
  63. void HandleDelete(HRESULT hr);
  64. void HandleCopyMove(HRESULT hr);
  65. void HandleGetMessage(HRESULT hr);
  66. BOOL FCanConnect(void);
  67. BOOL ThreadingEnabled(void);
  68. BOOL NeedToSendNews(IMimePropertySet *pPropSet);
  69. BOOL NeedToSendMail(IMimePropertySet *pPropSet);
  70. HRESULT LoadMessage(void);
  71. HRESULT LoadMessageFromFAT(BOOL fOriginal, HRESULT *phr);
  72. HRESULT LoadMessageFromTable(BOOL fOriginal, HRESULT *phr);
  73. HRESULT LoadMessageFromStore(void);
  74. HRESULT LoadMessageFromRow(IMimeMessage **ppMsg, ROWINDEX row);
  75. HRESULT CreateMsgWithAccountInfo(void);
  76. HRESULT SetAccountInfo(void);
  77. HRESULT DoCopyMoveFromFATToFldr(BOOL fUnSent);
  78. HRESULT DoCopyMoveFromTableToFldr(void);
  79. HRESULT DoCopyMoveFromStoreToFldr(BOOL fUnSent);
  80. HRESULT DoCopyMoveFromMsgToFldr(IMimeMessage *pMsg, BOOL fUnSent);
  81. HRESULT DeleteFromMsgTable(DELETEMESSAGEFLAGS dwFlags);
  82. HRESULT DeleteFromStore(DELETEMESSAGEFLAGS dwFlags);
  83. #ifdef SMIME_V3
  84. HRESULT SendMsg(IMimeMessage *pMsg, BOOL fSendImmediately, BOOL fMail, IHeaderSite *pHeaderSite);
  85. #else
  86. HRESULT SendMsg(IMimeMessage *pMsg, BOOL fSendImmediately, BOOL fMail);
  87. #endif // SMIME_V3
  88. HRESULT ClearHeaders(ULONG cNames, LPCSTR *prgszName, IMimePropertySet *pPropSet);
  89. private:
  90. BOOL m_fValidMessage,
  91. m_fReloadMessageFlag,
  92. m_fNeedToLoadMsg,
  93. m_fThreadingEnabled,
  94. m_fCBCopy,
  95. m_fCBSavedInDrafts,
  96. m_fCBSaveInFolderAndDelOrig,
  97. m_fGotNewID,
  98. m_fHaveCBMessageID,
  99. m_fHeaderOnly;
  100. DWORD m_dwInitType,
  101. m_dwCMFState,
  102. m_dwOrigFolderIsImap,
  103. m_dwArfFlags,
  104. m_dwMSAction;
  105. ULONG m_cRef;
  106. IMimeMessage *m_pMsg,
  107. *m_pOrigMsg;
  108. IMessageTable *m_pMsgTable;
  109. IMessageFolder *m_pCBMsgFolder;
  110. IMessageFolder *m_pFolderReleaseOnComplete;
  111. IListSelector *m_pListSelect;
  112. IStoreCallback *m_pStoreCB;
  113. MESSAGEID m_MessageID,
  114. m_CBMessageID,
  115. m_NewMessageID;
  116. FOLDERID m_FolderID,
  117. m_CBFolderID;
  118. MESSAGEID m_idBookmark,
  119. m_idNewBookmark;
  120. WCHAR m_rgwchFileName[MAX_PATH];
  121. DWORD m_dwMDNFlags;
  122. };
  123. #endif