>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Extra Folder Columns + помощь с кодом + узнать количество писем в вирт http://forum.mozilla-russia.org/viewtopic.php?id=46395 |
mshubin > 07-10-2010 15:17:29 |
Друзья, необходимо решить следующую задачу. Есть некоторая виртуальная папка MY_FOLD, мне необходимо посмотреть, сколько сообщений в ней, это можно сделать например при помощи следующего кода: var folderName = "MY_FOLD"; function fixNum(aNumber) { function searchFolder (folderName) var filterService = Components. classes ["@mozilla.org/messenger/services/filters;1"]. Проблема заключается в том, что переменная a будет содержать то значение, которое мы будем видеть в колонке Total (которая формируется дополнением Extra Folder Columns) -> проблема в том, что это нереальное значение кол-ва писем в папке (потому что за N минут с момента предыдущего просмотра в папку могли нападать другие письма). Чтобы посмотреть реальное количество писем в папке MY_FOLD, надо кликнуть на папку MY_FOLD, тогда количество писем пересчитается. Мне интересно, может бьть можно как то программно вызвать это событие (пересчет писем в виртуальной папке)?? очень не удобно, что они обновляются не в режиме online |
Unghost > 08-10-2010 03:12:46 |
Тема перенесена из форума «Thunderbird» в форум «Разработка». |
luitzen > 11-10-2010 14:01:58 |
Ну вот как-то так можно: Выделить код Код:function updateVirtualFolder(virtualFolderName) { var virtualFolder = searchFolder(virtualFolderName); var virtualFolderWrapper = VirtualFolderHelper.wrapVirtualFolder(virtualFolder); var numTotalMessages; var numUnreadMessages; var searchListener = { onNewSearch: function() { numTotalMessages = 0; numUnreadMessages = 0; }, onSearchHit: function(dbHdr, folder) { numTotalMessages++; if (!dbHdr.isRead) numUnreadMessages++; }, onSearchDone: function(status) { var db = virtualFolder.msgDatabase; var dbFolderInfo = db.dBFolderInfo; dbFolderInfo.numMessages = numTotalMessages; dbFolderInfo.numUnreadMessages = numUnreadMessages; virtualFolder.updateSummaryTotals(true); } }; var searchSession = Components.classes["@mozilla.org/messenger/searchSession;1"]. createInstance(Components.interfaces.nsIMsgSearchSession); var searchTerms = virtualFolderWrapper.searchTerms; for(i = 0; i < searchTerms.Count(); i++) { searchSession.appendTerm(searchTerms.QueryElementAt(i, Components.interfaces.nsIMsgSearchTerm)); } var searchFolders = virtualFolderWrapper.searchFolders; for (i = 0; i < searchFolders.length; i++) { searchSession.addScopeTerm(Components.interfaces.nsMsgSearchScope.offlineMail, searchFolders[i]); } searchSession.registerListener(searchListener); searchSession.search(null); return numTotalMessages; } alert(updateVirtualFolder('MY_FOLD')); |
mshubin > 13-10-2010 15:43:21 |
Эх, что то не пашет 13-10-2010 16:10:59 Данная переменная действительно не определена... |
luitzen > 13-10-2010 16:23:44 |
13-10-2010 16:31:37 Выделить код Код:function findFirstFolderWithName(folderName) { let allFolders = Components.classes["@mozilla.org/messenger/account-manager;1"] .getService(Components.interfaces.nsIMsgAccountManager).allFolders; for (let i = 0; i < allFolders.length; i++) { let folder = allFolders.queryElementAt(i, Components.interfaces.nsIMsgFolder); if (folder.prettyName == folderName) {return folder;} } } |
mshubin > 13-10-2010 16:32:16 |
GOOD!!!))))) спасибо) |
Жирнов Максим > 17-04-2013 10:02:15 |
Подскажите, пожалуйста, где можно найти описание (структуру) всех свойств и методов используемых в Thunderbird? |
Unghost > 01-05-2013 22:24:15 |
Жирнов Максим |