diff options
author | Bernhard Posselt <dev@bernhard-posselt.com> | 2014-09-14 20:55:03 +0200 |
---|---|---|
committer | Bernhard Posselt <dev@bernhard-posselt.com> | 2014-09-14 20:55:03 +0200 |
commit | 3d04a9ae9c1d811b9e2204d7651e948c6641e1fb (patch) | |
tree | c6ee1bb5382a2d3d39516438a2a6e0ee3d686b6e /js/gui | |
parent | 8b8da49d79b915dc79ab4f388c9223e889237d65 (diff) |
implement jump to next feed source, fix #414
Diffstat (limited to 'js/gui')
-rw-r--r-- | js/gui/KeyboardShortcuts.js | 63 |
1 files changed, 26 insertions, 37 deletions
diff --git a/js/gui/KeyboardShortcuts.js b/js/gui/KeyboardShortcuts.js index b5944bb26..6c17f54e0 100644 --- a/js/gui/KeyboardShortcuts.js +++ b/js/gui/KeyboardShortcuts.js @@ -38,49 +38,38 @@ navigationArea.find('.active > a:visible').trigger('click'); }; - var getParentFolder = function (element) { - return element.parent('ul').parent('.folder:visible'); - }; - - var getChildFeed = function (element) { - return element.children('ul').children('.feed:visible'); - }; - var nextFeed = function (navigationArea) { - 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'); + var current = navigationArea.find('.active'); + var elements = navigationArea.find('.subscriptions:visible,' + + '.starred:visible,' + + '.feed:visible'); + + for (var i=0; i<elements.length-1; i+=1) { + var element = elements[i]; + + if (element === current[0]) { + var next = elements[i+1]; + $(next).children('a:visible').trigger('click'); + break; + } } - - nextElement.children('a:visible').trigger('click'); }; var previousFeed = function (navigationArea) { - 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) { - // fixme: last child - previousElement = childFeed.prev('li:visible:last-child'); + var current = navigationArea.find('.active'); + var elements = navigationArea.find('.subscriptions:visible,' + + '.starred:visible,' + + '.feed:visible'); + + for (var i=elements.length-1; i>0; i-=1) { + var element = elements[i]; + + if (element === current[0]) { + var previous = elements[i-1]; + $(previous).children('a:visible').trigger('click'); + break; + } } - - previousElement.children('a:visible').trigger('click'); }; var onActiveItem = function (scrollArea, callback) { |