diff options
author | Andrew Dolgov <[email protected]> | 2011-01-15 20:14:45 +0300 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2011-01-15 20:14:45 +0300 |
commit | 69de6b46b2eba1a02808fcb420745e985e97dbbb (patch) | |
tree | f6259811bfde487362e39096bb39d8ca798231ba | |
parent | 8fc26c419b6b5f948f57b7a4ee9e27962d43af5e (diff) |
implement j/k hotkeys to move between feeds (closes #292)
-rw-r--r-- | FeedTree.js | 49 | ||||
-rw-r--r-- | help/3.php | 2 | ||||
-rw-r--r-- | tt-rss.js | 12 |
3 files changed, 60 insertions, 3 deletions
diff --git a/FeedTree.js b/FeedTree.js index 26629e8ce..a0d4fc7ea 100644 --- a/FeedTree.js +++ b/FeedTree.js @@ -52,6 +52,55 @@ dojo.declare("fox.FeedStoreModel", dijit.tree.ForestStoreModel, { if (treeItem) return this.store.setValue(treeItem, key, value); }, + getNextFeed: function (feed, is_cat) { + if (is_cat) { + treeItem = this.store._itemsByIdentity['CAT:' + feed]; + } else { + treeItem = this.store._itemsByIdentity['FEED:' + feed]; + } + + items = this.store._arrayOfAllItems; + var item = items[0]; + + for (var i = 0; i < items.length; i++) { + if (items[i] == treeItem) { + item = items[i+1]; + break; + } + } + + if (item) { + return [this.store.getValue(item, 'bare_id'), + !this.store.getValue(item, 'id').match('FEED:')]; + } else { + return false; + } + }, + getPreviousFeed: function (feed, is_cat) { + if (is_cat) { + treeItem = this.store._itemsByIdentity['CAT:' + feed]; + } else { + treeItem = this.store._itemsByIdentity['FEED:' + feed]; + } + + items = this.store._arrayOfAllItems; + var item = items[items.length-1]; + + for (var i = 0; i < items.length; i++) { + if (items[i] == treeItem) { + item = items[i-1]; + break; + } + } + + if (item) { + return [this.store.getValue(item, 'bare_id'), + !this.store.getValue(item, 'id').match('FEED:')]; + } else { + return false; + } + }, + getNextUnreadFeed: function (feed, is_cat) { if (is_cat) { treeItem = this.store._itemsByIdentity['CAT:' + feed]; diff --git a/help/3.php b/help/3.php index c45da8634..d48adc618 100644 --- a/help/3.php +++ b/help/3.php @@ -5,7 +5,7 @@ <h2><?php echo __("Navigation") ?></h2> <table> - <!-- <tr><td class='n'>j/k</td><td><?php echo __("Move between feeds") ?></td></tr> --> + <tr><td class='n'>j/k</td><td><?php echo __("Move between feeds") ?></td></tr> <tr><td class='n'>n/p</td><td><?php echo __("Move between articles") ?></td></tr> <tr><td class='n'>/</td><td><?php echo __("Show search dialog") ?></td></tr> </table> @@ -704,12 +704,20 @@ function hotkey_handler(e) { } if (keycode == 74) { // j - // TODO: move to previous feed + var rv = dijit.byId("feedTree").model.getPreviousFeed( + getActiveFeedId(), activeFeedIsCat()); + + if (rv) viewfeed(rv[0], '', rv[1]); + return; } if (keycode == 75) { // k - // TODO: move to next feed + var rv = dijit.byId("feedTree").model.getNextFeed( + getActiveFeedId(), activeFeedIsCat()); + + if (rv) viewfeed(rv[0], '', rv[1]); + return; } |