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

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

?? msgmail3panewindow.js

?? 現在很火的郵件客戶端軟件thunderbird的源碼
?? JS
?? 第 1 頁 / 共 5 頁
字號:
      var folderResource = GetFolderResource(folderTree, index);      if (folderTree.view.getLevel(index) == 0)      {        // (Imap/Nntp/Pop) Account item.        folderResource.QueryInterface(Components.interfaces.nsIMsgFolder)                      .server.performExpand(msgWindow);      }      else if (folderResource instanceof Components.interfaces.nsIMsgImapMailFolder)      {        // Imap message folder item.        folderResource.performExpand(msgWindow);      }    },    onCycleHeader: function(colID, elt)    {    },    onCycleCell: function(row, colID)    {    },    onSelectionChanged: function()    {    },    onPerformAction: function(action)    {    },    onPerformActionOnRow: function(action, row)    {    },    onPerformActionOnCell: function(action, row, col)    {    }}function HandleDeleteOrMoveMsgFailed(folder){  gDBView.onDeleteCompleted(false);  if(IsCurrentLoadedFolder(folder)) {    if(gNextMessageAfterDelete) {      gNextMessageAfterDelete = null;      gNextMessageViewIndexAfterDelete = -2;    }  }  // fix me???  // ThreadPaneSelectionChange(true);}// WARNING// this is a fragile and complicated function.// be careful when hacking on it.// don't forget about things like different imap // delete models, multiple views (from multiple thread panes, // search windows, stand alone message windows)function HandleDeleteOrMoveMsgCompleted(folder){  // you might not have a db view.  this can happen if  // biff fires when the 3 pane is set to account central.  if (!gDBView)    return;  gDBView.onDeleteCompleted(true);  if (!IsCurrentLoadedFolder(folder)) {    // default value after delete/move/copy is over    gNextMessageViewIndexAfterDelete = -2;    return;  }  var treeView = gDBView.QueryInterface(Components.interfaces.nsITreeView);  var treeSelection = treeView.selection;            if (gNextMessageViewIndexAfterDelete == -2) {    // a move or delete can cause our selection can change underneath us.    // this can happen when the user    // deletes message from the stand alone msg window    // or the search view, or another 3 pane    if (treeSelection.count == 0) {      // this can happen if you double clicked a message      // in the thread pane, and deleted it from the stand alone msg window      // see bug #172392      treeSelection.clearSelection();      setTitleFromFolder(folder, null);      ClearMessagePane();      UpdateMailToolbar("delete from another view, 0 rows now selected");    }    else if (treeSelection.count == 1) {      // this can happen if you had two messages selected      // in the thread pane, and you deleted one of them from another view      // (like the view in the stand alone msg window)      // since one item is selected, we should load it.      var startIndex = {};      var endIndex = {};      treeSelection.getRangeAt(0, startIndex, endIndex);              // select the selected item, so we'll load it      treeSelection.select(startIndex.value);       treeView.selectionChanged();      EnsureRowInThreadTreeIsVisible(startIndex.value);       UpdateMailToolbar("delete from another view, 1 row now selected");    }    else {      // this can happen if you have more than 2 messages selected      // in the thread pane, and you deleted one of them from another view      // (like the view in the stand alone msg window)      // since multiple messages are still selected, do nothing.    }  }  else {    if (gNextMessageViewIndexAfterDelete != nsMsgViewIndex_None)     {      var viewSize = treeView.rowCount;      if (gNextMessageViewIndexAfterDelete >= viewSize)       {        if (viewSize > 0)          gNextMessageViewIndexAfterDelete = viewSize - 1;        else        {                     gNextMessageViewIndexAfterDelete = nsMsgViewIndex_None;          // there is nothing to select since viewSize is 0          treeSelection.clearSelection();          setTitleFromFolder(folder, null);          ClearMessagePane();          UpdateMailToolbar("delete from current view, 0 rows left");        }      }    }    // if we are about to set the selection with a new element then DON'T clear    // the selection then add the next message to select. This just generates    // an extra round of command updating notifications that we are trying to    // optimize away.    if (gNextMessageViewIndexAfterDelete != nsMsgViewIndex_None)     {      // when deleting a message we don't update the commands       // when the selection goes to 0      // (we have a hack in nsMsgDBView which prevents that update)       // so there is no need to      // update commands when we select the next message after the delete;       // the commands already      // have the right update state...      gDBView.suppressCommandUpdating = true;      // This check makes sure that the tree does not perform a      // selection on a non selected row (row < 0), else assertions will      // be thrown.      if (gNextMessageViewIndexAfterDelete >= 0)        treeSelection.select(gNextMessageViewIndexAfterDelete);              // if gNextMessageViewIndexAfterDelete has the same value       // as the last index we had selected, the tree won't generate a      // selectionChanged notification for the tree view. So force a manual      // selection changed call.       // (don't worry it's cheap if we end up calling it twice).      if (treeView)        treeView.selectionChanged();      EnsureRowInThreadTreeIsVisible(gNextMessageViewIndexAfterDelete);       gDBView.suppressCommandUpdating = false;      // hook for extra toolbar items      // XXX TODO      // I think there is a bug in the suppression code above.      // what if I have two rows selected, and I hit delete,       // and so we load the next row.      // what if I have commands that only enable where       // exactly one row is selected?      UpdateMailToolbar("delete from current view, at least one row selected");    }  }  // default value after delete/move/copy is over  gNextMessageViewIndexAfterDelete = -2;}function HandleCompactCompleted(folder){  if (folder)  {    var resource = folder.QueryInterface(Components.interfaces.nsIRDFResource);    if (resource)    {      var uri = resource.Value;      var msgFolder = msgWindow.openFolder;      if (msgFolder && uri == msgFolder.URI)      {        var msgdb = msgFolder.getMsgDatabase(msgWindow);        if (msgdb)        {          var dbFolderInfo = msgdb.dBFolderInfo;          sortType = dbFolderInfo.sortType;          sortOrder = dbFolderInfo.sortOrder;          viewFlags = dbFolderInfo.viewFlags;          viewType = dbFolderInfo.viewType;          dbFolderInfo = null;        }                RerootFolder(uri, msgFolder, viewType, viewFlags, sortType, sortOrder);        LoadCurrentlyDisplayedMessage();      }    }  }}function LoadCurrentlyDisplayedMessage(){  if (gCurrentlyDisplayedMessage != nsMsgViewIndex_None)  {    var treeView = gDBView.QueryInterface(Components.interfaces.nsITreeView);    var treeSelection = treeView.selection;    treeSelection.select(gCurrentlyDisplayedMessage);    if (treeView)      treeView.selectionChanged();    EnsureRowInThreadTreeIsVisible(gCurrentlyDisplayedMessage);    SetFocusThreadPane();    gCurrentlyDisplayedMessage = nsMsgViewIndex_None; //reset  }}function IsCurrentLoadedFolder(folder){  var msgfolder = folder.QueryInterface(Components.interfaces.nsIMsgFolder);  if(msgfolder)  {    var folderResource = msgfolder.QueryInterface(Components.interfaces.nsIRDFResource);    if(folderResource)    {      var folderURI = folderResource.Value;      var currentLoadedFolder = GetThreadPaneFolder();      if (currentLoadedFolder.flags & MSG_FOLDER_FLAG_VIRTUAL)      {        var msgDatabase = currentLoadedFolder.getMsgDatabase(msgWindow);        var dbFolderInfo = msgDatabase.dBFolderInfo;        var srchFolderUri = dbFolderInfo.getCharPtrProperty("searchFolderUri");        var re = new RegExp("^" + folderURI + "$|^" + folderURI + "\||\|" + folderURI + "$|\|" + folderURI +"\|");        var retval = (currentLoadedFolder.URI.match(re));        return retval;      }      var currentURI = currentLoadedFolder.URI;      return(currentURI == folderURI);    }  }  return false;}function ServerContainsFolder(server, folder){  if (!folder || !server)    return false;  return server.equals(folder.server);}function SelectServer(server){  SelectFolder(server.rootFolder.URI);}// we have this incoming server listener in case we need to// alter the folder pane selection when a server is removed// or changed (currently, when the real username or real hostname change)var gThreePaneIncomingServerListener = {    onServerLoaded: function(server) {},    onServerUnloaded: function(server) {      var selectedFolders = GetSelectedMsgFolders();      for (var i = 0; i < selectedFolders.length; i++) {        if (ServerContainsFolder(server, selectedFolders[i])) {          SelectServer(accountManager.defaultAccount.incomingServer);          // we've made a new selection, we're done          return;        }      }         // if nothing is selected at this point, better go select the default      // this could happen if nothing was selected when the server was removed      selectedFolders = GetSelectedMsgFolders();      if (selectedFolders.length == 0) {        SelectServer(accountManager.defaultAccount.incomingServer);      }    },    onServerChanged: function(server) {      // if the current selected folder is on the server that changed      // and that server is an imap or news server,       // we need to update the selection.       // on those server types, we'll be reconnecting to the server      // and our currently selected folder will need to be reloaded      // or worse, be invalid.      if (server.type != "imap" && server.type !="nntp")        return;      var selectedFolders = GetSelectedMsgFolders();      for (var i = 0; i < selectedFolders.length; i++) {        // if the selected item is a server, we don't have to update        // the selection        if (!(selectedFolders[i].isServer) && ServerContainsFolder(server, selectedFolders[i])) {          SelectServer(server);          // we've made a new selection, we're done          return;        }      }    }}// aMsgWindowInitialized: false if we are calling from the onload handler, otherwise truefunction UpdateMailPaneConfig(aMsgWindowInitialized) {  var paneConfig = pref.getIntPref("mail.pane_config.dynamic");    if (paneConfig == kStandardPaneConfig)    document.getElementById('messagepanebox').setAttribute('flex', 1);  else     document.getElementById('messagepanebox').removeAttribute('flex');        // don't do anything if we are already in the correct configuration  if (paneConfig == gCurrentPaneConfig)    return;  var mailContentWrapper = document.getElementById("mailContentWrapper");  var messagesBox = document.getElementById("messagesBox");  var messengerBox = document.getElementById("messengerBox");  var messagePaneBox = GetMessagePane();  var msgPaneReRooted = false;  var threadPaneSplitter = GetThreadAndMessagePaneSplitter();  // the only element we need to re-root is the message pane.  var desiredMsgPaneParentId = (paneConfig == "0" || paneConfig == "2" || paneConfig == "3") ? "messagesBox" : "mailContentWrapper";  if (messagePaneBox.parentNode.id != desiredMsgPaneParentId)  {     var messagePaneParent = document.getElementById(messagePaneBox.parentNode.id);     messagePaneParent.removeChild(threadPaneSplitter);     messagePaneParent.removeChild(messagePaneBox);     var messagePaneNewParent = document.getElementById(desiredMsgPaneParentId);     messagePaneNewParent.appendChild(threadPaneSplitter);      messagePaneNewParent.appendChild(messagePaneBox);      msgPaneReRooted = true;  }    /* this code doesn't work yet, see the comment below about kWideThreadPaneConfig  if (gCurrentPaneConfig == kWideThreadPaneConfig)  {       threadPaneSplitter.setAttribute("orient", "vertical");    mailContentWrapper.setAttribute("orient", "horizontal");    mailContentWrapper.removeChild(threadPaneSplitter);    mailContentWrapper.removeChild(messagePaneBox);    messagesBox.insertBefore(threadPaneSplitter, messagesBox.firstChild);    messagesBox.insertBefore(messengerBox, messagesBox.firstChild);    messagePaneBox.removeAttribute("flex");    msgPaneReRooted = true;  }  */  // now for each config, handle any extra clean up to create that view (such as changing a box orientation)  if (paneConfig == kStandardPaneConfig) // standard 3-Pane Layout  {         threadPaneSplitter.setAttribute("orient", "vertical");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91麻豆精品国产综合久久久久久| 国产成人三级在线观看| 国产女主播一区| 精品久久久久久久久久久院品网| 欧美美女直播网站| 欧美丰满一区二区免费视频 | 精品国产麻豆免费人成网站| 欧美老肥妇做.爰bbww| 精品视频一区二区三区免费| 欧美亚洲动漫制服丝袜| 欧美老女人第四色| 精品国产一区二区三区忘忧草| 日韩精品一区二| 久久精品欧美日韩| 一区免费观看视频| 亚洲激情图片小说视频| 日日摸夜夜添夜夜添亚洲女人| 午夜精品久久一牛影视| 六月丁香婷婷色狠狠久久| 国产一区激情在线| 欧美日韩aaa| 91精品欧美一区二区三区综合在| 精品日韩在线观看| 国产精品国模大尺度视频| 亚洲美女淫视频| 日韩精品国产欧美| 国产在线观看免费一区| 成人亚洲一区二区一| 欧美亚洲国产bt| 久久综合五月天婷婷伊人| 中文字幕视频一区| 婷婷成人综合网| 国产传媒欧美日韩成人| 色综合欧美在线| 精品久久久久久久一区二区蜜臀| 中文字幕一区二区视频| 蜜桃视频在线观看一区| 成人性生交大合| 91麻豆精品91久久久久同性| 国产精品理伦片| 五月婷婷综合激情| 成人视屏免费看| 欧美成人video| 亚洲一区二区三区四区五区中文 | 国产精品嫩草久久久久| 亚洲超碰精品一区二区| 成人黄色电影在线| 日韩欧美国产一区在线观看| 亚洲女人小视频在线观看| 麻豆精品一二三| 欧美中文字幕一区二区三区亚洲| 国产亚洲成av人在线观看导航| 亚洲电影激情视频网站| 成人国产一区二区三区精品| 欧美一区二区三级| 亚洲一区二三区| 不卡的电影网站| 久久亚洲精华国产精华液 | 精品av久久707| 午夜影院在线观看欧美| 色哟哟在线观看一区二区三区| 久久久美女毛片| 麻豆国产精品777777在线| 欧美日本一道本在线视频| 最近日韩中文字幕| 99久久精品国产观看| 中文字幕欧美三区| 国产一区二区按摩在线观看| 欧美成人女星排行榜| 日本少妇一区二区| 欧美男女性生活在线直播观看| 亚洲一区二区三区视频在线播放 | 亚洲黄色录像片| av一本久道久久综合久久鬼色| 久久久精品黄色| 国产福利91精品一区| 精品久久五月天| 国产美女一区二区三区| 精品国产一区二区三区久久影院| 久久97超碰色| 26uuu国产电影一区二区| 精一区二区三区| 国产丝袜美腿一区二区三区| 国产不卡在线视频| 国产精品乱码久久久久久| 欧洲一区在线电影| 午夜精品福利一区二区三区蜜桃| 欧美日韩一区二区三区在线| 亚洲一级不卡视频| 欧美日韩一区二区三区四区五区| 午夜免费久久看| 日韩久久久精品| 国产精品123区| 亚洲三级电影全部在线观看高清| 91蝌蚪porny| 五月婷婷久久综合| 欧美不卡一区二区三区四区| 国产成人鲁色资源国产91色综 | 日本在线不卡视频| 精品国产乱子伦一区| 风流少妇一区二区| 亚洲一区视频在线| 精品国产一区二区三区不卡| 国产成人精品一区二区三区四区 | 色av成人天堂桃色av| 五月激情综合网| 欧美激情一区二区在线| 欧美日韩一级黄| 国产盗摄一区二区三区| 一区二区三区在线观看网站| 欧美一区二区三区小说| 成人性生交大合| 午夜久久久久久久久| 国产欧美一二三区| 欧美日韩mp4| 99re8在线精品视频免费播放| 午夜精品一区二区三区电影天堂| 久久久久成人黄色影片| 欧美亚洲国产一卡| 成人午夜精品一区二区三区| 午夜在线电影亚洲一区| 中文字幕av在线一区二区三区| 8x8x8国产精品| 97精品电影院| 国产精品自产自拍| 丝袜美腿亚洲一区| 亚洲天堂网中文字| 久久久久久久久久久99999| 欧美性猛交xxxx黑人交| 成人av在线播放网站| 蜜臀久久久99精品久久久久久| 亚洲欧美另类综合偷拍| 国产亚洲精久久久久久| 日韩欧美电影一区| 67194成人在线观看| 色婷婷国产精品久久包臀| 粉嫩13p一区二区三区| 国产一区二区三区高清播放| 奇米影视7777精品一区二区| 亚洲激情欧美激情| 亚洲视频香蕉人妖| 亚洲国产岛国毛片在线| 国产午夜精品一区二区三区四区 | 91看片淫黄大片一级在线观看| 国产一区二区伦理片| 理论片日本一区| 人人超碰91尤物精品国产| 亚洲第一精品在线| 一区二区三区在线视频观看58| 亚洲欧洲日韩一区二区三区| 中国色在线观看另类| 国产日韩欧美精品在线| 久久久久国产精品免费免费搜索| 日韩欧美国产一区二区三区| 日韩欧美中文字幕制服| 日韩一级黄色大片| 精品久久久网站| 一区二区三区精品| 亚洲午夜激情网页| 一区二区三区在线视频观看| 亚洲三级免费观看| 亚洲国产精品久久人人爱蜜臀| 亚洲一区二区av电影| 亚洲国产成人av网| 丝袜亚洲另类欧美| 另类中文字幕网| 国产成人综合亚洲91猫咪| 成人在线视频一区二区| 成人福利视频网站| 欧美亚洲另类激情小说| 欧美日韩一区不卡| 精品日韩欧美一区二区| 国产亚洲精品资源在线26u| 亚洲色图欧美在线| 亚洲国产日韩在线一区模特| 婷婷久久综合九色综合绿巨人 | 国产成人一级电影| 99久久婷婷国产综合精品| 91蝌蚪porny| 4438亚洲最大| 精品福利在线导航| 中文字幕在线观看不卡视频| 亚洲一区二区偷拍精品| 精品亚洲免费视频| 91色porny蝌蚪| 日韩精品一区在线| 亚洲视频一区在线| 免费高清成人在线| 99精品桃花视频在线观看| 精品视频一区三区九区| 久久久久青草大香线综合精品| 中文字幕亚洲一区二区av在线| 亚洲成人av资源| 丁香婷婷综合色啪| 在线不卡一区二区| 国产精品国产三级国产三级人妇 | 精品一二三四在线| 91黄视频在线| 久久精品亚洲一区二区三区浴池| 亚洲精品视频自拍|