fix for bug#129603;hiding or greying out menu items that are not supported by the server;r=racham;sr=bienvenu;a=asa

git-svn-id: svn://10.0.0.236/trunk@117418 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
varada%netscape.com 2002-03-25 22:34:34 +00:00
parent 67ee77289c
commit d0a3802bc9
16 changed files with 246 additions and 78 deletions

View File

@ -40,6 +40,17 @@ function onPreInit(account, accountValues)
var type = parent.getAccountValue(account, accountValues, "server", "type", null, false);
gRedirectorType = parent.getAccountValue(account, accountValues, "server", "redirectorType", null, false);
hideShowControls(type);
if(!(account.incomingServer.isSecureServer))
document.getElementById("server.isSecure").setAttribute("hidden", "true");
else
document.getElementById("server.isSecure").removeAttribute("hidden");
if(!account.incomingServer.canEmptyTrashOnExit)
{
document.getElementById("server.emptyTrashOnExit").setAttribute("hidden", "true");
document.getElementById("imap.deleteModel.box").setAttribute("hidden", "true");
}
}
function initServerType() {

View File

@ -137,7 +137,7 @@ Contributors:
prefstring="mail.server.%serverkey%.delete_mail_left_on_server"/>
</vbox>
<!-- IMAP -->
<hbox iscontrolcontainer="true" align="center">
<hbox iscontrolcontainer="true" align="center" id="imap.deleteModel.box">
<label value="&deleteMessagePrefix.label;"/>
<menulist hidable="true" hidefor="pop3,nntp" wsm_persist="true" id="imap.deleteModel"
prefstring="mail.server.%serverkey%.delete_model">

View File

@ -166,6 +166,9 @@ interface nsIMsgIncomingServer : nsISupports {
/* should we use a secure channel? */
attribute boolean isSecure;
/* can server support a secure channel? */
readonly attribute boolean isSecureServer;
/* what kind of logon redirector to use for this server, if any */
attribute string redirectorType;
@ -255,6 +258,9 @@ interface nsIMsgIncomingServer : nsISupports {
/* check if this server allows search operations */
readonly attribute boolean canSearchMessages;
/* check if this server allows canEmptyTrashOnExit operations */
readonly attribute boolean canEmptyTrashOnExit;
/* display startup page once per account per session */
attribute boolean displayStartupPage;
attribute nsIMsgDownloadSettings downloadSettings;
@ -303,6 +309,12 @@ interface nsIMsgIncomingServer : nsISupports {
/* can this server allows message filing ? */
attribute boolean canFileMessagesOnServer;
/* can this server allow compacting folders ? */
readonly attribute boolean canCompactFoldersOnServer;
/* can this server allow undo delete ? */
readonly attribute boolean canUndoDeleteOnServer;
/* used for setting up the filter UI */
readonly attribute nsMsgSearchScopeValue filterScope;

View File

@ -728,8 +728,10 @@ function FolderPaneSelectionChange()
if (gAccountCentralLoaded)
UpdateMailToolbar("gAccountCentralLoaded");
else
else {
document.getElementById('advancedButton').setAttribute("disabled" , !(IsCanSearchMessagesEnabled()));
ClearMessagePane();
}
if (gDisplayStartupPage)
{

View File

@ -242,6 +242,7 @@ var DefaultController =
case "cmd_getNextNMessages":
case "cmd_find":
case "cmd_findAgain":
case "cmd_search":
case "button_mark":
case "cmd_markAsRead":
case "cmd_markAllRead":
@ -368,6 +369,8 @@ var DefaultController =
case "cmd_findAgain":
return IsMessageDisplayedInMessagePane();
break;
case "cmd_search":
return IsCanSearchMessagesEnabled();
// these are enabled on when we are in threaded mode
case "cmd_selectThread":
if (GetNumSelectedMessages() <= 0) return false;
@ -576,6 +579,8 @@ var DefaultController =
case "cmd_properties":
MsgFolderProperties();
return;
case "cmd_search":
MsgSearchMessages();
case "button_mark":
case "cmd_markAsRead":
MsgMarkMsgAsRead(null);
@ -804,6 +809,12 @@ function IsRenameFolderEnabled()
return false;
}
function IsCanSearchMessagesEnabled()
{
var folderURI = GetSelectedFolderURI();
var server = GetServer(folderURI);
return server.canSearchMessages;
}
function IsFolderCharsetEnabled()
{
return IsFolderSelected();

View File

@ -275,7 +275,7 @@ function fillFolderPaneContextMenu()
// End of News folder context menu =======================================
ShowMenuItem("folderPaneContext-searchMessages", (numSelected<=1));
EnableMenuItem("folderPaneContext-searchMessages", true);
EnableMenuItem("folderPaneContext-searchMessages", IsCanSearchMessagesEnabled());
return(true);
}

View File

@ -1286,11 +1286,18 @@ function IsGetNextNMessagesEnabled()
function IsEmptyTrashEnabled()
{
return IsMailFolderSelected();
var folderURI = GetSelectedFolderURI();
var server = GetServer(folderURI);
return (server.canEmptyTrashOnExit?IsMailFolderSelected():false);
}
function IsCompactFolderEnabled()
{
var folderURI = GetSelectedFolderURI();
var server = GetServer(folderURI);
if (!(server.canCompactFoldersOnServer))
return false;
var folderOutliner = GetFolderOutliner();
var startIndex = {};
var endIndex = {};
@ -1534,6 +1541,11 @@ function CommandUpdate_UndoRedo()
function SetupUndoRedoCommand(command)
{
var loadedFolder = GetLoadedMsgFolder();
var server = loadedFolder.server;
if (!(server.canUndoDeleteOnServer))
return false;
var canUndoOrRedo = false;
var txnType = 0;

View File

@ -183,6 +183,7 @@ Rights Reserved.
oncommandupdate="goUpdateMailMenuItems(this)">
<command id="cmd_find" oncommand="goDoCommand('cmd_find')" disabled="true"/>
<command id="cmd_findAgain" oncommand="goDoCommand('cmd_findAgain')" disabled="true"/>
<command id="cmd_search" oncommand="goDoCommand('cmd_search')" disabled="true"/>
</commandset>
<commandset id="mailGoMenuItems"
@ -314,7 +315,7 @@ Rights Reserved.
oncommand="goDoCommand('cmd_getMsgsForAuthAccounts');"
modifiers="accel, shift"/>
<key id="key_find" key="&findCmd.key;" oncommand="goDoCommand('cmd_find')" modifiers="accel"/>
<key id="key_searchMail" key="&searchMailCmd.key;" oncommand="MsgSearchMessages()" modifiers="accel, shift"/>
<key id="key_searchMail" key="&searchMailCmd.key;" oncommand="goDoCommand('cmd_search')" modifiers="accel, shift"/>
<key id="key_findAgain" key="&findAgainCmd.key;" oncommand="goDoCommand('cmd_findAgain')" modifiers="accel"/>
<keyset id="viewZoomKeys"/>
@ -619,7 +620,7 @@ Rights Reserved.
<menuitem id="folderPaneContext-searchMessages"
label="&folderContextSearchMessages.label;"
accesskey="&folderContextSearchMessages.accesskey;"
oncommand="MsgSearchMessages();"/>
observes="cmd_search"/>
<menuitem id="folderPaneContext-properties"
label="&folderContextProperties.label;"
accesskey="&folderContextProperties.accesskey;"
@ -1127,7 +1128,7 @@ Rights Reserved.
<menuitem label="&findCmd.label;" key="key_find" accesskey="&findCmd.accesskey;" observes="cmd_find"/>
<menuitem label="&findAgainCmd.label;" key="key_findAgain" accesskey="&findAgainCmd.accesskey;" observes="cmd_findAgain"/>
<menuseparator/>
<menuitem label="&searchMailCmd.label;" key="key_searchMail" accesskey="&searchMailCmd.accesskey;" oncommand="MsgSearchMessages()"/>
<menuitem label="&searchMailCmd.label;" key="key_searchMail" accesskey="&searchMailCmd.accesskey;" observes="cmd_search"/>
<menuseparator/>
<menuitem label="&searchInternetCmd.label;" accesskey="&searchInternetCmd.accesskey;" oncommand="openTopWin(xlateURL('urn:clienturl:srchmenu:srchinternet'));"/>
<menuitem label="&searchAddressesCmd.label;" accesskey="&searchAddressesCmd.accesskey;" oncommand="MsgSearchAddresses(null)"/>

View File

@ -452,6 +452,7 @@ var MessageWindowController =
case "cmd_getNextNMessages":
case "cmd_find":
case "cmd_findAgain":
case "cmd_search":
case "button_mark":
case "cmd_markAsRead":
case "cmd_markAllRead":
@ -541,6 +542,11 @@ var MessageWindowController =
return true;
case "cmd_findAgain":
return MsgCanFindAgain();
case "cmd_search":
var loadedFolder = GetLoadedMsgFolder();
if (!loadedFolder)
return false;
return loadedFolder.server.canSearchMessages;
case "cmd_undo":
case "cmd_redo":
return SetupUndoRedoCommand(command);
@ -639,6 +645,9 @@ var MessageWindowController =
case "cmd_findAgain":
MsgFindAgain();
break;
case "cmd_search":
MsgSearchMessages();
break;
case "button_mark":
case "cmd_markAsRead":
MsgMarkMsgAsRead(null);

View File

@ -391,6 +391,9 @@ Rights Reserved.
datasources="rdf:msgaccountmanager rdf:mailnewsfolders"
ref="msgaccounts:/">
<template>
<rule nc:CanSearchMessages="false">
<!-- don't show servers (nntp & any others) which do not allow searching -->
</rule>
<rule iscontainer="true" isempty="false">
<menupopup>
<menu uri="..."

View File

@ -97,6 +97,7 @@ nsIRDFResource* nsMsgFolderDataSource::kNC_NoSelect = nsnull;
nsIRDFResource* nsMsgFolderDataSource::kNC_ImapShared = nsnull;
nsIRDFResource* nsMsgFolderDataSource::kNC_Synchronize = nsnull;
nsIRDFResource* nsMsgFolderDataSource::kNC_SyncDisabled = nsnull;
nsIRDFResource* nsMsgFolderDataSource::kNC_CanSearchMessages = nsnull;
// commands
nsIRDFResource* nsMsgFolderDataSource::kNC_Delete= nsnull;
nsIRDFResource* nsMsgFolderDataSource::kNC_ReallyDelete= nsnull;
@ -160,6 +161,7 @@ nsMsgFolderDataSource::nsMsgFolderDataSource()
rdf->GetResource(NC_RDF_IMAPSHARED, &kNC_ImapShared);
rdf->GetResource(NC_RDF_SYNCHRONIZE, &kNC_Synchronize);
rdf->GetResource(NC_RDF_SYNCDISABLED, &kNC_SyncDisabled);
rdf->GetResource(NC_RDF_CANSEARCHMESSAGES, &kNC_CanSearchMessages);
rdf->GetResource(NC_RDF_DELETE, &kNC_Delete);
rdf->GetResource(NC_RDF_REALLY_DELETE, &kNC_ReallyDelete);
@ -215,7 +217,7 @@ nsMsgFolderDataSource::~nsMsgFolderDataSource (void)
NS_RELEASE2(kNC_CanFileMessages, refcnt);
NS_RELEASE2(kNC_CanCreateSubfolders, refcnt);
NS_RELEASE2(kNC_CanRename, refcnt);
NS_RELEASE2(kNC_CanCompact, refcnt);
NS_RELEASE2(kNC_CanCompact, refcnt);
NS_RELEASE2(kNC_TotalMessages, refcnt);
NS_RELEASE2(kNC_TotalUnreadMessages, refcnt);
NS_RELEASE2(kNC_Charset, refcnt);
@ -225,8 +227,9 @@ nsMsgFolderDataSource::~nsMsgFolderDataSource (void)
NS_RELEASE2(kNC_SubfoldersHaveUnreadMessages, refcnt);
NS_RELEASE2(kNC_NoSelect, refcnt);
NS_RELEASE2(kNC_ImapShared, refcnt);
NS_RELEASE2(kNC_Synchronize, refcnt);
NS_RELEASE2(kNC_SyncDisabled, refcnt);
NS_RELEASE2(kNC_Synchronize, refcnt);
NS_RELEASE2(kNC_SyncDisabled, refcnt);
NS_RELEASE2(kNC_CanSearchMessages, refcnt);
NS_RELEASE2(kNC_Delete, refcnt);
NS_RELEASE2(kNC_ReallyDelete, refcnt);
@ -455,7 +458,8 @@ NS_IMETHODIMP nsMsgFolderDataSource::GetTargets(nsIRDFResource* source,
(kNC_NoSelect == property) ||
(kNC_ImapShared == property) ||
(kNC_Synchronize == property) ||
(kNC_SyncDisabled == property))
(kNC_SyncDisabled == property) ||
(kNC_CanSearchMessages == property))
{
nsSingletonEnumerator* cursor =
new nsSingletonEnumerator(property);
@ -556,7 +560,8 @@ nsMsgFolderDataSource::HasArcOut(nsIRDFResource *aSource, nsIRDFResource *aArc,
aArc == kNC_NoSelect ||
aArc == kNC_ImapShared ||
aArc == kNC_Synchronize ||
aArc == kNC_SyncDisabled);
aArc == kNC_SyncDisabled ||
aArc == kNC_CanSearchMessages);
}
else {
*result = PR_FALSE;
@ -622,6 +627,7 @@ nsMsgFolderDataSource::getFolderArcLabelsOut(nsISupportsArray **arcs)
(*arcs)->AppendElement(kNC_ImapShared);
(*arcs)->AppendElement(kNC_Synchronize);
(*arcs)->AppendElement(kNC_SyncDisabled);
(*arcs)->AppendElement(kNC_CanSearchMessages);
return NS_OK;
}
@ -1047,6 +1053,9 @@ nsresult nsMsgFolderDataSource::createFolderNode(nsIMsgFolder* folder,
rv = createFolderSynchronizeNode(folder, target);
else if ((kNC_SyncDisabled == property))
rv = createFolderSyncDisabledNode(folder, target);
else if ((kNC_CanSearchMessages == property))
rv = createCanSearchMessages(folder, target);
if (NS_FAILED(rv)) return NS_RDF_NO_VALUE;
return rv;
@ -1324,6 +1333,28 @@ nsMsgFolderDataSource::createFolderSyncDisabledNode(nsIMsgFolder* folder,
return NS_OK;
}
nsresult
nsMsgFolderDataSource::createCanSearchMessages(nsIMsgFolder* folder,
nsIRDFNode **target)
{
nsresult rv;
nsCOMPtr<nsIMsgIncomingServer> server;
rv = folder->GetServer(getter_AddRefs(server));
if (NS_FAILED(rv) || !server) return NS_ERROR_FAILURE;
PRBool canSearchMessages;
rv = server->GetCanSearchMessages(&canSearchMessages);
if (NS_FAILED(rv)) return rv;
if (canSearchMessages)
*target = kTrueLiteral;
else
*target = kFalseLiteral;
NS_IF_ADDREF(*target);
return NS_OK;
}
nsresult
nsMsgFolderDataSource::createFolderOpenNode(nsIMsgFolder *folder, nsIRDFNode **target)
@ -2087,7 +2118,8 @@ nsresult nsMsgFolderDataSource::DoFolderHasAssertion(nsIMsgFolder *folder,
(kNC_NoSelect == property) ||
(kNC_NoSelect == property) ||
(kNC_Synchronize == property) ||
(kNC_SyncDisabled == property))
(kNC_SyncDisabled == property) ||
(kNC_CanSearchMessages == property))
{
nsCOMPtr<nsIRDFResource> folderResource(do_QueryInterface(folder, &rv));

View File

@ -166,7 +166,8 @@ protected:
nsIRDFNode **target);
nsresult createFolderSynchronizeNode(nsIMsgFolder *folder, nsIRDFNode **target);
nsresult createFolderSyncDisabledNode(nsIMsgFolder *folder, nsIRDFNode **target);
nsresult createCanSearchMessages(nsIMsgFolder *folder,
nsIRDFNode **target);
nsresult createFolderChildNode(nsIMsgFolder *folder, nsIRDFNode **target);
nsresult getFolderArcLabelsOut(nsISupportsArray **arcs);
@ -239,6 +240,7 @@ protected:
static nsIRDFResource* kNC_ImapShared;
static nsIRDFResource* kNC_Synchronize;
static nsIRDFResource* kNC_SyncDisabled;
static nsIRDFResource* kNC_CanSearchMessages;
// commands
static nsIRDFResource* kNC_Delete;

View File

@ -103,6 +103,7 @@ typedef struct _nsMsgRDFNotification {
#define NC_RDF_SYNCHRONIZE NC_NAMESPACE_URI "Synchronize"
#define NC_RDF_SYNCDISABLED NC_NAMESPACE_URI "SyncDisabled"
#define NC_RDF_KEY NC_NAMESPACE_URI "Key"
#define NC_RDF_CANSEARCHMESSAGES NC_NAMESPACE_URI "CanSearchMessages"
//Sort Properties
#define NC_RDF_SUBJECT_COLLATION_SORT NC_NAMESPACE_URI "Subject?collation=true"

View File

@ -264,6 +264,42 @@ nsMsgIncomingServer::GetCanSearchMessages(PRBool *canSearchMessages)
return NS_OK;
}
NS_IMETHODIMP
nsMsgIncomingServer::GetCanCompactFoldersOnServer(PRBool *canCompactFoldersOnServer)
{
// derived class should override if they need to do this.
NS_ENSURE_ARG_POINTER(canCompactFoldersOnServer);
*canCompactFoldersOnServer = PR_TRUE;
return NS_OK;
}
NS_IMETHODIMP
nsMsgIncomingServer::GetCanUndoDeleteOnServer(PRBool *canUndoDeleteOnServer)
{
// derived class should override if they need to do this.
NS_ENSURE_ARG_POINTER(canUndoDeleteOnServer);
*canUndoDeleteOnServer = PR_TRUE;
return NS_OK;
}
NS_IMETHODIMP
nsMsgIncomingServer::GetCanEmptyTrashOnExit(PRBool *canEmptyTrashOnExit)
{
// derived class should override if they need to do this.
NS_ENSURE_ARG_POINTER(canEmptyTrashOnExit);
*canEmptyTrashOnExit = PR_TRUE;
return NS_OK;
}
NS_IMETHODIMP
nsMsgIncomingServer::GetIsSecureServer(PRBool *isSecureServer)
{
// derived class should override if they need to do this.
NS_ENSURE_ARG_POINTER(isSecureServer);
*isSecureServer = PR_TRUE;
return NS_OK;
}
// construct <localStoreType>://[<username>@]<hostname
NS_IMETHODIMP
nsMsgIncomingServer::GetServerURI(char* *aResult)

View File

@ -3156,11 +3156,68 @@ nsImapIncomingServer::GetCanBeDefaultServer(PRBool *canBeDefaultServer)
return NS_OK;
}
NS_IMETHODIMP
nsImapIncomingServer::GetCanCompactFoldersOnServer(PRBool *canCompactFoldersOnServer)
{
NS_ENSURE_ARG_POINTER(canCompactFoldersOnServer);
// Initialize canCompactFoldersOnServer true, a default value for IMAP
*canCompactFoldersOnServer = PR_TRUE;
GetPrefForServerAttribute("canCompactFoldersOnServer", canCompactFoldersOnServer);
return NS_OK;
}
NS_IMETHODIMP
nsImapIncomingServer::GetCanUndoDeleteOnServer(PRBool *canUndoDeleteOnServer)
{
NS_ENSURE_ARG_POINTER(canUndoDeleteOnServer);
// Initialize canUndoDeleteOnServer true, a default value for IMAP
*canUndoDeleteOnServer = PR_TRUE;
GetPrefForServerAttribute("canUndoDeleteOnServer", canUndoDeleteOnServer);
return NS_OK;
}
NS_IMETHODIMP
nsImapIncomingServer::GetCanSearchMessages(PRBool *canSearchMessages)
{
NS_ENSURE_ARG_POINTER(canSearchMessages);
// Initialize canSearchMessages true, a default value for IMAP
*canSearchMessages = PR_TRUE;
GetPrefForServerAttribute("canSearchMessages", canSearchMessages);
return NS_OK;
}
NS_IMETHODIMP
nsImapIncomingServer::GetCanEmptyTrashOnExit(PRBool *canEmptyTrashOnExit)
{
NS_ENSURE_ARG_POINTER(canEmptyTrashOnExit);
// Initialize canEmptyTrashOnExit true, a default value for IMAP
*canEmptyTrashOnExit = PR_TRUE;
GetPrefForServerAttribute("canEmptyTrashOnExit", canEmptyTrashOnExit);
return NS_OK;
}
NS_IMETHODIMP
nsImapIncomingServer::GetIsSecureServer(PRBool *isSecureServer)
{
NS_ENSURE_ARG_POINTER(isSecureServer);
// Initialize isSecureServer true, a default value for IMAP
*isSecureServer = PR_TRUE;
GetPrefForServerAttribute("isSecureServer", isSecureServer);
return NS_OK;
}
@ -3253,42 +3310,11 @@ nsImapIncomingServer::GetCanCreateFoldersOnServer(PRBool *aCanCreateFoldersOnSer
{
NS_ENSURE_ARG_POINTER(aCanCreateFoldersOnServer);
nsresult rv;
// Initialize aCanCreateFoldersOnServer true, a default value for IMAP
*aCanCreateFoldersOnServer = PR_TRUE;
nsCAutoString prefName;
nsCOMPtr<nsIPref> prefs = do_GetService(NS_PREF_CONTRACTID, &rv);
GetPrefForServerAttribute("aCanCreateFoldersOnServer", aCanCreateFoldersOnServer);
nsXPIDLCString serverKey;
rv = GetKey(getter_Copies(serverKey));
// Time to check if this server has the pref
// (mail.server.<serverkey>.canCreateFolders) already set
nsMsgIncomingServer::getPrefName(serverKey,
"canCreateFolders",
prefName);
rv = prefs->GetBoolPref(prefName.get(), aCanCreateFoldersOnServer);
// If the server pref is not set in then look at the
// pref set with redirector type
if (NS_FAILED(rv)) {
rv = CreatePrefNameWithRedirectorType(".canCreateFolders", prefName);
if (NS_FAILED(rv))
return NS_OK; // return if no redirector type
if(NS_SUCCEEDED(rv)) {
rv = prefs->GetBoolPref(prefName.get(), aCanCreateFoldersOnServer);
}
}
// Couldn't get the default value with the redirector type.
// Fall back on IMAP default value
if (NS_FAILED(rv)) {
// set default value
*aCanCreateFoldersOnServer = PR_TRUE;
}
return NS_OK;
}
@ -3433,47 +3459,51 @@ nsImapIncomingServer::CreatePrefNameWithRedirectorType(const char *prefSuffix, n
return NS_OK;
}
nsresult
nsImapIncomingServer::GetPrefForServerAttribute(const char *prefSuffix, PRBool *prefValue)
{
NS_ENSURE_ARG_POINTER(prefSuffix);
nsresult rv;
nsCAutoString prefName;
nsCOMPtr<nsIPref> prefs = do_GetService(NS_PREF_CONTRACTID, &rv);
nsXPIDLCString serverKey;
rv = GetKey(getter_Copies(serverKey));
// Time to check if this server has the pref
// (mail.server.<serverkey>.prefSuffix) already set
nsMsgIncomingServer::getPrefName(serverKey,
prefSuffix,
prefName);
rv = prefs->GetBoolPref(prefName.get(), prefValue);
// If the server pref is not set in then look at the
// pref set with redirector type
if (NS_FAILED(rv))
{
nsCAutoString redirectorType;
redirectorType.Assign(".");
redirectorType.Append(prefSuffix);
rv = CreatePrefNameWithRedirectorType(redirectorType.get(), prefName);
if(NS_SUCCEEDED(rv))
rv = prefs->GetBoolPref(prefName.get(), prefValue);
}
return rv;
}
NS_IMETHODIMP
nsImapIncomingServer::GetCanFileMessagesOnServer(PRBool *aCanFileMessagesOnServer)
{
NS_ENSURE_ARG_POINTER(aCanFileMessagesOnServer);
nsresult rv;
// Initialize aCanFileMessagesOnServer true, a default value for IMAP
*aCanFileMessagesOnServer = PR_TRUE;
nsCAutoString prefName;
nsCOMPtr<nsIPref> prefs = do_GetService(NS_PREF_CONTRACTID, &rv);
GetPrefForServerAttribute("aCanFileMessagesOnServer", aCanFileMessagesOnServer);
nsXPIDLCString serverKey;
rv = GetKey(getter_Copies(serverKey));
// Time to check if this server has the pref
// (mail.server.<serverkey>.canFileMessages) already set
nsMsgIncomingServer::getPrefName(serverKey,
"canFileMessages",
prefName);
rv = prefs->GetBoolPref(prefName.get(), aCanFileMessagesOnServer);
// If the server pref is not set in then look at the
// pref set with redirector type
if (NS_FAILED(rv)) {
rv = CreatePrefNameWithRedirectorType(".canFileMessages", prefName);
if (NS_FAILED(rv))
return NS_OK; // return if no redirector type
if(NS_SUCCEEDED(rv)) {
rv = prefs->GetBoolPref(prefName.get(), aCanFileMessagesOnServer);
}
}
// Couldn't get the default value with the redirector type.
// Fall back on IMAP default value
if (NS_FAILED(rv)) {
// set default value
*aCanFileMessagesOnServer = PR_TRUE;
}
return NS_OK;
}

View File

@ -78,7 +78,11 @@ public:
NS_IMETHOD CloseCachedConnections();
NS_IMETHOD GetConstructedPrettyName(PRUnichar **retval);
NS_IMETHOD GetCanBeDefaultServer(PRBool *canBeDefaultServer);
NS_IMETHOD GetCanCompactFoldersOnServer(PRBool *canCompactFoldersOnServer);
NS_IMETHOD GetCanUndoDeleteOnServer(PRBool *canUndoDeleteOnServer);
NS_IMETHOD GetCanSearchMessages(PRBool *canSearchMessages);
NS_IMETHOD GetCanEmptyTrashOnExit(PRBool *canEmptyTrashOnExit);
NS_IMETHOD GetIsSecureServer(PRBool *isSecureServer);
NS_IMETHOD GetOfflineSupportLevel(PRInt32 *aSupportLevel);
NS_IMETHOD GeneratePrettyNameForMigration(PRUnichar **aPrettyName);
NS_IMETHOD GetSupportsDiskSpace(PRBool *aSupportsDiskSpace);
@ -117,6 +121,8 @@ private:
PRBool ConnectionTimeOut(nsIImapProtocol* aImapConnection);
nsresult GetFormattedName(const PRUnichar *constructedPrettyName, PRUnichar **formattedPrettyName);
nsresult CreatePrefNameWithRedirectorType(const char *prefSuffix, nsCAutoString &prefName);
nsresult GetPrefForServerAttribute(const char *prefSuffix, PRBool *prefValue);
nsCOMPtr<nsISupportsArray> m_connectionCache;
nsCOMPtr<nsISupportsArray> m_urlQueue;
nsCOMPtr<nsIStringBundle> m_stringBundle;