Я создал небольшой аддон Thunderbird, который добавляет кнопку на панель инструментов. Он работает так, как ожидалось.
Однако бывают случаи, когда кнопка должна выглядеть отключенной. Это похоже на кнопки «Ответить» и «Ответить всем» в Thunderbird. Если электронная почта не выбрана, эти кнопки выглядят отключенными.
Я хочу сделать то же самое с моим аддоном. Я написал алгоритм для обновления кнопки, но я не знаю, как его вызвать. Как я могу вызвать его при изменении выбора в списке адресов электронной почты?
Код проверен и работает:
var OpenConversation = {
refresh: function () {
document.getElementById("open-conversation").disabled = ! OpenConversation.isEnabled()
},
// Based on: https://github.com/mozilla/releases-comm-central/blob/9ba3a1faeb6db90254d7e67d9d0dd630fd1a90be/mail/base/content/mail3PaneWindowCommands.js#L330-L360
isEnabled: function () {
let numSelected = GetNumSelectedMessages();
if (numSelected == 1) {
if (! gFolderDisplay.getCommandStatus(nsMsgViewCommandType.cmdRequiringMsgBody))
return false;
// Check if we have a collapsed thread selected and are summarizing it.
// If so, selectedIndices.length won't match numSelected. Also check
// that we're not displaying a message, which handles the case
// where we failed to summarize the selection and fell back to
// displaying a message.
if (gFolderDisplay.selectedIndices.length != numSelected &&
command != "cmd_applyFiltersToSelection" &&
gDBView && gDBView.currentlyDisplayedMessage == nsMsgViewIndex_None)
return false;
return true;
}
return false;
}
};
/*
* Instead of this, events should be used. Whenever user selects/deselects mails in
* the list, `OpenConversation.refresh()` should be triggered.
*/
window.setInterval(OpenConversation.refresh, 50);
disabled=true
, а затем сделаете то же самое, чтобы отключить кнопку. кстати турецкий да? круто :) таркан! - person Noitidart   schedule 04.08.2014setInterval
использование внизу). Как я могу это сделать? Есть ли специальное мероприятие для этого? - person maliayas   schedule 04.08.2014