1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2025-12-23 00:17:57 +01:00

added/updated gm/gM mappings and :getmessages command for muttator

This commit is contained in:
Martin Stubenschrott
2008-03-02 22:56:17 +00:00
parent 420358f47d
commit 3fcbaa7e37

View File

@@ -141,7 +141,11 @@ vimperator.Mail = function ()
vimperator.mappings.add(modes, ["gm"], vimperator.mappings.add(modes, ["gm"],
"Get new messages", "Get new messages",
function () { goDoCommand("cmd_getNewMessages"); }); function () { vimperator.mail.getNewMessages(); });
vimperator.mappings.add(modes, ["gM"],
"Get new messages for current account only",
function () { vimperator.mail.getNewMessages(true); });
vimperator.mappings.add([vimperator.modes.NORMAL], vimperator.mappings.add([vimperator.modes.NORMAL],
["c"], "Change folders", ["c"], "Change folders",
@@ -200,54 +204,87 @@ vimperator.Mail = function ()
args = args || "Inbox"; args = args || "Inbox";
count = count > 0 ? (count - 1) : 0; count = count > 0 ? (count - 1) : 0;
var folder = vimperator.mail.getFolders(args)[count]; var folder = vimperator.mail.getFolders(args, true, true)[count];
if (!folder) if (!folder)
vimperator.echoerr("Folder \"" + args + "\" does not exist"); vimperator.echoerr("Folder \"" + args + "\" does not exist");
else else
SelectFolder(folder.URI); SelectFolder(folder.URI);
}); });
vimperator.commands.add(["get[messages]"],
"Check for new messages",
function (args, special)
{
if (args)
{
vimperator.echoerr("E488: Trailing characters");
return;
}
vimperator.mail.getNewMessages(!special);
});
/////////////////////////////////////////////////////////////////////////////}}} /////////////////////////////////////////////////////////////////////////////}}}
////////////////////// PUBLIC SECTION ////////////////////////////////////////// ////////////////////// PUBLIC SECTION //////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////{{{ /////////////////////////////////////////////////////////////////////////////{{{
return { return {
getFolders: function(filter) get currentAccount() { return this.currentFolder.rootFolder; },
get currentFolder() {
var tree = GetFolderTree();
return GetFolderResource(tree, tree.currentIndex).
QueryInterface(Components.interfaces.nsIMsgFolder);
},
getFolders: function(filter, includeServers, includeMsgFolders)
{ {
var folders = []; var folders = [];
if (!filter) if (!filter)
filter = ""; filter = "";
if (typeof includeServers == undefined)
includeServers = false;
if (typeof includeMsgFolders == undefined)
includeMsgFolders = true;
var tree = GetFolderTree(); var tree = GetFolderTree();
for (let i = 0; i < tree.view.rowCount; i++) for (let i = 0; i < tree.view.rowCount; i++)
{ {
var resource = GetFolderResource(tree, i).QueryInterface(Components.interfaces.nsIMsgFolder); var resource = GetFolderResource(tree, i).QueryInterface(Components.interfaces.nsIMsgFolder);
if (/*!resource.isServer && */resource.prettiestName.toLowerCase().indexOf(filter.toLowerCase()) >= 0) if ((resource.isServer && !includeServers) || (!resource.isServer && !includeMsgFolders))
continue;
if (resource.prettiestName.toLowerCase().indexOf(filter.toLowerCase()) >= 0)
folders.push(resource); folders.push(resource);
} }
return folders; return folders;
}, },
// XXX: probably refactored with another method getNewMessages: function(currentAccountOnly)
getTotalUnread: function()
{ {
var folders = this.getFolders(); var accounts = currentAccountOnly ? [this.currentAccount]
: this.getFolders("", true, false);
var unread = 0, flagged = 0; accounts.forEach( function(account) { account.getNewMessages(msgWindow, null); });
for (var i = 0; i < folders.length; i++) },
getStatistics: function(currentAccountOnly)
{
var accounts = currentAccountOnly ? [this.currentAccount]
: this.getFolders("", true, false);
var unreadCount = 0, totalCount = 0, newCount = 0;;
for (var i = 0; i < accounts.length; i++)
{ {
var msgs = folders[i].getMessages(msgWindow); var account = accounts[i];
while (msgs.hasMoreElements()) unreadCount += account.getNumUnread(true); // true == deep (includes subfolders)
{ totalCount += account.getTotalMessages(true);
var msg = msgs.getNext().QueryInterface(Components.interfaces.nsIMsgDBHdr); newCount += account.getNumUnread(true);
if (!msg.isRead)
unread++;
if (msg.isFlagged)
flagged++;
}
} }
return unread;
return { numUnread: unreadCount, numTotal: totalCount, numNew: newCount }
}, },
selectMessage: function(validatorFunc, canWrap, reverse, count) selectMessage: function(validatorFunc, canWrap, reverse, count)