Added charsetOverride field to nsIMsgWindow, so msgCompose can use it for quoting,

bug 111055, r=ducarroz, sr=sspitzer.


git-svn-id: svn://10.0.0.236/trunk@109181 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
nhotta%netscape.com 2001-11-29 04:56:42 +00:00
parent 93341bca3c
commit 360e8e2867
7 changed files with 29 additions and 4 deletions

View File

@ -74,6 +74,8 @@ interface nsIMsgWindow : nsISupports {
readonly attribute nsIPrompt promptDialog;
readonly attribute nsIAuthPrompt authPromptDialog;
attribute wstring mailCharacterSet;
// Remember the message's charaset was overridden, so it can be inherited (e.g for quoting).
attribute boolean charsetOverride;
/* has a running url been stopped? If you care about checking
this flag, you need to clear it before you start your operation since

View File

@ -34,6 +34,7 @@ function MessengerSetDefaultCharacterSet(aCharset)
// dump(aCharset);dump("\n");
messenger.SetDocumentCharset(aCharset);
msgWindow.mailCharacterSet = aCharset;
msgWindow.charsetOverride = true;
// folder charset to be set by folder property not by charset menu
// var folderResource = GetSelectedFolderResource();

View File

@ -80,6 +80,7 @@ NS_IMPL_THREADSAFE_ISUPPORTS3(nsMsgWindow,
nsMsgWindow::nsMsgWindow()
{
mCharsetOverride = PR_FALSE;
m_stopped = PR_FALSE;
NS_INIT_ISUPPORTS();
}
@ -338,6 +339,19 @@ NS_IMETHODIMP nsMsgWindow::SetMailCharacterSet(const PRUnichar * aMailCharacterS
return NS_OK;
}
NS_IMETHODIMP nsMsgWindow::GetCharsetOverride(PRBool *aCharsetOverride)
{
NS_ENSURE_ARG_POINTER(aCharsetOverride);
*aCharsetOverride = mCharsetOverride;
return NS_OK;
}
NS_IMETHODIMP nsMsgWindow::SetCharsetOverride(PRBool aCharsetOverride)
{
mCharsetOverride = aCharsetOverride;
return NS_OK;
}
NS_IMETHODIMP nsMsgWindow::SetDOMWindow(nsIDOMWindowInternal *aWindow)
{
if (!aWindow)

View File

@ -77,6 +77,7 @@ protected:
nsWeakPtr mMessageWindowDocShellWeak;
nsString mMailCharacterSet;
PRBool mCharsetOverride;
PRBool m_stopped;
// small helper function used to optimize our use of a weak reference
// on the message window docshell. Under no circumstances should you be holding on to

View File

@ -212,7 +212,7 @@ static void TranslateLineEnding(nsString& data)
data.SetLength(wPtr - sPtr);
}
static void GetTopmostMsgWindowCharacterSet(nsXPIDLString& charset)
static void GetTopmostMsgWindowCharacterSet(nsXPIDLString& charset, PRBool* charsetOverride)
{
// HACK: if we are replying to a message and that message used a charset over ride
// (as specified in the top most window (assuming the reply originated from that window)
@ -226,6 +226,7 @@ static void GetTopmostMsgWindowCharacterSet(nsXPIDLString& charset)
{
nsXPIDLString mailCharset;
msgWindow->GetMailCharacterSet(getter_Copies(charset));
msgWindow->GetCharsetOverride(charsetOverride);
}
}
}
@ -244,6 +245,7 @@ nsMsgCompose::nsMsgCompose()
m_window = nsnull;
m_editor = nsnull;
mQuoteStreamListener=nsnull;
mCharsetOverride = PR_FALSE;
m_compFields = nsnull; //m_compFields will be set during nsMsgCompose::Initialize
mType = nsIMsgCompType::New;
@ -1396,7 +1398,7 @@ nsresult nsMsgCompose::CreateMessage(const char * originalMsgURI,
// use a charset of the original message
nsXPIDLString mailCharset;
GetTopmostMsgWindowCharacterSet(mailCharset);
GetTopmostMsgWindowCharacterSet(mailCharset, &mCharsetOverride);
if (mailCharset && (* (const PRUnichar *) mailCharset) )
{
charset.Adopt(ToNewUTF8String(nsDependentString(mailCharset)));
@ -1452,7 +1454,7 @@ nsresult nsMsgCompose::CreateMessage(const char * originalMsgURI,
// use a charset of the original message
nsXPIDLString mailCharset;
GetTopmostMsgWindowCharacterSet(mailCharset);
GetTopmostMsgWindowCharacterSet(mailCharset, &mCharsetOverride);
if (mailCharset && (* (const PRUnichar *) mailCharset) )
{
charset.Adopt(ToNewUTF8String(nsDependentString(mailCharset)));
@ -2079,7 +2081,8 @@ nsMsgCompose::QuoteOriginalMessage(const char *originalMsgURI, PRInt32 what) //
mQuoteStreamListener->SetComposeObj(this);
rv = mQuote->QuoteMessage(originalMsgURI, what != 1, mQuoteStreamListener, m_compFields->GetCharacterSet());
rv = mQuote->QuoteMessage(originalMsgURI, what != 1, mQuoteStreamListener,
mCharsetOverride ? m_compFields->GetCharacterSet() : "");
return rv;
}

View File

@ -143,6 +143,7 @@ private:
nsMsgDocumentStateListener *mDocumentListener;
MSG_ComposeType mType; // Message type
nsCOMPtr<nsISupportsArray> mStateListeners; // contents are nsISupports
PRBool mCharsetOverride;
nsCOMPtr<nsIMsgSendListener> mExternalSendListener;
nsCString mSmtpPassword;

View File

@ -208,7 +208,10 @@ bridge_new_new_uri(void *bridgeStream, nsIURI *aURI, PRInt32 aOutputType)
nsCOMPtr<nsIMsgWindow> msgWindow;
msgurl->GetMsgWindow(getter_AddRefs(msgWindow));
if (msgWindow)
{
msgWindow->SetMailCharacterSet(NS_ConvertASCIItoUCS2(*default_charset).get());
msgWindow->SetCharsetOverride(*override_charset);
}
}
// if the pref says always override and no manual override then set the folder charset to override