/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* 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/. */ #include "nsISupports.idl" #include "MailNewsTypes2.idl" interface nsIMsgFolder; interface nsIUTF8StringEnumerator; [scriptable, uuid(3c11ddbe-c805-40c5-b9c9-d065fad5d0be)] interface nsIMsgDBHdr : nsISupports { void setStringProperty(in string propertyName, in AUTF8String propertyValue); AUTF8String getStringProperty(in string propertyName); unsigned long getUint32Property(in string propertyName); void setUint32Property(in string propertyName, in unsigned long propertyVal); // accessors, to make our JS cleaner readonly attribute boolean isRead; readonly attribute boolean isFlagged; // Special accessor that checks if a message is part of an ignored subthread readonly attribute boolean isKilled; // Mark message routines void markRead(in boolean read); void markFlagged(in boolean flagged); void markHasAttachments(in boolean hasAttachments); attribute nsMsgPriorityValue priority; /* flag handling routines */ attribute unsigned long flags; unsigned long orFlags(in unsigned long flags); unsigned long andFlags(in unsigned long flags); /* various threading stuff */ attribute nsMsgKey threadId; attribute nsMsgKey messageKey; attribute nsMsgKey threadParent; /* meta information about the message, learned from reading the message */ /** * For "Offline" supporting folders (IMAP, NNTP), .messageSize is * the size of the original message on the server. * For Local folders, this is the exact size of the message as written to * the msgStore. * See also Bug 1764857. */ attribute unsigned long messageSize; attribute unsigned long lineCount; /** * The offset into the local folder/offline store of the message. This * will be pluggable store-dependent, e.g., for mail dir it should * always be 0. */ attribute unsigned long long messageOffset; /** * For "Offline" supporting folders (IMAP, NNTP): .offlineMessageSize is * the exact size of the local copy of the message in the msgStore. * If the message is not flagged Offline, this will be zero or unset. * For Local folders, this is unset or zero. * See also Bug 1764857. */ attribute unsigned long offlineMessageSize; /* common headers */ attribute PRTime date; readonly attribute unsigned long dateInSeconds; attribute string messageId; attribute string ccList; attribute string bccList; attribute string author; attribute AUTF8String subject; attribute string recipients; /* anything below here still has to be fixed */ void setReferences(in AUTF8String references); readonly attribute unsigned short numReferences; AUTF8String getStringReference(in long refNum); readonly attribute AString mime2DecodedAuthor; readonly attribute AString mime2DecodedSubject; readonly attribute AString mime2DecodedRecipients; Array getAuthorCollationKey(); Array getSubjectCollationKey(); Array getRecipientsCollationKey(); attribute string charset; /** * Returns the effective character set for the message (@ref charset). * For NNTP, if there is no specific set defined for the message, * the character set of the server instead. */ readonly attribute ACString effectiveCharset; attribute string accountKey; readonly attribute nsIMsgFolder folder; /// Array of names of all database properties in the header. readonly attribute Array properties; }; /* *******************************************************************************/