Рефакторинг

This commit is contained in:
Book Pauk
2020-03-19 16:38:31 +07:00
parent ba85c54d7c
commit 2c57817dde
2 changed files with 77 additions and 104 deletions

View File

@@ -65,6 +65,8 @@
@load-book="loadBook"
@load-file="loadFile"
@book-pos-changed="bookPosChanged"
@do-action="doAction"
@tool-bar-toggle="toolBarToggle"
@full-screen-toogle="fullScreenToggle"
@stop-scrolling="stopScrolling"
@@ -76,6 +78,7 @@
<SetPositionPage v-if="setPositionActive" ref="setPositionPage" @set-position-toggle="setPositionToggle" @book-pos-changed="bookPosChanged"></SetPositionPage>
<SearchPage v-show="searchActive" ref="searchPage"
@do-action="doAction"
@search-toggle="searchToggle"
@book-pos-changed="bookPosChanged"
@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'])
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 classDisabled = { 'tool-button-disabled': true, 'tool-button-disabled:hover': true };
let classResult = {};
switch (button) {
switch (action) {
case 'loader':
case 'fullScreen':
case 'setPosition':
@@ -838,7 +804,7 @@ class Reader extends Vue {
case 'settings':
if (this.progressActive) {
classResult = classDisabled;
} else if (this[`${button}Active`]) {
} else if (this[`${action}Active`]) {
classResult = classActive;
}
break;
@@ -853,7 +819,7 @@ class Reader extends Vue {
}
if (this.activePage == 'LoaderPage' || !this.mostRecentBookReactive) {
switch (button) {
switch (action) {
case 'undoAction':
case 'redoAction':
case 'setPosition':
@@ -1103,63 +1069,68 @@ class Reader extends Vue {
}
doAction(opts) {
let result = false;
let result = true;
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) {
event.preventDefault();
event.stopPropagation();
}
return result;
}
@@ -1193,7 +1164,14 @@ class Reader extends Vue {
if (!handled && event.type == 'keydown') {
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;