mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-12 21:05:36 +00:00
remember sort order in single folder virtual folder, sr=mscott 262145
This commit is contained in:
parent
789efce8a2
commit
1c4cc70fe1
@ -889,6 +889,8 @@ function FolderPaneSelectionChange()
|
||||
else if (viewType == nsMsgViewType.eShowQuickSearchResults)
|
||||
viewType = nsMsgViewType.eShowAllThreads; //override viewType - we don't want to start w/ quick search
|
||||
ChangeFolderByURI(uriToLoad, viewType, viewFlags, sortType, sortOrder);
|
||||
if (gVirtualFolderTerms)
|
||||
gDBView.viewFolder = msgFolder;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -280,6 +280,7 @@ interface nsIMsgDBView : nsISupports
|
||||
boolean navigateStatus(in nsMsgNavigationTypeValue motion);
|
||||
|
||||
readonly attribute nsIMsgFolder msgFolder;
|
||||
attribute nsIMsgFolder viewFolder; // in the case of virtual folders, the VF db.
|
||||
|
||||
nsMsgKey getKeyAt(in nsMsgViewIndex index);
|
||||
nsIMsgFolder getFolderForViewIndex(in nsMsgViewIndex index); // mainly for search
|
||||
|
@ -1765,6 +1765,7 @@ NS_IMETHODIMP nsMsgDBView::Open(nsIMsgFolder *folder, nsMsgViewSortTypeValue sor
|
||||
NS_ENSURE_SUCCESS(rv,rv);
|
||||
m_db->AddListener(this);
|
||||
m_folder = folder;
|
||||
m_viewFolder = folder;
|
||||
// determine if we are in a news folder or not.
|
||||
// if yes, we'll show lines instead of size, and special icons in the thread pane
|
||||
nsCOMPtr <nsIMsgIncomingServer> server;
|
||||
@ -3437,10 +3438,11 @@ nsMsgDBView::GetLocationCollationKey(nsIMsgHdr *msgHdr, PRUint8 **result, PRUint
|
||||
|
||||
nsresult nsMsgDBView::SaveSortInfo(nsMsgViewSortTypeValue sortType, nsMsgViewSortOrderValue sortOrder)
|
||||
{
|
||||
if (m_folder)
|
||||
if (m_viewFolder)
|
||||
{
|
||||
nsCOMPtr <nsIDBFolderInfo> folderInfo;
|
||||
nsresult rv = m_folder->GetDBFolderInfoAndDB(getter_AddRefs(folderInfo), getter_AddRefs(m_db));
|
||||
nsCOMPtr <nsIMsgDatabase> db;
|
||||
nsresult rv = m_viewFolder->GetDBFolderInfoAndDB(getter_AddRefs(folderInfo), getter_AddRefs(db));
|
||||
if (NS_SUCCEEDED(rv) && folderInfo)
|
||||
{
|
||||
// save off sort type and order, view type and flags
|
||||
@ -5424,6 +5426,20 @@ NS_IMETHODIMP nsMsgDBView::GetMsgFolder(nsIMsgFolder **aMsgFolder)
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMsgDBView::SetViewFolder(nsIMsgFolder *aMsgFolder)
|
||||
{
|
||||
m_viewFolder = aMsgFolder;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMsgDBView::GetViewFolder(nsIMsgFolder **aMsgFolder)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aMsgFolder);
|
||||
NS_IF_ADDREF(*aMsgFolder = m_viewFolder);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsMsgDBView::GetNumSelected(PRUint32 *numSelected)
|
||||
{
|
||||
|
@ -337,6 +337,7 @@ protected:
|
||||
|
||||
nsCOMPtr <nsIMsgDatabase> m_db;
|
||||
nsCOMPtr <nsIMsgFolder> m_folder;
|
||||
nsCOMPtr <nsIMsgFolder> m_viewFolder; // for virtual folders, the VF db.
|
||||
nsCOMPtr <nsIAtom> mRedirectorTypeAtom;
|
||||
nsCOMPtr <nsIAtom> mMessageTypeAtom; // news, rss, mail, etc.
|
||||
nsMsgViewSortTypeValue m_sortType;
|
||||
|
@ -38,6 +38,7 @@
|
||||
|
||||
#include "msgCore.h"
|
||||
#include "nsMsgQuickSearchDBView.h"
|
||||
#include "nsMsgFolderFlags.h"
|
||||
#include "nsIMsgHdr.h"
|
||||
#include "nsMsgBaseCID.h"
|
||||
#include "nsIMsgImapMailFolder.h"
|
||||
@ -215,5 +216,10 @@ nsMsgQuickSearchDBView::Sort(nsMsgViewSortTypeValue sortType, nsMsgViewSortOrder
|
||||
RestoreSelection(preservedKey, &preservedSelection);
|
||||
if (mTree)
|
||||
mTree->Invalidate();
|
||||
|
||||
PRUint32 folderFlags;
|
||||
if (m_viewFolder && NS_SUCCEEDED(m_viewFolder->GetFlags(&folderFlags)) && folderFlags & MSG_FOLDER_FLAG_VIRTUAL)
|
||||
SaveSortInfo(sortType, sortOrder);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -57,7 +57,7 @@ nsMsgXFVirtualFolderDBView::~nsMsgXFVirtualFolderDBView()
|
||||
|
||||
NS_IMETHODIMP nsMsgXFVirtualFolderDBView::Open(nsIMsgFolder *folder, nsMsgViewSortTypeValue sortType, nsMsgViewSortOrderValue sortOrder, nsMsgViewFlagsTypeValue viewFlags, PRInt32 *pCount)
|
||||
{
|
||||
m_virtualFolder = folder;
|
||||
m_viewFolder = folder;
|
||||
return nsMsgSearchDBView::Open(folder, sortType, sortOrder, viewFlags, pCount);
|
||||
}
|
||||
|
||||
@ -155,11 +155,11 @@ nsMsgXFVirtualFolderDBView::OnSearchDone(nsresult status)
|
||||
nsCOMPtr <nsIMsgDatabase> virtDatabase;
|
||||
nsCOMPtr <nsIDBFolderInfo> dbFolderInfo;
|
||||
|
||||
nsresult rv = m_virtualFolder->GetDBFolderInfoAndDB(getter_AddRefs(dbFolderInfo), getter_AddRefs(virtDatabase));
|
||||
nsresult rv = m_viewFolder->GetDBFolderInfoAndDB(getter_AddRefs(dbFolderInfo), getter_AddRefs(virtDatabase));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
dbFolderInfo->SetNumUnreadMessages(m_numUnread);
|
||||
dbFolderInfo->SetNumMessages(m_numTotal);
|
||||
m_virtualFolder->UpdateSummaryTotals(true); // force update from db.
|
||||
m_viewFolder->UpdateSummaryTotals(true); // force update from db.
|
||||
virtDatabase->Commit(nsMsgDBCommitType::kLargeCommit);
|
||||
return rv;
|
||||
}
|
||||
@ -200,6 +200,6 @@ NS_IMETHODIMP nsMsgXFVirtualFolderDBView::DoCommand(nsMsgViewCommandTypeValue co
|
||||
NS_IMETHODIMP nsMsgXFVirtualFolderDBView::GetMsgFolder(nsIMsgFolder **aMsgFolder)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aMsgFolder);
|
||||
NS_IF_ADDREF(*aMsgFolder = m_virtualFolder);
|
||||
NS_IF_ADDREF(*aMsgFolder = m_viewFolder);
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -66,7 +66,7 @@ public:
|
||||
|
||||
protected:
|
||||
|
||||
nsCOMPtr <nsIMsgFolder> m_virtualFolder;
|
||||
nsCOMPtr <nsIMsgFolder> m_viewFolder;
|
||||
nsWeakPtr m_searchSession;
|
||||
PRInt32 m_numUnread;
|
||||
PRInt32 m_numTotal;
|
||||
|
Loading…
Reference in New Issue
Block a user