为Gadget添加相应的拖拽事件,使其可以从外边拖放文件到工具栏上。
<body ondrop="myGadget.fileDown(event);" ondragenter="Event.stop(event);" ondragover="Event.stop(event);"> ... </body>
,这里将使用到System.Shell.itemFromFileDrop方法,从event事件中获取拖动的文件对象System.Shell.Item,fileDown事件处理代码如下:
/** * 拖动文件,放下时,执行的函数。 该函数将被拖动的文件取出来。然后进行相关的计算,并添加到相应的列表中。 * @param {Event} e 事件对象。 */ fileDown : function(e) { var oItem;// 循环的项。 var index = 0;// 循环计数。 var addCount = 0;// 添加到列表中的个数。 while ((oItem = System.Shell.itemFromFileDrop(e.dataTransfer, index++)) != null) { addCount += this.addItemsToList(oItem); } if (addCount >= 0) {// 有添加,更新显示列表。 myGadget.lists.sort();//先排序 myGadget.showToTools(myGadget.outputDiv, myGadget.lists); } } , /** * 将一个文件对象添加到list数组之中。 * @param {System.Shell.Item} item System.Shell.Item对象。 * @return 返回该文件是否被添加。0未被添加,1已经添加。 */ addItemsToList : function(item) { var str = ""; if (!item) return 0; else if (!item.isFolder || item.type != finalVals.defaultResources.folder) { // .zip压缩文件会被认成是文件夹,因此我使用Item.type='文件夹来判断'. str = "050*" + item.name + "*" + item.path; } else { str = "100*" + item.name + "*" + item.path; } if (myGadget.lists.indexOf(str) >= 0) return 0;// 已经存在列表中了,返回0 else { myGadget.lists.push(str); myGadget.lists.modify = true;// 在list上标记已经修改过。 myGadget.saveList(); return 1; } return 0; },
这样处理后,新拖放的文件就在工具栏中显示出来了。
在我们拖放一些文件后,需要将这引起信息保存起来,以用于下次打开gadget时,读取相应的配置,显示列表。
可以使用ie的js对象 FileSystemObject 、TextStream 两个对象将数据写到一个文本文件中(代码略)。
Gadget对回收站的处理:在Windows Gadget中,提供了一系列对回收站处理的API:
System.Shell.RecycleBin.deleteItem(path) 将指定路径的文件删除入回收站。
System.Shell.RecycleBin.emptyAll() 清空回收站里边的东西。
System.Shell.RecycleBin.showRecycleSettings()显示回收站属性。
System.Shell.RecycleBin.fileCount 回收站中文件的个数。
System.Shell.RecycleBin.folderCount 回收站中文件夹的个数。
System.Shell.RecycleBin.sizeUsed 回收站中所有文件占用的空间。
System.Shell.RecycleBin.onRecycleBinChanged 回收站里边的东西被改变时(增,删)触发的事件。
,通过这几个API可以实现对回收站的操作(代码略)。