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())

View file

@ -415,8 +415,8 @@ MailBoxMessageViewViewModel.prototype.initShortcuts = function ()
});
// reply
key('r', Enums.KeyState.MessageView, function () {
if (oData.useKeyboardShortcuts())
key('r', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
if (oData.useKeyboardShortcuts() && oData.message())
{
self.replyCommand();
return false;
@ -424,8 +424,8 @@ MailBoxMessageViewViewModel.prototype.initShortcuts = function ()
});
// replaAll
key('a', Enums.KeyState.MessageView, function () {
if (oData.useKeyboardShortcuts())
key('a', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
if (oData.useKeyboardShortcuts() && oData.message())
{
self.replyAllCommand();
return false;
@ -433,8 +433,8 @@ MailBoxMessageViewViewModel.prototype.initShortcuts = function ()
});
// forward
key('f', Enums.KeyState.MessageView, function () {
if (oData.useKeyboardShortcuts())
key('f', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
if (oData.useKeyboardShortcuts() && oData.message())
{
self.forwardCommand();
return false;
@ -442,7 +442,7 @@ MailBoxMessageViewViewModel.prototype.initShortcuts = function ()
});
// message information
key('i', Enums.KeyState.MessageView, function () {
key('i', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
if (oData.useKeyboardShortcuts())
{
self.showFullInfo(!self.showFullInfo());
@ -451,7 +451,7 @@ MailBoxMessageViewViewModel.prototype.initShortcuts = function ()
});
// toggle message blockquotes
key('b', Enums.KeyState.MessageView, function () {
key('b', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
if (oData.useKeyboardShortcuts() && oData.message() && oData.message().body)
{
Utils.toggleMessageBlockquote(oData.message().body);
@ -488,15 +488,6 @@ MailBoxMessageViewViewModel.prototype.initShortcuts = function ()
}
});
// archive
// key('delete', Enums.KeyState.MessageView, function () {
// if (oData.useKeyboardShortcuts())
// {
// self.archiveCommand();
// return false;
// }
// });
// delete
key('delete, shift+delete', Enums.KeyState.MessageView, function (event, handler) {
if (oData.useKeyboardShortcuts() && event)

View file

@ -12273,6 +12273,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
@ -12338,33 +12400,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));
})
;
@ -12434,6 +12470,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())
@ -12443,6 +12497,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())
@ -13017,8 +13079,8 @@ MailBoxMessageViewViewModel.prototype.initShortcuts = function ()
});
// reply
key('r', Enums.KeyState.MessageView, function () {
if (oData.useKeyboardShortcuts())
key('r', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
if (oData.useKeyboardShortcuts() && oData.message())
{
self.replyCommand();
return false;
@ -13026,8 +13088,8 @@ MailBoxMessageViewViewModel.prototype.initShortcuts = function ()
});
// replaAll
key('a', Enums.KeyState.MessageView, function () {
if (oData.useKeyboardShortcuts())
key('a', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
if (oData.useKeyboardShortcuts() && oData.message())
{
self.replyAllCommand();
return false;
@ -13035,8 +13097,8 @@ MailBoxMessageViewViewModel.prototype.initShortcuts = function ()
});
// forward
key('f', Enums.KeyState.MessageView, function () {
if (oData.useKeyboardShortcuts())
key('f', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
if (oData.useKeyboardShortcuts() && oData.message())
{
self.forwardCommand();
return false;
@ -13044,7 +13106,7 @@ MailBoxMessageViewViewModel.prototype.initShortcuts = function ()
});
// message information
key('i', Enums.KeyState.MessageView, function () {
key('i', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
if (oData.useKeyboardShortcuts())
{
self.showFullInfo(!self.showFullInfo());
@ -13053,7 +13115,7 @@ MailBoxMessageViewViewModel.prototype.initShortcuts = function ()
});
// toggle message blockquotes
key('b', Enums.KeyState.MessageView, function () {
key('b', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
if (oData.useKeyboardShortcuts() && oData.message() && oData.message().body)
{
Utils.toggleMessageBlockquote(oData.message().body);
@ -13090,15 +13152,6 @@ MailBoxMessageViewViewModel.prototype.initShortcuts = function ()
}
});
// archive
// key('delete', Enums.KeyState.MessageView, function () {
// if (oData.useKeyboardShortcuts())
// {
// self.archiveCommand();
// return false;
// }
// });
// delete
key('delete, shift+delete', Enums.KeyState.MessageView, function (event, handler) {
if (oData.useKeyboardShortcuts() && event)

File diff suppressed because one or more lines are too long