mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-08 20:47:44 +00:00
624 lines
15 KiB
JavaScript
624 lines
15 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.
|
|
*/
|
|
|
|
/*
|
|
* widget-specific wrapper glue. There should be one function for every
|
|
* widget/menu item, which gets some context (like the current selection)
|
|
* and then calls a function/command in commandglue
|
|
*/
|
|
|
|
var viewShowAll =0;
|
|
var viewShowRead = 1;
|
|
var viewShowUnread =2;
|
|
var viewShowWatched = 3;
|
|
|
|
|
|
function MsgLoadNewsMessage(url)
|
|
{
|
|
dump("\n\nMsgLoadNewsMessage from XUL\n");
|
|
OpenURL(url);
|
|
}
|
|
|
|
function MsgHome(url)
|
|
{
|
|
var toolkitCore = XPAppCoresManager.Find("ToolkitCore");
|
|
if (!toolkitCore) {
|
|
toolkitCore = new ToolkitCore();
|
|
if (toolkitCore) {
|
|
toolkitCore.Init("ToolkitCore");
|
|
}
|
|
}
|
|
if (toolkitCore) {
|
|
toolkitCore.ShowWindow(url, window);
|
|
}
|
|
}
|
|
|
|
function MsgNewMessage()
|
|
{
|
|
dump("\n\nMsgNewMessage from XUL\n");
|
|
NewMessage();
|
|
}
|
|
|
|
function MsgGetMessage()
|
|
{
|
|
GetNewMessages();
|
|
}
|
|
|
|
function MsgDeleteMessage(fromToolbar)
|
|
{
|
|
dump("\nMsgDeleteMessage from XUL\n");
|
|
//dump("from toolbar? " + fromToolbar + "\n");
|
|
|
|
var tree = GetThreadTree();
|
|
if(tree) {
|
|
var srcFolder = GetThreadTreeFolder();
|
|
// if from the toolbar, return right away if this is a news message
|
|
// only allow cancel from the menu: "Edit | Cancel / Delete Message"
|
|
if (fromToolbar) {
|
|
uri = srcFolder.getAttribute('ref');
|
|
//dump("uri[0:6]=" + uri.substring(0,6) + "\n");
|
|
if (uri.substring(0,6) == "news:/") {
|
|
//dump("delete ignored!\n");
|
|
return;
|
|
}
|
|
}
|
|
dump("tree is valid\n");
|
|
//get the selected elements
|
|
var messageList = tree.selectedItems;
|
|
var nextMessage = GetNextMessageAfterDelete(messageList);
|
|
//get the current folder
|
|
messenger.DeleteMessages(tree, srcFolder, messageList);
|
|
SelectNextMessage(nextMessage);
|
|
}
|
|
}
|
|
|
|
function MsgDeleteFolder()
|
|
{
|
|
//get the selected elements
|
|
var tree = GetFolderTree();
|
|
var folderList = tree.selectedItems;
|
|
var i;
|
|
var folder, parent;
|
|
for(i = 0; i < folderList.length; i++)
|
|
{
|
|
folder = folderList[i];
|
|
folderuri = folder.getAttribute('id');
|
|
dump(folderuri);
|
|
parent = folder.parentNode.parentNode;
|
|
var parenturi = parent.getAttribute('id');
|
|
if(parenturi)
|
|
dump(parenturi);
|
|
else
|
|
dump("No parenturi");
|
|
dump("folder = " + folder.nodeName + "\n");
|
|
dump("parent = " + parent.nodeName + "\n");
|
|
messenger.DeleteFolders(tree.database, parent, folder);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
function MsgReplyMessage()
|
|
{
|
|
dump("\nMsgReplyMessage from XUL\n");
|
|
ComposeMessage(1, 0);
|
|
}
|
|
|
|
function MsgReplyToAllMessage()
|
|
{
|
|
dump("\nMsgReplyToAllMessage from XUL\n");
|
|
ComposeMessage(2, 0);
|
|
}
|
|
|
|
function MsgForwardMessage()
|
|
{
|
|
dump("\nMsgForwardMessage from XUL\n");
|
|
MsgForwardAsInline();
|
|
}
|
|
|
|
function MsgForwardAsAttachment()
|
|
{
|
|
dump("\nMsgForwardAsAttachment from XUL\n");
|
|
ComposeMessage(4, 0);
|
|
}
|
|
|
|
function MsgForwardAsInline()
|
|
{
|
|
dump("\nMsgForwardAsInline from XUL\n");
|
|
ComposeMessage(3, 0);
|
|
}
|
|
|
|
function MsgCopyMessage(destFolder)
|
|
{
|
|
// Get the id for the folder we're copying into
|
|
destUri = destFolder.getAttribute('id');
|
|
dump(destUri);
|
|
|
|
var tree = GetThreadTree();
|
|
if(tree)
|
|
{
|
|
//Get the selected messages to copy
|
|
var messageList = tree.selectedItems;
|
|
//get the current folder
|
|
|
|
// dump('In copy messages. Num Selected Items = ' + messageList.length);
|
|
// dump('\n');
|
|
var srcFolder = GetThreadTreeFolder();
|
|
messenger.CopyMessages(tree.database, srcFolder, destFolder, messageList, false);
|
|
}
|
|
}
|
|
|
|
function MsgMoveMessage(destFolder)
|
|
{
|
|
// Get the id for the folder we're copying into
|
|
destUri = destFolder.getAttribute('id');
|
|
dump(destUri);
|
|
|
|
var tree = GetThreadTree();
|
|
if(tree)
|
|
{
|
|
//Get the selected messages to copy
|
|
var messageList = tree.selectedItems;
|
|
//get the current folder
|
|
var srcFolder = GetThreadTreeFolder();
|
|
messenger.CopyMessages(tree.database, srcFolder, destFolder, messageList, true);
|
|
}
|
|
}
|
|
|
|
function MsgViewAllMsgs()
|
|
{
|
|
dump("MsgViewAllMsgs");
|
|
|
|
if(messageView)
|
|
{
|
|
messageView.viewType = viewShowAll;
|
|
messageView.showThreads = false;
|
|
}
|
|
RefreshThreadTreeView();
|
|
}
|
|
|
|
function MsgViewUnreadMsg()
|
|
{
|
|
dump("MsgViewUnreadMsgs");
|
|
|
|
if(messageView)
|
|
{
|
|
messageView.viewType = viewShowUnread;
|
|
view.showThreads = false;
|
|
}
|
|
|
|
RefreshThreadTreeView();
|
|
}
|
|
|
|
function MsgViewAllThreadMsgs()
|
|
{
|
|
dump("MsgViewAllMessagesThreaded");
|
|
|
|
if(messageView)
|
|
{
|
|
view.viewType = viewShowAll;
|
|
view.showThreads = true;
|
|
}
|
|
RefreshThreadTreeView();
|
|
}
|
|
|
|
function MsgSortByDate()
|
|
{
|
|
SortThreadPane('DateColumn', 'http://home.netscape.com/NC-rdf#Date');
|
|
}
|
|
|
|
function MsgSortBySender()
|
|
{
|
|
SortThreadPane('AuthorColumn', 'http://home.netscape.com/NC-rdf#Sender');
|
|
}
|
|
|
|
function MsgSortByStatus()
|
|
{
|
|
SortThreadPane('StatusColumn', 'http://home.netscape.com/NC-rdf#Status');
|
|
}
|
|
|
|
function MsgSortBySubject()
|
|
{
|
|
SortThreadPane('SubjectColumn', 'http://home.netscape.com/NC-rdf#Subject');
|
|
}
|
|
|
|
function MsgNewFolder()
|
|
{
|
|
var folderTree = GetFolderTree();
|
|
var selectedFolderList = folderTree.selectedItems;
|
|
var selectedFolder = selectedFolderList[0];
|
|
if (selectedFolder)
|
|
{
|
|
var dialog = window.openDialog(
|
|
"chrome://messenger/content/newFolderNameDialog.xul",
|
|
"",
|
|
"chrome",
|
|
{title:"New Folder",
|
|
okCallback:NewFolder});
|
|
}
|
|
}
|
|
|
|
function NewFolder(name)
|
|
{
|
|
var folderTree = GetFolderTree();
|
|
var selectedFolderList = folderTree.selectedItems;
|
|
var selectedFolder = selectedFolderList[0];
|
|
|
|
messenger.NewFolder(folderTree.database, selectedFolder, name);
|
|
}
|
|
|
|
|
|
function MsgAccountManager()
|
|
{
|
|
dump('Opening account manager..\n');
|
|
window.open("chrome://messenger/content/AccountManager.xul", "AccountManager", "chrome");
|
|
}
|
|
|
|
function MsgSubscribe()
|
|
{
|
|
dump('open subscribe window.\n');
|
|
window.openDialog("chrome://messenger/content/subscribe.xul", "subscribe", "chrome");
|
|
}
|
|
|
|
function MsgAccountWizard()
|
|
{
|
|
window.openDialog("chrome://messenger/content/AccountWizard.xul", "wizard", "chrome, modal,height=300,width=400");
|
|
}
|
|
|
|
function MsgOpenAttachment() {}
|
|
|
|
function MsgSaveAsFile()
|
|
{
|
|
dump("\MsgSaveAsFile from XUL\n");
|
|
var tree = GetThreadTree();
|
|
//get the selected elements
|
|
var messageList = tree.selectedItems;
|
|
if (messageList && messageList.length == 1)
|
|
{
|
|
var uri = messageList[0].getAttribute('id');
|
|
dump (uri);
|
|
if (uri)
|
|
messenger.saveAs(uri, true);
|
|
}
|
|
}
|
|
|
|
function MsgSaveAsTemplate()
|
|
{
|
|
dump("\MsgSaveAsTemplate from XUL\n");
|
|
var tree = GetThreadTree();
|
|
//get the selected elements
|
|
var messageList = tree.selectedItems;
|
|
if (messageList && messageList.length == 1)
|
|
{
|
|
var uri = messageList[0].getAttribute('id');
|
|
dump (uri);
|
|
if (uri)
|
|
messenger.saveAs(uri, false);
|
|
}
|
|
}
|
|
function MsgSendUnsentMsg()
|
|
{
|
|
messenger.SendUnsentMessages();
|
|
}
|
|
function MsgLoadFirstDraft()
|
|
{
|
|
messenger.LoadFirstDraft();
|
|
}
|
|
function MsgUpdateMsgCount() {}
|
|
|
|
function MsgRenameFolder()
|
|
{
|
|
var tree = GetFolderTree();
|
|
if (tree)
|
|
{
|
|
var folderList = tree.selectedItems;
|
|
if (folderList && folderList.length == 1)
|
|
{
|
|
var folder = folderList[0];
|
|
if (folder)
|
|
{
|
|
var dialog = window.openDialog(
|
|
"chrome://messenger/content/newFolderNameDialog.xul",
|
|
"",
|
|
"chrome",
|
|
{title:"Rename Folder",
|
|
okCallback:RenameFolder});
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function RenameFolder(name)
|
|
{
|
|
var tree = GetFolderTree();
|
|
if (tree)
|
|
{
|
|
var folderList = tree.selectedItems;
|
|
if (folderList && folderList.length == 1)
|
|
{
|
|
var folder = folderList[0];
|
|
if (folder)
|
|
messenger.RenameFolder(tree.database, folder, name);
|
|
}
|
|
}
|
|
}
|
|
|
|
function MsgEmptyTrash()
|
|
{
|
|
var tree = GetFolderTree();
|
|
if (tree)
|
|
{
|
|
var folderList = tree.selectedItems;
|
|
if (folderList)
|
|
{
|
|
var folder;
|
|
folder = folderList[0];
|
|
if (folder)
|
|
{
|
|
messenger.EmptyTrash(tree.database, folder);
|
|
if(IsSpecialFolderSelected('Trash'))
|
|
{
|
|
RefreshThreadTreeView()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function MsgCompactFolder()
|
|
{
|
|
//get the selected elements
|
|
var tree = GetFolderTree();
|
|
if (tree)
|
|
{
|
|
var folderList = tree.selectedItems;
|
|
if (folderList)
|
|
{
|
|
var i;
|
|
var folder;
|
|
for(i = 0; i < folderList.length; i++)
|
|
{
|
|
folder = folderList[i];
|
|
if (folder)
|
|
{
|
|
folderuri = folder.getAttribute('id');
|
|
dump(folderuri);
|
|
dump("folder = " + folder.nodeName + "\n");
|
|
messenger.CompactFolder(tree.database, folder);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function MsgImport() {}
|
|
function MsgWorkOffline() {}
|
|
function MsgSynchronize() {}
|
|
function MsgGetSelectedMsg() {}
|
|
function MsgGetFlaggedMsg() {}
|
|
|
|
function MsgEditUndo()
|
|
{
|
|
messenger.Undo();
|
|
}
|
|
|
|
function MsgEditRedo()
|
|
{
|
|
messenger.Redo();
|
|
}
|
|
|
|
function MsgEditCut() {}
|
|
function MsgEditCopy() {}
|
|
function MsgEditPaste() {}
|
|
function MsgSelectAll() {}
|
|
function MsgSelectThread() {}
|
|
function MsgSelectFlaggedMsg() {}
|
|
function MsgFind() {}
|
|
function MsgFindAgain() {}
|
|
|
|
function MsgSearchMessages() {
|
|
window.openDialog("chrome://messenger/content/SearchDialog.xul", "SearchMail", "chrome");
|
|
}
|
|
|
|
function MsgFilters() {
|
|
window.openDialog("chrome://messenger/content/FilterListDialog.xul", "FilterDialog", "chrome");
|
|
}
|
|
|
|
function MsgToggleMessagePane()
|
|
{
|
|
MsgToggleSplitter("messagePaneSplitter");
|
|
}
|
|
|
|
function MsgToggleSplitter(id)
|
|
{
|
|
var splitter = document.getElementById("messagePaneSplitter");
|
|
var state = splitter.getAttribute("state");
|
|
if (state == "collapsed")
|
|
splitter.setAttribute("state", null);
|
|
else
|
|
splitter.setAttribute("state", "collapsed")
|
|
}
|
|
|
|
function MsgShowFolders()
|
|
{
|
|
|
|
|
|
}
|
|
|
|
function MsgFolderProperties() {}
|
|
|
|
function MsgShowMsgToolbar() {}
|
|
function MsgShowLocationbar() {}
|
|
function MsgSortByFlag() {}
|
|
function MsgSortByPriority() {}
|
|
function MsgSortBySize() {}
|
|
function MsgSortByThread() {}
|
|
function MsgSortByUnread() {}
|
|
function MsgSortByOrderReceived() {}
|
|
function MsgSortAscending() {}
|
|
function MsgSortDescending() {}
|
|
function MsgViewThreadsUnread() {}
|
|
function MsgViewWatchedThreadsUnread() {}
|
|
function MsgViewIgnoreThread() {}
|
|
function MsgViewAllHeaders() {}
|
|
function MsgViewNormalHeaders() {}
|
|
function MsgViewBriefHeaders() {}
|
|
function MsgViewAttachInline() {}
|
|
function MsgWrapLongLines() {}
|
|
function MsgIncreaseFont() {}
|
|
function MsgDecreaseFont() {}
|
|
function MsgReload() {}
|
|
function MsgShowImages() {}
|
|
function MsgRefresh() {}
|
|
function MsgStop() {}
|
|
function MsgViewPageSource() {}
|
|
function MsgViewPageInfo() {}
|
|
function MsgFirstUnreadMessage() {}
|
|
function MsgFirstFlaggedMessage() {}
|
|
function MsgNextMessage()
|
|
{
|
|
GoNextMessage(GoMessage, false);
|
|
}
|
|
|
|
function MsgNextUnreadMessage()
|
|
{
|
|
GoNextMessage(GoUnreadMessage, true);
|
|
}
|
|
function MsgNextFlaggedMessage()
|
|
{
|
|
GoNextMessage(GoFlaggedMessage, true);
|
|
}
|
|
|
|
function MsgPreviousMessage()
|
|
{
|
|
GoPreviousMessage(GoMessage, false);
|
|
}
|
|
|
|
function MsgPreviousUnreadMessage()
|
|
{
|
|
GoPreviousMessage(GoUnreadMessage, true);
|
|
}
|
|
|
|
function MsgPreviousFlaggedMessage()
|
|
{
|
|
GoPreviousMessage(GoFlaggedMessage, true);
|
|
}
|
|
|
|
function MsgGoBack() {}
|
|
function MsgGoForward() {}
|
|
function MsgEditMessageAsNew() {}
|
|
function MsgAddSenderToAddressBook() {}
|
|
function MsgAddAllToAddressBook() {}
|
|
|
|
function MsgMarkMsgAsRead(markRead)
|
|
{
|
|
dump("\MsgMarkMsgAsRead from XUL\n");
|
|
var tree = GetThreadTree();
|
|
//get the selected elements
|
|
var messageList = tree.selectedItems;
|
|
messenger.MarkMessagesRead(tree.database, messageList, markRead);
|
|
}
|
|
|
|
function MsgMarkThreadAsRead() {}
|
|
function MsgMarkByDate() {}
|
|
function MsgMarkAllRead()
|
|
{
|
|
var folderTree = GetFolderTree();;
|
|
var selectedFolderList = folderTree.selectedItems;
|
|
if(selectedFolderList.length > 0)
|
|
{
|
|
var selectedFolder = selectedFolderList[0];
|
|
messenger.MarkAllMessagesRead(folderTree.database, selectedFolder);
|
|
}
|
|
else {
|
|
dump("Nothing was selected\n");
|
|
}
|
|
}
|
|
|
|
function MsgMarkAsFlagged(markFlagged)
|
|
{
|
|
dump("\MsgMarkMsgAsFlagged from XUL\n");
|
|
var tree = GetThreadTree();
|
|
//get the selected elements
|
|
var messageList = tree.selectedItems;
|
|
messenger.MarkMessagesFlagged(tree.database, messageList, markFlagged);
|
|
|
|
}
|
|
|
|
function MsgIgnoreThread() {}
|
|
function MsgWatchThread() {}
|
|
|
|
var bindCount = 0;
|
|
function onStatus() {
|
|
var status = document.getElementById("Messenger:Status");
|
|
if ( status ) {
|
|
var text = status.getAttribute("value");
|
|
if ( text == "" ) {
|
|
text = defaultStatus;
|
|
}
|
|
var statusText = document.getElementById("statusText");
|
|
if ( statusText ) {
|
|
statusText.setAttribute( "value", text );
|
|
}
|
|
} else {
|
|
dump("Can't find status broadcaster!\n");
|
|
}
|
|
}
|
|
|
|
var startTime = 0;
|
|
function onProgress() {
|
|
var throbber = document.getElementById("Messenger:Throbber");
|
|
var meter = document.getElementById("Messenger:LoadingProgress");
|
|
if ( throbber && meter ) {
|
|
var busy = throbber.getAttribute("busy");
|
|
var wasBusy = meter.getAttribute("mode") == "undetermined" ? "true" : "false";
|
|
if ( busy == "true" ) {
|
|
if ( wasBusy == "false" ) {
|
|
// Remember when loading commenced.
|
|
startTime = (new Date()).getTime();
|
|
// Turn progress meter on.
|
|
meter.setAttribute("mode","undetermined");
|
|
}
|
|
// Update status bar.
|
|
} else if ( busy == "false" && wasBusy == "true" ) {
|
|
// Record page loading time.
|
|
var status = document.getElementById("Messenger:Status");
|
|
if ( status ) {
|
|
var elapsed = ( (new Date()).getTime() - startTime ) / 1000;
|
|
var msg = "Document: Done (" + elapsed + " secs)";
|
|
dump( msg + "\n" );
|
|
status.setAttribute("value",msg);
|
|
defaultStatus = msg;
|
|
}
|
|
// Turn progress meter off.
|
|
meter.setAttribute("mode","normal");
|
|
}
|
|
}
|
|
}
|
|
function dumpProgress() {
|
|
var broadcaster = document.getElementById("Messenger:LoadingProgress");
|
|
var meter = document.getElementById("meter");
|
|
dump( "bindCount=" + bindCount + "\n" );
|
|
dump( "broadcaster mode=" + broadcaster.getAttribute("mode") + "\n" );
|
|
dump( "broadcaster value=" + broadcaster.getAttribute("value") + "\n" );
|
|
dump( "meter mode=" + meter.getAttribute("mode") + "\n" );
|
|
dump( "meter value=" + meter.getAttribute("value") + "\n" );
|
|
}
|