|
@@ -65,6 +65,8 @@
|
|
@load-book="loadBook"
|
|
@load-book="loadBook"
|
|
@load-file="loadFile"
|
|
@load-file="loadFile"
|
|
@book-pos-changed="bookPosChanged"
|
|
@book-pos-changed="bookPosChanged"
|
|
|
|
+ @do-action="doAction"
|
|
|
|
+
|
|
@tool-bar-toggle="toolBarToggle"
|
|
@tool-bar-toggle="toolBarToggle"
|
|
@full-screen-toogle="fullScreenToggle"
|
|
@full-screen-toogle="fullScreenToggle"
|
|
@stop-scrolling="stopScrolling"
|
|
@stop-scrolling="stopScrolling"
|
|
@@ -76,6 +78,7 @@
|
|
|
|
|
|
<SetPositionPage v-if="setPositionActive" ref="setPositionPage" @set-position-toggle="setPositionToggle" @book-pos-changed="bookPosChanged"></SetPositionPage>
|
|
<SetPositionPage v-if="setPositionActive" ref="setPositionPage" @set-position-toggle="setPositionToggle" @book-pos-changed="bookPosChanged"></SetPositionPage>
|
|
<SearchPage v-show="searchActive" ref="searchPage"
|
|
<SearchPage v-show="searchActive" ref="searchPage"
|
|
|
|
+ @do-action="doAction"
|
|
@search-toggle="searchToggle"
|
|
@search-toggle="searchToggle"
|
|
@book-pos-changed="bookPosChanged"
|
|
@book-pos-changed="bookPosChanged"
|
|
@start-text-search="startTextSearch"
|
|
@start-text-search="startTextSearch"
|
|
@@ -772,60 +775,23 @@ class Reader extends Vue {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- buttonClick(button) {
|
|
|
|
- const activeClass = this.buttonActiveClass(button);
|
|
|
|
|
|
+ buttonClick(action) {
|
|
|
|
+ const activeClass = this.buttonActiveClass(action);
|
|
|
|
|
|
- this.$refs[button].blur();
|
|
|
|
|
|
+ this.$refs[action].blur();
|
|
|
|
|
|
if (activeClass['tool-button-disabled'])
|
|
if (activeClass['tool-button-disabled'])
|
|
return;
|
|
return;
|
|
|
|
|
|
- switch (button) {
|
|
|
|
- case 'loader':
|
|
|
|
- this.loaderToggle();
|
|
|
|
- break;
|
|
|
|
- case 'undoAction':
|
|
|
|
- this.undoAction();
|
|
|
|
- break;
|
|
|
|
- case 'redoAction':
|
|
|
|
- this.redoAction();
|
|
|
|
- break;
|
|
|
|
- case 'fullScreen':
|
|
|
|
- this.fullScreenToggle();
|
|
|
|
- break;
|
|
|
|
- case 'setPosition':
|
|
|
|
- this.setPositionToggle();
|
|
|
|
- break;
|
|
|
|
- case 'scrolling':
|
|
|
|
- this.scrollingToggle();
|
|
|
|
- break;
|
|
|
|
- case 'search':
|
|
|
|
- this.searchToggle();
|
|
|
|
- break;
|
|
|
|
- case 'copyText':
|
|
|
|
- this.copyTextToggle();
|
|
|
|
- break;
|
|
|
|
- case 'refresh':
|
|
|
|
- this.refreshBook();
|
|
|
|
- break;
|
|
|
|
- case 'recentBooks':
|
|
|
|
- this.recentBooksToggle();
|
|
|
|
- break;
|
|
|
|
- case 'offlineMode':
|
|
|
|
- this.offlineModeToggle();
|
|
|
|
- break;
|
|
|
|
- case 'settings':
|
|
|
|
- this.settingsToggle();
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
|
|
+ this.doAction({action});
|
|
}
|
|
}
|
|
|
|
|
|
- buttonActiveClass(button) {
|
|
|
|
|
|
+ buttonActiveClass(action) {
|
|
const classActive = { 'tool-button-active': true, 'tool-button-active:hover': true };
|
|
const classActive = { 'tool-button-active': true, 'tool-button-active:hover': true };
|
|
const classDisabled = { 'tool-button-disabled': true, 'tool-button-disabled:hover': true };
|
|
const classDisabled = { 'tool-button-disabled': true, 'tool-button-disabled:hover': true };
|
|
let classResult = {};
|
|
let classResult = {};
|
|
|
|
|
|
- switch (button) {
|
|
|
|
|
|
+ switch (action) {
|
|
case 'loader':
|
|
case 'loader':
|
|
case 'fullScreen':
|
|
case 'fullScreen':
|
|
case 'setPosition':
|
|
case 'setPosition':
|
|
@@ -838,7 +804,7 @@ class Reader extends Vue {
|
|
case 'settings':
|
|
case 'settings':
|
|
if (this.progressActive) {
|
|
if (this.progressActive) {
|
|
classResult = classDisabled;
|
|
classResult = classDisabled;
|
|
- } else if (this[`${button}Active`]) {
|
|
|
|
|
|
+ } else if (this[`${action}Active`]) {
|
|
classResult = classActive;
|
|
classResult = classActive;
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
@@ -853,7 +819,7 @@ class Reader extends Vue {
|
|
}
|
|
}
|
|
|
|
|
|
if (this.activePage == 'LoaderPage' || !this.mostRecentBookReactive) {
|
|
if (this.activePage == 'LoaderPage' || !this.mostRecentBookReactive) {
|
|
- switch (button) {
|
|
|
|
|
|
+ switch (action) {
|
|
case 'undoAction':
|
|
case 'undoAction':
|
|
case 'redoAction':
|
|
case 'redoAction':
|
|
case 'setPosition':
|
|
case 'setPosition':
|
|
@@ -1103,63 +1069,68 @@ class Reader extends Vue {
|
|
}
|
|
}
|
|
|
|
|
|
doAction(opts) {
|
|
doAction(opts) {
|
|
- let result = false;
|
|
|
|
|
|
+ let result = true;
|
|
let {action = '', event = false} = opts;
|
|
let {action = '', event = false} = opts;
|
|
|
|
|
|
- if (action == 'loader') {
|
|
|
|
- this.loaderToggle();
|
|
|
|
- result = true;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (this.activePage == 'TextPage') {
|
|
|
|
- result = true;
|
|
|
|
- switch (action) {
|
|
|
|
- case 'help':
|
|
|
|
- this.helpToggle();
|
|
|
|
- break;
|
|
|
|
- case 'settings':
|
|
|
|
- this.settingsToggle();
|
|
|
|
- break;
|
|
|
|
- case 'undoAction':
|
|
|
|
- this.undoAction();
|
|
|
|
- break;
|
|
|
|
- case 'redoAction':
|
|
|
|
- this.redoAction();
|
|
|
|
- break;
|
|
|
|
- case 'fullScreen':
|
|
|
|
- this.fullScreenToggle();
|
|
|
|
- break;
|
|
|
|
- case 'scrolling':
|
|
|
|
- this.scrollingToggle();
|
|
|
|
- break;
|
|
|
|
- case 'setPosition':
|
|
|
|
- this.setPositionToggle();
|
|
|
|
- break;
|
|
|
|
- case 'search':
|
|
|
|
- this.searchToggle();
|
|
|
|
- break;
|
|
|
|
- case 'copyText':
|
|
|
|
- this.copyTextToggle();
|
|
|
|
- break;
|
|
|
|
- case 'refresh':
|
|
|
|
- this.refreshBook();
|
|
|
|
- break;
|
|
|
|
- case 'offlineMode':
|
|
|
|
- this.offlineModeToggle();
|
|
|
|
- break;
|
|
|
|
- case 'recentBooks':
|
|
|
|
- this.recentBooksToggle();
|
|
|
|
- break;
|
|
|
|
- default:
|
|
|
|
- result = false;
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
|
|
+ switch (action) {
|
|
|
|
+ case 'loader':
|
|
|
|
+ this.loaderToggle();
|
|
|
|
+ break;
|
|
|
|
+ case 'help':
|
|
|
|
+ this.helpToggle();
|
|
|
|
+ break;
|
|
|
|
+ case 'settings':
|
|
|
|
+ this.settingsToggle();
|
|
|
|
+ break;
|
|
|
|
+ case 'undoAction':
|
|
|
|
+ this.undoAction();
|
|
|
|
+ break;
|
|
|
|
+ case 'redoAction':
|
|
|
|
+ this.redoAction();
|
|
|
|
+ break;
|
|
|
|
+ case 'fullScreen':
|
|
|
|
+ this.fullScreenToggle();
|
|
|
|
+ break;
|
|
|
|
+ case 'scrolling':
|
|
|
|
+ this.scrollingToggle();
|
|
|
|
+ break;
|
|
|
|
+ case 'stopScrolling':
|
|
|
|
+ this.stopScrolling();
|
|
|
|
+ break;
|
|
|
|
+ case 'setPosition':
|
|
|
|
+ this.setPositionToggle();
|
|
|
|
+ break;
|
|
|
|
+ case 'search':
|
|
|
|
+ this.searchToggle();
|
|
|
|
+ break;
|
|
|
|
+ case 'copyText':
|
|
|
|
+ this.copyTextToggle();
|
|
|
|
+ break;
|
|
|
|
+ case 'refresh':
|
|
|
|
+ this.refreshBook();
|
|
|
|
+ break;
|
|
|
|
+ case 'offlineMode':
|
|
|
|
+ this.offlineModeToggle();
|
|
|
|
+ break;
|
|
|
|
+ case 'recentBooks':
|
|
|
|
+ this.recentBooksToggle();
|
|
|
|
+ break;
|
|
|
|
+ case 'switchToolbar':
|
|
|
|
+ this.toolBarToggle();
|
|
|
|
+ break;
|
|
|
|
+ case 'donate':
|
|
|
|
+ this.donateToggle();
|
|
|
|
+ break;
|
|
|
|
+ default:
|
|
|
|
+ result = false;
|
|
|
|
+ break;
|
|
}
|
|
}
|
|
|
|
|
|
if (result && event) {
|
|
if (result && event) {
|
|
event.preventDefault();
|
|
event.preventDefault();
|
|
event.stopPropagation();
|
|
event.stopPropagation();
|
|
}
|
|
}
|
|
|
|
+
|
|
return result;
|
|
return result;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1193,7 +1164,14 @@ class Reader extends Vue {
|
|
|
|
|
|
if (!handled && event.type == 'keydown') {
|
|
if (!handled && event.type == 'keydown') {
|
|
const action = this.$root.readerActionByKeyEvent(event);
|
|
const action = this.$root.readerActionByKeyEvent(event);
|
|
- result = this.doAction({action, event});
|
|
|
|
|
|
+
|
|
|
|
+ if (action == 'loader') {
|
|
|
|
+ result = this.doAction({action, event});
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (!result && this.activePage == 'TextPage') {
|
|
|
|
+ result = this.doAction({action, event});
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return result;
|
|
return result;
|