diff options
author | Bernhard Posselt <dev@bernhard-posselt.com> | 2014-09-14 20:18:00 +0200 |
---|---|---|
committer | Bernhard Posselt <dev@bernhard-posselt.com> | 2014-09-14 20:18:00 +0200 |
commit | 568f4f7b806a2b5a2a517bf78c395cc582ef678d (patch) | |
tree | 1962d14d8dd42af609bdd2e5af0ddbfd6ced579c /js/gui | |
parent | c3a0bf654cf542cf2daefd1e3428c8c648007dd1 (diff) |
go through feeds and child feeds of folders
Diffstat (limited to 'js/gui')
-rw-r--r-- | js/gui/KeyboardShortcuts.js | 42 |
1 files changed, 38 insertions, 4 deletions
diff --git a/js/gui/KeyboardShortcuts.js b/js/gui/KeyboardShortcuts.js index d818a4ded..9fe50e46c 100644 --- a/js/gui/KeyboardShortcuts.js +++ b/js/gui/KeyboardShortcuts.js @@ -38,14 +38,48 @@ navigationArea.find('.active > a:visible').trigger('click'); }; + var getParentFolder = function (element) { + return element.parent('ul').parent('li:visible'); + }; + + var getChildFeed = function (element) { + return element.children('ul').children('li:visible'); + }; + var nextFeed = function (navigationArea) { - navigationArea.find('.active') - .next('li').children('a:visible').trigger('click'); + var nextElement = navigationArea.find('.active').next('li:visible'); + + // in case the last feed of a folder is reached we need to go up + var parentFolder = getParentFolder(nextElement); + if (nextElement.length === 0 && parentFolder.lenght !== 0) { + nextElement = parentFolder.next('li:visible'); + } + + // if the next element is a folder we have to go down + var childFeed = getChildFeed(nextElement); + if (nextElement.hasClass('folder') && childFeed.length !== 0) { + nextElement = childFeed.next('li:visible'); + } + + nextElement.children('a:visible').trigger('click'); }; var previousFeed = function (navigationArea) { - navigationArea.find('.active').prev('li') - .children('a:visible').trigger('click'); + var previousElement = navigationArea.find('.active').prev('li:visible'); + + // in case the first feed of a folder is reached we need to go up + var parentFolder = getParentFolder(previousElement); + if (previousElement.length === 0 && parentFolder.lenght !== 0) { + previousElement = parentFolder.prev('li:visible'); + } + + // if the previous element is a folder we have to go down + var childFeed = getChildFeed(previousElement); + if (previousElement.hasClass('folder') && childFeed.length !== 0) { + previousElement = childFeed.prev('li:visible'); + } + + previousElement.children('a:visible').trigger('click'); }; var onActiveItem = function (scrollArea, callback) { |