From 8771ef0e8ad9e89bb510df8b8842e4d16d4847d9 Mon Sep 17 00:00:00 2001 From: "jfrancis%netscape.com" Date: Wed, 8 Sep 1999 06:26:53 +0000 Subject: [PATCH] making special mail-compose editing rules accessible to mail git-svn-id: svn://10.0.0.236/trunk@46318 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/editor/base/nsEditorShell.cpp | 123 +++++++++--------- mozilla/editor/base/nsHTMLEditRules.cpp | 2 +- mozilla/editor/composer/src/nsEditorShell.cpp | 123 +++++++++--------- .../editor/libeditor/html/nsHTMLEditRules.cpp | 2 +- 4 files changed, 124 insertions(+), 126 deletions(-) diff --git a/mozilla/editor/base/nsEditorShell.cpp b/mozilla/editor/base/nsEditorShell.cpp index e83db28cf2a..a43a04fb229 100644 --- a/mozilla/editor/base/nsEditorShell.cpp +++ b/mozilla/editor/base/nsEditorShell.cpp @@ -311,12 +311,7 @@ nsEditorShell::SetEditorType(const PRUnichar *editorType) nsAutoString theType = editorType; theType.ToLowerCase(); - if (theType == "text") - { - mEditorTypeString = theType; - return NS_OK; - } - else if (theType == "html" || theType == "") + if (theType == "text" || theType == "html" || theType == "" || theType == "htmlMail") { mEditorTypeString = theType; return NS_OK; @@ -351,27 +346,31 @@ nsEditorShell::InstantiateEditor(nsIDOMDocument *aDoc, nsIPresShell *aPresShell) if (mEditorTypeString == "text") { err = editor->Init(aDoc, aPresShell, nsIHTMLEditor::eEditorPlaintextMask); - } - else if (mEditorTypeString == "html" || mEditorTypeString == "") // empty string default to HTML editor + } + else if (mEditorTypeString == "html" || mEditorTypeString == "") // empty string default to HTML editor { err = editor->Init(aDoc, aPresShell, 0); - } - else - { - err = NS_ERROR_INVALID_ARG; // this is not an editor we know about + } + else if (mEditorTypeString == "htmlMail") // HTML editor with special mail rules + { + err = editor->Init(aDoc, aPresShell, nsIHTMLEditor::eEditorMailMask); + } + else + { + err = NS_ERROR_INVALID_ARG; // this is not an editor we know about #if DEBUG - nsString errorMsg = "Failed to init editor. Unknown editor type \""; - errorMsg += mEditorTypeString; - errorMsg += "\"\n"; - char *errorMsgCString = errorMsg.ToNewCString(); - NS_WARNING(errorMsgCString); - nsCRT::free(errorMsgCString); + nsString errorMsg = "Failed to init editor. Unknown editor type \""; + errorMsg += mEditorTypeString; + errorMsg += "\"\n"; + char *errorMsgCString = errorMsg.ToNewCString(); + NS_WARNING(errorMsgCString); + nsCRT::free(errorMsgCString); #endif - } + } if (NS_SUCCEEDED(err) && editor) { - mEditor = do_QueryInterface(editor); // this does the addref that is the owning reference + mEditor = do_QueryInterface(editor); // this does the addref that is the owning reference mEditorType = eHTMLTextEditorType; } } @@ -444,8 +443,8 @@ nsEditorShell::SetTextProperty(const PRUnichar *prop, const PRUnichar *attr, con // addref it while we're using it NS_ADDREF(styleAtom); - nsAutoString attributeStr(attr); - nsAutoString valueStr(value); + nsAutoString attributeStr(attr); + nsAutoString valueStr(value); switch (mEditorType) { @@ -509,7 +508,7 @@ nsEditorShell::RemoveTextProperty(const PRUnichar *prop, const PRUnichar *attr) }; nsAutoString allStr(prop); - nsAutoString aAttr(attr); + nsAutoString aAttr(attr); allStr.ToLowerCase(); PRBool doingAll = (allStr == "all"); @@ -533,7 +532,7 @@ nsEditorShell::RemoveTextProperty(const PRUnichar *prop, const PRUnichar *attr) } else { - nsAutoString aProp(prop); + nsAutoString aProp(prop); err = RemoveOneProperty(aProp, aAttr); } @@ -692,7 +691,7 @@ nsEditorShell::TransferDocumentStateListeners() return NS_OK; if (!mEditor) - return NS_ERROR_NOT_INITIALIZED; // called too early. + return NS_ERROR_NOT_INITIALIZED; // called too early. nsresult rv; nsCOMPtr editor = do_QueryInterface(mEditor, &rv); @@ -748,7 +747,7 @@ nsEditorShell::PrepareDocumentForEditing(nsIURI *aUrl) // make the UI state maintainer mStateMaintainer = new nsInterfaceState; if (!mStateMaintainer) return NS_ERROR_OUT_OF_MEMORY; - mStateMaintainer->AddRef(); // the owning reference + mStateMaintainer->AddRef(); // the owning reference rv = mStateMaintainer->Init(mEditor, mWebShell); if (NS_FAILED(rv)) return rv; @@ -820,7 +819,7 @@ nsEditorShell::SetContentWindow(nsIDOMWindow* aWin) return NS_ERROR_NULL_POINTER; mContentWindow = aWin; - //mContentScriptContext = GetScriptContext(mContentWindow); // XXX does this AddRef? + //mContentScriptContext = GetScriptContext(mContentWindow); // XXX does this AddRef? nsresult rv; nsCOMPtr globalObj = do_QueryInterface(mContentWindow, &rv); @@ -832,7 +831,7 @@ nsEditorShell::SetContentWindow(nsIDOMWindow* aWin) if (!webShell) return NS_ERROR_FAILURE; - mContentAreaWebShell = webShell; // dont AddRef + mContentAreaWebShell = webShell; // dont AddRef return mContentAreaWebShell->SetDocLoaderObserver((nsIDocumentLoaderObserver *)this); } @@ -991,7 +990,7 @@ nsEditorShell::Open() result = toolkitCore->ShowWindowWithArgs("chrome://editor/content", nsnull, fileURLString/*fileURL.GetAsString()*/); } - // delete the string + // delete the string break; } @@ -1097,44 +1096,44 @@ nsEditorShell::SaveDocument(PRBool saveAs, PRBool saveCopy, PRBool *_retval) { nsAutoString promptString = GetString("SaveDocumentAs"); - nsString* titles = nsnull; - nsString* filters = nsnull; - nsString* nextTitle; - nsString* nextFilter; + nsString* titles = nsnull; + nsString* filters = nsnull; + nsString* nextTitle; + nsString* nextFilter; nsString HTMLFiles; nsString TextFiles; - titles = new nsString[2]; - if (!titles) - { - res = NS_ERROR_OUT_OF_MEMORY; - goto SkipFilters; - } - filters = new nsString[2]; - if (!filters) - { - res = NS_ERROR_OUT_OF_MEMORY; - goto SkipFilters; - } - nextTitle = titles; - nextFilter = filters; + titles = new nsString[2]; + if (!titles) + { + res = NS_ERROR_OUT_OF_MEMORY; + goto SkipFilters; + } + filters = new nsString[2]; + if (!filters) + { + res = NS_ERROR_OUT_OF_MEMORY; + goto SkipFilters; + } + nextTitle = titles; + nextFilter = filters; // The names of the file types are localizable HTMLFiles = GetString("HTMLFiles"); TextFiles = GetString("TextFiles"); - if (HTMLFiles.Length() == 0 || TextFiles.Length() == 0) + if (HTMLFiles.Length() == 0 || TextFiles.Length() == 0) goto SkipFilters; *nextTitle++ = "HTML Files"; - *nextFilter++ = "*.htm; *.html; *.shtml"; - *nextTitle++ = "Text Files"; - *nextFilter++ = "*.txt"; + *nextFilter++ = "*.htm; *.html; *.shtml"; + *nextTitle++ = "Text Files"; + *nextFilter++ = "*.txt"; fileWidget->SetFilterList(2, titles, filters); SkipFilters: nsFileDlgResults dialogResult; // 1ST PARAM SHOULD BE nsIDOMWindow*, not nsIWidget* dialogResult = fileWidget->PutFile(/*mContentWindow*/nsnull, promptString, docFileSpec); - delete [] titles; - delete [] filters; + delete [] titles; + delete [] filters; if (dialogResult == nsFileDlgResults_Cancel) { @@ -1297,7 +1296,7 @@ nsEditorShell::GetLocalFileURL(nsIDOMWindow *parent, const PRUnichar *filterType // Convert it to the string version of the URL format // NOTE: THIS CRASHES IF fileSpec is empty nsFileURL url(fileSpec); - nsString returnVal = url.GetURLString(); + nsString returnVal = url.GetURLString(); *_retval = returnVal.ToNewUnicode(); } // TODO: SAVE THIS TO THE PREFS? @@ -1705,10 +1704,10 @@ nsEditorShell::DoFind(PRBool aFindNext) if (NS_SUCCEEDED(rv)) { - if (aFindNext) - rv = findComponent->FindNext(mSearchContext, &foundIt); - else - rv = findComponent->Find(mSearchContext, &foundIt); + if (aFindNext) + rv = findComponent->FindNext(mSearchContext, &foundIt); + else + rv = findComponent->Find(mSearchContext, &foundIt); } // Release the service. @@ -1854,7 +1853,7 @@ nsEditorShell::GetDocumentCharacterSet(PRUnichar** characterSet) nsCOMPtr editor = do_QueryInterface(mEditor); if (editor) - return editor->GetDocumentCharacterSet(characterSet); + return editor->GetDocumentCharacterSet(characterSet); return NS_ERROR_FAILURE; } @@ -1865,7 +1864,7 @@ nsEditorShell::SetDocumentCharacterSet(const PRUnichar* characterSet) nsCOMPtr editor = do_QueryInterface(mEditor); if (editor) - return editor->SetDocumentCharacterSet(characterSet); + return editor->SetDocumentCharacterSet(characterSet); return NS_ERROR_FAILURE; @@ -3031,10 +3030,10 @@ nsEditorShell::OnStartDocumentLoad(nsIDocumentLoader* loader, nsIURI* aURL, cons NS_IMETHODIMP #ifndef NECKO nsEditorShell::OnEndDocumentLoad(nsIDocumentLoader* loader, nsIURI *aUrl, PRInt32 aStatus, - nsIDocumentLoaderObserver * aObserver) + nsIDocumentLoaderObserver * aObserver) #else nsEditorShell::OnEndDocumentLoad(nsIDocumentLoader* loader, nsIChannel* channel, nsresult aStatus, - nsIDocumentLoaderObserver * aObserver) + nsIDocumentLoaderObserver * aObserver) #endif // NECKO { #ifdef NECKO diff --git a/mozilla/editor/base/nsHTMLEditRules.cpp b/mozilla/editor/base/nsHTMLEditRules.cpp index a7d48136023..4d6a142f3a5 100644 --- a/mozilla/editor/base/nsHTMLEditRules.cpp +++ b/mozilla/editor/base/nsHTMLEditRules.cpp @@ -173,7 +173,7 @@ nsHTMLEditRules::WillInsertText(nsIDOMSelection *aSelection, } // split any mailcites in the way - if (1 || mFlags & nsIHTMLEditor::eEditorMailMask) + if (mFlags & nsIHTMLEditor::eEditorMailMask) { nsCOMPtr citeNode, selNode; PRInt32 selOffset, newOffset; diff --git a/mozilla/editor/composer/src/nsEditorShell.cpp b/mozilla/editor/composer/src/nsEditorShell.cpp index e83db28cf2a..a43a04fb229 100644 --- a/mozilla/editor/composer/src/nsEditorShell.cpp +++ b/mozilla/editor/composer/src/nsEditorShell.cpp @@ -311,12 +311,7 @@ nsEditorShell::SetEditorType(const PRUnichar *editorType) nsAutoString theType = editorType; theType.ToLowerCase(); - if (theType == "text") - { - mEditorTypeString = theType; - return NS_OK; - } - else if (theType == "html" || theType == "") + if (theType == "text" || theType == "html" || theType == "" || theType == "htmlMail") { mEditorTypeString = theType; return NS_OK; @@ -351,27 +346,31 @@ nsEditorShell::InstantiateEditor(nsIDOMDocument *aDoc, nsIPresShell *aPresShell) if (mEditorTypeString == "text") { err = editor->Init(aDoc, aPresShell, nsIHTMLEditor::eEditorPlaintextMask); - } - else if (mEditorTypeString == "html" || mEditorTypeString == "") // empty string default to HTML editor + } + else if (mEditorTypeString == "html" || mEditorTypeString == "") // empty string default to HTML editor { err = editor->Init(aDoc, aPresShell, 0); - } - else - { - err = NS_ERROR_INVALID_ARG; // this is not an editor we know about + } + else if (mEditorTypeString == "htmlMail") // HTML editor with special mail rules + { + err = editor->Init(aDoc, aPresShell, nsIHTMLEditor::eEditorMailMask); + } + else + { + err = NS_ERROR_INVALID_ARG; // this is not an editor we know about #if DEBUG - nsString errorMsg = "Failed to init editor. Unknown editor type \""; - errorMsg += mEditorTypeString; - errorMsg += "\"\n"; - char *errorMsgCString = errorMsg.ToNewCString(); - NS_WARNING(errorMsgCString); - nsCRT::free(errorMsgCString); + nsString errorMsg = "Failed to init editor. Unknown editor type \""; + errorMsg += mEditorTypeString; + errorMsg += "\"\n"; + char *errorMsgCString = errorMsg.ToNewCString(); + NS_WARNING(errorMsgCString); + nsCRT::free(errorMsgCString); #endif - } + } if (NS_SUCCEEDED(err) && editor) { - mEditor = do_QueryInterface(editor); // this does the addref that is the owning reference + mEditor = do_QueryInterface(editor); // this does the addref that is the owning reference mEditorType = eHTMLTextEditorType; } } @@ -444,8 +443,8 @@ nsEditorShell::SetTextProperty(const PRUnichar *prop, const PRUnichar *attr, con // addref it while we're using it NS_ADDREF(styleAtom); - nsAutoString attributeStr(attr); - nsAutoString valueStr(value); + nsAutoString attributeStr(attr); + nsAutoString valueStr(value); switch (mEditorType) { @@ -509,7 +508,7 @@ nsEditorShell::RemoveTextProperty(const PRUnichar *prop, const PRUnichar *attr) }; nsAutoString allStr(prop); - nsAutoString aAttr(attr); + nsAutoString aAttr(attr); allStr.ToLowerCase(); PRBool doingAll = (allStr == "all"); @@ -533,7 +532,7 @@ nsEditorShell::RemoveTextProperty(const PRUnichar *prop, const PRUnichar *attr) } else { - nsAutoString aProp(prop); + nsAutoString aProp(prop); err = RemoveOneProperty(aProp, aAttr); } @@ -692,7 +691,7 @@ nsEditorShell::TransferDocumentStateListeners() return NS_OK; if (!mEditor) - return NS_ERROR_NOT_INITIALIZED; // called too early. + return NS_ERROR_NOT_INITIALIZED; // called too early. nsresult rv; nsCOMPtr editor = do_QueryInterface(mEditor, &rv); @@ -748,7 +747,7 @@ nsEditorShell::PrepareDocumentForEditing(nsIURI *aUrl) // make the UI state maintainer mStateMaintainer = new nsInterfaceState; if (!mStateMaintainer) return NS_ERROR_OUT_OF_MEMORY; - mStateMaintainer->AddRef(); // the owning reference + mStateMaintainer->AddRef(); // the owning reference rv = mStateMaintainer->Init(mEditor, mWebShell); if (NS_FAILED(rv)) return rv; @@ -820,7 +819,7 @@ nsEditorShell::SetContentWindow(nsIDOMWindow* aWin) return NS_ERROR_NULL_POINTER; mContentWindow = aWin; - //mContentScriptContext = GetScriptContext(mContentWindow); // XXX does this AddRef? + //mContentScriptContext = GetScriptContext(mContentWindow); // XXX does this AddRef? nsresult rv; nsCOMPtr globalObj = do_QueryInterface(mContentWindow, &rv); @@ -832,7 +831,7 @@ nsEditorShell::SetContentWindow(nsIDOMWindow* aWin) if (!webShell) return NS_ERROR_FAILURE; - mContentAreaWebShell = webShell; // dont AddRef + mContentAreaWebShell = webShell; // dont AddRef return mContentAreaWebShell->SetDocLoaderObserver((nsIDocumentLoaderObserver *)this); } @@ -991,7 +990,7 @@ nsEditorShell::Open() result = toolkitCore->ShowWindowWithArgs("chrome://editor/content", nsnull, fileURLString/*fileURL.GetAsString()*/); } - // delete the string + // delete the string break; } @@ -1097,44 +1096,44 @@ nsEditorShell::SaveDocument(PRBool saveAs, PRBool saveCopy, PRBool *_retval) { nsAutoString promptString = GetString("SaveDocumentAs"); - nsString* titles = nsnull; - nsString* filters = nsnull; - nsString* nextTitle; - nsString* nextFilter; + nsString* titles = nsnull; + nsString* filters = nsnull; + nsString* nextTitle; + nsString* nextFilter; nsString HTMLFiles; nsString TextFiles; - titles = new nsString[2]; - if (!titles) - { - res = NS_ERROR_OUT_OF_MEMORY; - goto SkipFilters; - } - filters = new nsString[2]; - if (!filters) - { - res = NS_ERROR_OUT_OF_MEMORY; - goto SkipFilters; - } - nextTitle = titles; - nextFilter = filters; + titles = new nsString[2]; + if (!titles) + { + res = NS_ERROR_OUT_OF_MEMORY; + goto SkipFilters; + } + filters = new nsString[2]; + if (!filters) + { + res = NS_ERROR_OUT_OF_MEMORY; + goto SkipFilters; + } + nextTitle = titles; + nextFilter = filters; // The names of the file types are localizable HTMLFiles = GetString("HTMLFiles"); TextFiles = GetString("TextFiles"); - if (HTMLFiles.Length() == 0 || TextFiles.Length() == 0) + if (HTMLFiles.Length() == 0 || TextFiles.Length() == 0) goto SkipFilters; *nextTitle++ = "HTML Files"; - *nextFilter++ = "*.htm; *.html; *.shtml"; - *nextTitle++ = "Text Files"; - *nextFilter++ = "*.txt"; + *nextFilter++ = "*.htm; *.html; *.shtml"; + *nextTitle++ = "Text Files"; + *nextFilter++ = "*.txt"; fileWidget->SetFilterList(2, titles, filters); SkipFilters: nsFileDlgResults dialogResult; // 1ST PARAM SHOULD BE nsIDOMWindow*, not nsIWidget* dialogResult = fileWidget->PutFile(/*mContentWindow*/nsnull, promptString, docFileSpec); - delete [] titles; - delete [] filters; + delete [] titles; + delete [] filters; if (dialogResult == nsFileDlgResults_Cancel) { @@ -1297,7 +1296,7 @@ nsEditorShell::GetLocalFileURL(nsIDOMWindow *parent, const PRUnichar *filterType // Convert it to the string version of the URL format // NOTE: THIS CRASHES IF fileSpec is empty nsFileURL url(fileSpec); - nsString returnVal = url.GetURLString(); + nsString returnVal = url.GetURLString(); *_retval = returnVal.ToNewUnicode(); } // TODO: SAVE THIS TO THE PREFS? @@ -1705,10 +1704,10 @@ nsEditorShell::DoFind(PRBool aFindNext) if (NS_SUCCEEDED(rv)) { - if (aFindNext) - rv = findComponent->FindNext(mSearchContext, &foundIt); - else - rv = findComponent->Find(mSearchContext, &foundIt); + if (aFindNext) + rv = findComponent->FindNext(mSearchContext, &foundIt); + else + rv = findComponent->Find(mSearchContext, &foundIt); } // Release the service. @@ -1854,7 +1853,7 @@ nsEditorShell::GetDocumentCharacterSet(PRUnichar** characterSet) nsCOMPtr editor = do_QueryInterface(mEditor); if (editor) - return editor->GetDocumentCharacterSet(characterSet); + return editor->GetDocumentCharacterSet(characterSet); return NS_ERROR_FAILURE; } @@ -1865,7 +1864,7 @@ nsEditorShell::SetDocumentCharacterSet(const PRUnichar* characterSet) nsCOMPtr editor = do_QueryInterface(mEditor); if (editor) - return editor->SetDocumentCharacterSet(characterSet); + return editor->SetDocumentCharacterSet(characterSet); return NS_ERROR_FAILURE; @@ -3031,10 +3030,10 @@ nsEditorShell::OnStartDocumentLoad(nsIDocumentLoader* loader, nsIURI* aURL, cons NS_IMETHODIMP #ifndef NECKO nsEditorShell::OnEndDocumentLoad(nsIDocumentLoader* loader, nsIURI *aUrl, PRInt32 aStatus, - nsIDocumentLoaderObserver * aObserver) + nsIDocumentLoaderObserver * aObserver) #else nsEditorShell::OnEndDocumentLoad(nsIDocumentLoader* loader, nsIChannel* channel, nsresult aStatus, - nsIDocumentLoaderObserver * aObserver) + nsIDocumentLoaderObserver * aObserver) #endif // NECKO { #ifdef NECKO diff --git a/mozilla/editor/libeditor/html/nsHTMLEditRules.cpp b/mozilla/editor/libeditor/html/nsHTMLEditRules.cpp index a7d48136023..4d6a142f3a5 100644 --- a/mozilla/editor/libeditor/html/nsHTMLEditRules.cpp +++ b/mozilla/editor/libeditor/html/nsHTMLEditRules.cpp @@ -173,7 +173,7 @@ nsHTMLEditRules::WillInsertText(nsIDOMSelection *aSelection, } // split any mailcites in the way - if (1 || mFlags & nsIHTMLEditor::eEditorMailMask) + if (mFlags & nsIHTMLEditor::eEditorMailMask) { nsCOMPtr citeNode, selNode; PRInt32 selOffset, newOffset;