diff --git a/mailnews/base/prefs/resources/content/aw-done.js b/mailnews/base/prefs/resources/content/aw-done.js
index ddd9ac71b7f..2795bf2b776 100644
--- a/mailnews/base/prefs/resources/content/aw-done.js
+++ b/mailnews/base/prefs/resources/content/aw-done.js
@@ -20,28 +20,104 @@
function onInit() {
var pageData = parent.wizardManager.WSM.PageData;
+ var showMailServerDetails = true;
+
+ var currentAccountData = parent.gCurrentAccountData;
+ if (currentAccountData) {
+ // find out if we need to hide server details
+ showMailServerDetails = currentAccountData.showServerDetailsOnWizardSummary;
+
+ // Change the username field description to email field label in aw-identity
+ setUserNameDescField(currentAccountData.emailIDFieldTitle);
+ }
+
+ var accountName="";
+ if (pageData.accname && pageData.accname.prettyName) {
+ accountName = pageData.accname.prettyName.value;
+ if (!accountName &&
+ currentAccountData &&
+ currentAccountData.prettyName)
+ accountName = currentAccountData.prettyName;
+ }
+ setDivTextFromForm("account.name", accountName);
var email = "";
if (pageData.identity && pageData.identity.email) {
// fixup the email
email = pageData.identity.email.value;
- if (email.split('@').length < 2 && parent.gCurrentAccountData.domain)
- email += "@" + parent.gCurrentAccountData.domain;
+ if (email.split('@').length < 2 &&
+ currentAccountData &&
+ currentAccountData.domain)
+ email += "@" + currentAccountData.domain;
}
setDivTextFromForm("identity.email", email);
- var username="";
- if (pageData.login && pageData.login.username)
- username = pageData.login.username.value;
- setDivTextFromForm("server.username", username);
+ var userName="";
+ if (pageData.login && pageData.login.username) {
+ userName = pageData.login.username.value;
+ }
+ if (!userName && email) {
+ var emailData = email.split('@');
+ userName = emailData[0];
+ }
+ setDivTextFromForm("server.username", userName);
+
+ // Show mail servers (incoming&outgoing) detials
+ // based on current account data. ISP can set
+ // rdf value of literal showServerDetailsOnWizardSummary
+ // to false to hide server details
+ if (showMailServerDetails) {
+ var incomingServerName="";
+ if (pageData.server && pageData.server.hostname) {
+ incomingServerName = pageData.server.hostname.value;
+ if (!incomingServerName &&
+ currentAccountData &&
+ currentAccountData.incomingServer.hostname)
+ incomingServerName = currentAccountData.incomingServer.hostName;
+ }
+ setDivTextFromForm("server.name", incomingServerName);
+
+ var incomingServerType="";
+ if (pageData.server && pageData.server.servertype) {
+ incomingServerType = pageData.server.servertype.value;
+ if (!incomingServerType &&
+ currentAccountData &&
+ currentAccountData.incomingServer.type)
+ incomingServerType = currentAccountData.incomingServer.type;
+ }
+ setDivTextFromForm("server.type", incomingServerType.toUpperCase());
+
+ var smtpServerName="";
+ if (pageData.server && pageData.server.smtphostname) {
+ var smtpServer = parent.smtpService.defaultServer;
+ smtpServerName = pageData.server.smtphostname.value;
+ if (!smtpServerName && smtpServer.hostname)
+ smtpServerName = smtpServer.hostname;
+ }
+ setDivTextFromForm("smtpServer.name", smtpServerName);
+ }
+ else {
+ setDivTextFromForm("server.name", null);
+ setDivTextFromForm("server.type", null);
+ setDivTextFromForm("smtpServer.name", null);
+ }
+
+ var newsServerName="";
+ if (pageData.newsserver && pageData.newsserver.hostname)
+ newsServerName = pageData.newsserver.hostname.value;
+ if (newsServerName) {
+ // No need to show username for news account
+ setDivTextFromForm("server.username", null);
+ }
+ setDivTextFromForm("newsServer.name", newsServerName);
}
function setDivTextFromForm(divid, value) {
- // hide the .label if the div has no value
- if (!value || value =="") {
- var div = document.getElementById(divid + ".label");
- div.setAttribute("hidden","true");
+ // collapse the row if the div has no value
+ if (!value) {
+ var div = document.getElementById(divid);
+ div.setAttribute("collapsed","true");
return;
}
@@ -52,6 +128,14 @@ function setDivTextFromForm(divid, value) {
div.setAttribute("value", value);
}
+function setUserNameDescField(name)
+{
+ if (name) {
+ var userNameField = document.getElementById("server.username.label");
+ userNameField.setAttribute("value", name);
+ }
+}
+
function setupAnother(event)
{
window.alert("Unimplemented, see bug #19982");
diff --git a/mailnews/base/prefs/resources/content/aw-done.xul b/mailnews/base/prefs/resources/content/aw-done.xul
index d7b3c96fdcd..5ab5e41d0e1 100644
--- a/mailnews/base/prefs/resources/content/aw-done.xul
+++ b/mailnews/base/prefs/resources/content/aw-done.xul
@@ -44,18 +44,38 @@ Rights Reserved.
-
+
-
-
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mailnews/base/prefs/resources/content/aw-identity.js b/mailnews/base/prefs/resources/content/aw-identity.js
index f6b4f384830..c2fcf0f9cb8 100644
--- a/mailnews/base/prefs/resources/content/aw-identity.js
+++ b/mailnews/base/prefs/resources/content/aw-identity.js
@@ -85,11 +85,74 @@ function validateEmail() {
function onInit()
{
+ setEmailDescriptionText();
checkForDomain();
checkForFullName();
checkForEmail();
}
+// Use email example data that ISP has provided. ISP data, if avaialble
+// for the choice user has made, will be read into CurrentAccountData.
+// Default example data from properties will be used when the info is missing.
+function setEmailDescriptionText()
+{
+ var emailDescText = document.getElementById("emailDescText");
+ var emailFieldLabel = document.getElementById("emailFieldLabel");
+ var currentAccountData = parent.gCurrentAccountData;
+
+ var displayText = null;
+ var emailFieldLabelData = null;
+ var setDefaultEmailDescStrings = true;
+
+ // Get values for customized data from current account
+ if (currentAccountData)
+ {
+ var emailProvider = currentAccountData.emailProviderName;
+ var sampleEmail = currentAccountData.sampleEmail;
+ var sampleUserName = currentAccountData.sampleUserName;
+ var emailIDDesc = currentAccountData.emailIDDescription;
+ var emailIDTitle = currentAccountData.emailIDFieldTitle;
+
+ if (emailProvider &&
+ sampleEmail &&
+ sampleUserName &&
+ emailIDDesc &&
+ emailIDTitle)
+ {
+ // Get email description data
+ displayText = Bundle.GetStringFromName("customizedEmailText")
+ .replace(/%emailProvider%/g, emailProvider)
+ .replace(/%mailIDDesc%/g, emailIDDesc)
+ .replace(/%sampleEmail%/, sampleEmail)
+ .replace(/%sampleUserName%/, sampleUserName);
+
+ // Set emailfield label
+ emailFieldLabelData = emailIDTitle;
+ emailFieldLabel.setAttribute("value", emailFieldLabelData);
+
+ // Need to display customized data. Turn off default settings.
+ setDefaultEmailDescStrings = false;
+ }
+ }
+
+ if (setDefaultEmailDescStrings)
+ {
+ // Check for obtained values and set with default values if needed
+ var username = Bundle.GetStringFromName("exampleEmailUserName");
+ var domain = Bundle.GetStringFromName("exampleEmailDomain");
+
+ displayText = Bundle.GetStringFromName("defaultEmailText")
+ .replace(/%username%/, username)
+ .replace(/%domain%/, domain);
+ }
+
+ // Create a text nodes with text to be displayed
+ var emailDescTextNode = document.createTextNode(displayText);
+
+ // Display the dynamically generated text for email description
+ emailDescText.appendChild(emailDescTextNode);
+}
+
// retrieve the current domain from the parent wizard window,
// and update the UI to add the @domain static text
function checkForDomain()
diff --git a/mailnews/base/prefs/resources/content/aw-identity.xul b/mailnews/base/prefs/resources/content/aw-identity.xul
index 2f4e8419f62..c635f9d01e5 100644
--- a/mailnews/base/prefs/resources/content/aw-identity.xul
+++ b/mailnews/base/prefs/resources/content/aw-identity.xul
@@ -38,24 +38,34 @@ Rights Reserved.
-
&identityDesc.label;
&fullnameDesc.label; &fullnameExample.label;
-
+
- &emailDesc.label; &emailExample.label;
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mailnews/base/prefs/resources/locale/en-US/aw-done.dtd b/mailnews/base/prefs/resources/locale/en-US/aw-done.dtd
index 4f694a7ed73..0cf7075fbe9 100644
--- a/mailnews/base/prefs/resources/locale/en-US/aw-done.dtd
+++ b/mailnews/base/prefs/resources/locale/en-US/aw-done.dtd
@@ -3,6 +3,11 @@
+
+
+
+
+
diff --git a/mailnews/base/prefs/resources/locale/en-US/aw-identity.dtd b/mailnews/base/prefs/resources/locale/en-US/aw-identity.dtd
index ff47a5aec59..6945bcbba63 100644
--- a/mailnews/base/prefs/resources/locale/en-US/aw-identity.dtd
+++ b/mailnews/base/prefs/resources/locale/en-US/aw-identity.dtd
@@ -12,7 +12,4 @@
-
-
-
diff --git a/mailnews/base/prefs/resources/locale/en-US/prefs.properties b/mailnews/base/prefs/resources/locale/en-US/prefs.properties
index dc06276d8be..663dd2ae0f9 100644
--- a/mailnews/base/prefs/resources/locale/en-US/prefs.properties
+++ b/mailnews/base/prefs/resources/locale/en-US/prefs.properties
@@ -38,6 +38,12 @@ failedDeleteAccount=Failed to delete this account.
failedDuplicateAccount=Failed to duplicate this account.
confirmDeleteAccount=Are you sure you want to delete this account?
+#Provide default example values for sample email address
+exampleEmailUserName=example
+exampleEmailDomain=netscape.net
+defaultEmailText=Enter your email address. This is the address others will use to send email to you. (For example, "%username%@%domain%".)
+customizedEmailText=Enter your %emailProvider% %mailIDDesc%. (For example, if your %emailProvider% email address is "%sampleEmail%", your %mailIDDesc% is "%sampleUserName%".)
+
# account manager stuff
prefPanel-server=Server
prefPanel-copies=Copies and Folders
diff --git a/mailnews/base/public/nsIMsgIncomingServer.idl b/mailnews/base/public/nsIMsgIncomingServer.idl
index 159df82cdff..de55046cd84 100644
--- a/mailnews/base/public/nsIMsgIncomingServer.idl
+++ b/mailnews/base/public/nsIMsgIncomingServer.idl
@@ -186,6 +186,9 @@ interface nsIMsgIncomingServer : nsISupports {
/* used for comparing nsIMsgIncomingServers */
boolean equals(in nsIMsgIncomingServer server);
+ /* Get Messages at startup */
+ readonly attribute boolean downloadMessagesAtStartup;
+
/**
* can this server be removed from the account manager? for
* instance, local mail is not removable, but an imported folder is
diff --git a/mailnews/base/resources/content/commandglue.js b/mailnews/base/resources/content/commandglue.js
index 5d385e17e9b..fff18cfc1d4 100644
--- a/mailnews/base/resources/content/commandglue.js
+++ b/mailnews/base/resources/content/commandglue.js
@@ -25,7 +25,6 @@
//The eventual goal is for this file to go away and for the functions to either be brought into
//mailCommands.js or into 3pane specific code.
-
var gFolderJustSwitched = false;
var gBeforeFolderLoadTime;
var gRDFNamespace = "http://www.w3.org/1999/02/22-rdf-syntax-ns#";
@@ -180,9 +179,19 @@ function ChangeFolderByURI(uri, isThreaded, sortID, sortDirection, viewType)
//if it's a server, clear the threadpane and don't bother trying to load.
if(msgfolder.isServer)
{
- ClearThreadPane();
+ ClearThreadPane();
+
+ // Load AccountCentral page here.
+ ShowAccountCentral();
return;
}
+
+ // If the user clicks on msgfolder, time to display thread pane and message pane.
+ // Hide AccountCentral page
+ if (gAccountCentralLoaded)
+ {
+ HideAccountCentral();
+ }
if (showPerformance) {
gBeforeFolderLoadTime = new Date();
@@ -777,7 +786,8 @@ function FolderPaneSelectionChange()
ClearThreadPane();
}
}
- ClearMessagePane();
+ if (!gAccountCentralLoaded)
+ ClearMessagePane();
}
diff --git a/mailnews/base/resources/content/mailWindow.js b/mailnews/base/resources/content/mailWindow.js
index 73097b9f1b6..317c1f41b58 100644
--- a/mailnews/base/resources/content/mailWindow.js
+++ b/mailnews/base/resources/content/mailWindow.js
@@ -54,7 +54,10 @@ var messageDSContractID = datasourceContractIDPrefix + "mailnewsmessages"
var accountManagerDataSource;
var folderDataSource;
var messageDataSource;
-
+
+var messagesBox = null;
+var accountCentralBox = null;
+var gAccountCentralLoaded = false;
//End progress and Status variables
function OnMailWindowUnload()
@@ -153,6 +156,8 @@ function CreateMailWindowGlobals()
folderDataSource = Components.classes[folderDSContractID].createInstance();
messageDataSource = Components.classes[messageDSContractID].createInstance();
+ messagesBox = document.getElementById("messagesBox");
+ accountCentralBox = document.getElementById("accountCentralBox");
}
function InitMsgWindow()
@@ -391,3 +396,55 @@ function loadStartPage() {
}
}
+// Display AccountCentral page when users clicks on the Account Folder.
+// When AccountCentral page need to be shown, we need to hide
+// the box containing threadPane, splitter and messagePane.
+// Load iframe in the AccountCentral box with corresponding page
+function ShowAccountCentral()
+{
+ try {
+ var acctCentralPage = pref.getLocalizedUnicharPref("mailnews.account_central_page.url");
+ messagesBox.setAttribute("hidden", "true");
+ accountCentralBox.removeAttribute("hidden");
+ window.frames["accountCentralPane"].location = acctCentralPage;
+ gAccountCentralLoaded = true;
+ }
+ catch (ex) {
+ dump("Error loading AccountCentral page -> " + ex + "\n");
+ return;
+ }
+}
+
+// Display thread and message panes with splitter when user tries
+// to read messages by clicking on msgfolders. Hide AccountCentral
+// box and display message box.
+function HideAccountCentral()
+{
+ try {
+ accountCentralBox.setAttribute("hidden", "true");
+ messagesBox.removeAttribute("hidden");
+ gAccountCentralLoaded = false;
+ }
+ catch (ex) {
+ dump("Error hiding AccountCentral page -> " + ex + "\n");
+ return;
+ }
+}
+
+// Given the server, open the twisty and the set the selection
+// on inbox of that server
+function OpenInboxForServer(server)
+{
+ try {
+ HideAccountCentral();
+ OpenTwistyForServer(server);
+ var inboxFolder = GetInboxFolder(server);
+ var folderTree = GetFolderTree();
+ var inboxFolderUri = document.getElementById(inboxFolder.URI);
+ ChangeSelection(folderTree, inboxFolderUri);
+ }
+ catch (ex) {
+ dump("Error opening inbox for server -> " + ex + "\n");
+ return;
+ }
+}
diff --git a/mailnews/base/resources/content/mailWindowOverlay.js b/mailnews/base/resources/content/mailWindowOverlay.js
index 91fc4eb5f6f..6196b3b2e7c 100644
--- a/mailnews/base/resources/content/mailWindowOverlay.js
+++ b/mailnews/base/resources/content/mailWindowOverlay.js
@@ -208,6 +208,36 @@ function GetFirstSelectedMsgFolder()
return result;
}
+function GetInboxFolder(server)
+{
+ try {
+ var rootFolder = server.RootFolder;
+ var rootMsgFolder = rootFolder.QueryInterface(Components.interfaces.nsIMsgFolder);
+
+ //now find Inbox
+ var outNumFolders = new Object();
+ var inboxFolder = rootMsgFolder.getFoldersWithFlag(0x1000, 1, outNumFolders);
+
+ return inboxFolder.QueryInterface(Components.interfaces.nsIMsgFolder);
+ }
+ catch (ex) {
+ dump(ex + "\n");
+ }
+ return null;
+}
+
+function GetMessagesForInboxOnServer(server)
+{
+ var inboxFolder = GetInboxFolder(server);
+ if (!inboxFolder) return;
+
+ var folders = new Array(1);
+ folders[0] = inboxFolder;
+
+ var compositeDataSource = GetCompositeDataSource("GetNewMessages");
+ GetNewMessages(folders, compositeDataSource);
+}
+
function MsgGetMessage()
{
var folders = GetSelectedMsgFolders();
@@ -215,6 +245,37 @@ function MsgGetMessage()
GetNewMessages(folders, compositeDataSource);
}
+function MsgGetMessagesForAllServers(defaultServer)
+{
+ // now log into any server
+ try
+ {
+ var allServers = accountManager.allServers;
+
+ for (var i=0;i
+
@@ -134,6 +135,12 @@ Rights Reserved.
+
+
+
+
+
+
@@ -152,7 +159,8 @@ Rights Reserved.
-
+
+
diff --git a/mailnews/base/resources/content/msgAccountCentral.js b/mailnews/base/resources/content/msgAccountCentral.js
new file mode 100644
index 00000000000..3e49bf9fa53
--- /dev/null
+++ b/mailnews/base/resources/content/msgAccountCentral.js
@@ -0,0 +1,163 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+ * The contents of this file are subject to the Netscape Public
+ * 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
+ * Rights Reserved.
+ */
+
+var selectedServer = null;
+var brandBundle = null;
+var msgBundle = null;
+
+function OnInit()
+{
+ var title = null;
+ var titleElement = null;
+ var brandName = null;
+ var acctType = null;
+ var acctName = null;
+
+ // Set the header for the page.
+ // Title containts the brand name of the application and the account
+ // type (mail/news) and the name of the account
+ try {
+ // Get title element from the document
+ titleElement = document.getElementById("AccountCentralTitle");
+
+ // Get the brand name
+ brandBundle = srGetStrBundle("chrome://global/locale/brand.properties");
+ brandName = brandBundle.GetStringFromName("brandShortName");
+
+ // Get the account type
+ msgBundle = srGetStrBundle("chrome://messenger/locale/messenger.properties");
+ selectedServer = GetSelectedServer();
+ var serverType = selectedServer.type;
+ if (serverType == "nntp")
+ acctType = msgBundle.GetStringFromName("newsAcctType");
+ else
+ acctType = msgBundle.GetStringFromName("mailAcctType");
+
+ // Get the account name
+ acctName = GetSelectedMsgFolderName();
+
+ title = msgBundle.GetStringFromName("acctCentralTitleFormat")
+ .replace(/%brandName%/, brandName)
+ .replace(/%accountType%/, acctType)
+ .replace(/%accountName%/, acctName);
+
+ titleElement.setAttribute("value", title);
+
+ // Display and collapse items presented to the user based on account type
+ ArrangeAccountCentralItems(serverType);
+ }
+ catch(ex) {
+ dump("Error -> " + ex + "\n");
+ }
+}
+
+function ArrangeAccountCentralItems(serverType)
+{
+ if (serverType == "nntp")
+ ShowOnlyNewsItems();
+ else
+ ShowOnlyMailItems();
+}
+
+// From the current folder tree, return the selected server
+function GetSelectedServer()
+{
+ var folderURI = window.parent.GetSelectedFolderURI();
+ var server = GetServer(folderURI);
+ return server;
+}
+
+// From the current folder tree, return the name of the folder selected
+function GetSelectedMsgFolderName()
+{
+ var folderURI = window.parent.GetSelectedFolderURI();
+ var msgFolder = window.parent.GetMsgFolderFromURI(folderURI);
+ return msgFolder.prettyName;
+}
+
+// Base AccountCentral page has items pertained to both mail and news.
+// For news, we collapse all unwanted mail items and display all news items
+function ShowOnlyNewsItems()
+{
+ try {
+ document.getElementById("ReadMessages").setAttribute("collapsed", "true");
+ document.getElementById("CreateFilters").setAttribute("collapsed", "true");
+ }
+ catch(ex) {
+ dump("Error -> " + ex + "\n");
+ }
+
+}
+
+// Base AccountCentral page has items pertained to both mail and news.
+// For mail, we collapse all unwanted news items and display all mail items
+function ShowOnlyMailItems()
+{
+
+ try {
+ document.getElementById("ReadMessages").removeAttribute("collapsed");
+ document.getElementById("CreateFilters").removeAttribute("collapsed");
+ }
+ catch(ex) {
+ dump("Error -> " + ex + "\n");
+ }
+}
+
+// Open Inbox for selected server.
+// If needed, open th twsity and select Inbox.
+function ReadMessages()
+{
+ try {
+ window.parent.OpenInboxForServer(selectedServer);
+ }
+ catch(ex) {
+ dump("Error -> " + ex + "\n");
+ }
+}
+
+// Trigger composer for a new message
+function ComposeAMessage(event)
+{
+ window.parent.MsgNewMessage();
+}
+
+// Open AccountManager to view settings for a given account
+function ViewSettings()
+{
+ window.parent.MsgAccountManager();
+}
+
+// Open AccountWizard to create an account
+function CreateNewAccount()
+{
+ window.parent.msgOpenAccountWizard();
+}
+
+// Bring up search interface for selected account
+function SearchMessages()
+{
+ window.parent.MsgSearchMessages();
+}
+
+// Open filters window
+function CreateMsgFilters()
+{
+ window.parent.MsgFilters();
+}
diff --git a/mailnews/base/resources/content/msgAccountCentral.xul b/mailnews/base/resources/content/msgAccountCentral.xul
new file mode 100644
index 00000000000..475c2711457
--- /dev/null
+++ b/mailnews/base/resources/content/msgAccountCentral.xul
@@ -0,0 +1,138 @@
+
+
+
+
+
+
+ %brandDTD;
+
+ %acctCentralDTD;
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mailnews/base/resources/content/msgMail3PaneWindow.js b/mailnews/base/resources/content/msgMail3PaneWindow.js
index db72929b9c3..d9be3a8f6af 100644
--- a/mailnews/base/resources/content/msgMail3PaneWindow.js
+++ b/mailnews/base/resources/content/msgMail3PaneWindow.js
@@ -235,6 +235,7 @@ function OnLoadMessenger()
Create3PaneGlobals();
verifyAccounts();
+ HideAccountCentral();
loadStartPage();
InitMsgWindow();
@@ -368,53 +369,115 @@ function PerformExpandForAllOpenServers(tree)
}
}
-function loadStartFolder(startFolderUri)
+function loadStartFolder(initialUri)
{
- //First get default account
- try
- {
- if(!startFolderUri)
- {
- var defaultAccount = accountManager.defaultAccount;
+ var defaultServer = null;
+ var startFolderUri = initialUri;
- var server = defaultAccount.incomingServer;
- var rootFolder = server.RootFolder;
- var rootMsgFolder = rootFolder.QueryInterface(Components.interfaces.nsIMsgFolder);
+ //First get default account
+ try
+ {
+ if(!startFolderUri)
+ {
+ var defaultAccount = accountManager.defaultAccount;
- //now find Inbox
- var outNumFolders = new Object();
- var inboxFolder = rootMsgFolder.getFoldersWithFlag(0x1000, 1, outNumFolders);
- if(!inboxFolder) return;
+ defaultServer = defaultAccount.incomingServer;
+ var rootFolder = defaultServer.RootFolder;
+ var rootMsgFolder = rootFolder.QueryInterface(Components.interfaces.nsIMsgFolder);
- var resource = inboxFolder.QueryInterface(Components.interfaces.nsIRDFResource);
- startFolderUri = resource.Value;
+ //now find Inbox
+ var outNumFolders = new Object();
+ var inboxFolder = rootMsgFolder.getFoldersWithFlag(0x1000, 1, outNumFolders);
+ if(!inboxFolder) return;
- //first, let's see if it's already in the dom. This will make life easier.
- //We need to make sure content is built by this time
- }
- msgNavigationService.EnsureDocumentIsLoaded(document);
+ var resource = inboxFolder.QueryInterface(Components.interfaces.nsIRDFResource);
+ startFolderUri = resource.Value;
- var startFolder = document.getElementById(startFolderUri);
+ //first, let's see if it's already in the dom. This will make life easier.
+ //We need to make sure content is built by this time
+ }
+ msgNavigationService.EnsureDocumentIsLoaded(document);
- //if it's not here we will have to make sure it's open.
- if(!startFolder)
- {
+ var startFolder = document.getElementById(startFolderUri);
- }
+ //if it's not here we will have to make sure it's open.
+ if(!startFolder && startFolderUri && defaultServer)
+ {
+ // Opens the twisty for the default account
+ OpenTwistyForServer(defaultServer);
+ startFolder = document.getElementById(startFolderUri);
+ }
- var folderTree= GetFolderTree();
- ChangeSelection(folderTree, startFolder);
+ var folderTree= GetFolderTree();
+ ChangeSelection(folderTree, startFolder);
+
+ // only do this on startup, when we pass in null
+ if (!initialUri && defaultServer)
+ {
+ // Start downloading messages for the INBOX of the default server
+ TriggerGetMessages(defaultServer);
+ }
- // because the "open" state persists, we'll call
- // PerformExpand() for all servers that are open at startup.
- PerformExpandForAllOpenServers(folderTree);
- }
- catch(ex)
- {
- dump(ex);
- dump('Exception in LoadStartFolder caused by no default account. We know about this\n');
- }
+ // because the "open" state persists, we'll call
+ // PerformExpand() for all servers that are open at startup.
+ PerformExpandForAllOpenServers(folderTree);
+ }
+ catch(ex)
+ {
+ dump(ex);
+ dump('Exception in LoadStartFolder caused by no default account. We know about this\n');
+ }
+ if (!initialUri)
+ {
+ MsgGetMessagesForAllServers(defaultServer);
+ }
+
+}
+
+function OpenTwistyForServer(server)
+{
+ var treeNode = GetTreeNodeForServerURI(server.serverURI);
+
+ if (treeNode)
+ treeNode.setAttribute('open', 'true');
+}
+
+
+function GetTreeNodeForServerURI(serverURI)
+{
+ var treeNode = null;
+
+ var tree = GetFolderTree();
+
+ // Iterate through folder tree to find the node associated with given serverURI
+ if ( tree && tree.childNodes ) {
+ for ( var i = tree.childNodes.length - 1; i >= 0; i-- ) {
+ var treechild = tree.childNodes[i];
+ if (treechild.localName == 'treechildren') {
+ var treeitems = treechild.childNodes;
+ for ( var j = treeitems.length - 1; j >= 0; j--) {
+ var isServer = treeitems[j].getAttribute('IsServer');
+ if (isServer == "true") {
+ var uri = treeitems[j].getAttribute('id');
+ if (uri == serverURI) {
+ treeNode = treeitems[j];
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+ return treeNode;
+}
+
+function TriggerGetMessages(server)
+{
+ // downloadMessagesAtStartup for a given server type indicates whether
+ // or not there is a need to Trigger GetMessages action
+ if (server.downloadMessagesAtStartup)
+ MsgGetMessage();
}
function AddToSession()
diff --git a/mailnews/base/resources/locale/en-US/messenger.properties b/mailnews/base/resources/locale/en-US/messenger.properties
index 2806414dc80..7d41dce6faf 100644
--- a/mailnews/base/resources/locale/en-US/messenger.properties
+++ b/mailnews/base/resources/locale/en-US/messenger.properties
@@ -136,6 +136,12 @@ In the future, you can select which messages or folders to read offline. To do \
this, choose Offline from the file menu and then select Synchronize. You can \n\
adjust the Disk Space preference to prevent the downloading of large messages.
+# accountCentral
+mailnews.account_central_page.url=chrome://messenger/content/msgAccountCentral.xul
+acctCentralTitleFormat=%brandName% %accountType% for %accountName%
+mailAcctType=Mail
+newsAcctType=News
+
# LOCALIZATION NOTES(nocachedbodytitle): Do not translate "
" or "" in the line below
nocachedbodytitle=Go Online to View This Message\n\
diff --git a/mailnews/base/resources/locale/en-US/msgAccountCentral.dtd b/mailnews/base/resources/locale/en-US/msgAccountCentral.dtd
new file mode 100644
index 00000000000..95d0ed08f62
--- /dev/null
+++ b/mailnews/base/resources/locale/en-US/msgAccountCentral.dtd
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mailnews/base/util/nsMsgIncomingServer.cpp b/mailnews/base/util/nsMsgIncomingServer.cpp
index 8f4b0cc547b..de195f448dd 100644
--- a/mailnews/base/util/nsMsgIncomingServer.cpp
+++ b/mailnews/base/util/nsMsgIncomingServer.cpp
@@ -177,6 +177,14 @@ nsMsgIncomingServer::CloseCachedConnections()
return NS_OK;
}
+NS_IMETHODIMP
+nsMsgIncomingServer::GetDownloadMessagesAtStartup(PRBool *getMessagesAtStartup)
+{
+ // derived class should override if they need to do this.
+ *getMessagesAtStartup = PR_FALSE;
+ return NS_OK;
+}
+
// construct ://[@]GetNewMail(aMsgWindow, aUrlListener, inbox, this, aResult);
return rv;
}
+
+NS_IMETHODIMP
+nsPop3IncomingServer::GetDownloadMessagesAtStartup(PRBool *getMessagesAtStartup)
+{
+ // GetMessagese is not automatically done for pop servers at startup.
+ // We need to trigger that action. Return true.
+ *getMessagesAtStartup = PR_TRUE;
+ return NS_OK;
+}
+
diff --git a/mailnews/local/src/nsPop3IncomingServer.h b/mailnews/local/src/nsPop3IncomingServer.h
index 20861ef97e7..a22dac3379e 100644
--- a/mailnews/local/src/nsPop3IncomingServer.h
+++ b/mailnews/local/src/nsPop3IncomingServer.h
@@ -44,7 +44,7 @@ public:
NS_IMETHOD GetLocalStoreType(char **);
NS_IMETHOD PerformBiff();
-
+ NS_IMETHOD GetDownloadMessagesAtStartup(PRBool *getMessages);
private:
static nsresult setSubFolderFlag(nsIFolder *aRootFolder,