亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? msgmail3panewindow.js

?? 現在很火的郵件客戶端軟件thunderbird的源碼
?? JS
?? 第 1 頁 / 共 5 頁
字號:
# -*- 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, 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):#   Jan Varga (varga@nixcorp.com)#   H錵an Waara (hwaara@chello.se)#   Neil Rashbrook (neil@parkwaycc.co.uk)#   Seth Spitzer <sspitzer@netscape.com>#   David Bienvenu <bienvenu@nventure.com>## Alternatively, the contents of this file may be used under the terms of# either 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 *****/* This is where functions related to the 3 pane window are kept */// from MailNewsTypes.hconst nsMsgKey_None = 0xFFFFFFFF;const nsMsgViewIndex_None = 0xFFFFFFFF;const kMailCheckOncePrefName = "mail.startup.enabledMailCheckOnce";const kStandardPaneConfig = 0;const kWidePaneConfig = 1;const kVerticalPaneConfig = 2;const kWideThreadPaneConfig = 3;const kNumFolderViews = 4; // total number of folder views// from nsMsgFolderFlags.hconst MSG_FOLDER_FLAG_ELIDED = 0x10;var gFolderTree; var gMessagePane;var gThreadTree;var gSearchInput;var gThreadAndMessagePaneSplitter = null;var gUnreadCount = null;var gTotalCount = null;var gCurrentPaneConfig = 0;var gCurrentFolderView;  var gCurrentLoadingFolderURI;var gCurrentFolderToReroot;var gCurrentLoadingFolderSortType = 0;var gCurrentLoadingFolderSortOrder = 0;var gCurrentLoadingFolderViewType = 0;var gCurrentLoadingFolderViewFlags = 0;var gRerootOnFolderLoad = false;var gNextMessageAfterDelete = null;var gNextMessageAfterLoad = null;var gNextMessageViewIndexAfterDelete = -2;var gSelectedIndexWhenDeleting = -1;var gCurrentlyDisplayedMessage=nsMsgViewIndex_None;var gStartFolderUri = null;var gStartMsgKey = nsMsgKey_None;var gSearchEmailAddress = null;var gRightMouseButtonDown = false;// Global var to keep track of which row in the thread pane has been selected// This is used to make sure that the row with the currentIndex has the selection// after a Delete or Move of a message that has a row index less than currentIndex.var gThreadPaneCurrentSelectedIndex = -1;var gLoadStartFolder = true;var gNewAccountToLoad = null;// Global var to keep track of if the 'Delete Message' or 'Move To' thread pane// context menu item was triggered.  This helps prevent the tree view from// not updating on one of those menu item commands.var gThreadPaneDeleteOrMoveOccurred = false;//If we've loaded a message, set to true.  Helps us keep the start page around.var gHaveLoadedMessage;var gDisplayStartupPage = false;var gNotifyDefaultInboxLoadedOnStartup = false;function SelectAndScrollToKey(aMsgKey){  // select the desired message  // if the key isn't found, we won't select anything  gDBView.selectMsgByKey(aMsgKey);    // is there a selection?  // if not, bail out.  var indicies = GetSelectedIndices(gDBView);  if (!indicies || !indicies.length)    return false;  // now scroll to it  EnsureRowInThreadTreeIsVisible(indicies[0]);  return true;}// A helper routine called after a folder is loaded to make sure// we select and scroll to the correct message (could be the first new message,// could be the last displayed message, etc.)// returns true if we ended up scrolling to a messagefunction ScrollToMessageAfterFolderLoad (folder){  var scrolled = pref.getBoolPref("mailnews.scroll_to_new_message") &&      ScrollToMessage(nsMsgNavigationType.firstNew, true, false /* selectMessage */);  if (!scrolled && folder && pref.getBoolPref("mailnews.remember_selected_message"))   {    // if we failed to scroll to a new message,    // reselect the last selected message    var lastMessageLoaded = folder.lastMessageLoaded;    if (lastMessageLoaded != nsMsgKey_None)      scrolled = SelectAndScrollToKey(lastMessageLoaded);  }    if (!scrolled)   {    // if we still haven't scrolled,    // scroll to the newest, which might be the top or the bottom    // depending on our sort order and sort type    if (gDBView.sortOrder == nsMsgViewSortOrder.ascending)     {      switch (gDBView.sortType)       {        case nsMsgViewSortType.byDate:         case nsMsgViewSortType.byId:         case nsMsgViewSortType.byThread:          scrolled = ScrollToMessage(nsMsgNavigationType.lastMessage, true, false /* selectMessage */);         break;      }    }          // if still we haven't scrolled,    // scroll to the top.    if (!scrolled)      EnsureRowInThreadTreeIsVisible(0);  }       return scrolled;}// the folderListener objectvar folderListener = {    OnItemAdded: function(parentItem, item) { },    OnItemRemoved: function(parentItem, item) { },    OnItemPropertyChanged: function(item, property, oldValue, newValue) { },    OnItemIntPropertyChanged: function(item, property, oldValue, newValue) {      if (item == gMsgFolderSelected) {        if(property.toString() == "TotalMessages" || property.toString() == "TotalUnreadMessages") {          UpdateStatusMessageCounts(gMsgFolderSelected);          UpdateFolderLocationPicker(item);        }            }    },    OnItemBoolPropertyChanged: function(item, property, oldValue, newValue) { },    OnItemUnicharPropertyChanged: function(item, property, oldValue, newValue) { },    OnItemPropertyFlagChanged: function(item, property, oldFlag, newFlag) { },    OnItemEvent: function(folder, event) {       var eventType = event.toString();       if (eventType == "FolderLoaded") {         if (folder) {           var msgFolder = folder.QueryInterface(Components.interfaces.nsIMsgFolder);           var uri = folder.URI;           var rerootingFolder = (uri == gCurrentFolderToReroot);           if (rerootingFolder) {             viewDebug("uri = gCurrentFolderToReroot, setting gQSViewIsDirty\n");             gQSViewIsDirty = true;             gCurrentFolderToReroot = null;             if(msgFolder) {               msgFolder.endFolderLoading();               UpdateStatusQuota(msgFolder);               // suppress command updating when rerooting the folder               // when rerooting, we'll be clearing the selection               // which will cause us to update commands.               if (gDBView) {                 gDBView.suppressCommandUpdating = true;                 // if the db's view isn't set, something went wrong and we should reroot                 // the folder, which will re-open the view.                 if (!gDBView.db)                   gRerootOnFolderLoad = true;               }               if (gRerootOnFolderLoad)                 RerootFolder(uri, msgFolder, gCurrentLoadingFolderViewType, gCurrentLoadingFolderViewFlags, gCurrentLoadingFolderSortType, gCurrentLoadingFolderSortOrder);               var db = msgFolder.getMsgDatabase(msgWindow);               if (db)                  db.resetHdrCacheSize(100);                                if (gDBView) {                 gDBView.suppressCommandUpdating = false;               }               gCurrentLoadingFolderSortType = 0;               gCurrentLoadingFolderSortOrder = 0;               gCurrentLoadingFolderViewType = 0;               gCurrentLoadingFolderViewFlags = 0;               var scrolled = false;               LoadCurrentlyDisplayedMessage();  //used for rename folder msg loading after folder is loaded.               if (gStartMsgKey != nsMsgKey_None) {                 scrolled = SelectAndScrollToKey(gStartMsgKey);                 gStartMsgKey = nsMsgKey_None;               }               if (gNextMessageAfterLoad) {                 var type = gNextMessageAfterLoad;                 gNextMessageAfterLoad = null;                 // scroll to and select the proper message                 scrolled = ScrollToMessage(type, true, true /* selectMessage */);               }             }           }           if (uri == gCurrentLoadingFolderURI) {             viewDebug("uri == current loading folder uri\n");             gCurrentLoadingFolderURI = "";             scrolled = ScrollToMessageAfterFolderLoad(msgFolder);                SetBusyCursor(window, false);           }           if (gNotifyDefaultInboxLoadedOnStartup && (folder.flags & 0x1000))           {              var defaultAccount = accountManager.defaultAccount;              defaultServer = defaultAccount.incomingServer;              var inboxFolder = GetInboxFolder(defaultServer);              if (inboxFolder && inboxFolder.URI == folder.URI)              {                NotifyObservers(null,"defaultInboxLoadedOnStartup",null);                gNotifyDefaultInboxLoadedOnStartup = false;              }           }           //folder loading is over, now issue quick search if there is an email address           viewDebug("in folder loaded gVirtualFolderTerms = " + gVirtualFolderTerms + "\n");           viewDebug("in folder loaded gMsgFolderSelected = " + gMsgFolderSelected.URI + "\n");           if (rerootingFolder)           {             if (gSearchEmailAddress)             {               Search(gSearchEmailAddress);               gSearchEmailAddress = null;             }              else if (gVirtualFolderTerms)             {                gDefaultSearchViewTerms = null;                viewDebug("searching gVirtualFolderTerms\n");                gDBView.viewFolder = gMsgFolderSelected;                ViewChangeByFolder(gMsgFolderSelected);             }             else if (gMsgFolderSelected.flags & MSG_FOLDER_FLAG_VIRTUAL)             {                viewDebug("selected folder is virtual\n");                gDefaultSearchViewTerms = null;             }             else             {                              // get the view value from the folder               if (msgFolder)               {                 // if our new view is the same as the old view and we already have the list of search terms built up                 // for the old view, just re-use it                 var result = GetMailViewForFolder(msgFolder);                 if (GetSearchInput() && gCurrentViewValue == result && gDefaultSearchViewTerms)                 {                   viewDebug("searching gDefaultSearchViewTerms and rerootingFolder\n");                   Search("");                 }                 else if (document.getElementById("mailviews-container")) // only load the folder view if the views toolbar is visible                 {                   viewDebug("changing view by value\n");                   ViewChangeByValue(result);                 }               }             }           }         }       }        else if (eventType == "ImapHdrDownloaded") {         if (folder) {           var imapFolder = folder.QueryInterface(Components.interfaces.nsIMsgImapMailFolder);           if (imapFolder) {            var hdrParser = imapFolder.hdrParser;            if (hdrParser) {              var msgHdr = hdrParser.GetNewMsgHdr();              if (msgHdr)              {                var hdrs = hdrParser.headers;                if (hdrs && hdrs.indexOf("X-attachment-size:") > 0) {                  msgHdr.OrFlags(0x10000000);  // 0x10000000 is MSG_FLAG_ATTACHMENT                }                if (hdrs && hdrs.indexOf("X-image-size:") > 0) {                  msgHdr.setStringProperty("imageSize", "1");                }              }            }           }         }       }       else if (eventType == "DeleteOrMoveMsgCompleted") {         HandleDeleteOrMoveMsgCompleted(folder);       }            else if (eventType == "DeleteOrMoveMsgFailed") {         HandleDeleteOrMoveMsgFailed(folder);       }       else if (eventType == "AboutToCompact") {        if (gDBView)          gCurrentlyDisplayedMessage = gDBView.currentlyDisplayedMessage;       }       else if (eventType == "CompactCompleted") {         HandleCompactCompleted(folder);       }       else if (eventType == "RenameCompleted") {         SelectFolder(folder.URI);       }       else if (eventType == "JunkStatusChanged") {         HandleJunkStatusChanged(folder);       }    }}var folderObserver = {    canDrop: function(index, orientation)    {        return CanDropOnFolderTree(index, orientation);    },    onDrop: function(row, orientation)    {        DropOnFolderTree(row, orientation);    },    onToggleOpenState: function(index)    {      var folderTree = GetFolderTree();      // Nothing to do when collapsing an item.      if (folderTree.view.isContainerOpen(index))        return;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91成人免费网站| 日韩欧美成人一区二区| 在线观看网站黄不卡| 欧美日韩一区中文字幕| 成人激情av网| 欧美性生活久久| 精品日韩一区二区三区免费视频| 久久中文字幕电影| 一区二区三区在线播| 韩日欧美一区二区三区| 色综合咪咪久久| 久久人人爽人人爽| 亚洲精品国产精品乱码不99| 亚洲va在线va天堂| 成人免费av在线| 日韩西西人体444www| 中文字幕视频一区| 北条麻妃国产九九精品视频| 粉嫩绯色av一区二区在线观看| 日本电影欧美片| 国产欧美日韩三区| 日韩激情视频在线观看| 99久久久精品| 国产日韩精品一区| 久久精品噜噜噜成人av农村| 99久久精品免费看| 欧美国产视频在线| 美女视频免费一区| 欧美日韩久久不卡| 中文字幕日韩av资源站| 精品中文av资源站在线观看| 欧美优质美女网站| 日本一二三四高清不卡| 久久99精品久久久久久动态图| 欧美性大战久久久久久久| 日韩一区欧美一区| 国产成人在线观看免费网站| 日本伦理一区二区| 国产欧美一区二区精品婷婷| 蜜臂av日日欢夜夜爽一区| 欧美欧美欧美欧美| 一区二区三区成人在线视频| 成人免费视频网站在线观看| www久久久久| 精品亚洲porn| 欧美α欧美αv大片| 日本女人一区二区三区| 欧美蜜桃一区二区三区| 中文字幕亚洲一区二区av在线 | 久久免费美女视频| 美女免费视频一区二区| 日韩欧美123| 蜜乳av一区二区三区| 日韩欧美一区在线| 蜜桃av一区二区三区电影| 欧美一级免费大片| 麻豆成人久久精品二区三区红| 在线精品国精品国产尤物884a| 亚洲蜜臀av乱码久久精品 | 亚洲免费色视频| 99综合电影在线视频| 日韩一区在线免费观看| 裸体健美xxxx欧美裸体表演| 日韩精品综合一本久道在线视频| 热久久国产精品| 精品国产一区二区三区四区四| 久久精品噜噜噜成人av农村| 日韩欧美不卡在线观看视频| 国产一区欧美一区| 国产精品萝li| 精品美女在线播放| 国产精品综合一区二区| 26uuu国产一区二区三区| 午夜精品福利在线| 日韩午夜激情视频| 国产成人精品亚洲午夜麻豆| 国产精品网站在线观看| 91在线观看地址| 日韩电影在线免费看| 精品国产露脸精彩对白 | 中文字幕一区二区三区不卡| 色综合天天综合色综合av | 一区二区三区毛片| 欧美一区二区在线免费播放| 国内欧美视频一区二区| 中文字幕中文字幕在线一区 | 欧美成人乱码一区二区三区| 狠狠色丁香婷婷综合| 国产精品久久久久久亚洲伦| 91麻豆国产在线观看| 琪琪一区二区三区| 精品国产人成亚洲区| av在线不卡免费看| 日本成人超碰在线观看| 日韩激情一区二区| www国产精品av| 日本高清不卡视频| 亚洲成人精品一区| 日韩午夜激情免费电影| 99精品视频在线播放观看| 精品夜夜嗨av一区二区三区| 精品国产伦一区二区三区观看方式| 91蝌蚪国产九色| 自拍视频在线观看一区二区| 欧美日韩国产首页| jlzzjlzz亚洲日本少妇| 日本欧美韩国一区三区| 亚洲人精品午夜| 26uuu国产一区二区三区| 欧美亚洲国产一区在线观看网站| 国产大陆a不卡| 免费在线观看一区| 欧美激情资源网| 欧美一区二区视频在线观看2020| 色屁屁一区二区| 成人理论电影网| 国产一区二三区| 蜜臀av性久久久久蜜臀av麻豆| 亚洲欧美日韩久久精品| 中文字幕免费不卡在线| 精品国产一区二区三区av性色| 精品视频999| 成人91在线观看| 成人黄色小视频在线观看| 天天综合色天天综合| 一区二区三区四区在线免费观看| 亚洲高清免费视频| 一级特黄大欧美久久久| 精品国产123| 91精品久久久久久久99蜜桃| 在线观看一区二区视频| 99久久精品免费看国产| 精品一区二区三区视频在线观看 | 欧美视频一二三区| 在线观看中文字幕不卡| 日本精品视频一区二区| 日本韩国欧美一区二区三区| 99久久免费精品高清特色大片| av电影一区二区| 欧美精品电影在线播放| 日韩免费观看2025年上映的电影| 国产亚洲污的网站| 亚洲精品国产一区二区三区四区在线| 亚洲国产成人精品视频| 奇米一区二区三区av| 国产高清精品网站| 欧美这里有精品| 亚洲欧美自拍偷拍| 中文字幕av不卡| 亚洲第一福利视频在线| 蜜桃视频在线观看一区二区| 国产成人8x视频一区二区 | 欧美视频精品在线观看| 日韩欧美一区中文| 中文字幕一区二区三| 日本一不卡视频| 91视频www| 久久蜜桃一区二区| 亚洲无人区一区| 成人综合在线视频| 欧美男生操女生| 亚洲欧美在线视频| 麻豆国产精品一区二区三区| 91在线你懂得| 国产片一区二区| 麻豆国产精品777777在线| 色综合久久久久久久久| 欧美精品一区在线观看| 亚洲一区日韩精品中文字幕| 国产精华液一区二区三区| 欧美日韩国产成人在线91| 中文字幕不卡三区| 韩国理伦片一区二区三区在线播放| 一本色道久久综合精品竹菊| 国产亚洲欧洲997久久综合| 视频一区视频二区在线观看| voyeur盗摄精品| 久久伊人蜜桃av一区二区| 五月婷婷综合激情| 日本久久精品电影| 亚洲欧洲精品成人久久奇米网| 国产精品久久一卡二卡| 午夜一区二区三区视频| 91视频在线观看| 国产精品欧美精品| 日本欧美加勒比视频| 欧美亚洲一区二区三区四区| 国产精品短视频| 懂色av中文一区二区三区| 精品国产免费人成在线观看| 日日骚欧美日韩| 欧美女孩性生活视频| 亚洲大片在线观看| 欧美三级日韩三级| 亚洲综合清纯丝袜自拍| 色综合久久天天综合网| 18成人在线观看| 一本久久精品一区二区| 亚洲色图一区二区| 91久久精品网|