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:
parent
93341bca3c
commit
360e8e2867
@ -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
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user