/* -*- 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 { /* general property routines - I think this can retrieve any header in the db */ AString getProperty(in string propertyName); void setProperty(in string propertyName, in AString propertyStr); void setStringProperty(in string propertyName, in string propertyValue); string 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; void setPriorityString(in string 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 */ attribute unsigned long messageSize; attribute unsigned long lineCount; attribute unsigned long statusOffset; /** * 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; 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 string subject; attribute string recipients; /* anything below here still has to be fixed */ void setReferences(in string references); readonly attribute unsigned short numReferences; ACString getStringReference(in long refNum); readonly attribute AString mime2DecodedAuthor; readonly attribute AString mime2DecodedSubject; readonly attribute AString mime2DecodedRecipients; void getAuthorCollationKey(out unsigned long aCount, [array, size_is(aCount)] out octet aKey); void getSubjectCollationKey(out unsigned long aCount, [array, size_is(aCount)] out octet aKey); void getRecipientsCollationKey(out unsigned long aCount, [array, size_is(aCount)] out octet aKey); attribute string Charset; /** * Returns the effective character set for the message (@ref Charset). * If there is no specific set defined for the message or the * characterSetOverride option is turned on for the folder it will return * the effective character set of the folder instead. */ readonly attribute ACString effectiveCharset; attribute nsMsgLabelValue label; attribute string accountKey; readonly attribute nsIMsgFolder folder; /// Enumerator for names of all database properties in the header. readonly attribute nsIUTF8StringEnumerator propertyEnumerator; }; /* *******************************************************************************/