Add a new command to the message compose service that let you create a message from a nsIMsgCompFields

This commit is contained in:
ducarroz%netscape.com 1999-07-14 21:38:58 +00:00
parent d6897f8e82
commit 1482cc8993
4 changed files with 59 additions and 15 deletions

View File

@ -119,7 +119,7 @@ nsMsgCompose::SetQuotingToFollow(PRBool aVal)
nsresult nsMsgCompose::Initialize(nsIDOMWindow *aWindow, const PRUnichar *originalMsgURI,
MSG_ComposeType type, MSG_ComposeFormat format, nsISupports *object)
MSG_ComposeType type, MSG_ComposeFormat format, nsIMsgCompFields *compFields, nsISupports *object)
{
nsresult rv = NS_OK;
@ -153,7 +153,7 @@ nsresult nsMsgCompose::Initialize(nsIDOMWindow *aWindow, const PRUnichar *origin
}
CreateMessage(originalMsgURI, type, format, object); //object is temporary
CreateMessage(originalMsgURI, type, format, compFields, object); //object is temporary
return rv;
}
@ -556,12 +556,20 @@ nsresult nsMsgCompose::GetWrapLength(PRInt32 *aWrapLength)
return NS_OK;
}
nsresult nsMsgCompose::CreateMessage(const PRUnichar * originalMsgURI, MSG_ComposeType type, MSG_ComposeFormat format, nsISupports * object)
nsresult nsMsgCompose::CreateMessage(const PRUnichar * originalMsgURI, MSG_ComposeType type, MSG_ComposeFormat format,
nsIMsgCompFields * compFields, nsISupports * object)
{
nsresult rv = NS_OK;
/* At this point, we have a list of URI of original message to reply to or forward but as the BE isn't ready yet,
if (compFields)
{
if (m_compFields)
m_compFields->Copy(compFields);
return rv;
}
/* At this point, we have a list of URI of original message to reply to or forward but as the BE isn't ready yet,
we still need to use the old patch... gather the information from the object and the temp file use to display the selected message*/
if (object)
{
nsCOMPtr<nsIMessage> message;

View File

@ -40,8 +40,8 @@ class nsMsgCompose : public nsIMsgCompose
/*** nsIMsgCompose pure virtual functions */
/* void Initialize (in nsIDOMWindow aWindow, in wstring originalMsgURI, in long type, in long format); */
NS_IMETHOD Initialize(nsIDOMWindow *aWindow, const PRUnichar *originalMsgURI, MSG_ComposeType type, MSG_ComposeFormat format, nsISupports *object);
/* void Initialize (in nsIDOMWindow aWindow, in wstring originalMsgURI, in MSG_ComposeType type, in MSG_ComposeFormat format, in nsIMsgCompFields compFields, in nsISupports object); */
NS_IMETHOD Initialize(nsIDOMWindow *aWindow, const PRUnichar *originalMsgURI, MSG_ComposeType type, MSG_ComposeFormat format, nsIMsgCompFields *compFields, nsISupports *object);
/* void LoadFields (); */
NS_IMETHOD LoadFields();
@ -89,7 +89,7 @@ class nsMsgCompose : public nsIMsgCompose
private:
nsresult _SendMsg(MSG_DeliverMode deliverMode, nsIMsgIdentity *identity, const PRUnichar *callback);
nsresult CreateMessage(const PRUnichar * originalMsgURI, MSG_ComposeType type, MSG_ComposeFormat format, nsISupports* object);
nsresult CreateMessage(const PRUnichar * originalMsgURI, MSG_ComposeType type, MSG_ComposeFormat format, nsIMsgCompFields* compFields, nsISupports* object);
void HackToGetBody(PRInt32 what); //Temporary
void CleanUpRecipients(nsString& recipients);

View File

@ -141,7 +141,38 @@ nsresult nsMsgComposeService::OpenComposeWindowWithValues(const PRUnichar *msgCo
return rv;
}
nsresult nsMsgComposeService::InitCompose(nsIDOMWindow *aWindow, const PRUnichar *originalMsgURI, PRInt32 type, PRInt32 format, nsIMsgCompose **_retval)
nsresult nsMsgComposeService::OpenComposeWindowWithCompFields(const PRUnichar *msgComposeWindowURL,
MSG_ComposeFormat format,
nsIMsgCompFields *compFields)
{
nsAutoString args = "";
nsresult rv;
NS_WITH_SERVICE(nsIDOMToolkitCore, toolkitCore, kToolkitCoreCID, &rv);
if (NS_FAILED(rv))
return rv;
args.Append("format=");
args.Append(format);
if (compFields)
{
NS_ADDREF(compFields);
args.Append(",fieldsAddr="); args.Append((PRInt32)compFields, 10);
}
if (msgComposeWindowURL && *msgComposeWindowURL)
toolkitCore->ShowWindowWithArgs(msgComposeWindowURL, nsnull, args);
else
toolkitCore->ShowWindowWithArgs("chrome://messengercompose/content/", nsnull, args);
if (NS_FAILED(rv))
NS_IF_RELEASE(compFields);
return rv;
}
nsresult nsMsgComposeService::InitCompose(nsIDOMWindow *aWindow, const PRUnichar *originalMsgURI, PRInt32 type, PRInt32 format, PRInt32 compFieldsAddr, nsIMsgCompose **_retval)
{
nsresult rv;
nsIMsgCompose * msgCompose = nsnull;
@ -164,8 +195,12 @@ nsresult nsMsgComposeService::InitCompose(nsIDOMWindow *aWindow, const PRUnichar
break;
}
/*--- temporary hack ---*/
msgCompose->Initialize(aWindow, originalMsgURI, type, format, object);
// ducarroz: I am not quiet sure than dynamic_cast is supported on all platforms/compilers!
// nsIMsgCompFields* compFields = dynamic_cast<nsIMsgCompFields *>((nsIMsgCompFields *)compFieldsAddr);
nsIMsgCompFields* compFields = (nsIMsgCompFields *)compFieldsAddr;
msgCompose->Initialize(aWindow, originalMsgURI, type, format, compFields, object);
NS_IF_RELEASE(compFields);
m_msgQueue->AppendElement(msgCompose);
*_retval = msgCompose;

View File

@ -36,8 +36,11 @@ public:
NS_IMETHOD OpenComposeWindowWithValues(const PRUnichar *msgComposeWindowURL, MSG_ComposeFormat format, const PRUnichar *to, const PRUnichar *cc, const PRUnichar *bcc, const PRUnichar *newsgroups,
const PRUnichar *subject, const PRUnichar *body);
/* nsIMsgCompose InitCompose (in nsIDOMWindow aWindow, in wstring originalMsgURI, in MSG_ComposeType type, in MSG_ComposeFormat format); */
NS_IMETHOD InitCompose(nsIDOMWindow *aWindow, const PRUnichar *originalMsgURI, MSG_ComposeType type, MSG_ComposeFormat format, nsIMsgCompose **_retval);
/* void OpenComposeWindowWithCompFields (in wstring msgComposeWindowURL, in MSG_ComposeFormat format, in nsIMsgCompFields compFields); */
NS_IMETHOD OpenComposeWindowWithCompFields(const PRUnichar *msgComposeWindowURL, MSG_ComposeFormat format, nsIMsgCompFields *compFields);
/* nsIMsgCompose InitCompose (in nsIDOMWindow aWindow, in wstring originalMsgURI, in long type, in long format, in long compFieldsAddr); */
NS_IMETHOD InitCompose(nsIDOMWindow *aWindow, const PRUnichar *originalMsgURI, PRInt32 type, PRInt32 format, PRInt32 compFieldsAddr, nsIMsgCompose **_retval);
/* void DisposeCompose (in nsIMsgCompose compose, in boolean closeWindow); */
NS_IMETHOD DisposeCompose(nsIMsgCompose *compose, PRBool closeWindow);
@ -49,5 +52,3 @@ private:
nsString hack_uri[16];
nsISupports* hack_object[16];
};