Bug 419038 Replace nsISupportsArray usage for nsMsgCompose State Listeners. r/sr=Neil

git-svn-id: svn://10.0.0.236/trunk@246311 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
bugzilla%standard8.plus.com
2008-02-22 17:23:58 +00:00
parent 33fc0d9c84
commit 203e19b10b
2 changed files with 34 additions and 62 deletions

View File

@@ -868,44 +868,24 @@ nsresult nsMsgCompose::SetDocumentCharset(const char *charset)
return NS_OK;
}
nsresult nsMsgCompose::RegisterStateListener(nsIMsgComposeStateListener *stateListener)
NS_IMETHODIMP
nsMsgCompose::RegisterStateListener(nsIMsgComposeStateListener *aStateListener)
{
nsresult rv = NS_OK;
NS_ENSURE_ARG_POINTER(aStateListener);
if (!stateListener)
return NS_ERROR_NULL_POINTER;
if (!mStateListeners)
{
rv = NS_NewISupportsArray(getter_AddRefs(mStateListeners));
if (NS_FAILED(rv)) return rv;
}
nsCOMPtr<nsISupports> iSupports = do_QueryInterface(stateListener, &rv);
if (NS_FAILED(rv)) return rv;
// note that this return value is really a PRBool, so be sure to use
// NS_SUCCEEDED or NS_FAILED to check it.
return mStateListeners->AppendElement(iSupports);
return mStateListeners.AppendElement(aStateListener) ? NS_OK : NS_ERROR_FAILURE;
}
nsresult nsMsgCompose::UnregisterStateListener(nsIMsgComposeStateListener *stateListener)
NS_IMETHODIMP
nsMsgCompose::UnregisterStateListener(nsIMsgComposeStateListener *aStateListener)
{
if (!stateListener)
return NS_ERROR_NULL_POINTER;
NS_ENSURE_ARG_POINTER(aStateListener);
nsresult rv = NS_OK;
PRInt32 index = mStateListeners.IndexOf(aStateListener);
if (index == -1)
return NS_ERROR_FAILURE;
// otherwise, see if it exists in our list
if (!mStateListeners)
return (nsresult)PR_FALSE; // yeah, this sucks, but I'm emulating the behaviour of
// nsISupportsArray::RemoveElement()
nsCOMPtr<nsISupports> iSupports = do_QueryInterface(stateListener, &rv);
if (NS_FAILED(rv)) return rv;
// note that this return value is really a PRBool, so be sure to use
// NS_SUCCEEDED or NS_FAILED to check it.
return mStateListeners->RemoveElement(iSupports);
return mStateListeners.RemoveElement(aStateListener) ? NS_OK : NS_ERROR_FAILURE;
}
// Added to allow easier use of the nsIMsgSendListener
@@ -4162,42 +4142,34 @@ nsresult nsMsgCompose::NotifyStateListeners(PRInt32 aNotificationType, nsresult
if (aNotificationType == nsIMsgComposeNotificationType::SaveInFolderDone)
ResetUrisForEmbeddedObjects();
if (!mStateListeners)
return NS_OK; // maybe there just aren't any.
nsTObserverArray<nsCOMPtr<nsIMsgComposeStateListener> >::ForwardIterator iter(mStateListeners);
nsCOMPtr<nsIMsgComposeStateListener> thisListener;
PRUint32 numListeners;
nsresult rv = mStateListeners->Count(&numListeners);
if (NS_FAILED(rv)) return rv;
PRUint32 i;
for (i = 0; i < numListeners;i++)
while (iter.HasMore())
{
nsCOMPtr<nsIMsgComposeStateListener> thisListener =
do_QueryElementAt(mStateListeners, i);
if (thisListener)
thisListener = iter.GetNext();
switch (aNotificationType)
{
switch (aNotificationType)
{
case nsIMsgComposeNotificationType::ComposeFieldsReady:
thisListener->NotifyComposeFieldsReady();
break;
case nsIMsgComposeNotificationType::ComposeFieldsReady:
thisListener->NotifyComposeFieldsReady();
break;
case nsIMsgComposeNotificationType::ComposeProcessDone:
thisListener->ComposeProcessDone(aResult);
break;
case nsIMsgComposeNotificationType::ComposeProcessDone:
thisListener->ComposeProcessDone(aResult);
break;
case nsIMsgComposeNotificationType::SaveInFolderDone:
thisListener->SaveInFolderDone(m_folderName.get());
break;
case nsIMsgComposeNotificationType::SaveInFolderDone:
thisListener->SaveInFolderDone(m_folderName.get());
break;
case nsIMsgComposeNotificationType::ComposeBodyReady:
thisListener->NotifyComposeBodyReady();
break;
case nsIMsgComposeNotificationType::ComposeBodyReady:
thisListener->NotifyComposeBodyReady();
break;
default:
NS_NOTREACHED("Unknown notification");
break;
}
default:
NS_NOTREACHED("Unknown notification");
break;
}
}

View File

@@ -153,7 +153,6 @@ private:
nsCOMPtr<nsIMsgQuote> mQuote;
PRBool mQuotingToFollow; // Quoting indicator
MSG_ComposeType mType; // Message type
nsCOMPtr<nsISupportsArray> mStateListeners; // contents are nsISupports
PRBool mCharsetOverride;
PRBool mDeleteDraft;
nsMsgDispositionState mDraftDisposition;
@@ -161,7 +160,8 @@ private:
nsCString mSmtpPassword;
nsTObserverArray<nsCOMPtr<nsIMsgSendListener> > mExternalSendListeners;
nsTObserverArray<nsCOMPtr<nsIMsgComposeStateListener> > mStateListeners;
nsTObserverArray<nsCOMPtr<nsIMsgSendListener> > mExternalSendListeners;
PRBool mInsertingQuotedContent;