如何以编程方式向雷鸟中的所有邮件列表视图添加列
How to programmatically add a column to all message list views in Thunderbird
我已经创建了一个扩展,它将一个新列添加到主消息列表中,基本上遵循新列方法。现在,我想将该列直接放在主题列之前,这似乎可以通过不持久化序号字段和添加insertbefore属性来实现。但是,我仍然需要从列选择器中手动选择列以使其可见,并且我还需要对每个文件夹执行此操作。是否有一种方法可以自动将此插入到主题列之前的所有消息视图中?我的目标是在安装扩展时,该列自动出现在所有可能的消息视图中。
我的XUL覆盖目前看起来像这样:
<overlay id="colovl"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/x-javascript" src="chrome://myext/content/column_overlay.js"/>
<tree id="threadTree">
<treecols id="threadCols">
<splitter class="tree-splitter" />
<treecol id="MyCol" insertbefore="subjectCol" fixed="true"
flex="2" hidden="false"
class="treecol-image"
label="MyCol" tooltiptext="Click to sort by MyCol" />
</treecols>
</tree>
</overlay>
雷鸟3.1有一个用户暴露的操作,将当前的文件夹列布局应用到其他文件夹及其子文件夹。作为用户,您可以通过文件夹配置菜单的"Apply columns to…"操作来使用此操作。
这意味着你想做的事情是可行的。
此操作的实现包含在threadPaneColumnPicker.xml中。在浏览源代码时,我想说有趣的部分从第167行开始。我复制了部分代码:
let destFolder = event.originalTarget._folder;
let parent = event.originalTarget.parentNode;
while (parent != noChildrenPopup && parent != yesChildrenPopup) {
parent = parent.parentNode;
}
// Get the current folder's column state.
let propName = gFolderDisplay.PERSISTED_COLUMN_PROPERTY_NAME;
let dbFolderInfo =
gFolderDisplay.displayedFolder.msgDatabase.dBFolderInfo;
let columnStateString = dbFolderInfo.getCharProperty(propName);
// Now propagate appropriately...
if (useChildren) {
// Generate an observer notification when we have finished configuring
// all folders. This is currently done for the benefit of our mozmill
// tests.
function observerCallback() {
let obsService =
Components.classes["@mozilla.org/observer-service;1"]
.getService(Components.interfaces.nsIObserverService);
obsService.notifyObservers(gFolderDisplay.displayedFolder,
"msg-folder-columns-propagated", "");
}
MailUtils.setStringPropertyOnFolderAndDescendents(propName,
columnStateString,
destFolder,
observerCallback);
}
我不确定您是否可以按原样重用代码,但它应该给您一个起点的灵感。
相关文章:
- 如何将参数从列表视图中的项传递到模板
- 根据手机上是否存在文件,在jQuery mobile中动态填充列表视图
- 取消选择滚动启动时的所有列表视图项目
- 使用PhoneGap和jQuery Mobile在android设备上显示动态列表视图
- 通过格式化将jquery移动组件动态添加到列表视图中
- jqmobile列表视图中元素之间的间距相等
- 如何在Vue.js中使用列表视图
- jQuery移动列表视图和面板
- 剑道移动列表视图更改过滤器onclick
- Metro 应用程序中的列表视图项目单击
- 列表视图在Android上滚动断断续续且缓慢
- 我们可以在 CouchDB 中对排序列表视图进行排序吗?
- 用户控件内的 ASP 列表视图.如何在用户控件完全加载后触发 javascript
- 使 Windows 8 列表视图可编辑
- 如何使按钮的行为因选定的列表视图项而异
- 在PHP循环中动态创建jQuery列表视图
- jQuery访问列表视图->ul->李->span->img
- 带有砖石结构的轴网视图/列表视图
- SharePoint 2010 和电子邮件列表视图
- 如何以编程方式向雷鸟中的所有邮件列表视图添加列