mirror of
https://github.com/rn10950/RetroZilla.git
synced 2024-11-15 04:00:12 +01:00
234 lines
8.0 KiB
JavaScript
234 lines
8.0 KiB
JavaScript
|
/* -*- Mode: Java; 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.
|
||
|
*
|
||
|
* The Initial Developer of the Original Code is
|
||
|
* Netscape Communications Corporation.
|
||
|
* Portions created by the Initial Developer are Copyright (C) 1998
|
||
|
* the Initial Developer. All Rights Reserved.
|
||
|
*
|
||
|
* Contributor(s):
|
||
|
* Alec Flett <alecf@netscape.com>
|
||
|
* Scott MacGregor <mscott@mozilla.org>
|
||
|
*
|
||
|
* 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 ***** */
|
||
|
|
||
|
const nsIPromptService = Components.interfaces.nsIPromptService;
|
||
|
var smtpService = Components.classes["@mozilla.org/messengercompose/smtp;1"].getService(Components.interfaces.nsISmtpService);
|
||
|
|
||
|
var gSmtpServerListWindow =
|
||
|
{
|
||
|
mBundle: null,
|
||
|
mServerList: null,
|
||
|
mAddButton: null,
|
||
|
mEditButton: null,
|
||
|
mDeleteButton: null,
|
||
|
mSetDefaultServerButton: null,
|
||
|
|
||
|
onLoad: function()
|
||
|
{
|
||
|
parent.onPanelLoaded('am-smtp.xul');
|
||
|
|
||
|
this.mBundle = document.getElementById("bundle_messenger");
|
||
|
this.mServerList = document.getElementById("smtpList");
|
||
|
this.mAddButton = document.getElementById("addButton");
|
||
|
this.mEditButton = document.getElementById("editButton");
|
||
|
this.mDeleteButton = document.getElementById("deleteButton");
|
||
|
this.mSetDefaultServerButton = document.getElementById("setDefaultButton");
|
||
|
|
||
|
this.refreshServerList("", false);
|
||
|
},
|
||
|
|
||
|
onSelectionChanged: function(aEvent)
|
||
|
{
|
||
|
if (this.mServerList.selectedItems.length <= 0)
|
||
|
return;
|
||
|
|
||
|
var server = this.getSelectedServer();
|
||
|
this.updateButtons(server);
|
||
|
this.updateServerInfoBox(server);
|
||
|
},
|
||
|
|
||
|
onDeleteServer: function (aEvent)
|
||
|
{
|
||
|
var server = this.getSelectedServer();
|
||
|
if (server)
|
||
|
{
|
||
|
// confirm deletion
|
||
|
var promptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"].getService(nsIPromptService);
|
||
|
var cancel = promptService.confirmEx(window, this.mBundle.getString('smtpServers-confirmServerDeletionTitle'),
|
||
|
this.mBundle.getFormattedString('smtpServers-confirmServerDeletion', [server.hostname], 1),
|
||
|
(nsIPromptService.BUTTON_TITLE_YES * nsIPromptService.BUTTON_POS_0) +
|
||
|
(nsIPromptService.BUTTON_TITLE_NO * nsIPromptService.BUTTON_POS_1),
|
||
|
null, null, null, null, { });
|
||
|
|
||
|
if (!cancel)
|
||
|
{
|
||
|
smtpService.deleteSmtpServer(server);
|
||
|
parent.replaceWithDefaultSmtpServer(server.key);
|
||
|
this.refreshServerList("", true);
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
|
||
|
onAddServer: function (aEvent)
|
||
|
{
|
||
|
this.openServerEditor(null);
|
||
|
},
|
||
|
|
||
|
onEditServer: function (aEvent)
|
||
|
{
|
||
|
if (this.mServerList.selectedItems.length <= 0)
|
||
|
return;
|
||
|
this.openServerEditor(this.getSelectedServer());
|
||
|
},
|
||
|
|
||
|
onSetDefaultServer: function(aEvent)
|
||
|
{
|
||
|
if (this.mServerList.selectedItems.length <= 0)
|
||
|
return;
|
||
|
|
||
|
smtpService.defaultServer = this.getSelectedServer();
|
||
|
this.refreshServerList(smtpService.defaultServer.key, true);
|
||
|
},
|
||
|
|
||
|
updateButtons: function(aServer)
|
||
|
{
|
||
|
// can't delete default server
|
||
|
if (smtpService.defaultServer == aServer)
|
||
|
{
|
||
|
this.mSetDefaultServerButton.setAttribute("disabled", "true");
|
||
|
this.mDeleteButton.setAttribute("disabled", "true");
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
this.mSetDefaultServerButton.removeAttribute("disabled");
|
||
|
this.mDeleteButton.removeAttribute("disabled");
|
||
|
}
|
||
|
},
|
||
|
|
||
|
updateServerInfoBox: function(aServer)
|
||
|
{
|
||
|
var noneSelected = this.mBundle.getString("smtpServerList-NotSpecified");
|
||
|
|
||
|
document.getElementById('nameValue').value = aServer.hostname;
|
||
|
document.getElementById('descriptionValue').value = aServer.description || noneSelected;
|
||
|
document.getElementById('portValue').value = aServer.port;
|
||
|
document.getElementById('userNameValue').value = aServer.username || noneSelected;
|
||
|
document.getElementById('useSecureConnectionValue').value = this.mBundle.getString("smtpServer-SecureConnection-Type-" +
|
||
|
aServer.trySSL);
|
||
|
},
|
||
|
|
||
|
refreshServerList: function(aServerKeyToSelect, aFocusList)
|
||
|
{
|
||
|
// remove all children
|
||
|
while (this.mServerList.hasChildNodes())
|
||
|
this.mServerList.removeChild(this.mServerList.lastChild);
|
||
|
|
||
|
var defaultServer = smtpService.defaultServer;
|
||
|
this.fillSmtpServers(this.mServerList, smtpService.smtpServers, defaultServer);
|
||
|
|
||
|
if (aServerKeyToSelect)
|
||
|
this.mServerList.selectItem(this.mServerList.getElementsByAttribute("key", aServerKeyToSelect)[0]);
|
||
|
else // select the default server
|
||
|
this.mServerList.selectItem(this.mServerList.getElementsByAttribute("default", "true")[0]);
|
||
|
|
||
|
if (aFocusList)
|
||
|
this.mServerList.focus();
|
||
|
},
|
||
|
|
||
|
fillSmtpServers: function(aListBox, aServers, aDefaultServer)
|
||
|
{
|
||
|
if (!aListBox || !aServers)
|
||
|
return;
|
||
|
|
||
|
var serverCount = aServers.Count();
|
||
|
for (var i=0; i < serverCount; i++)
|
||
|
{
|
||
|
var server = aServers.QueryElementAt(i, Components.interfaces.nsISmtpServer);
|
||
|
var isDefault = (aDefaultServer.key == server.key);
|
||
|
//ToDoList: add code that allows for the redirector type to specify whether to show values or not
|
||
|
if (!server.redirectorType)
|
||
|
{
|
||
|
var listitem = this.createSmtpListItem(server, isDefault);
|
||
|
aListBox.appendChild(listitem);
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
|
||
|
createSmtpListItem: function(aServer, aIsDefault)
|
||
|
{
|
||
|
var listitem = document.createElement("listitem");
|
||
|
var serverName = "";
|
||
|
|
||
|
if (aServer.description)
|
||
|
serverName = aServer.description + ' - ';
|
||
|
else if (aServer.username)
|
||
|
serverName = aServer.username + ' - ';
|
||
|
|
||
|
serverName += aServer.hostname;
|
||
|
|
||
|
if (aIsDefault)
|
||
|
{
|
||
|
serverName += " " + this.mBundle.getString("defaultServerTag");
|
||
|
listitem.setAttribute("default", "true");
|
||
|
}
|
||
|
|
||
|
listitem.setAttribute("label", serverName);
|
||
|
listitem.setAttribute("key", aServer.key);
|
||
|
listitem.setAttribute("class", "smtpServerListItem");
|
||
|
|
||
|
// give it some unique id
|
||
|
listitem.id = "smtpServer." + aServer.key;
|
||
|
return listitem;
|
||
|
},
|
||
|
|
||
|
openServerEditor: function(aServer)
|
||
|
{
|
||
|
var args = {server: aServer,
|
||
|
result: false,
|
||
|
addSmtpServer: ""};
|
||
|
|
||
|
window.openDialog("chrome://messenger/content/SmtpServerEdit.xul",
|
||
|
"smtpEdit", "chrome,titlebar,modal,centerscreen", args);
|
||
|
|
||
|
// now re-select the server which was just added
|
||
|
if (args.result)
|
||
|
this.refreshServerList(aServer ? aServer.key : args.addSmtpServer, true);
|
||
|
|
||
|
return args.result;
|
||
|
},
|
||
|
|
||
|
getSelectedServer: function()
|
||
|
{
|
||
|
var serverKey = this.mServerList.selectedItems[0].getAttribute("key");
|
||
|
return smtpService.getServerByKey(serverKey);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
|