summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2011-01-15 20:14:45 +0300
committerAndrew Dolgov <[email protected]>2011-01-15 20:14:45 +0300
commit69de6b46b2eba1a02808fcb420745e985e97dbbb (patch)
treef6259811bfde487362e39096bb39d8ca798231ba
parent8fc26c419b6b5f948f57b7a4ee9e27962d43af5e (diff)
implement j/k hotkeys to move between feeds (closes #292)
-rw-r--r--FeedTree.js49
-rw-r--r--help/3.php2
-rw-r--r--tt-rss.js12
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>
diff --git a/tt-rss.js b/tt-rss.js
index 546c22131..9c8f5590a 100644
--- a/tt-rss.js
+++ b/tt-rss.js
@@ -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;
}