mail3panewindowcommands.js

来自「现在很火的邮件客户端软件thunderbird的源码」· JavaScript 代码 · 共 1,151 行 · 第 1/3 页

JS
1,151
字号
        return (gDBView.viewFlags & nsMsgViewFlagsType.kThreadedDisplay);      case "cmd_nextFlaggedMsg":      case "cmd_previousFlaggedMsg":        return IsViewNavigationItemEnabled();      case "cmd_viewAllMsgs":      case "cmd_viewUnreadMsgs":      case "cmd_viewThreadsWithUnread":      case "cmd_viewWatchedThreadsWithUnread":      case "cmd_viewIgnoredThreads":        return gDBView;      case "cmd_stop":        return true;      case "cmd_undo":      case "cmd_redo":          return SetupUndoRedoCommand(command);      case "cmd_renameFolder":        return IsRenameFolderEnabled();      case "cmd_sendUnsentMsgs":        return IsSendUnsentMsgsEnabled(null);      case "cmd_properties":        return IsPropertiesEnabled(command);      case "button_getNewMessages":      case "cmd_getNewMessages":      case "cmd_getMsgsForAuthAccounts":        return IsGetNewMessagesEnabled();      case "cmd_getNextNMessages":        return IsGetNextNMessagesEnabled();      case "cmd_emptyTrash":        return IsEmptyTrashEnabled();      case "cmd_compactFolder":        return IsCompactFolderEnabled();      case "cmd_setFolderCharset":        return IsFolderCharsetEnabled();      case "cmd_close":        return true;      case "cmd_downloadFlagged":        return(IsFolderSelected() && MailOfflineMgr.isOnline());      case "cmd_downloadSelected":        return (IsFolderSelected() && MailOfflineMgr.isOnline() && GetNumSelectedMessages() > 0);      case "cmd_synchronizeOffline":        return MailOfflineMgr.isOnline() && IsAccountOfflineEnabled();             case "cmd_settingsOffline":        return IsAccountOfflineEnabled();      case "cmd_moveToFolderAgain":        return (pref.getCharPref("mail.last_msg_movecopy_target_uri") && GetNumSelectedMessages() > 0);      default:        return false;    }    return false;  },	doCommand: function(command)	{    // if the user invoked a key short cut then it is possible that we got here for a command which is    // really disabled. kick out if the command should be disabled.    if (!this.isCommandEnabled(command)) return;   		switch ( command )		{			case "cmd_close":				CloseMailWindow();				break;      case "button_getNewMessages":			case "cmd_getNewMessages":				MsgGetMessage();				break;      case "cmd_getMsgsForAuthAccounts":        MsgGetMessagesForAllAuthenticatedAccounts();        break;			case "cmd_getNextNMessages":				MsgGetNextNMessages();				break;			case "cmd_reply":				MsgReplyMessage(null);				break;			case "cmd_replySender":				MsgReplySender(null);				break;			case "cmd_replyGroup":				MsgReplyGroup(null);				break;			case "cmd_replyall":				MsgReplyToAllMessage(null);				break;			case "cmd_forward":				MsgForwardMessage(null);				break;			case "cmd_forwardInline":				MsgForwardAsInline(null);				break;			case "cmd_forwardAttachment":				MsgForwardAsAttachment(null);				break;			case "cmd_editAsNew":				MsgEditMessageAsNew();				break;      case "cmd_createFilterFromMenu":        MsgCreateFilter();        break;              case "cmd_createFilterFromPopup":        break;// This does nothing because the createfilter is invoked from the popupnode oncommand.			case "button_delete":			case "cmd_delete":         // if the user deletes a message before its mark as read timer goes off, we should mark it as read         // this ensures that we clear the biff indicator from the system tray when the user deletes the new message        if (gMarkViewedMessageAsReadTimer)          MarkCurrentMessageAsRead();        SetNextMessageAfterDelete();        gDBView.doCommand(nsMsgViewCommandType.deleteMsg);				break;			case "cmd_shiftDelete":        if (gMarkViewedMessageAsReadTimer)          MarkCurrentMessageAsRead();        SetNextMessageAfterDelete();        gDBView.doCommand(nsMsgViewCommandType.deleteNoTrash);				break;      case "cmd_killThread":        /* kill thread kills the thread and then does a next unread */      	GoNextMessage(nsMsgNavigationType.toggleThreadKilled, true);        break;      case "cmd_watchThread":        gDBView.doCommand(nsMsgViewCommandType.toggleThreadWatched);        break;      case "button_next":			case "cmd_nextUnreadMsg":				MsgNextUnreadMessage();				break;			case "cmd_nextUnreadThread":				MsgNextUnreadThread();				break;			case "cmd_nextMsg":				MsgNextMessage();				break;			case "cmd_nextFlaggedMsg":				MsgNextFlaggedMessage();				break;			case "cmd_previousMsg":				MsgPreviousMessage();				break;      case "button_previous":			case "cmd_previousUnreadMsg":				MsgPreviousUnreadMessage();				break;			case "cmd_previousFlaggedMsg":				MsgPreviousFlaggedMessage();				break;      case "button_goForward":      case "cmd_goForward":        MsgGoForward();        break;      case "button_goBack":      case "cmd_goBack":        MsgGoBack();        break;      case "cmd_goStartPage":        HideMessageHeaderPane();        loadStartPage();        break;			case "cmd_viewAllMsgs":      case "cmd_viewThreadsWithUnread":      case "cmd_viewWatchedThreadsWithUnread":			case "cmd_viewUnreadMsgs":      case "cmd_viewIgnoredThreads":				SwitchView(command);				break;			case "cmd_undo":				messenger.Undo(msgWindow);				break;			case "cmd_redo":				messenger.Redo(msgWindow);				break;			case "cmd_expandAllThreads":        gDBView.doCommand(nsMsgViewCommandType.expandAll);				break;			case "cmd_collapseAllThreads":        gDBView.doCommand(nsMsgViewCommandType.collapseAll);				break;			case "cmd_renameFolder":				MsgRenameFolder();				return;			case "cmd_sendUnsentMsgs":				MsgSendUnsentMsgs();				return;			case "cmd_openMessage":        MsgOpenSelectedMessages();				return;			case "cmd_printSetup":			  NSPrintSetup();			  return;			case "cmd_print":				PrintEnginePrint();				return;			case "cmd_printpreview":				PrintEnginePrintPreview();				return;			case "cmd_saveAsFile":				MsgSaveAsFile();				return;			case "cmd_saveAsTemplate":				MsgSaveAsTemplate();				return;			case "cmd_viewPageSource":				MsgViewPageSource();				return;			case "cmd_setFolderCharset":				MsgSetFolderCharset();				return;			case "cmd_reload":				MsgReload();				return;			case "cmd_find":        // make sure the message pane has focus before we start a find since we only support searching        // within the message body. Do it here and not in MsgFind() which can be called from standalone where we don't want to set focus        SetFocusMessagePane(); 				MsgFind();				return;			case "cmd_findAgain":        // make sure the message pane has focus before we start a find since we only support searching        // within the message body. Do it here and not in MsgFind() which can be called from standalone where we don't want to set focus        SetFocusMessagePane(); 				MsgFindAgain(false);				return;			case "cmd_findPrevious":        // make sure the message pane has focus before we start a find since we only support searching        // within the message body. Do it here and not in MsgFind() which can be called from standalone where we don't want to set focus        SetFocusMessagePane(); 				MsgFindAgain(true);				return;      case "cmd_markReadByDate":        MsgMarkReadByDate();        return;      case "cmd_properties":        MsgFolderProperties();        return;      case "cmd_search":        MsgSearchMessages();        return;      case "button_mark":			case "cmd_markAsRead":				MsgMarkMsgAsRead(null);				return;			case "cmd_markThreadAsRead":				MsgMarkThreadAsRead();				return;			case "cmd_markAllRead":        gDBView.doCommand(nsMsgViewCommandType.markAllRead);				return;             case "button_junk":        MsgJunk();        return;      case "cmd_stop":        MsgStop();        return;			case "cmd_markAsFlagged":				MsgMarkAsFlagged(null);				return;			case "cmd_markAsJunk":        JunkSelectedMessages(true);				return;			case "cmd_markAsNotJunk":        JunkSelectedMessages(false);				return;      case "cmd_recalculateJunkScore":        analyzeMessagesForJunk();        return;      case "cmd_applyFilters":        MsgApplyFilters(null);        return;      case "cmd_runJunkControls":        analyzeFolderForJunk();        return;      case "cmd_deleteJunk":        deleteJunkInFolder();        return;			case "cmd_emptyTrash":				MsgEmptyTrash();				return;			case "cmd_compactFolder":				MsgCompactFolder(true);				return;      case "cmd_downloadFlagged":          MsgDownloadFlagged();          break;      case "cmd_downloadSelected":          MsgDownloadSelected();          break;      case "cmd_synchronizeOffline":          MsgSynchronizeOffline();          break;      case "cmd_settingsOffline":          MailOfflineMgr.openOfflineAccountSettings();          break;      case "cmd_moveToFolderAgain":          var folderId = pref.getCharPref("mail.last_msg_movecopy_target_uri");          if (pref.getBoolPref("mail.last_msg_movecopy_was_move"))            MsgMoveMessage(folderId);          else            MsgCopyMessage(folderId);          break;      case "cmd_selectAll":          // move the focus so the user can delete the newly selected messages, not the folder          SetFocusThreadPane();          // if in threaded mode, the view will expand all before selecting all          gDBView.doCommand(nsMsgViewCommandType.selectAll)          if (gDBView.numSelected != 1) {              setTitleFromFolder(gDBView.msgFolder,null);              ClearMessagePane();          }          break;      case "cmd_selectThread":          gDBView.doCommand(nsMsgViewCommandType.selectThread);          break;		}	},		onEvent: function(event)	{		// on blur events set the menu item texts back to the normal values		if ( event == 'blur' )    {      goSetMenuValue('cmd_undo', 'valueDefault');      goSetMenuValue('cmd_redo', 'valueDefault');    }	}};function GetNumSelectedMessages(){    try {        return gDBView.numSelected;    }    catch (ex) {        return 0;    }}var gLastFocusedElement=null;function FocusRingUpdate_Mail(){  // WhichPaneHasFocus() uses on top.document.commandDispatcher.focusedElement  // to determine which pane has focus  // if the focusedElement is null, we're here on a blur.  // nsFocusController::Blur() calls nsFocusController::SetFocusedElement(null),   // which will update any commands listening for "focus".  // we really only care about nsFocusController::Focus() happens,   // which calls nsFocusController::SetFocusedElement(element)  var currentFocusedElement = WhichPaneHasFocus();        if (currentFocusedElement != gLastFocusedElement) {    if (currentFocusedElement)      currentFocusedElement.setAttribute("focusring", "true");        if (gLastFocusedElement)      gLastFocusedElement.removeAttribute("focusring");    gLastFocusedElement = currentFocusedElement;    // since we just changed the pane with focus we need to update the toolbar to reflect this    // XXX TODO    // can we optimize    // and just update cmd_delete and button_delete?    UpdateMailToolbar("focus");  }}function WhichPaneHasFocus(){  var threadTree = GetThreadTree();  var folderTree = GetFolderTree();  var messagePane = GetMessagePane();      if (top.document.commandDispatcher.focusedWindow == GetMessagePaneFrame())    return messagePane;	var currentNode = top.document.commandDispatcher.focusedElement;		while (currentNode) {    if (currentNode === threadTree ||        currentNode === folderTree ||        currentNode === messagePane)      return currentNode;    					currentNode = currentNode.parentNode;  }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?