/* -*- Mode: C++; tab-width: 4; 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/. */


#include "nsISupports.idl"
#include "nsIMsgIdentity.idl"
#include "nsIMsgCompFields.idl"
#include "nsIMsgSendListener.idl"

interface nsIMsgDBHdr;
typedef long MSG_ComposeType;

[scriptable, uuid(c7035852-7531-11d3-9a73-006008948010)]
interface nsIMsgCompType {
    const long New                      = 0;
    const long Reply                    = 1;
    const long ReplyAll                 = 2;
    const long ForwardAsAttachment      = 3;
    const long ForwardInline            = 4;
    const long NewsPost                 = 5;
    const long ReplyToSender            = 6;
    const long ReplyToGroup             = 7;
    const long ReplyToSenderAndGroup    = 8;
    const long Draft                    = 9;
    const long Template                 = 10;
    const long MailToUrl                = 11;
    const long ReplyWithTemplate        = 12;
    const long ReplyToList              = 13;

    /** 
     * Will resend the original message keeping the Subject and the body the
     * same, and will set the Reply-To: header to the sender of the original
     * message.  This gets the redirector "out of the loop" because replies
     * to the message will go to the original sender.  This is not the same
     * as the Resent mechanism described in section 3.6.6 of RFC 2822, and
     * so therefore does not use Resent-* headers.
     */
    const long Redirect                 = 14;
};


typedef long MSG_ComposeFormat;

[scriptable, uuid(a28325e8-7531-11d3-8f1c-006008948010)]
interface nsIMsgCompFormat {
    const long Default                  = 0;
    const long HTML                     = 1;
    const long PlainText                = 2;
    const long OppositeOfDefault        = 3;
};


[scriptable, uuid(930895f2-d610-43f4-9e3c-25e1d1fe4143)]
interface nsIMsgComposeParams : nsISupports {
  attribute MSG_ComposeType       type;
  attribute MSG_ComposeFormat     format;
  attribute string                originalMsgURI;
  attribute nsIMsgIdentity        identity;

  attribute nsIMsgCompFields      composeFields;
  attribute boolean               bodyIsLink;

  attribute nsIMsgSendListener	  sendListener;
  attribute string                smtpPassword;
  attribute nsIMsgDBHdr           origMsgHdr;

  /**
   * HTML-formatted content to quote in the body of the message.
   * Set this to get different content than what would normally
   * appear in the body, e.g. the original message body in a reply.
   */
  attribute AUTF8String           htmlToQuote;
};
