亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
国产亚洲精品超碰| 99免费精品在线| 日韩视频国产视频| 美国毛片一区二区| 欧美一区二区三区爱爱| 美日韩一区二区三区| 欧美精品一区二区三区一线天视频 | 国产色产综合色产在线视频| 国产一区啦啦啦在线观看| 久久蜜桃av一区二区天堂| 国产黄色精品网站| 亚洲视频一二三| 欧美日韩国产免费| 日本午夜一区二区| 精品国产百合女同互慰| 国产**成人网毛片九色| 亚洲猫色日本管| 欧美放荡的少妇| 国产精品一区2区| 亚洲人成亚洲人成在线观看图片| 91久久精品国产91性色tv | 首页综合国产亚洲丝袜| 日韩欧美一级特黄在线播放| 久久机这里只有精品| 国产精品久久久久久久久晋中 | 欧美96一区二区免费视频| 欧美videossexotv100| 成人激情动漫在线观看| 日欧美一区二区| 国产区在线观看成人精品| 色8久久人人97超碰香蕉987| 久久丁香综合五月国产三级网站| 国产精品久久久久影视| 欧美日韩激情在线| 懂色av一区二区三区免费观看 | 日韩一级大片在线| 成人av影院在线| 麻豆精品视频在线观看视频| 亚洲欧洲综合另类在线| 久久综合给合久久狠狠狠97色69| 在线观看视频一区二区欧美日韩| 精品一区二区三区免费| 一区二区欧美视频| 欧美国产一区在线| 日韩欧美色综合网站| 色久优优欧美色久优优| 成人污视频在线观看| 精品无人区卡一卡二卡三乱码免费卡| 亚洲免费观看高清完整版在线 | 久久你懂得1024| 欧美剧在线免费观看网站 | 久久精品在线观看| 欧美精品一区二区在线观看| 在线精品观看国产| 不卡一区二区中文字幕| 久久成人18免费观看| 日韩精品亚洲专区| 一区二区高清在线| 中文字幕色av一区二区三区| 久久伊人中文字幕| 日韩视频一区在线观看| 欧美亚洲高清一区| 91亚洲精华国产精华精华液| 国产成人免费在线观看| 精品一区二区三区免费观看| 日韩成人av影视| 亚洲一区二区三区在线看| 国产精品传媒在线| 中文字幕成人网| 亚洲精品在线观看网站| 日韩一级二级三级精品视频| 欧美一区三区四区| 91精品国产综合久久婷婷香蕉| 欧美三级电影网| 欧美日韩精品一区二区在线播放| 色诱视频网站一区| 91国产视频在线观看| 色琪琪一区二区三区亚洲区| 一本到不卡精品视频在线观看| 91在线码无精品| 色菇凉天天综合网| 欧美日韩一区久久| 91麻豆精品国产91久久久资源速度 | 亚洲成av人影院在线观看网| 亚洲午夜一区二区三区| 性感美女久久精品| 人妖欧美一区二区| 国产永久精品大片wwwapp| 国产精品一区不卡| 一本色道久久综合狠狠躁的推荐| 91捆绑美女网站| 欧美日韩一区高清| 777a∨成人精品桃花网| 日韩一区二区三区免费观看| 精品88久久久久88久久久| 日本一区二区电影| 亚洲欧美色综合| 婷婷丁香激情综合| 国产一区福利在线| 97久久人人超碰| 欧美日韩国产精选| 精品国产露脸精彩对白| 国产欧美一区视频| 亚洲国产婷婷综合在线精品| 久久精品国产77777蜜臀| 国产白丝网站精品污在线入口| 99久久综合99久久综合网站| 欧美在线观看视频一区二区| 91精品国产福利| 国产欧美日韩精品一区| 又紧又大又爽精品一区二区| 免费高清视频精品| 成人app软件下载大全免费| 欧美日韩一区二区三区免费看| 久久综合网色—综合色88| 中文字幕乱码久久午夜不卡 | 日韩欧美一级特黄在线播放| 亚洲国产激情av| 性欧美大战久久久久久久久| 国产精品乡下勾搭老头1| 日本高清不卡视频| 久久伊99综合婷婷久久伊| 亚洲精选在线视频| 精品一二三四区| 色嗨嗨av一区二区三区| 久久欧美中文字幕| 亚洲va欧美va人人爽| 成人av网站免费观看| 51久久夜色精品国产麻豆| 国产精品久久久久久久午夜片 | 国产精品网站在线观看| 日韩高清在线不卡| 99re在线精品| 久久久噜噜噜久噜久久综合| 亚洲成人av中文| 波多野结衣中文字幕一区二区三区 | 欧美精品一区二区三区高清aⅴ | 日韩午夜av电影| 亚洲精品成人在线| 国产精品18久久久久| 7777精品伊人久久久大香线蕉| 亚洲欧洲国产日本综合| 国产精品99精品久久免费| 6080亚洲精品一区二区| 一区二区三区波多野结衣在线观看| 成人污视频在线观看| 久久久一区二区| 久久国产福利国产秒拍| 欧美一区二区三区影视| 亚洲综合另类小说| 91尤物视频在线观看| 欧美激情一区不卡| 国产成人av电影免费在线观看| 日韩女优电影在线观看| 日韩av中文在线观看| 欧美视频一区二区三区在线观看 | 欧美www视频| 久久精品国内一区二区三区| 欧美绝品在线观看成人午夜影视| 亚洲国产婷婷综合在线精品| 日本道色综合久久| 亚洲精品美腿丝袜| 91福利在线导航| 亚洲精品免费在线观看| 色婷婷av一区二区三区大白胸| 亚洲情趣在线观看| 色屁屁一区二区| 亚洲亚洲人成综合网络| 色噜噜狠狠色综合欧洲selulu| 亚洲黄一区二区三区| 91传媒视频在线播放| 亚洲欧美一区二区三区孕妇| 91猫先生在线| 亚洲综合一二区| 91精品在线麻豆| 琪琪一区二区三区| 精品国产乱码久久久久久老虎| 美腿丝袜亚洲综合| 久久精品人人做| 成人激情av网| 亚洲福利一二三区| 日韩一级片网站| 从欧美一区二区三区| 国产精品国产成人国产三级| 色女孩综合影院| 日本不卡中文字幕| 久久免费国产精品| gogogo免费视频观看亚洲一| 亚洲精品久久久蜜桃| 精品视频色一区| 精品在线亚洲视频| 国产精品成人一区二区三区夜夜夜| 色综合一个色综合亚洲| 午夜视频在线观看一区| 精品国产乱码91久久久久久网站| 成人伦理片在线| 日韩电影在线观看网站| 久久精品亚洲精品国产欧美kt∨| 99久久国产综合精品色伊| 丝袜脚交一区二区|