ThunderBird, NewsBlog部分代码阅读笔记

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Thunderbird是一款流行的开源邮件客户端,其代码库包含了多个模块和组件。以下是对Thunderbird代码库的一些解析: 1. 邮件处理模块:这是Thunderbird最核心的部分,用于处理邮件的接收、发送、存储和索引。该模块包含了IMAP、POP3和SMTP协议的实现,以及支持PGP加密和S/MIME签名的功能。 2. 界面模块:这个模块包含了Thunderbird的用户界面,包括主窗口、邮件列表、邮件编辑器和各种对话框。这些界面都是基于XUL和CSS构建的,可以通过修改这些文件来自定义Thunderbird的外观和行为。 3. 扩展模块:Thunderbird支持通过扩展来增强功能,该模块包含了所有可用的扩展点和API。开发者可以使用JavaScript、XUL和CSS来编写扩展,以增加新的功能或修改现有功能的行为。 4. 数据库模块:Thunderbird使用SQLite作为其主要的邮件存储引擎,该模块包含了所有与数据库相关的代码。这些代码用于创建和管理邮件数据库、索引和搜索邮件、以及处理邮件的元数据。 5. 网络模块:Thunderbird使用Mozilla的网络库来处理所有的网络请求,该模块包含了所有网络相关的代码。这些代码用于处理HTTP请求、SMTP和IMAP协议的通信、以及其他与网络相关的任务。 总体来说,Thunderbird代码库非常庞大和复杂,但它的结构和组件都非常清晰和模块化,这使得开发者可以轻松地了解和扩展Thunderbird的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值