unify frontend hotkey handlers

master
Andrew Dolgov 19 years ago
parent 772bc83b8d
commit ee1f45f4c7

@ -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) { function toggleCollapseCat(cat) {
try { try {
if (!xmlhttp_ready(xmlhttp)) { if (!xmlhttp_ready(xmlhttp)) {

@ -14,10 +14,13 @@ function exception_error(location, e) {
msg = "Exception: " + e.name + ", " + e.message + msg = "Exception: " + e.name + ", " + e.message +
"\nFunction: " + location + "()" + "\nFunction: " + location + "()" +
"\nLocation: " + base_fname + ":" + e.lineNumber; "\nLocation: " + base_fname + ":" + e.lineNumber;
} else { } else {
msg = "Exception: " + e + "\nFunction: " + location + "()"; msg = "Exception: " + e + "\nFunction: " + location + "()";
} }
debug("<b>EXCEPTION: " + msg + "</b>");
alert(msg); alert(msg);
} }
@ -148,40 +151,85 @@ var seq = "";
function hotkey_handler(e) { function hotkey_handler(e) {
var keycode; try {
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")) {
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 = ""; seq = "";
localPiggieFunction(true);
} else { } else {
localPiggieFunction(false); seq = seq + "" + keycode;
} }
}
if (typeof localHotkeyHandler != 'undefined') { var m_ctx = getMainContext();
try { var f_ctx = getFeedsContext();
localHotkeyHandler(keycode); var h_ctx = getHeadlinesContext();
} catch (e) {
exception_error("hotkey_handler", e); 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) { 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) { function debug(msg) {
var ctx = getMainContext(); var ctx = getMainContext();

@ -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 // if argument is undefined, current subtitle is not updated
// use blank string to clear subtitle // use blank string to clear subtitle
function updateTitle(s) { function updateTitle(s) {

@ -22,38 +22,42 @@ if (!xmlhttp_rpc && typeof XMLHttpRequest!='undefined') {
} }
function view(id, feed_id) { function view(id, feed_id) {
try {
parent.debug("loading article: " + id + "/" + feed_id); debug("loading article: " + id + "/" + feed_id);
var f_document = parent.frames["feeds-frame"].document; var f_document = getFeedsContext().document;
var h_document = document; var m_document = parent.document;
var m_document = parent.document;
enableHotkeys();
enableHotkeys();
var crow = document.getElementById("RROW-" + id);
var crow = h_document.getElementById("RROW-" + id);
crow.className = crow.className.replace("Unread", "");
crow.className = crow.className.replace("Unread", "");
cleanSelected("headlinesList");
cleanSelected("headlinesList");
var upd_img_pic = document.getElementById("FUPDPIC-" + id);
var upd_img_pic = h_document.getElementById("FUPDPIC-" + id);
if (upd_img_pic) {
if (upd_img_pic) { upd_img_pic.src = "images/blank_icon.gif";
upd_img_pic.src = "images/blank_icon.gif"; }
}
active_post_id = id;
active_post_id = id; setActiveFeedId(feed_id);
setActiveFeedId(feed_id);
var content = m_document.getElementById("content-frame");
var content = m_document.getElementById("content-frame");
content.src = "backend.php?op=view&id=" + param_escape(id) +
content.src = "backend.php?op=view&id=" + param_escape(id) + "&feed=" + param_escape(feed_id);
"&feed=" + param_escape(feed_id);
selectTableRowsByIdPrefix('headlinesList', 'RROW-', 'RCHK-', false);
selectTableRowsByIdPrefix('headlinesList', 'RROW-', 'RCHK-', false); markHeadline(active_post_id);
markHeadline(active_post_id);
} catch (e) {
exception_error("view", e);
}
} }
function toggleMark(id) { function toggleMark(id) {
@ -155,58 +159,6 @@ function viewfeed(id) {
f.viewfeed(id, 0); 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) { function toggleUnread(id, cmode) {
try { try {
if (!xmlhttp_ready(xmlhttp_rpc)) { if (!xmlhttp_ready(xmlhttp_rpc)) {

Loading…
Cancel
Save