В 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);
}
Я не уверен, что вы можете использовать код как есть, но он должен вдохновить вас на отправную точку.