add experimental operation history stack
This commit is contained in:
parent
d4b4b9dece
commit
1dc8dba07c
|
@ -14,11 +14,16 @@ function feedlist_callback() {
|
|||
}
|
||||
}
|
||||
|
||||
function viewfeed(feed, subop, is_cat, subop_param) {
|
||||
function viewfeed(feed, subop, is_cat, subop_param, skip_history) {
|
||||
try {
|
||||
|
||||
enableHotkeys();
|
||||
|
||||
if (!skip_history) {
|
||||
history_push('FEED:' + feed + ':' + subop + ':' + is_cat +
|
||||
':' + subop_param);
|
||||
}
|
||||
|
||||
var toolbar_query = Form.serialize("main_toolbar_form");
|
||||
var toolbar_form = document.forms["main_toolbar_form"];
|
||||
|
||||
|
|
16
functions.js
16
functions.js
|
@ -226,14 +226,6 @@ function hotkey_handler(e) {
|
|||
}
|
||||
}
|
||||
|
||||
if (typeof localHotkeyHandler != 'undefined') {
|
||||
try {
|
||||
localHotkeyHandler(keycode);
|
||||
} catch (e) {
|
||||
exception_error("hotkey_handler, local:", e);
|
||||
}
|
||||
}
|
||||
|
||||
if (keycode == 68 && shift_key) { // d
|
||||
if (!debug_mode_enabled) {
|
||||
document.getElementById('debug_output').style.display = 'block';
|
||||
|
@ -245,6 +237,14 @@ function hotkey_handler(e) {
|
|||
debug_mode_enabled = !debug_mode_enabled;
|
||||
}
|
||||
|
||||
if (typeof localHotkeyHandler != 'undefined') {
|
||||
try {
|
||||
return localHotkeyHandler(e);
|
||||
} catch (e) {
|
||||
exception_error("hotkey_handler, local:", e);
|
||||
}
|
||||
}
|
||||
|
||||
debug("KP=" + keycode);
|
||||
} catch (e) {
|
||||
exception_error("hotkey_handler", e);
|
||||
|
|
82
tt-rss.js
82
tt-rss.js
|
@ -20,6 +20,8 @@ var xmlhttp_ctr = Ajax.getTransport();
|
|||
|
||||
var init_params = new Object();
|
||||
|
||||
var op_history = new Array();
|
||||
|
||||
function toggleTags() {
|
||||
display_tags = !display_tags;
|
||||
|
||||
|
@ -654,3 +656,83 @@ function feedEditSave() {
|
|||
}
|
||||
}
|
||||
|
||||
function localHotkeyHandler(e) {
|
||||
|
||||
var keycode;
|
||||
|
||||
if (window.event) {
|
||||
keycode = window.event.keyCode;
|
||||
} else if (e) {
|
||||
keycode = e.which;
|
||||
}
|
||||
|
||||
var shift_key = false;
|
||||
|
||||
try {
|
||||
shift_key = e.shiftKey;
|
||||
} catch (e) { }
|
||||
|
||||
if (keycode == 66 && shift_key) { // shift-B
|
||||
|
||||
var op = history_pop();
|
||||
|
||||
if (op) {
|
||||
var op_s = op.split(":");
|
||||
|
||||
var i;
|
||||
for (i = 0; i < op_s.length; i++) {
|
||||
if (op_s[i] == 'undefined') {
|
||||
op_s[i] = undefined;
|
||||
}
|
||||
|
||||
if (op_s[i] == 'false') {
|
||||
op_s[i] = false;
|
||||
}
|
||||
|
||||
if (op_s[i] == 'true') {
|
||||
op_s[i] = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
debug("history split: " + op_s);
|
||||
|
||||
if (op_s[0] == "ARTICLE") {
|
||||
debug("history: reverting to article " + op_s[1] + "/" + op_s[2]);
|
||||
view(op_s[1], op_s[2], true);
|
||||
}
|
||||
|
||||
if (op_s[0] == "FEED") {
|
||||
viewfeed(op_s[1], op_s[2], op_s[3], op_s[4], true);
|
||||
}
|
||||
|
||||
} else {
|
||||
notify("No operation to undo");
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
debug("LKP=" + keycode);
|
||||
}
|
||||
|
||||
function history_push(op) {
|
||||
debug("history_push: " + op);
|
||||
op_history.push(op);
|
||||
|
||||
while (op_history.length > 30) {
|
||||
op_history.shift();
|
||||
}
|
||||
}
|
||||
|
||||
function history_pop() {
|
||||
var op = op_history.pop();
|
||||
debug("history_pop: " + op);
|
||||
return op;
|
||||
}
|
||||
|
||||
function history_clear() {
|
||||
debug("history_clear");
|
||||
op_history.clear();
|
||||
}
|
||||
|
|
|
@ -51,10 +51,14 @@ function article_callback() {
|
|||
}
|
||||
}
|
||||
|
||||
function view(id, feed_id) {
|
||||
function view(id, feed_id, skip_history) {
|
||||
|
||||
try {
|
||||
debug("loading article: " + id + "/" + feed_id);
|
||||
|
||||
if (!skip_history) {
|
||||
history_push("ARTICLE:" + id + ":" + feed_id);
|
||||
}
|
||||
|
||||
enableHotkeys();
|
||||
|
||||
|
|
Loading…
Reference in New Issue