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:
parent
67ee77289c
commit
d0a3802bc9
@ -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() {
|
||||
|
||||
@ -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">
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -728,8 +728,10 @@ function FolderPaneSelectionChange()
|
||||
|
||||
if (gAccountCentralLoaded)
|
||||
UpdateMailToolbar("gAccountCentralLoaded");
|
||||
else
|
||||
else {
|
||||
document.getElementById('advancedButton').setAttribute("disabled" , !(IsCanSearchMessagesEnabled()));
|
||||
ClearMessagePane();
|
||||
}
|
||||
|
||||
if (gDisplayStartupPage)
|
||||
{
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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)"/>
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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="..."
|
||||
|
||||
@ -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));
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user