博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ThunderBird, NewsBlog部分代码阅读笔记
阅读量:7228 次
发布时间:2019-06-29

本文共 1633 字,大约阅读时间需要 5 分钟。

locale文件:chrome\locale\messenger-newsblog\messenger-newsblog.dtd
(该locale文件不能使用notepad或uedit32保存,否则会比原文件多3个字节导致thunderbird解析失败,我这里使用VS.NET 2005进行编辑,原因不知......)
UI定义:\chrome\content\messenger-newsblog\subscriptions.xul
这个是thunderbird里管理RSS订阅对话框的UI定义,在这里加入按钮
实现代码:
\chrome\content\messenger-newsblog\subscriptions.js(响应用户和对话框的交互)
\chrome\content\messenger-newsblog\Feed.js(Feed类的实现,一个Feed就是一个data source, thunderbird可以支持RSS1/2, ATOM三种schema)
\chrome\content\messenger-newsblog\FeedItem.js(FeedItem类的实现,一个FeedItem对应每一个单独的post)
加入一个feed的调用序列:
1)buttonAdd.onclick ->doAdd()
2)  doAdd() -> openFeedEditor(feedProperties) 打开属性编辑框。
3)  doAdd() -> feed.download() 下载该feed,这里download是一个异步调用,其中打开一个xmlhttprequest对象并将实际的处理代码onDownloaded链接到xmlhttprequest.onload事件,最后调用request.send()发出请求。
4)feed.onDownloaded() -> feed.parse parse根据具体的schema调用对应的parse方法。
打开文件的对话框:使用@mozilla.org/filepicker;1
 
None.gif
var
 fp 
=
 Components.classes[
"
@mozilla.org/filepicker;1
"
].createInstance(nsIFilePicker);
None.gif   
var
 extbundle 
=
 strBundleService.createBundle(
"
chrome://messenger/locale/messenger.properties
"
);
None.gif   
var
 filterLabel 
=
 "邮件文件(.eml)";
None.gif   
var
 windowTitle 
=
 "打开消息";
None.gif
None.gif   fp.init(window, windowTitle, nsIFilePicker.modeOpen);
None.gif   fp.appendFilter(filterLabel, 
"
*.eml
"
);
None.gif
None.gif   
//
 Default or last filter is "All Files"
None.gif
   fp.appendFilters(nsIFilePicker.filterAll);
None.gif
None.gif  
try
 {
None.gif     
var
 ret 
=
 fp.show();
None.gif     
if
 (ret 
==
 nsIFilePicker.returnCancel)
None.gif       
return
;
None.gif   }
None.gif   
catch
 (ex) {
None.gif     dump(
"
filePicker.chooseInputFile threw an exception\n
"
);
None.gif     
return
;
None.gif   }
None.gif
None.gif   
var
 uri 
=
 fp.fileURL;
None.gif   
None.gif
None.gif}
thunderbird中的XMLParser的使用:
DOMParser 组件, nsIDOMParsrer接口,
读取stream或string

转载于:https://www.cnblogs.com/jonnyyu/archive/2005/02/13/104114.html

你可能感兴趣的文章
dmidecode查看linux硬件信息
查看>>
linux监控对象及重要性
查看>>
walle-web自动化部署配置
查看>>
opencv轮廓提取、轮廓识别相关要点
查看>>
BOOST.ASIO源码剖析(一)
查看>>
过滤squidlog中各个链接的大小
查看>>
我的友情链接
查看>>
使用AnyChat如何实现任意两用户之间的音视频交互
查看>>
【个人小结】项目公共js的配置,解决不同页面多个配置修改的问题
查看>>
XAMP安装Apacher无法启动
查看>>
mongodb user
查看>>
ip地址子网划分
查看>>
Linux下快速搭建ntp时间同步服务器
查看>>
TouchEvent的传递过程学习笔记
查看>>
Android笔记--TCP Scoket(字符串收发)
查看>>
我的友情链接
查看>>
Hunt framework 2.0.0 发布,简单且高性能的 Web 服务框架
查看>>
数据库原理及应用(SQL Server 2016数据处理)【上海精品视频课程】
查看>>
MaxCompute表设计最佳实践
查看>>
Percona-Server-5.5.15源码安装
查看>>