1

基本的に新しい列のハウツーに従って、メインメッセージリストに新しい列を追加する拡張機能を作成しました。次に、サブジェクト列の直前に列を配置します。これは、序数フィールドを永続化せず、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>
4

1 に答える 1

1

Thunderbird 3.1には、現在のフォルダー列レイアウトを他のフォルダーとそのサブフォルダーに適用するためのユーザー公開アクションがあります。ユーザーは、フォルダ構成メニューの[列を...に適用]アクションを使用してこのアクションを使用できます。

これは、あなたがやりたいことが実行可能であることを意味します。

このアクションの実装は、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);
}

コードをそのまま再利用できるかどうかはわかりませんが、出発点としてのインスピレーションを得ることができます。

于 2011-04-26T08:10:37.957 に答える