Keyboard shortcuts improvements (#70)

This commit is contained in:
RainLoop Team 2014-04-09 00:59:22 +04:00
parent 05f455c34e
commit deffb81888
4 changed files with 198 additions and 92 deletions

View file

@ -507,6 +507,68 @@ MailBoxMessageListViewModel.prototype.listUnsetFlags = function ()
this.setAction(RL.data().currentFolderFullNameRaw(), Enums.MessageSetAction.UnsetFlag, RL.data().messageListCheckedOrSelected());
};
MailBoxMessageListViewModel.prototype.flagMessages = function (oCurrentMessage)
{
var
aChecked = this.messageListCheckedOrSelected(),
aCheckedUids = []
;
if (oCurrentMessage)
{
if (0 < aChecked.length)
{
aCheckedUids = _.map(aChecked, function (oMessage) {
return oMessage.uid;
});
}
if (0 < aCheckedUids.length && -1 < Utils.inArray(oCurrentMessage.uid, aCheckedUids))
{
this.setAction(oCurrentMessage.folderFullNameRaw, oCurrentMessage.flagged() ?
Enums.MessageSetAction.UnsetFlag : Enums.MessageSetAction.SetFlag, aChecked);
}
else
{
this.setAction(oCurrentMessage.folderFullNameRaw, oCurrentMessage.flagged() ?
Enums.MessageSetAction.UnsetFlag : Enums.MessageSetAction.SetFlag, [oCurrentMessage]);
}
}
};
MailBoxMessageListViewModel.prototype.flagMessagesFast = function ()
{
var
aChecked = this.messageListCheckedOrSelected(),
aFlagged = []
;
if (0 < aChecked.length)
{
aFlagged = _.filter(aChecked, function (oMessage) {
return oMessage.flagged();
});
this.setAction(aChecked[0].folderFullNameRaw,
aChecked.length === aFlagged.length ? Enums.MessageSetAction.UnsetFlag : Enums.MessageSetAction.SetFlag, aChecked);
}
};
MailBoxMessageListViewModel.prototype.seenMessagesFast = function ()
{
var
aChecked = this.messageListCheckedOrSelected(),
aUnseen = []
;
aUnseen = _.filter(aChecked, function (oMessage) {
return oMessage.unseen();
});
this.setAction(aChecked[0].folderFullNameRaw,
0 < aUnseen.length ? Enums.MessageSetAction.SetSeen : Enums.MessageSetAction.UnsetSeen, aChecked);
};
MailBoxMessageListViewModel.prototype.onBuild = function (oDom)
{
var
@ -572,33 +634,7 @@ MailBoxMessageListViewModel.prototype.onBuild = function (oDom)
self.checkAll(!self.checkAll());
})
.on('click', '.messageList .messageListItem .flagParent', function () {
var
oMessage = ko.dataFor(this),
aChecked = oData.messageListCheckedOrSelected(),
aCheckedUids = []
;
if (oMessage)
{
if (0 < aChecked.length)
{
aCheckedUids = _.map(aChecked, function (oMessage) {
return oMessage.uid;
});
}
if (0 < aCheckedUids.length && -1 < Utils.inArray(oMessage.uid, aCheckedUids))
{
self.setAction(oMessage.folderFullNameRaw, oMessage.flagged() ?
Enums.MessageSetAction.UnsetFlag : Enums.MessageSetAction.SetFlag, aChecked);
}
else
{
self.setAction(oMessage.folderFullNameRaw, oMessage.flagged() ?
Enums.MessageSetAction.UnsetFlag : Enums.MessageSetAction.SetFlag, [oMessage]);
}
}
self.flagMessages(ko.dataFor(this));
})
;
@ -668,6 +704,24 @@ MailBoxMessageListViewModel.prototype.initShortcuts = function ()
}
});
// star/flag messages
key('s', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
if (oData.useKeyboardShortcuts())
{
self.flagMessagesFast();
return false;
}
});
// mark as read/unread
key('m', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
if (oData.useKeyboardShortcuts())
{
self.seenMessagesFast();
return false;
}
});
// shortcuts help
key('shift+/', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
if (oData.useKeyboardShortcuts())
@ -677,6 +731,14 @@ MailBoxMessageListViewModel.prototype.initShortcuts = function ()
}
});
key('shift+f', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
if (oData.useKeyboardShortcuts())
{
self.multyForwardCommand();
return false;
}
});
// search input focus
key('/', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
if (oData.useKeyboardShortcuts())