mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-11 20:35:50 +00:00
fix for #96499, account central not being shown on start up, "read messages" not working if server collapsed
fix for #95358, folder pane sorting should be case insensitive fix for #18343, newsgroups in the folder pane should be in newsrc order, not alphabetical order. plus, some clean up. r=racham, sr=bienvenu, a=asa
This commit is contained in:
parent
ce0f999657
commit
9867c7fd8e
@ -371,4 +371,9 @@ const nsMsgBiffState nsMsgBiffState_Unknown = 2; // We dunno whether there is ne
|
||||
|
||||
attribute nsIMsgRetentionSettings retentionSettings;
|
||||
attribute nsIMsgDownloadSettings downloadSettings;
|
||||
|
||||
/**
|
||||
* used for order in the folder pane, folder pickers, etc.
|
||||
*/
|
||||
attribute long sortOrder;
|
||||
};
|
||||
|
@ -57,9 +57,6 @@
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#FolderTreeSimpleName"
|
||||
object="?folderTreeSimpleName" />
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#FolderTreeSimpleName?sort=true"
|
||||
object="?folderTreeSimpleNameSort" />
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#SpecialFolder"
|
||||
object="?specialFolder" />
|
||||
|
@ -523,12 +523,8 @@ function OpenInboxForServer(server)
|
||||
{
|
||||
try {
|
||||
HideAccountCentral();
|
||||
OpenTwistyForServer(server);
|
||||
var inboxFolder = GetInboxFolder(server);
|
||||
var folderResource = RDF.GetResource(inboxFolder.URI)
|
||||
var folderOutliner = GetFolderOutliner();
|
||||
var folderIndex = GetFolderIndex(folderOutliner, folderResource);
|
||||
ChangeSelection(folderOutliner, folderIndex);
|
||||
SelectFolder(inboxFolder.URI);
|
||||
|
||||
if(CheckOnline())
|
||||
GetMessagesForInboxOnServer(server);
|
||||
|
@ -523,6 +523,12 @@ function loadStartFolder(initialUri)
|
||||
|
||||
startFolderResource = inboxFolder.QueryInterface(Components.interfaces.nsIRDFResource);
|
||||
}
|
||||
else
|
||||
{
|
||||
// set the startFolderResource to the server, so we select it
|
||||
// so we'll get account central
|
||||
startFolderResource = RDF.GetResource(defaultServer.serverURI);
|
||||
}
|
||||
}
|
||||
|
||||
var startFolder = startFolderResource.QueryInterface(Components.interfaces.nsIFolder);
|
||||
@ -563,32 +569,6 @@ function loadStartFolder(initialUri)
|
||||
}
|
||||
}
|
||||
|
||||
function OpenTwistyForServer(folderOutliner, server)
|
||||
{
|
||||
var folderIndex = GetFolderIndexForServerURI(folderOutliner, server.serverURI);
|
||||
|
||||
if (folderIndex >= 0)
|
||||
{
|
||||
var isContainerOpen = folderOutliner.outlinerBoxObject.view.isContainerOpen(folderIndex);
|
||||
if (!isContainerOpen)
|
||||
folderOutliner.outlinerBoxObject.view.toggleOpenState(folderIndex);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function GetFolderIndexForServerURI(folderOutliner, serverURI)
|
||||
{
|
||||
var folderResource = RDF.GetResource(serverURI);
|
||||
var isServer = GetFolderAttribute(folderOutliner, folderResource, "IsServer");
|
||||
if (isServer == "true")
|
||||
{
|
||||
var folderIndex = GetFolderIndex(folderOutliner, folderResource);
|
||||
return folderIndex;
|
||||
}
|
||||
else
|
||||
return -1;
|
||||
}
|
||||
|
||||
function TriggerGetMessages(server)
|
||||
{
|
||||
// downloadMessagesAtStartup for a given server type indicates whether
|
||||
@ -631,16 +611,13 @@ function OnFolderUnreadColAttrModified(event)
|
||||
if (event.attrName == "hidden")
|
||||
{
|
||||
var folderNameCell = document.getElementById("folderNameCell");
|
||||
var folderNameCol = document.getElementById("folderNameCol");
|
||||
if (event.newValue == "true")
|
||||
{
|
||||
folderNameCell.setAttribute("label", "?folderTreeName");
|
||||
folderNameCol.setAttribute("sort", "?folderTreeNameSort");
|
||||
}
|
||||
else if (event.attrChange == Components.interfaces.nsIDOMMutationEvent.REMOVAL)
|
||||
{
|
||||
folderNameCell.setAttribute("label", "?folderTreeSimpleName");
|
||||
folderNameCol.setAttribute("sort", "?folderTreeSimpleNameSort");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -652,9 +629,7 @@ function OnLoadFolderPane()
|
||||
if (!hidden)
|
||||
{
|
||||
var folderNameCell = document.getElementById("folderNameCell");
|
||||
var folderNameCol = document.getElementById("folderNameCol");
|
||||
folderNameCell.setAttribute("label", "?folderTreeSimpleName");
|
||||
folderNameCol.setAttribute("sort", "?folderTreeSimpleNameSort");
|
||||
}
|
||||
folderUnreadCol.addEventListener("DOMAttrModified", OnFolderUnreadColAttrModified, false);
|
||||
|
||||
@ -1023,6 +998,12 @@ function EnsureAllAncestorsAreExpanded(outliner, resource)
|
||||
// get the parent of the desired folder, and then try to get
|
||||
// the index of the parent in the outliner
|
||||
var folder = resource.QueryInterface(Components.interfaces.nsIFolder);
|
||||
|
||||
// if this is a server, there are no ancestors, so stop.
|
||||
var msgFolder = folder.QueryInterface(Components.interfaces.nsIMsgFolder);
|
||||
if (msgFolder.isServer)
|
||||
return;
|
||||
|
||||
var parentFolderResource = RDF.GetResource(folder.parent.URI);
|
||||
var folderIndex = GetFolderIndex(outliner, parentFolderResource);
|
||||
|
||||
|
@ -3,15 +3,15 @@
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
*
|
||||
* The Original Code is Mozilla Communicator client code, released
|
||||
* March 31, 1998.
|
||||
*
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998-1999 Netscape Communications Corporation. All
|
||||
|
@ -79,7 +79,6 @@ nsIRDFResource* nsMsgAccountManagerDataSource::kNC_FolderTreeName=nsnull;
|
||||
nsIRDFResource* nsMsgAccountManagerDataSource::kNC_FolderTreeSimpleName=nsnull;
|
||||
nsIRDFResource* nsMsgAccountManagerDataSource::kNC_NameSort=nsnull;
|
||||
nsIRDFResource* nsMsgAccountManagerDataSource::kNC_FolderTreeNameSort=nsnull;
|
||||
nsIRDFResource* nsMsgAccountManagerDataSource::kNC_FolderTreeSimpleNameSort=nsnull;
|
||||
nsIRDFResource* nsMsgAccountManagerDataSource::kNC_PageTag=nsnull;
|
||||
nsIRDFResource* nsMsgAccountManagerDataSource::kNC_IsDefaultServer=nsnull;
|
||||
nsIRDFResource* nsMsgAccountManagerDataSource::kNC_SupportsFilters=nsnull;
|
||||
@ -140,7 +139,6 @@ nsMsgAccountManagerDataSource::nsMsgAccountManagerDataSource()
|
||||
getRDFService()->GetResource(NC_RDF_FOLDERTREESIMPLENAME, &kNC_FolderTreeSimpleName);
|
||||
getRDFService()->GetResource(NC_RDF_NAME_SORT, &kNC_NameSort);
|
||||
getRDFService()->GetResource(NC_RDF_FOLDERTREENAME_SORT, &kNC_FolderTreeNameSort);
|
||||
getRDFService()->GetResource(NC_RDF_FOLDERTREESIMPLENAME_SORT, &kNC_FolderTreeSimpleNameSort);
|
||||
getRDFService()->GetResource(NC_RDF_PAGETAG, &kNC_PageTag);
|
||||
getRDFService()->GetResource(NC_RDF_ISDEFAULTSERVER, &kNC_IsDefaultServer);
|
||||
getRDFService()->GetResource(NC_RDF_SUPPORTSFILTERS, &kNC_SupportsFilters);
|
||||
@ -184,7 +182,6 @@ nsMsgAccountManagerDataSource::~nsMsgAccountManagerDataSource()
|
||||
NS_IF_RELEASE(kNC_FolderTreeSimpleName);
|
||||
NS_IF_RELEASE(kNC_NameSort);
|
||||
NS_IF_RELEASE(kNC_FolderTreeNameSort);
|
||||
NS_IF_RELEASE(kNC_FolderTreeSimpleNameSort);
|
||||
NS_IF_RELEASE(kNC_PageTag);
|
||||
NS_IF_RELEASE(kNC_IsDefaultServer);
|
||||
NS_IF_RELEASE(kNC_SupportsFilters);
|
||||
@ -349,8 +346,7 @@ nsMsgAccountManagerDataSource::GetTarget(nsIRDFResource *source,
|
||||
|
||||
// handle sorting of servers
|
||||
else if ((property == kNC_NameSort) ||
|
||||
(property == kNC_FolderTreeNameSort) ||
|
||||
(property == kNC_FolderTreeSimpleNameSort)) {
|
||||
(property == kNC_FolderTreeNameSort)) {
|
||||
|
||||
// make sure we're handling a root folder that is a server
|
||||
nsCOMPtr<nsIMsgIncomingServer> server;
|
||||
@ -654,7 +650,6 @@ nsMsgAccountManagerDataSource::getAccountArcs(nsISupportsArray **aResult)
|
||||
mAccountArcsOut->AppendElement(kNC_FolderTreeSimpleName);
|
||||
mAccountArcsOut->AppendElement(kNC_NameSort);
|
||||
mAccountArcsOut->AppendElement(kNC_FolderTreeNameSort);
|
||||
mAccountArcsOut->AppendElement(kNC_FolderTreeSimpleNameSort);
|
||||
mAccountArcsOut->AppendElement(kNC_PageTag);
|
||||
}
|
||||
|
||||
@ -681,7 +676,6 @@ nsMsgAccountManagerDataSource::getAccountRootArcs(nsISupportsArray **aResult)
|
||||
mAccountRootArcsOut->AppendElement(kNC_FolderTreeSimpleName);
|
||||
mAccountRootArcsOut->AppendElement(kNC_NameSort);
|
||||
mAccountRootArcsOut->AppendElement(kNC_FolderTreeNameSort);
|
||||
mAccountRootArcsOut->AppendElement(kNC_FolderTreeSimpleNameSort);
|
||||
mAccountRootArcsOut->AppendElement(kNC_PageTag);
|
||||
}
|
||||
|
||||
|
@ -109,7 +109,6 @@ protected:
|
||||
static nsIRDFResource* kNC_FolderTreeSimpleName;
|
||||
static nsIRDFResource* kNC_NameSort;
|
||||
static nsIRDFResource* kNC_FolderTreeNameSort;
|
||||
static nsIRDFResource* kNC_FolderTreeSimpleNameSort;
|
||||
static nsIRDFResource* kNC_PageTag;
|
||||
static nsIRDFResource* kNC_IsDefaultServer;
|
||||
static nsIRDFResource* kNC_SupportsFilters;
|
||||
|
@ -59,7 +59,6 @@ nsIRDFResource* nsMsgFolderDataSource::kNC_FolderTreeName= nsnull;
|
||||
nsIRDFResource* nsMsgFolderDataSource::kNC_FolderTreeSimpleName= nsnull;
|
||||
nsIRDFResource* nsMsgFolderDataSource::kNC_NameSort= nsnull;
|
||||
nsIRDFResource* nsMsgFolderDataSource::kNC_FolderTreeNameSort= nsnull;
|
||||
nsIRDFResource* nsMsgFolderDataSource::kNC_FolderTreeSimpleNameSort= nsnull;
|
||||
nsIRDFResource* nsMsgFolderDataSource::kNC_SpecialFolder= nsnull;
|
||||
nsIRDFResource* nsMsgFolderDataSource::kNC_ServerType = nsnull;
|
||||
nsIRDFResource* nsMsgFolderDataSource::kNC_CanCreateFoldersOnServer = nsnull;
|
||||
@ -122,7 +121,6 @@ nsMsgFolderDataSource::nsMsgFolderDataSource()
|
||||
rdf->GetResource(NC_RDF_FOLDERTREESIMPLENAME, &kNC_FolderTreeSimpleName);
|
||||
rdf->GetResource(NC_RDF_NAME_SORT, &kNC_NameSort);
|
||||
rdf->GetResource(NC_RDF_FOLDERTREENAME_SORT, &kNC_FolderTreeNameSort);
|
||||
rdf->GetResource(NC_RDF_FOLDERTREESIMPLENAME_SORT, &kNC_FolderTreeSimpleNameSort);
|
||||
rdf->GetResource(NC_RDF_SPECIALFOLDER, &kNC_SpecialFolder);
|
||||
rdf->GetResource(NC_RDF_SERVERTYPE, &kNC_ServerType);
|
||||
rdf->GetResource(NC_RDF_CANCREATEFOLDERSONSERVER, &kNC_CanCreateFoldersOnServer);
|
||||
@ -189,7 +187,6 @@ nsMsgFolderDataSource::~nsMsgFolderDataSource (void)
|
||||
NS_RELEASE2(kNC_FolderTreeSimpleName, refcnt);
|
||||
NS_RELEASE2(kNC_NameSort, refcnt);
|
||||
NS_RELEASE2(kNC_FolderTreeNameSort, refcnt);
|
||||
NS_RELEASE2(kNC_FolderTreeSimpleNameSort, refcnt);
|
||||
NS_RELEASE2(kNC_SpecialFolder, refcnt);
|
||||
NS_RELEASE2(kNC_ServerType, refcnt);
|
||||
NS_RELEASE2(kNC_CanCreateFoldersOnServer, refcnt);
|
||||
@ -965,17 +962,15 @@ nsresult nsMsgFolderDataSource::createFolderNode(nsIMsgFolder* folder,
|
||||
if (kNC_NameSort == property)
|
||||
rv = createFolderNameNode(folder, target, PR_TRUE);
|
||||
else if(kNC_FolderTreeNameSort == property)
|
||||
rv = createFolderTreeNameNode(folder, target, PR_TRUE);
|
||||
else if(kNC_FolderTreeSimpleNameSort == property)
|
||||
rv = createFolderTreeSimpleNameNode(folder, target, PR_TRUE);
|
||||
rv = createFolderNameNode(folder, target, PR_TRUE);
|
||||
else if (kNC_Name == property)
|
||||
rv = createFolderNameNode(folder, target, PR_FALSE);
|
||||
else if(kNC_Open == property)
|
||||
rv = createFolderOpenNode(folder, target);
|
||||
else if (kNC_FolderTreeName == property)
|
||||
rv = createFolderTreeNameNode(folder, target, PR_FALSE);
|
||||
rv = createFolderTreeNameNode(folder, target);
|
||||
else if (kNC_FolderTreeSimpleName == property)
|
||||
rv = createFolderTreeSimpleNameNode(folder, target, PR_FALSE);
|
||||
rv = createFolderTreeSimpleNameNode(folder, target);
|
||||
else if ((kNC_SpecialFolder == property))
|
||||
rv = createFolderSpecialNode(folder,target);
|
||||
else if ((kNC_ServerType == property))
|
||||
@ -1028,60 +1023,47 @@ nsresult nsMsgFolderDataSource::createFolderNode(nsIMsgFolder* folder,
|
||||
}
|
||||
|
||||
|
||||
nsresult nsMsgFolderDataSource::createFolderNameNode(nsIMsgFolder *folder,
|
||||
nsIRDFNode **target, PRBool sort)
|
||||
nsresult
|
||||
nsMsgFolderDataSource::createFolderNameNode(nsIMsgFolder *folder,
|
||||
nsIRDFNode **target, PRBool sort)
|
||||
{
|
||||
|
||||
nsXPIDLString name;
|
||||
nsresult rv = folder->GetName(getter_Copies(name));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
nsAutoString nameString(name);
|
||||
if(sort)
|
||||
{
|
||||
CreateNameSortString(folder, nameString);
|
||||
}
|
||||
createNode(nameString, target, getRDFService());
|
||||
|
||||
if(sort)
|
||||
CreateNameSortString(folder, nameString);
|
||||
|
||||
createNode(nameString, target, getRDFService());
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
nsresult nsMsgFolderDataSource::createFolderTreeNameNode(nsIMsgFolder *folder,
|
||||
nsIRDFNode **target, PRBool sort)
|
||||
{
|
||||
|
||||
nsXPIDLString name;
|
||||
nsresult rv = folder->GetAbbreviatedName(getter_Copies(name));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
nsAutoString nameString(name);
|
||||
if(sort)
|
||||
{
|
||||
CreateNameSortString(folder, nameString);
|
||||
}
|
||||
else
|
||||
{
|
||||
PRInt32 unreadMessages;
|
||||
|
||||
rv = folder->GetNumUnread(PR_FALSE, &unreadMessages);
|
||||
if(NS_SUCCEEDED(rv))
|
||||
{
|
||||
CreateUnreadMessagesNameString(unreadMessages, nameString);
|
||||
}
|
||||
|
||||
}
|
||||
createNode(nameString, target, getRDFService());
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult nsMsgFolderDataSource::createFolderTreeSimpleNameNode(nsIMsgFolder * folder, nsIRDFNode **target, PRBool sort)
|
||||
nsresult
|
||||
nsMsgFolderDataSource::createFolderTreeNameNode(nsIMsgFolder *folder,
|
||||
nsIRDFNode **target)
|
||||
{
|
||||
nsXPIDLString name;
|
||||
nsresult rv = folder->GetAbbreviatedName(getter_Copies(name));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
nsAutoString nameString(name);
|
||||
PRInt32 unreadMessages;
|
||||
|
||||
rv = folder->GetNumUnread(PR_FALSE, &unreadMessages);
|
||||
if(NS_SUCCEEDED(rv))
|
||||
CreateUnreadMessagesNameString(unreadMessages, nameString);
|
||||
|
||||
createNode(nameString, target, getRDFService());
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult nsMsgFolderDataSource::createFolderTreeSimpleNameNode(nsIMsgFolder * folder, nsIRDFNode **target)
|
||||
{
|
||||
nsXPIDLString name;
|
||||
nsresult rv = folder->GetAbbreviatedName(getter_Copies(name));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
nsAutoString nameString(name);
|
||||
if(sort)
|
||||
{
|
||||
CreateNameSortString(folder, nameString);
|
||||
}
|
||||
createNode(nameString, target, getRDFService());
|
||||
return NS_OK;
|
||||
}
|
||||
@ -1089,13 +1071,14 @@ nsresult nsMsgFolderDataSource::createFolderTreeSimpleNameNode(nsIMsgFolder * fo
|
||||
nsresult nsMsgFolderDataSource::CreateNameSortString(nsIMsgFolder *folder, nsAutoString &name)
|
||||
{
|
||||
PRInt32 order;
|
||||
nsresult rv = GetFolderSortOrder(folder, &order);
|
||||
if(NS_FAILED(rv))
|
||||
return rv;
|
||||
nsresult rv = folder->GetSortOrder(&order);
|
||||
NS_ENSURE_SUCCESS(rv,rv);
|
||||
|
||||
nsAutoString orderString;
|
||||
orderString.AppendInt(order);
|
||||
|
||||
// sort is insensitive to case
|
||||
name.ToLowerCase();
|
||||
name.Insert(orderString, 0);
|
||||
|
||||
return NS_OK;
|
||||
@ -2037,33 +2020,3 @@ nsresult nsMsgFolderDataSource::DoFolderHasAssertion(nsIMsgFolder *folder,
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
nsresult nsMsgFolderDataSource::GetFolderSortOrder(nsIMsgFolder *folder, PRInt32* order)
|
||||
{
|
||||
nsresult rv;
|
||||
|
||||
PRUint32 flags;
|
||||
rv = folder->GetFlags(&flags);
|
||||
if(NS_FAILED(rv)) return rv;
|
||||
|
||||
|
||||
if(flags & MSG_FOLDER_FLAG_INBOX)
|
||||
*order = 0;
|
||||
else if(flags & MSG_FOLDER_FLAG_QUEUE)
|
||||
*order = 1;
|
||||
else if(flags & MSG_FOLDER_FLAG_DRAFTS)
|
||||
*order = 2;
|
||||
else if(flags & MSG_FOLDER_FLAG_TEMPLATES)
|
||||
*order = 3;
|
||||
else if(flags & MSG_FOLDER_FLAG_SENTMAIL)
|
||||
*order = 4;
|
||||
else if(flags & MSG_FOLDER_FLAG_TRASH)
|
||||
*order = 5;
|
||||
else
|
||||
*order = 6;
|
||||
|
||||
return NS_OK;
|
||||
|
||||
}
|
||||
|
||||
|
@ -113,8 +113,8 @@ protected:
|
||||
nsIRDFNode **target);
|
||||
nsresult createFolderNameNode(nsIMsgFolder *folder, nsIRDFNode **target, PRBool sort);
|
||||
nsresult createFolderOpenNode(nsIMsgFolder *folder,nsIRDFNode **target);
|
||||
nsresult createFolderTreeNameNode(nsIMsgFolder *folder, nsIRDFNode **target, PRBool sort);
|
||||
nsresult createFolderTreeSimpleNameNode(nsIMsgFolder *folder, nsIRDFNode **target, PRBool sort);
|
||||
nsresult createFolderTreeNameNode(nsIMsgFolder *folder, nsIRDFNode **target);
|
||||
nsresult createFolderTreeSimpleNameNode(nsIMsgFolder *folder, nsIRDFNode **target);
|
||||
nsresult createFolderSpecialNode(nsIMsgFolder *folder, nsIRDFNode **target);
|
||||
nsresult createFolderServerTypeNode(nsIMsgFolder *folder,
|
||||
nsIRDFNode **target);
|
||||
@ -177,8 +177,6 @@ protected:
|
||||
|
||||
nsresult CreateNameSortString(nsIMsgFolder *folder, nsAutoString &name);
|
||||
nsresult CreateUnreadMessagesNameString(PRInt32 unreadMessages, nsAutoString &nameString);
|
||||
nsresult GetFolderSortOrder(nsIMsgFolder *folder, PRInt32* order);
|
||||
|
||||
nsresult CreateArcsOutEnumerator();
|
||||
|
||||
nsresult OnItemAddedOrRemoved(nsISupports *parentItem, nsISupports *item,
|
||||
@ -200,7 +198,6 @@ protected:
|
||||
static nsIRDFResource* kNC_FolderTreeSimpleName;
|
||||
static nsIRDFResource* kNC_NameSort;
|
||||
static nsIRDFResource* kNC_FolderTreeNameSort;
|
||||
static nsIRDFResource* kNC_FolderTreeSimpleNameSort;
|
||||
static nsIRDFResource* kNC_Columns;
|
||||
static nsIRDFResource* kNC_MSGFolderRoot;
|
||||
static nsIRDFResource* kNC_SpecialFolder;
|
||||
|
@ -101,7 +101,6 @@ typedef struct _nsMsgRDFNotification {
|
||||
|
||||
#define NC_RDF_NAME_SORT NC_NAMESPACE_URI "Name?sort=true"
|
||||
#define NC_RDF_FOLDERTREENAME_SORT NC_NAMESPACE_URI "FolderTreeName?sort=true"
|
||||
#define NC_RDF_FOLDERTREESIMPLENAME_SORT NC_NAMESPACE_URI "FolderTreeSimpleName?sort=true"
|
||||
|
||||
//Folder Commands
|
||||
#define NC_RDF_DELETE NC_NAMESPACE_URI "Delete"
|
||||
|
@ -2658,3 +2658,36 @@ NS_IMETHODIMP nsMsgFolder::NotifyCompactCompleted()
|
||||
NS_ASSERTION(PR_FALSE, "should be overridden by child class");
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMsgFolder::SetSortOrder(PRInt32 order)
|
||||
{
|
||||
NS_ASSERTION(PR_FALSE, "not implemented");
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMsgFolder::GetSortOrder(PRInt32 *order)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(order);
|
||||
|
||||
PRUint32 flags;
|
||||
nsresult rv = GetFlags(&flags);
|
||||
NS_ENSURE_SUCCESS(rv,rv);
|
||||
|
||||
if (flags & MSG_FOLDER_FLAG_INBOX)
|
||||
*order = 0;
|
||||
else if (flags & MSG_FOLDER_FLAG_QUEUE)
|
||||
*order = 1;
|
||||
else if (flags & MSG_FOLDER_FLAG_DRAFTS)
|
||||
*order = 2;
|
||||
else if (flags & MSG_FOLDER_FLAG_TEMPLATES)
|
||||
*order = 3;
|
||||
else if (flags & MSG_FOLDER_FLAG_SENTMAIL)
|
||||
*order = 4;
|
||||
else if (flags & MSG_FOLDER_FLAG_TRASH)
|
||||
*order = 5;
|
||||
else
|
||||
*order = 6;
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
@ -219,6 +219,8 @@ public:
|
||||
NS_IMETHOD MatchName(nsString *name, PRBool *matches);
|
||||
|
||||
NS_IMETHOD GenerateMessageURI(nsMsgKey msgKey, char **aURI);
|
||||
NS_IMETHOD GetSortOrder(PRInt32 *order);
|
||||
NS_IMETHOD SetSortOrder(PRInt32 order);
|
||||
|
||||
|
||||
protected:
|
||||
|
@ -254,6 +254,14 @@ nsMsgNewsFolder::AddNewsgroup(const char *name, const char *setStr, nsIMsgFolder
|
||||
rv = newsFolder->SetCachedNewsrcLine(setStr);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
PRUint32 numExistingGroups;
|
||||
rv = Count(&numExistingGroups);
|
||||
NS_ENSURE_SUCCESS(rv,rv);
|
||||
|
||||
// add 1000 to prevent this problem: 1,10,11,2,3,4,5
|
||||
rv = folder->SetSortOrder(numExistingGroups + 1000);
|
||||
NS_ENSURE_SUCCESS(rv,rv);
|
||||
|
||||
//convert to an nsISupports before appending
|
||||
nsCOMPtr<nsISupports> folderSupports(do_QueryInterface(folder));
|
||||
if(folderSupports)
|
||||
@ -1823,3 +1831,16 @@ NS_IMETHODIMP nsMsgNewsFolder::GetMessageIdForKey(nsMsgKey key, char **result)
|
||||
|
||||
return hdr->GetMessageId(result);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMsgNewsFolder::SetSortOrder(PRInt32 order)
|
||||
{
|
||||
mSortOrder = order;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMsgNewsFolder::GetSortOrder(PRInt32 *order)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(order);
|
||||
*order = mSortOrder;
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -97,6 +97,9 @@ public:
|
||||
NS_IMETHOD DownloadMessagesForOffline(nsISupportsArray *messages, nsIMsgWindow *window);
|
||||
NS_IMETHOD Compact(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow);
|
||||
NS_IMETHOD DownloadAllForOffline(nsIUrlListener *listener, nsIMsgWindow *msgWindow);
|
||||
NS_IMETHOD GetSortOrder(PRInt32 *order);
|
||||
NS_IMETHOD SetSortOrder(PRInt32 order);
|
||||
|
||||
// for nsMsgLineBuffer
|
||||
virtual PRInt32 HandleLine(char *line, PRUint32 line_size);
|
||||
|
||||
@ -138,6 +141,7 @@ protected:
|
||||
|
||||
// the name of the newsgroup.
|
||||
char *mAsciiName;
|
||||
PRInt32 mSortOrder;
|
||||
|
||||
private:
|
||||
nsresult CreateNewsgroupUsernameUrlForSignon(const char *inUriStr, char **result);
|
||||
|
Loading…
Reference in New Issue
Block a user