gecko-dev/mail/base/content/msgAccountCentral.js

261 строка
8.7 KiB
JavaScript

/* -*- 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 nsPrefBranch = null;
function OnInit()
{
var title = null;
var titleElement = null;
var brandName = null;
var acctType = null;
var acctName = null;
var brandBundle;
var messengerBundle;
try {
if (!nsPrefBranch) {
var prefService = Components.classes["@mozilla.org/preferences-service;1"];
prefService = prefService.getService();
prefService = prefService.QueryInterface(Components.interfaces.nsIPrefService);
nsPrefBranch = prefService.getBranch(null);
}
}
catch (ex) {
dump("error getting pref service. "+ex+"\n");
}
// 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 = document.getElementById("bundle_brand");
brandName = brandBundle.getString("brandShortName");
// Get the account type
messengerBundle = document.getElementById("bundle_messenger");
selectedServer = GetSelectedServer();
var serverType = selectedServer.type;
if (serverType == "nntp")
acctType = messengerBundle.getString("newsAcctType");
else
acctType = messengerBundle.getString("mailAcctType");
// Get the account name
var msgFolder = GetSelectedMsgFolder();
acctName = msgFolder.prettyName;
title = messengerBundle.getFormattedString("acctCentralTitleFormat",
[brandName,
acctType,
acctName]);
titleElement.setAttribute("value", title);
// Display and collapse items presented to the user based on account type
var protocolInfo = Components.classes["@mozilla.org/messenger/protocol/info;1?type=" + serverType];
protocolInfo = protocolInfo.getService(Components.interfaces.nsIMsgProtocolInfo);
ArrangeAccountCentralItems(selectedServer, protocolInfo, msgFolder);
}
catch(ex) {
dump("Error -> " + ex + "\n");
}
}
// Show items in the AccountCentral page depending on the capabilities
// of the given account
function ArrangeAccountCentralItems(server, protocolInfo, msgFolder)
{
try {
/***** Email header and items : Begin *****/
// Read Messages
var canGetMessages = protocolInfo.canGetMessages;
SetItemDisplay("ReadMessages", canGetMessages);
// Compose Messages link
var showComposeMsgLink = protocolInfo.showComposeMsgLink;
SetItemDisplay("ComposeMessage", showComposeMsgLink);
// Junk mail settings
var canControlJunkEmail = protocolInfo.canGetIncomingMessages && protocolInfo.canGetMessages && false; // && false, until ready for prime time
SetItemDisplay("JunkSettingsMail", canControlJunkEmail);
var displayEmailHeader = canGetMessages || showComposeMsgLink || canControlJunkEmail;
// Display Email header, only if any of the items are displayed
SetItemDisplay("EmailHeader", displayEmailHeader);
/***** Email header and items : End *****/
/***** News header and items : Begin *****/
// Subscribe to Newsgroups
var canSubscribe = (msgFolder.canSubscribe) && !(protocolInfo.canGetMessages);
SetItemDisplay("SubscribeNewsgroups", canSubscribe);
// Junk news settings
var canControlJunkNews = protocolInfo.canGetIncomingMessages && !(protocolInfo.canGetMessages) && false; // && false, until ready for prime time
SetItemDisplay("JunkSettingsNews", canControlJunkNews);
var displayNewsHeader = canSubscribe || canControlJunkNews;
// Display News header, only if any of the items are displayed
SetItemDisplay("NewsHeader", displayNewsHeader);
/***** News header and items : End *****/
// If neither of above sections exist, collapse section separators
if (!(displayNewsHeader || displayEmailHeader)) {
CollapseSectionSeparators("MessagesSection.separator", false);
}
/***** Accounts : Begin *****/
var canShowCreateAccount = !nsPrefBranch.prefIsLocked("mail.disable_new_account_addition");
SetItemDisplay("CreateAccount", canShowCreateAccount);
/***** Accounts : End *****/
/***** Advanced Features header and items : Begin *****/
// Search Messages
var canSearchMessages = server.canSearchMessages;
SetItemDisplay("SearchMessages", canSearchMessages);
// Create Filters
var canHaveFilters = server.canHaveFilters;
SetItemDisplay("CreateFilters", canHaveFilters);
// Offline Settings
var supportsOffline = (server.offlineSupportLevel != 0);
SetItemDisplay("OfflineSettings", supportsOffline);
var displayAdvFeatures = canSearchMessages || canHaveFilters || supportsOffline;
// Display Adv Features header, only if any of the items are displayed
SetItemDisplay("AdvancedFeaturesHeader", displayAdvFeatures);
/***** Advanced Featuers header and items : End *****/
}
catch (ex) {
dump("Error is setting AccountCentral Items : " + ex + "\n");
}
}
// Collapse the item if the item feature is not supported
function SetItemDisplay(elemId, displayThisItem)
{
if (!displayThisItem) {
var elem = document.getElementById(elemId);
elem.setAttribute("collapsed", true);
var separatorId = elemId + ".separator";
var elemSeparator = document.getElementById(separatorId);
elemSeparator.setAttribute("collapsed", true);
}
}
// Collapse section separators
function CollapseSectionSeparators(separatorBaseId)
{
for (var i=1; i <= 3; i++) {
var separatorId = separatorBaseId + i;
var separator = document.getElementById(separatorId);
separator.setAttribute("collapsed", true);
}
}
// 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 selected folder
function GetSelectedMsgFolder()
{
var folderURI = window.parent.GetSelectedFolderURI();
var msgFolder = window.parent.GetMsgFolderFromUri(folderURI, true);
return msgFolder;
}
// 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(null);
}
// Open AccountManager to view settings for a given account
// selectPage: the xul file name for the viewing page,
// null for the account main page, other pages are
// 'am-server.xul', 'am-copies.xul', 'am-offline.xul',
// 'am-addressing.xul','am-advanced.xul', 'am-smtp.xul'
function ViewSettings(selectPage)
{
window.parent.MsgAccountManager(selectPage);
}
// 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(null);
}
// Open Subscribe dialog
function SubscribeNewsgroups()
{
window.parent.MsgSubscribe();
}
// Open junk mail settings dialog
function JunkSettings()
{
window.parent.MsgJunkMail();
}