亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
久久女同精品一区二区| 精品国精品国产| 93久久精品日日躁夜夜躁欧美| 成人美女在线视频| 91论坛在线播放| 日韩一级免费一区| 国产女主播一区| 亚洲成人av在线电影| 国产精品99久久久久久宅男| 91天堂素人约啪| 欧美大胆人体bbbb| 自拍偷拍亚洲综合| 久久国产视频网| 91免费精品国自产拍在线不卡| 成人免费福利片| 日韩一区二区三区高清免费看看 | 亚洲不卡一区二区三区| 国产一区二区成人久久免费影院| 色综合一区二区| 日韩欧美综合一区| 欧美—级在线免费片| 亚洲一级片在线观看| 成人性生交大片免费看中文网站| av电影天堂一区二区在线 | 国产资源在线一区| 91激情五月电影| 久久久精品2019中文字幕之3| 一区二区三区在线视频免费观看| 国产精品白丝jk黑袜喷水| 欧美日韩一区精品| 26uuu精品一区二区| 天天综合日日夜夜精品| 91在线播放网址| 日本一区二区免费在线| 九九**精品视频免费播放| 欧美三级日韩三级国产三级| 久久精品网站免费观看| 激情综合一区二区三区| 日韩精品一区在线观看| 麻豆精品视频在线| 日韩欧美高清dvd碟片| 亚洲成人免费观看| 欧美精选在线播放| 亚洲成在人线在线播放| 一本高清dvd不卡在线观看 | 中文字幕一区二区三区四区不卡 | 日韩亚洲欧美综合| 图片区小说区区亚洲影院| 91黄色免费版| 一区二区三区四区蜜桃| 日本精品裸体写真集在线观看| 久久久久青草大香线综合精品| 久久精品国产秦先生| 91精品国产综合久久国产大片| 亚洲国产日产av| 自拍偷在线精品自拍偷无码专区| 国产一区二区三区综合| 国产肉丝袜一区二区| 久久国产尿小便嘘嘘尿| 欧美久久久久久久久| 日本女人一区二区三区| 91精品福利在线一区二区三区| 日韩成人一级大片| 欧美刺激午夜性久久久久久久| 男人操女人的视频在线观看欧美| 欧美一级视频精品观看| 久久爱另类一区二区小说| 精品国产一区二区三区久久影院| 国产伦精一区二区三区| 中文字幕亚洲不卡| 欧美日韩视频在线第一区 | 欧美午夜精品久久久久久超碰 | 国产精品综合久久| 国产女主播在线一区二区| 99视频超级精品| 午夜久久电影网| 国产亚洲欧美日韩日本| 国产一区二区三区美女| 亚洲精品乱码久久久久久黑人| 欧美电影在哪看比较好| 国产在线不卡视频| 亚洲麻豆国产自偷在线| 91精品国产一区二区三区| 国产成人鲁色资源国产91色综| 国产欧美va欧美不卡在线| 日本乱人伦aⅴ精品| 久久电影网站中文字幕| 国产精品女同一区二区三区| 欧美午夜精品免费| 国产精品18久久久久久久久| 亚洲色图19p| 精品国产百合女同互慰| 91亚洲大成网污www| 日本成人中文字幕| 亚洲手机成人高清视频| 日韩精品一区二区在线观看| 成人ar影院免费观看视频| 亚洲高清一区二区三区| 国产人久久人人人人爽| 欧美一区二区三区视频| 91麻豆精品秘密| 国产麻豆视频精品| 性做久久久久久| 中文字幕制服丝袜一区二区三区| 欧美一卡二卡在线| 色综合欧美在线| 从欧美一区二区三区| 免费看欧美女人艹b| 一个色在线综合| 国产精品国产三级国产有无不卡| 欧美美女一区二区三区| 色偷偷一区二区三区| 国产成人av一区二区三区在线| 午夜精品影院在线观看| 亚洲最色的网站| 久久老女人爱爱| 日韩女优av电影在线观看| 91在线porny国产在线看| 国产成人综合亚洲91猫咪| 国内精品在线播放| 免费观看在线综合| 奇米色777欧美一区二区| 午夜视频久久久久久| 国产精品美女一区二区三区| 久久婷婷久久一区二区三区| 日韩一区二区三免费高清| 欧美日韩亚州综合| 成人小视频免费在线观看| 国产精品99久久久久久有的能看| 日本成人在线不卡视频| 激情综合色综合久久| 国产一区二区三区在线观看免费| 国产精品一区2区| 成人高清伦理免费影院在线观看| 91麻豆免费观看| 3d成人动漫网站| 国产三级一区二区| 亚洲最大成人综合| 免费观看一级欧美片| 国产成人综合亚洲网站| 色综合av在线| 日韩欧美视频在线| 国产精品你懂的在线欣赏| 亚洲乱码日产精品bd| 美女视频黄 久久| www.色精品| 日韩三级在线免费观看| 国产精品网站在线| 丝袜亚洲精品中文字幕一区| 高清av一区二区| 欧美另类z0zxhd电影| 日本一区二区三区国色天香| 亚洲18色成人| 99久久伊人久久99| 欧美夫妻性生活| 国产精品―色哟哟| 日韩极品在线观看| 不卡一二三区首页| 日韩一区二区免费在线电影| 中文字幕在线观看不卡视频| 日本欧美在线观看| 色素色在线综合| 亚洲国产精品成人综合 | 国产精品情趣视频| 日韩精品一卡二卡三卡四卡无卡| 成人av影院在线| 日韩欧美国产三级电影视频| 一级日本不卡的影视| 成人午夜精品在线| 26uuu国产一区二区三区| 亚洲大片一区二区三区| 91在线视频18| 日本一二三四高清不卡| 狠狠色伊人亚洲综合成人| 欧美视频在线一区| 日韩美女啊v在线免费观看| 国产精品18久久久久| 日韩欧美国产一区二区三区| 午夜av一区二区三区| 色婷婷国产精品| 亚洲嫩草精品久久| 99久久精品99国产精品| 国产女主播一区| 国产精品1区2区| 久久久久国产精品麻豆ai换脸 | 日韩精品一级中文字幕精品视频免费观看 | 亚洲mv在线观看| 日本精品一区二区三区四区的功能| 国产精品入口麻豆原神| 国产麻豆精品在线| 久久久久久黄色| 国产精品一区二区91| 久久久综合网站| 国产精品一区二区在线看| 久久久91精品国产一区二区精品| 久久国产精品99久久人人澡| 日韩一区二区三区视频在线 | 精品国产乱码久久久久久图片| 另类成人小视频在线| 亚洲精品一区二区三区在线观看|