summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2006-05-23 07:55:26 +0100
committerAndrew Dolgov <[email protected]>2006-05-23 07:55:26 +0100
commitee1f45f4c77703b85c63bca1888b1c9cab3168da (patch)
treecfca11cb916a40954063abffa53cd3897c1ebb74
parent772bc83b8d9381e83e09462d4f6be3f93e567e98 (diff)
unify frontend hotkey handlers
-rw-r--r--feedlist.js34
-rw-r--r--functions.js111
-rw-r--r--tt-rss.js35
-rw-r--r--viewfeed.js116
4 files changed, 118 insertions, 178 deletions
diff --git a/feedlist.js b/feedlist.js
index ae4c23225..d32ff1550 100644
--- a/feedlist.js
+++ b/feedlist.js
@@ -130,40 +130,6 @@ function viewfeed(feed, skip, subop, doc, is_cat, subop_param) {
}
}
-function localHotkeyHandler(keycode) {
-
- if (keycode == 65) { // a
- return parent.toggleDispRead();
- }
-
- if (keycode == 85) { // u
- if (parent.getActiveFeedId()) {
- return viewfeed(parent.getActiveFeedId(), 0, "ForceUpdate");
- }
- }
-
- if (keycode == 82) { // r
- return parent.scheduleFeedUpdate(true);
- }
-
- var feedlist = document.getElementById('feedList');
-
- if (keycode == 74) { // j
- var feed = getActiveFeedId();
- var new_feed = getRelativeFeedId(feedlist, feed, 'prev');
- if (new_feed) viewfeed(new_feed, 0, '');
- }
-
- if (keycode == 75) { // k
- var feed = getActiveFeedId();
- var new_feed = getRelativeFeedId(feedlist, feed, 'next');
- if (new_feed) viewfeed(new_feed, 0, '');
- }
-
-// alert("KC: " + keycode);
-
-}
-
function toggleCollapseCat(cat) {
try {
if (!xmlhttp_ready(xmlhttp)) {
diff --git a/functions.js b/functions.js
index f642cda85..c03176255 100644
--- a/functions.js
+++ b/functions.js
@@ -14,10 +14,13 @@ function exception_error(location, e) {
msg = "Exception: " + e.name + ", " + e.message +
"\nFunction: " + location + "()" +
"\nLocation: " + base_fname + ":" + e.lineNumber;
+
} else {
msg = "Exception: " + e + "\nFunction: " + location + "()";
}
+ debug("<b>EXCEPTION: " + msg + "</b>");
+
alert(msg);
}
@@ -148,40 +151,85 @@ var seq = "";
function hotkey_handler(e) {
- var keycode;
-
- if (!hotkeys_enabled) return;
-
- if (window.event) {
- keycode = window.event.keyCode;
- } else if (e) {
- keycode = e.which;
- }
-
- if (keycode == 13 || keycode == 27) {
- seq = "";
- } else {
- seq = seq + "" + keycode;
- }
-
- if (document.getElementById("piggie")) {
+ try {
- if (seq.match("807371717369")) {
+ var keycode;
+
+ if (!hotkeys_enabled) return;
+
+ if (window.event) {
+ keycode = window.event.keyCode;
+ } else if (e) {
+ keycode = e.which;
+ }
+
+ if (keycode == 13 || keycode == 27) {
seq = "";
- localPiggieFunction(true);
} else {
- localPiggieFunction(false);
+ seq = seq + "" + keycode;
}
- }
- if (typeof localHotkeyHandler != 'undefined') {
- try {
- localHotkeyHandler(keycode);
- } catch (e) {
- exception_error("hotkey_handler", e);
+ var m_ctx = getMainContext();
+ var f_ctx = getFeedsContext();
+ var h_ctx = getHeadlinesContext();
+
+ if (keycode == 82) { // r
+ return m_ctx.scheduleFeedUpdate(true);
+ }
+
+ if (keycode == 85) { // u
+ if (getActiveFeedId()) {
+ return f_ctx.viewfeed(getActiveFeedId(), 0, "ForceUpdate");
+ }
+ }
+
+ if (keycode == 65) { // a
+ return m_ctx.toggleDispRead();
+ }
+
+ var f_doc = m_ctx.frames["feeds-frame"].document;
+ var feedlist = f_doc.getElementById('feedList');
+
+ if (keycode == 74) { // j
+ var feed = getActiveFeedId();
+ var new_feed = getRelativeFeedId(feedlist, feed, 'prev');
+ if (new_feed) viewfeed(new_feed, 0, '');
+ }
+
+ if (keycode == 75) { // k
+ var feed = getActiveFeedId();
+ var new_feed = getRelativeFeedId(feedlist, feed, 'next');
+ if (new_feed) viewfeed(new_feed, 0, '');
}
- }
+ if (keycode == 78 || keycode == 40) { // n, down
+ return h_ctx.moveToPost('next');
+ }
+
+ if (keycode == 80 || keycode == 38) { // p, up
+ return h_ctx.moveToPost('prev');
+ }
+
+ if (document.getElementById("piggie")) {
+
+ if (seq.match("807371717369")) {
+ seq = "";
+ localPiggieFunction(true);
+ } else {
+ localPiggieFunction(false);
+ }
+ }
+
+ if (typeof localHotkeyHandler != 'undefined') {
+ try {
+ localHotkeyHandler(keycode);
+ } catch (e) {
+ exception_error("hotkey_handler, local:", e);
+ }
+ }
+ } catch (e) {
+ exception_error("hotkey_handler", e);
+ }
}
function cleanSelectedList(element) {
@@ -1070,6 +1118,15 @@ function getFeedsContext() {
}
}
+
+function getHeadlinesContext() {
+ try {
+ return getMainContext().frames["headlines-frame"];
+ } catch (e) {
+ exception_error("getHeadlinesContext", e);
+ }
+}
+
function debug(msg) {
var ctx = getMainContext();
diff --git a/tt-rss.js b/tt-rss.js
index 3ffd04e8f..0c3584c8e 100644
--- a/tt-rss.js
+++ b/tt-rss.js
@@ -288,41 +288,6 @@ function localPiggieFunction(enable) {
}
}
-function localHotkeyHandler(keycode) {
-
- if (keycode == 82) { // r
- return scheduleFeedUpdate(true);
- }
-
- if (keycode == 85) { // u
- if (getActiveFeedId()) {
- return viewfeed(getActiveFeedId(), 0, "ForceUpdate");
- }
- }
-
- if (keycode == 65) { // a
- return toggleDispRead();
- }
-
- var f_doc = window.frames["feeds-frame"].document;
- var feedlist = f_doc.getElementById('feedList');
-
- if (keycode == 74) { // j
- var feed = getActiveFeedId();
- var new_feed = getRelativeFeedId(feedlist, feed, 'prev');
- if (new_feed) viewfeed(new_feed, 0, '');
- }
-
- if (keycode == 75) { // k
- var feed = getActiveFeedId();
- var new_feed = getRelativeFeedId(feedlist, feed, 'next');
- if (new_feed) viewfeed(new_feed, 0, '');
- }
-
-// notify("KC: " + keycode);
-
-}
-
// if argument is undefined, current subtitle is not updated
// use blank string to clear subtitle
function updateTitle(s) {
diff --git a/viewfeed.js b/viewfeed.js
index 5a11c4e99..17ffa7fc8 100644
--- a/viewfeed.js
+++ b/viewfeed.js
@@ -22,38 +22,42 @@ if (!xmlhttp_rpc && typeof XMLHttpRequest!='undefined') {
}
function view(id, feed_id) {
+
+ try {
- parent.debug("loading article: " + id + "/" + feed_id);
-
- var f_document = parent.frames["feeds-frame"].document;
- var h_document = document;
- var m_document = parent.document;
-
- enableHotkeys();
-
- var crow = h_document.getElementById("RROW-" + id);
-
- crow.className = crow.className.replace("Unread", "");
-
- cleanSelected("headlinesList");
-
- var upd_img_pic = h_document.getElementById("FUPDPIC-" + id);
-
- if (upd_img_pic) {
- upd_img_pic.src = "images/blank_icon.gif";
- }
-
- active_post_id = id;
- setActiveFeedId(feed_id);
-
- var content = m_document.getElementById("content-frame");
-
- content.src = "backend.php?op=view&id=" + param_escape(id) +
- "&feed=" + param_escape(feed_id);
-
- selectTableRowsByIdPrefix('headlinesList', 'RROW-', 'RCHK-', false);
- markHeadline(active_post_id);
+ debug("loading article: " + id + "/" + feed_id);
+
+ var f_document = getFeedsContext().document;
+ var m_document = parent.document;
+
+ enableHotkeys();
+
+ var crow = document.getElementById("RROW-" + id);
+
+ crow.className = crow.className.replace("Unread", "");
+
+ cleanSelected("headlinesList");
+
+ var upd_img_pic = document.getElementById("FUPDPIC-" + id);
+
+ if (upd_img_pic) {
+ upd_img_pic.src = "images/blank_icon.gif";
+ }
+
+ active_post_id = id;
+ setActiveFeedId(feed_id);
+
+ var content = m_document.getElementById("content-frame");
+
+ content.src = "backend.php?op=view&id=" + param_escape(id) +
+ "&feed=" + param_escape(feed_id);
+
+ selectTableRowsByIdPrefix('headlinesList', 'RROW-', 'RCHK-', false);
+ markHeadline(active_post_id);
+ } catch (e) {
+ exception_error("view", e);
+ }
}
function toggleMark(id) {
@@ -155,58 +159,6 @@ function viewfeed(id) {
f.viewfeed(id, 0);
}
-function localHotkeyHandler(keycode) {
-
- if (keycode == 78 || keycode == 40) { // n, down
- return moveToPost('next');
- }
-
- if (keycode == 80 || keycode == 38) { // p, up
- return moveToPost('prev');
- }
-
- if (keycode == 65) { // a
- return parent.toggleDispRead();
- }
-
- if (keycode == 85) { // u
- if (parent.getActiveFeedId()) {
- return parent.viewfeed(parent.getActiveFeedId(), 0, "ForceUpdate");
- }
- }
-
- if (keycode == 82) { // r
- return parent.scheduleFeedUpdate(true);
- }
-
- var f_doc = parent.frames["feeds-frame"].document;
- var feedlist = f_doc.getElementById('feedList');
-
- if (keycode == 74) { // j
- var feed = getActiveFeedId();
- var new_feed = getRelativeFeedId(feedlist, feed, 'prev');
- if (new_feed) viewfeed(new_feed, 0, '');
- }
-
- if (keycode == 75) { // k
- var feed = getActiveFeedId();
- var new_feed = getRelativeFeedId(feedlist, feed, 'next');
- if (new_feed) viewfeed(new_feed, 0, '');
- }
-
-// FIXME
-// if (keycode == 85) {
-// return viewfeed(active_feed_id, active_offset, "ForceUpdate");
-// }
-
- if (keycode == 83) { // s
- selectionToggleMarked();
- }
-
-// alert("KC: " + keycode);
-
-}
-
function toggleUnread(id, cmode) {
try {
if (!xmlhttp_ready(xmlhttp_rpc)) {