Bug #266139 --> Unable to open messages in a cross folder virtual folder in a stand alone message. Also add support for deleting messages in XFVF's from the stand alone message window.
sr=bienvenu git-svn-id: svn://10.0.0.236/trunk@164544 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
parent
a14f77173f
commit
0630886e00
@ -993,9 +993,9 @@ nsresult nsMsgDBView::UpdateDisplayMessage(nsMsgViewIndex viewPosition)
|
||||
|
||||
mCommandUpdater->DisplayMessageChanged(folder, subject, keywords);
|
||||
|
||||
if (m_folder)
|
||||
if (folder)
|
||||
{
|
||||
rv = m_folder->SetLastMessageLoaded(m_keys[viewPosition]);
|
||||
rv = folder->SetLastMessageLoaded(m_keys[viewPosition]);
|
||||
NS_ENSURE_SUCCESS(rv,rv);
|
||||
}
|
||||
} // if view position is valid
|
||||
@ -5531,7 +5531,9 @@ nsMsgDBView::GetMsgToSelectAfterDelete(nsMsgViewIndex *msgToSelectAfterDelete)
|
||||
rv = mTreeSelection->GetRangeAt(i, &startRange, &endRange);
|
||||
*msgToSelectAfterDelete = PR_MIN(*msgToSelectAfterDelete, startRange);
|
||||
}
|
||||
nsCOMPtr <nsIMsgImapMailFolder> imapFolder = do_QueryInterface(m_folder);
|
||||
nsCOMPtr<nsIMsgFolder> folder;
|
||||
GetMsgFolder(getter_AddRefs(folder));
|
||||
nsCOMPtr <nsIMsgImapMailFolder> imapFolder = do_QueryInterface(folder);
|
||||
PRBool thisIsImapFolder = (imapFolder != nsnull);
|
||||
if (thisIsImapFolder) //need to update the imap-delete model, can change more than once in a session.
|
||||
GetImapDeleteModel(nsnull);
|
||||
|
||||
@ -76,6 +76,45 @@ NS_IMETHODIMP nsMsgSearchDBView::Open(nsIMsgFolder *folder, nsMsgViewSortTypeVal
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsMsgSearchDBView::CopyDBView(nsMsgDBView *aNewMsgDBView, nsIMessenger *aMessengerInstance,
|
||||
nsIMsgWindow *aMsgWindow, nsIMsgDBViewCommandUpdater *aCmdUpdater)
|
||||
{
|
||||
nsMsgDBView::CopyDBView(aNewMsgDBView, aMessengerInstance, aMsgWindow, aCmdUpdater);
|
||||
nsMsgSearchDBView* newMsgDBView = (nsMsgSearchDBView *) aNewMsgDBView;
|
||||
|
||||
// now copy all of our private member data
|
||||
newMsgDBView->mDestFolder = mDestFolder;
|
||||
newMsgDBView->mCommand = mCommand;
|
||||
newMsgDBView->mTotalIndices = mTotalIndices;
|
||||
newMsgDBView->mCurIndex = mCurIndex;
|
||||
|
||||
if (m_folders)
|
||||
m_folders->Clone(getter_AddRefs(newMsgDBView->m_folders));
|
||||
|
||||
if (m_hdrsForEachFolder)
|
||||
m_hdrsForEachFolder->Clone(getter_AddRefs(newMsgDBView->m_hdrsForEachFolder));
|
||||
|
||||
if (m_copyListenerList)
|
||||
m_copyListenerList->Clone(getter_AddRefs(newMsgDBView->m_copyListenerList));
|
||||
|
||||
if (m_uniqueFoldersSelected)
|
||||
m_uniqueFoldersSelected->Clone(getter_AddRefs(newMsgDBView->m_uniqueFoldersSelected));
|
||||
|
||||
|
||||
PRInt32 count = m_dbToUseList.Count();
|
||||
for(PRInt32 i = 0; i < count; i++)
|
||||
{
|
||||
newMsgDBView->m_dbToUseList.AppendObject(m_dbToUseList[i]);
|
||||
// register the new view with the database so it gets notifications
|
||||
m_dbToUseList[i]->AddListener(newMsgDBView);
|
||||
}
|
||||
|
||||
// nsUInt32Array* mTestIndices;
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMsgSearchDBView::Close()
|
||||
{
|
||||
PRInt32 count = m_dbToUseList.Count();
|
||||
|
||||
@ -56,6 +56,8 @@ public:
|
||||
virtual const char * GetViewName(void) {return "SearchView"; }
|
||||
NS_IMETHOD Open(nsIMsgFolder *folder, nsMsgViewSortTypeValue sortType, nsMsgViewSortOrderValue sortOrder,
|
||||
nsMsgViewFlagsTypeValue viewFlags, PRInt32 *pCount);
|
||||
NS_IMETHOD CopyDBView(nsMsgDBView *aNewMsgDBView, nsIMessenger *aMessengerInstance,
|
||||
nsIMsgWindow *aMsgWindow, nsIMsgDBViewCommandUpdater *aCmdUpdater);
|
||||
NS_IMETHOD Close();
|
||||
NS_IMETHOD Sort(nsMsgViewSortTypeValue sortType, nsMsgViewSortOrderValue sortOrder);
|
||||
NS_IMETHOD DoCommand(nsMsgViewCommandTypeValue command);
|
||||
@ -89,7 +91,6 @@ protected:
|
||||
PRInt32 mCurIndex;
|
||||
|
||||
nsMsgViewIndex* mIndicesForChainedDeleteAndFile;
|
||||
nsUInt32Array* mTestIndices;
|
||||
PRInt32 mTotalIndices;
|
||||
nsCOMArray<nsIMsgDatabase> m_dbToUseList;
|
||||
nsMsgViewCommandTypeValue mCommand;
|
||||
|
||||
@ -71,6 +71,39 @@ NS_IMETHODIMP nsMsgXFVirtualFolderDBView::Close()
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsMsgXFVirtualFolderDBView::CloneDBView(nsIMessenger *aMessengerInstance, nsIMsgWindow *aMsgWindow,
|
||||
nsIMsgDBViewCommandUpdater *aCmdUpdater, nsIMsgDBView **_retval)
|
||||
{
|
||||
nsMsgXFVirtualFolderDBView* newMsgDBView;
|
||||
NS_NEWXPCOM(newMsgDBView, nsMsgXFVirtualFolderDBView);
|
||||
|
||||
if (!newMsgDBView)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
nsresult rv = CopyDBView(newMsgDBView, aMessengerInstance, aMsgWindow, aCmdUpdater);
|
||||
NS_ENSURE_SUCCESS(rv,rv);
|
||||
|
||||
NS_IF_ADDREF(*_retval = newMsgDBView);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsMsgXFVirtualFolderDBView::CopyDBView(nsMsgDBView *aNewMsgDBView, nsIMessenger *aMessengerInstance,
|
||||
nsIMsgWindow *aMsgWindow, nsIMsgDBViewCommandUpdater *aCmdUpdater)
|
||||
{
|
||||
nsMsgSearchDBView::CopyDBView(aNewMsgDBView, aMessengerInstance, aMsgWindow, aCmdUpdater);
|
||||
|
||||
nsMsgXFVirtualFolderDBView* newMsgDBView = (nsMsgXFVirtualFolderDBView *) aNewMsgDBView;
|
||||
|
||||
newMsgDBView->m_viewFolder = m_viewFolder;
|
||||
newMsgDBView->m_numUnread = m_numUnread;
|
||||
newMsgDBView->m_numTotal = m_numTotal;
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
NS_IMETHODIMP nsMsgXFVirtualFolderDBView::GetViewType(nsMsgViewTypeValue *aViewType)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aViewType);
|
||||
|
||||
@ -57,13 +57,16 @@ public:
|
||||
virtual const char * GetViewName(void) {return "XFVirtualFolderView"; }
|
||||
NS_IMETHOD Open(nsIMsgFolder *folder, nsMsgViewSortTypeValue sortType, nsMsgViewSortOrderValue sortOrder,
|
||||
nsMsgViewFlagsTypeValue viewFlags, PRInt32 *pCount);
|
||||
NS_IMETHOD CloneDBView(nsIMessenger *aMessengerInstance, nsIMsgWindow *aMsgWindow,
|
||||
nsIMsgDBViewCommandUpdater *aCmdUpdater, nsIMsgDBView **_retval);
|
||||
NS_IMETHOD CopyDBView(nsMsgDBView *aNewMsgDBView, nsIMessenger *aMessengerInstance,
|
||||
nsIMsgWindow *aMsgWindow, nsIMsgDBViewCommandUpdater *aCmdUpdater);
|
||||
NS_IMETHOD Close();
|
||||
NS_IMETHOD GetViewType(nsMsgViewTypeValue *aViewType);
|
||||
NS_IMETHOD DoCommand(nsMsgViewCommandTypeValue command);
|
||||
virtual nsresult OnNewHeader(nsIMsgDBHdr *newHdr, nsMsgKey parentKey, PRBool ensureListed);
|
||||
NS_IMETHOD GetMsgFolder(nsIMsgFolder **aMsgFolder);
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
nsCOMPtr <nsIMsgFolder> m_viewFolder;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user