2011-04-21 5 views
1

기본적으로 New Column Howto에 이어 기본 메시지 목록에 새 열을 추가하는 확장 프로그램을 만들었습니다. 이제 ordinal 필드를 유지하지 않고 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> 

답변

1

썬더 버드 3.1 다른 폴더와 하위 폴더에 현재의 폴더 열 레이아웃을 적용 할 사용자 노출 작업에 있습니다. 사용자는 폴더 구성 메뉴의 "열 적용 ..."작업을 통해이 작업을 사용할 수 있습니다.

이것은 수행 할 수 있음을 의미합니다.

이 작업의 구현은 threadPaneColumnPicker.xml에 있습니다. 소스 코드를 통해 브라우징 I 라인 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); 
} 

나는있는 그대로 코드를 재사용 할 수 있는지 모르겠어요하지만 당신을 제공해야 출발점에 대한 영감.

관련 문제