mirror of
https://github.com/rn10950/RetroZilla.git
synced 2024-11-10 18:00:15 +01:00
298 lines
10 KiB
JavaScript
298 lines
10 KiB
JavaScript
/* -*- 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();
|
|
}
|