1)で新しいタブを開きます
document.getElementById("tabmail").openTab("chromeTab", {
chromePage: “indexWithGloda.html”,
});
2)ファイルindexWithGloda.html
には、インデックス作成を開始する必要がある場合でも、オンリックのボタンがあります。
function onClickStartIndexingWithGloda()
{
var inboxFolder = getInboxFolder(); // Find the inbox folder
GlodaMsgIndexer.indexFolder(inboxFolder, ["force"]);
var job = GlodaIndexer._indexQueue.pop();
GlodaMsgIndexer._worker_folderIndex(job);
}
// Adding a messenger lazy getter to the MailServices even though it's not a service
XPCOMUtils.defineLazyGetter(MailServices, "messenger", function () {
return Cc["@mozilla.org/messenger;1"].createInstance(Ci.nsIMessenger);
});
function getInboxFolder() {
var inbox = null;
var accounts = [x for each (x in fixIterator(MailServices.accounts.accounts, Ci.nsIMsgAccount))].filter(function (x) x.incomingServer);
var server = accounts[0].incomingServer;
var folder = server.rootFolder;
var searchForInbox = function(folder) {
var isInbox = folder.getFlag(Ci.nsMsgFolderFlags.Inbox);
if (isInbox) {
inbox = folder;
}
else if (folder.hasSubFolders) {
for each (var subFolder in fixIterator(folder.subFolders, Ci.nsIMsgFolder))
searchForInbox(subFolder);
}
}
searchForInbox(folder);
return inbox;
}
GlodaMsgIndexer._worker_folderIndex(job);
問題は、関数の呼び出しonClickStartIndexingWithGloda()
が実際にはインデックス作成を開始しないことです。非同期で呼び出す必要があると思いますが、非同期で起動する方法がわかりません。ここで助けていただければ幸いです。もう1つの質問ですが、フォルダーが既にインデックスに登録されている場合、このメソッドは機能しますか?そうでない場合は、すでにインデックスが作成されているフォルダーのインデックスを再作成するために何をする必要がありますか?