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:
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user