/* -*- 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; [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; /** * Store-dependent value for locating the message. For mbox this is the * offset in the mbox file, for maildir it is the filename. An empty * string means unset. */ attribute AUTF8String storeToken; /** * 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 AUTF8String messageId; attribute AUTF8String ccList; attribute AUTF8String bccList; attribute AUTF8String author; attribute AUTF8String subject; attribute AUTF8String 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 AUTF8String 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 AUTF8String effectiveCharset; attribute AUTF8String accountKey; readonly attribute nsIMsgFolder folder; /// Array of names of all database properties in the header. readonly attribute Array properties; /** * Server-assigned unique ID for message. 0 = unset. * IMAP sequence number or UID, NNTP article number, etc... * NOTE: Added in support of Bug 1806770, but not yet in use. */ attribute unsigned long uidOnServer; /** * Returns true if this message has been added to the messages table in * the database (mainly for use during the globaldb transition). * If this returns false, it implies this is a "detached" nsIMsgDBHdr * object, likely still under construction and not yet added to the * database proper. */ readonly attribute boolean isLive; }; /* *******************************************************************************/