/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- * ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla 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/MPL/ * * 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 the Initial Developer are Copyright (C) 1998-1999 * the Initial Developer. All Rights Reserved. * * Contributor(s): * * Alternatively, the contents of this file may be used under the terms of * either of the GNU General Public License Version 2 or later (the "GPL"), * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ 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 { var displayRssHeader = server.type == 'rss'; /***** Email header and items : Begin *****/ // Read Messages var canGetMessages = protocolInfo.canGetMessages; SetItemDisplay("ReadMessages", canGetMessages && !displayRssHeader); // 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) && !displayRssHeader; // 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 *****/ /***** RSS header and items : Begin *****/ SetItemDisplay("rssHeader", displayRssHeader); SetItemDisplay("SubscribeRSS", displayRssHeader); /***** RSS header and items : End *****/ // If neither of above sections exist, collapse section separators if (!(displayNewsHeader || displayEmailHeader || displayRssHeader)) { 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); // Subscribe to IMAP Folders var canSubscribeImapFolders = msgFolder.canSubscribe && protocolInfo.canGetMessages; SetItemDisplay("SubscribeImapFolders", canSubscribeImapFolders); // Offline Settings var supportsOffline = (server.offlineSupportLevel != 0); SetItemDisplay("OfflineSettings", supportsOffline); var displayAdvFeatures = canSearchMessages || canHaveFilters || canSubscribeImapFolders|| 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-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, null); } // Open Subscribe dialog function Subscribe() { var server = GetSelectedServer(); if (server && server.type == 'rss') window.parent.openSubscriptionsDialog(server); else window.parent.MsgSubscribe(); } // Open junk mail settings dialog function JunkSettings() { window.parent.MsgJunkMail(); }