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

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

?? feed-subscriptions.js

?? 現在很火的郵件客戶端軟件thunderbird的源碼
?? JS
?? 第 1 頁 / 共 3 頁
字號:
# -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-# ***** 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 Thunderbird RSS Subscription Manager## The Initial Developer of the Original Code is# The Mozilla Foundation.# Portions created by the Initial Developer are Copyright (C) 2005# the Initial Developer. All Rights Reserved.## Contributor(s):#  Scott MacGregor <mscott@mozilla.org>## 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 ******const MSG_FOLDER_FLAG_TRASH = 0x0100;const IPS = Components.interfaces.nsIPromptService;const nsIDragService = Components.interfaces.nsIDragService;const kRowIndexUndefined = -1;var gFeedSubscriptionsWindow = {  mFeedContainers   : [],  mTree             : null,  mBundle           : null,  mRSSServer        : null,  init: function ()  {      // extract the server argument    if (window.arguments[0].server)      this.mRSSServer = window.arguments[0].server;        var docshell = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)                        .getInterface(Components.interfaces.nsIWebNavigation)                        .QueryInterface(Components.interfaces.nsIDocShell);            docshell.allowAuth = true;    this.mTree = document.getElementById("rssSubscriptionsList");    this.mBundle = document.getElementById("bundle_newsblog");       this.loadSubscriptions();    this.mTree.treeBoxObject.view = this.mView;    if (this.mView.rowCount > 0)       this.mTree.view.selection.select(0);  },    uninit: function ()  {    var dismissDialog = true;    // if we are in the middle of subscribing to a feed, inform the user that     // dismissing the dialog right now will abort the feed subscription.    // cheat and look at the disabled state of the add button to determine if we are in the middle of a new subscription    if (document.getElementById('addFeed').getAttribute('disabled'))    {      var promptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"].getService(IPS);      var newsBlogBundle = document.getElementById("bundle_newsblog");      dismissDialog = !(promptService.confirmEx(window, newsBlogBundle.getString('subscribe-cancelSubscriptionTitle'),                                        newsBlogBundle.getString('subscribe-cancelSubscription'),                                        (IPS.BUTTON_TITLE_YES * IPS.BUTTON_POS_0) + (IPS.BUTTON_TITLE_NO * IPS.BUTTON_POS_1),                                       null, null, null, null, { }));        }      return dismissDialog;  },    mView:   {    mRowCount   : 0,    get rowCount()     {       return this.mRowCount;     },        getItemAtIndex: function (aIndex)    {      return gFeedSubscriptionsWindow.mFeedContainers[aIndex];    },    removeItemAtIndex: function (aIndex, aCount)    {      var itemToRemove = this.getItemAtIndex(aIndex);      if (!itemToRemove)         return;      var parentIndex = this.getParentIndex(aIndex);      if (parentIndex != kRowIndexUndefined)      {        var parent = this.getItemAtIndex(parentIndex);        if (parent)        {          for (var index = 0; index < parent.children.length; index++)            if (parent.children[index] == itemToRemove)            {              parent.children.splice(index, 1);              break;            }        }      }      // now remove it from our view      gFeedSubscriptionsWindow.mFeedContainers.splice(aIndex, 1);      // now invalidate the correct tree rows      var tbo = gFeedSubscriptionsWindow.mTree.treeBoxObject;      this.mRowCount--;      tbo.rowCountChanged(aIndex, -1);      // now update the selection position      if (aIndex < gFeedSubscriptionsWindow.mFeedContainers.length)        this.selection.select(aIndex);      else         this.selection.clearSelection();      // now refocus the tree      gFeedSubscriptionsWindow.mTree.focus();    },        getCellText: function (aIndex, aColumn)    {      var item = this.getItemAtIndex(aIndex);      if (!item)         return "";      else if (aColumn.id == "folderNameCol")        return item.name;    },    _selection: null,     get selection () { return this._selection; },    set selection (val) { this._selection = val; return val; },    getRowProperties: function (aIndex, aProperties) {},    getCellProperties: function (aIndex, aColumn, aProperties) {},    getColumnProperties: function (aColumn, aProperties) {},    isContainer: function (aIndex)    {      var item = this.getItemAtIndex(aIndex);      return item ? item.container : false;    },    isContainerOpen: function (aIndex)     {       var item = this.getItemAtIndex(aIndex);      return item ? item.open : false;    },    isContainerEmpty: function (aIndex)     {       var item = this.getItemAtIndex(aIndex);      if (!item)         return false;      return item.children.length == 0;    },    isSeparator: function (aIndex) { return false; },        isSorted: function (aIndex) { return false; },            canDrop: function (aIndex, aOrientation)     {       var dropResult = this.extractDragData();      return (aOrientation == Components.interfaces.nsITreeView.DROP_ON) &&                               dropResult.canDrop && (dropResult.url || (dropResult.index != kRowIndexUndefined));     },        mDropUrl: "",    mDropFolderUrl: "",    drop: function (aIndex, aOrientation)     {        var results = this.extractDragData();      if (!results.canDrop)        return;      if (results.url)      {        var folderItem = this.getItemAtIndex(aIndex);        // don't freeze the app that initiaed the drop just because we are in a loop waiting for the user        // to dimisss the add feed dialog....        this.mDropUrl = results.url;        this.mDropFolderUrl = folderItem.url;        setTimeout(processDrop, 0);      }       else if (results.index != kRowIndexUndefined)        gFeedSubscriptionsWindow.moveFeed(results.index, aIndex);    },        //  helper function for drag and drop    extractDragData: function()    {      var canDrop = false;      var urlToDrop;      var sourceIndex = kRowIndexUndefined;      var dragService = Components.classes["@mozilla.org/widget/dragservice;1"].getService().QueryInterface(nsIDragService);      var dragSession = dragService.getCurrentSession();      var transfer = Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);      transfer.addDataFlavor("text/x-moz-url");      transfer.addDataFlavor("text/x-moz-feed-index");          dragSession.getData (transfer, 0);      var dataObj = new Object();      var flavor = new Object();      var len = new Object();      try {        transfer.getAnyTransferData(flavor, dataObj, len);         } catch (ex) { return { canDrop: false, url: "" }; }      if (dataObj.value)      {        dataObj = dataObj.value.QueryInterface(Components.interfaces.nsISupportsString);              sourceUri = dataObj.data.substring(0, len.value); // pull the URL out of the data object             if (flavor.value == 'text/x-moz-url')        {          var uri = Components.classes["@mozilla.org/network/standard-url;1"].createInstance(Components.interfaces.nsIURI);          uri.spec = sourceUri.split("\n")[0];                      if (uri.schemeIs("http") || uri.schemeIs("https"))          {            urlToDrop = uri.spec;            canDrop = true;          }        }         else if (flavor.value == 'text/x-moz-feed-index')        {          sourceIndex = parseInt(sourceUri);          canDrop = true;        }      }  // if dataObj.value      return { canDrop: canDrop, url: urlToDrop, index: sourceIndex };    },    getParentIndex: function (aIndex)     {      var item = this.getItemAtIndex(aIndex);      if (item)      {        for (var index = aIndex; index >= 0; index--)          if (gFeedSubscriptionsWindow.mFeedContainers[index].level <  item.level)            return index;      }         return kRowIndexUndefined;    },        hasNextSibling: function (aParentIndex, aIndex)     {       var item = this.getItemAtIndex(aIndex);      if (item)       {        // if the next node in the view has the same level as us, then we must have a next sibling...        if (aIndex + 1 < gFeedSubscriptionsWindow.mFeedContainers.length )          return this.getItemAtIndex(aIndex + 1).level == item.level;      }      return false;    },    hasPreviousSibling: function (aIndex)    {      var item = this.getItemAtIndex(aIndex);      if (item && aIndex)        return this.getItemAtIndex(aIndex - 1).level == item.level;      else        return false;          },    getLevel: function (aIndex)     {      var item = this.getItemAtIndex(aIndex);      if (!item)         return 0;      return item.level;    },    getImageSrc: function (aIndex, aColumn) {},        getProgressMode: function (aIndex, aColumn) {},        getCellValue: function (aIndex, aColumn) {},    setTree: function (aTree) {},        toggleOpenState: function (aIndex)     {      var item = this.getItemAtIndex(aIndex);      if (!item) return;      // save off the current selection item      var seln = this.selection;      var currentSelectionIndex = seln.currentIndex;      var multiplier = item.open ? -1 : 1;      var delta = multiplier * item.children.length;      this.mRowCount += delta;      if (multiplier < 0)        gFeedSubscriptionsWindow.mFeedContainers.splice(aIndex + 1, item.children.length);      else        for (var i = 0; i < item.children.length; i++)          gFeedSubscriptionsWindow.mFeedContainers.splice(aIndex + 1 + i, 0, item.children[i]);      // add or remove the children from our view      item.open = !item.open;      gFeedSubscriptionsWindow.mTree.treeBoxObject.rowCountChanged(aIndex, delta);      // now restore selection      seln.select(currentSelectionIndex);          },        cycleHeader: function (aColumn) {},        selectionChanged: function () {},        cycleCell: function (aIndex, aColumn) {},        isEditable: function (aIndex, aColumn)     {       return false;     },    setCellValue: function (aIndex, aColumn, aValue) {},        setCellText: function (aIndex, aColumn, aValue) {},        performAction: function (aAction) {},      performActionOnRow: function (aAction, aIndex) {},        performActionOnCell: function (aAction, aindex, aColumn) {}  },    makeFolderObject: function (aFolder, aCurrentLevel)  {    var folderObject =  { children : [],                          name     : aFolder.prettiestName,                          level    : aCurrentLevel,                          url      : aFolder.QueryInterface(Components.interfaces.nsIRDFResource).Value,                          open     : false,                          container: true };    // if a feed has any sub folders, we should add them to the list of children    if (aFolder.hasSubFolders)    {      var folderEnumerator = aFolder.GetSubFolders();      var done = false;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品日韩专区silk| 久久久不卡影院| 国产精品一二一区| 亚洲最大的成人av| 国产三级一区二区| 日韩欧美国产三级电影视频| 久久精品国产秦先生| 久久99热国产| 图片区小说区国产精品视频 | 一区二区国产盗摄色噜噜| 欧美一区二区三区四区高清| 一本大道久久a久久综合| 成人av中文字幕| 国产成人免费xxxxxxxx| 国产一区不卡在线| 麻豆精品久久精品色综合| 天堂在线亚洲视频| 国产精品麻豆视频| 一区二区在线观看免费视频播放| 久久综合狠狠综合久久激情| 日本精品视频一区二区| 欧美伊人久久久久久久久影院| 99久久免费视频.com| 狠狠色丁香久久婷婷综合丁香| 国产91精品一区二区麻豆网站| 国产在线视频一区二区三区| 久久99精品一区二区三区三区| 免播放器亚洲一区| 国产成人免费9x9x人网站视频| 成人午夜看片网址| 99久久精品国产导航| 欧美影片第一页| 欧美亚洲国产一区二区三区va | 亚洲国产成人av网| 亚洲图片欧美视频| 日本亚洲天堂网| 水蜜桃久久夜色精品一区的特点| 国产自产视频一区二区三区| 国产一区视频网站| 成人免费黄色大片| 欧美中文字幕久久| 欧洲色大大久久| 国产午夜精品一区二区 | 国产日产欧美一区| 亚洲视频精选在线| 午夜精品久久久久影视| 国产一区在线观看视频| 色婷婷亚洲综合| 在线免费观看日韩欧美| 日韩精品一区二区三区蜜臀| 久久精品免视看| 日本不卡一二三| 91在线码无精品| 91精品啪在线观看国产60岁| 国产三级精品在线| 一区二区三区美女| 成人免费看的视频| 91精品国产全国免费观看| 久久久久久一级片| 一区二区三区久久| 一本色道**综合亚洲精品蜜桃冫 | 亚洲一区二区视频| 日韩精品1区2区3区| 91色九色蝌蚪| www国产精品av| 亚洲资源在线观看| 成人高清免费在线播放| 欧美老肥妇做.爰bbww视频| 一区二区三区欧美激情| 成人免费三级在线| 精品国产伦一区二区三区观看体验 | 日韩电影一二三区| 欧美丝袜第三区| 中文字幕一区在线| 精品一区二区三区免费毛片爱| 99热99精品| 欧美高清精品3d| 亚洲国产成人精品视频| www.一区二区| 国产精品视频看| 国产麻豆成人精品| 国产欧美一区二区精品仙草咪| 免费欧美日韩国产三级电影| 欧美午夜片在线观看| 亚洲少妇最新在线视频| 国产资源精品在线观看| 欧美大片一区二区三区| 日本一区中文字幕| 制服视频三区第一页精品| 午夜精品成人在线| 欧美视频日韩视频在线观看| 亚洲永久精品国产| 91免费精品国自产拍在线不卡| 久久久久97国产精华液好用吗| 日韩在线一区二区| 久久久久久久久久久久电影| 国产精品一区专区| 久久人人爽爽爽人久久久| 激情综合色综合久久综合| 久久精品欧美日韩精品| 成人免费视频视频在线观看免费| 久久久久久久久岛国免费| 久久99精品久久久久久久久久久久| 免费高清在线一区| 日韩欧美国产成人一区二区| 国产精品一二三四| 亚洲图片欧美一区| 国产欧美一区二区三区网站| 精品视频999| 成人午夜激情在线| 日本成人在线电影网| 国产精品午夜久久| 日韩欧美亚洲国产精品字幕久久久| 国产不卡一区视频| 婷婷亚洲久悠悠色悠在线播放| 久久久久久久久伊人| 欧美视频一区二区| 成人精品一区二区三区四区| 日韩福利电影在线| 一区二区欧美视频| 中文av一区二区| 欧美一级午夜免费电影| 91小视频免费看| 国产精品亚洲专一区二区三区| 亚洲一区在线观看免费观看电影高清| 26uuu久久综合| 欧美精品自拍偷拍| 一本色道亚洲精品aⅴ| 国模少妇一区二区三区| 亚洲成人av一区二区三区| 日本一区二区成人| 精品日韩一区二区| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 国产曰批免费观看久久久| 日韩高清欧美激情| 亚洲自拍另类综合| 亚洲四区在线观看| 国产精品久久久久国产精品日日| 精品国产乱码久久久久久久| 欧美一区中文字幕| 在线观看91av| 欧美高清dvd| 5858s免费视频成人| 欧美女孩性生活视频| 欧美日韩中文字幕一区二区| 日本伦理一区二区| 色就色 综合激情| 在线看日本不卡| 91精品福利视频| 欧美丝袜第三区| 6080yy午夜一二三区久久| 88在线观看91蜜桃国自产| 欧美精品一二三| 日韩亚洲欧美在线观看| 欧美videos中文字幕| 精品国产一区二区三区不卡| 精品国产91乱码一区二区三区| 日韩精品一区二区三区视频在线观看| 91精品国产麻豆国产自产在线| 在线观看精品一区| 欧美日韩三级视频| 欧美一二三区在线观看| 欧美本精品男人aⅴ天堂| 久久久精品一品道一区| 国产日产欧美一区二区视频| 国产精品麻豆视频| 亚洲一区在线免费观看| 日本欧美在线看| 国产乱子轮精品视频| 盗摄精品av一区二区三区| www.亚洲人| 欧美图区在线视频| 欧美一区二区视频在线观看| 欧美不卡在线视频| 中文字幕不卡在线观看| 一区二区在线看| 麻豆精品一区二区综合av| 粗大黑人巨茎大战欧美成人| 成人午夜免费视频| 51精品国自产在线| 国产欧美日韩视频在线观看| 亚洲欧美日韩国产手机在线 | 日韩视频免费直播| 国产日韩成人精品| 一区二区不卡在线播放 | 中文字幕制服丝袜一区二区三区| 一区二区激情视频| 狠狠狠色丁香婷婷综合激情| 99精品久久免费看蜜臀剧情介绍| 欧美日韩一二三区| 欧美经典一区二区三区| 午夜久久福利影院| 懂色av中文字幕一区二区三区| 欧美日韩大陆一区二区| 国产人成一区二区三区影院| 午夜精品久久久久久久蜜桃app| 成人美女视频在线看| 日韩欧美的一区二区| 亚洲一区二区影院| 91香蕉视频黄|