summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/compose/src/nsMsgCompFields.h
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mailnews/compose/src/nsMsgCompFields.h')
-rw-r--r--comm/mailnews/compose/src/nsMsgCompFields.h212
1 files changed, 212 insertions, 0 deletions
diff --git a/comm/mailnews/compose/src/nsMsgCompFields.h b/comm/mailnews/compose/src/nsMsgCompFields.h
new file mode 100644
index 0000000000..312d19192c
--- /dev/null
+++ b/comm/mailnews/compose/src/nsMsgCompFields.h
@@ -0,0 +1,212 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef _MsgCompFields_H_
+#define _MsgCompFields_H_
+
+#include "nsIMsgCompFields.h"
+#include "msgCore.h"
+#include "nsIAbCard.h"
+#include "nsIAbDirectory.h"
+#include "nsTArray.h"
+#include "nsCOMArray.h"
+#include "nsCOMPtr.h"
+#include "nsString.h"
+#include "nsIMsgComposeSecure.h"
+
+struct nsMsgRecipient {
+ nsString mName;
+ nsString mEmail;
+ nsCOMPtr<nsIAbCard> mCard;
+ nsCOMPtr<nsIAbDirectory> mDirectory;
+};
+
+/* Note that all the "Get" methods never return NULL (except in case of serious
+ error, like an illegal parameter); rather, they return "" if things were set
+ to NULL. This makes it real handy for the callers. */
+
+class nsMsgCompFields : public nsIMsgCompFields {
+ public:
+ nsMsgCompFields();
+
+ /* this macro defines QueryInterface, AddRef and Release for this class */
+ NS_DECL_THREADSAFE_ISUPPORTS
+ NS_FORWARD_MSGISTRUCTUREDHEADERS(mStructuredHeaders->)
+ NS_FORWARD_MSGIWRITABLESTRUCTUREDHEADERS(mStructuredHeaders->)
+ NS_DECL_NSIMSGCOMPFIELDS
+
+ typedef enum MsgHeaderID {
+ MSG_FROM_HEADER_ID = 0,
+ MSG_REPLY_TO_HEADER_ID,
+ MSG_TO_HEADER_ID,
+ MSG_CC_HEADER_ID,
+ MSG_BCC_HEADER_ID,
+ MSG_FCC_HEADER_ID,
+ MSG_FCC2_HEADER_ID,
+ MSG_NEWSGROUPS_HEADER_ID,
+ MSG_FOLLOWUP_TO_HEADER_ID,
+ MSG_SUBJECT_HEADER_ID,
+ MSG_ORGANIZATION_HEADER_ID,
+ MSG_REFERENCES_HEADER_ID,
+ MSG_NEWSPOSTURL_HEADER_ID,
+ MSG_PRIORITY_HEADER_ID,
+ MSG_CHARACTER_SET_HEADER_ID,
+ MSG_MESSAGE_ID_HEADER_ID,
+ MSG_X_TEMPLATE_HEADER_ID,
+ MSG_DRAFT_ID_HEADER_ID,
+ MSG_TEMPLATE_ID_HEADER_ID,
+ MSG_CONTENT_LANGUAGE_ID,
+ MSG_CREATOR_IDENTITY_KEY_ID,
+
+ MSG_MAX_HEADERS // Must be the last one.
+ } MsgHeaderID;
+
+ nsresult SetAsciiHeader(MsgHeaderID header, const char* value);
+ const char* GetAsciiHeader(
+ MsgHeaderID header); // just return the address of the internal header
+ // variable, don't dispose it
+
+ nsresult SetUnicodeHeader(MsgHeaderID header, const nsAString& value);
+ nsresult GetUnicodeHeader(MsgHeaderID header, nsAString& _retval);
+
+ /* Convenience routines to get and set header's value...
+
+ IMPORTANT:
+ all routines const char* GetXxx(void) will return a pointer to the header,
+ please don't free it.
+ */
+
+ nsresult SetFrom(const char* value) {
+ return SetAsciiHeader(MSG_FROM_HEADER_ID, value);
+ }
+ const char* GetFrom(void) { return GetAsciiHeader(MSG_FROM_HEADER_ID); }
+
+ nsresult SetReplyTo(const char* value) {
+ return SetAsciiHeader(MSG_REPLY_TO_HEADER_ID, value);
+ }
+ const char* GetReplyTo() { return GetAsciiHeader(MSG_REPLY_TO_HEADER_ID); }
+
+ nsresult SetTo(const char* value) {
+ return SetAsciiHeader(MSG_TO_HEADER_ID, value);
+ }
+ const char* GetTo() { return GetAsciiHeader(MSG_TO_HEADER_ID); }
+
+ nsresult SetCc(const char* value) {
+ return SetAsciiHeader(MSG_CC_HEADER_ID, value);
+ }
+ const char* GetCc() { return GetAsciiHeader(MSG_CC_HEADER_ID); }
+
+ nsresult SetBcc(const char* value) {
+ return SetAsciiHeader(MSG_BCC_HEADER_ID, value);
+ }
+ const char* GetBcc() { return GetAsciiHeader(MSG_BCC_HEADER_ID); }
+
+ nsresult SetFcc(const char* value) {
+ return SetAsciiHeader(MSG_FCC_HEADER_ID, value);
+ }
+ const char* GetFcc() { return GetAsciiHeader(MSG_FCC_HEADER_ID); }
+
+ nsresult SetFcc2(const char* value) {
+ return SetAsciiHeader(MSG_FCC2_HEADER_ID, value);
+ }
+ const char* GetFcc2() { return GetAsciiHeader(MSG_FCC2_HEADER_ID); }
+
+ nsresult SetNewsgroups(const char* aValue) {
+ return SetAsciiHeader(MSG_NEWSGROUPS_HEADER_ID, aValue);
+ }
+ const char* GetNewsgroups() {
+ return GetAsciiHeader(MSG_NEWSGROUPS_HEADER_ID);
+ }
+
+ nsresult SetFollowupTo(const char* aValue) {
+ return SetAsciiHeader(MSG_FOLLOWUP_TO_HEADER_ID, aValue);
+ }
+ const char* GetFollowupTo() {
+ return GetAsciiHeader(MSG_FOLLOWUP_TO_HEADER_ID);
+ }
+
+ nsresult SetSubject(const char* value) {
+ return SetAsciiHeader(MSG_SUBJECT_HEADER_ID, value);
+ }
+ const char* GetSubject() { return GetAsciiHeader(MSG_SUBJECT_HEADER_ID); }
+
+ nsresult SetOrganization(const char* value) {
+ return SetAsciiHeader(MSG_ORGANIZATION_HEADER_ID, value);
+ }
+ const char* GetOrganization() {
+ return GetAsciiHeader(MSG_ORGANIZATION_HEADER_ID);
+ }
+
+ const char* GetReferences() {
+ return GetAsciiHeader(MSG_REFERENCES_HEADER_ID);
+ }
+
+ const char* GetNewspostUrl() {
+ return GetAsciiHeader(MSG_NEWSPOSTURL_HEADER_ID);
+ }
+
+ const char* GetPriority() { return GetAsciiHeader(MSG_PRIORITY_HEADER_ID); }
+
+ const char* GetCharacterSet() {
+ return GetAsciiHeader(MSG_CHARACTER_SET_HEADER_ID);
+ }
+
+ const char* GetMessageId() {
+ return GetAsciiHeader(MSG_MESSAGE_ID_HEADER_ID);
+ }
+
+ nsresult SetTemplateName(const char* value) {
+ return SetAsciiHeader(MSG_X_TEMPLATE_HEADER_ID, value);
+ }
+ const char* GetTemplateName() {
+ return GetAsciiHeader(MSG_X_TEMPLATE_HEADER_ID);
+ }
+
+ const char* GetDraftId() { return GetAsciiHeader(MSG_DRAFT_ID_HEADER_ID); }
+ const char* GetTemplateId() {
+ return GetAsciiHeader(MSG_TEMPLATE_ID_HEADER_ID);
+ }
+
+ const char* GetContentLanguage() {
+ return GetAsciiHeader(MSG_CONTENT_LANGUAGE_ID);
+ }
+
+ bool GetReturnReceipt() { return m_returnReceipt; }
+ bool GetDSN() { return m_DSN; }
+ bool GetAttachVCard() { return m_attachVCard; }
+ bool GetAttachmentReminder() { return m_attachmentReminder; }
+ int32_t GetDeliveryFormat() { return m_deliveryFormat; }
+ bool GetForcePlainText() { return m_forcePlainText; }
+ bool GetUseMultipartAlternative() { return m_useMultipartAlternative; }
+ bool GetBodyIsAsciiOnly() { return m_bodyIsAsciiOnly; }
+ bool GetForceMsgEncoding() { return m_forceMsgEncoding; }
+
+ nsresult SplitRecipientsEx(const nsAString& recipients,
+ nsTArray<nsMsgRecipient>& aResult);
+
+ protected:
+ virtual ~nsMsgCompFields();
+ nsCString m_headers[MSG_MAX_HEADERS];
+ nsString m_body;
+ nsTArray<RefPtr<nsIMsgAttachment>> m_attachments;
+ nsTArray<nsString> m_otherHeaders;
+ bool m_attachVCard;
+ bool m_attachmentReminder;
+ int32_t m_deliveryFormat;
+ bool m_forcePlainText;
+ bool m_useMultipartAlternative;
+ bool m_returnReceipt;
+ bool m_DSN;
+ bool m_bodyIsAsciiOnly;
+ bool m_forceMsgEncoding;
+ int32_t m_receiptHeaderType; /* receipt header type */
+ nsCString m_DefaultCharacterSet;
+ bool m_needToCheckCharset;
+
+ nsCOMPtr<nsIMsgComposeSecure> mSecureCompFields;
+ nsCOMPtr<msgIWritableStructuredHeaders> mStructuredHeaders;
+};
+
+#endif /* _MsgCompFields_H_ */