From 10d0a4079cbe303f69ef166e24d5337d6e0d7cb6 Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Wed, 18 Mar 2020 19:00:02 +0700 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=20=D0=BD?= =?UTF-8?q?=D0=B0=D0=B4=20=D1=85=D0=BE=D1=82=D0=BA=D0=B5=D1=8F=D0=BC=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/components/Reader/Reader.vue | 45 +++++++++++++------ .../Reader/SettingsPage/SettingsPage.vue | 3 +- .../SettingsPage/UserHotKeys/UserHotKeys.vue | 4 ++ .../Reader/SettingsPage/include/KeysTab.inc | 41 ++++++++++++----- .../components/Reader/TextPage/TextPage.vue | 13 +++--- client/store/modules/reader.js | 12 +++-- 6 files changed, 85 insertions(+), 33 deletions(-) diff --git a/client/components/Reader/Reader.vue b/client/components/Reader/Reader.vue index ef4558a9..53a8c8b8 100644 --- a/client/components/Reader/Reader.vue +++ b/client/components/Reader/Reader.vue @@ -758,6 +758,20 @@ class Reader extends Vue { } } + undoAction() { + if (this.actionCur > 0) { + this.actionCur--; + this.bookPosChanged({bookPos: this.actionList[this.actionCur]}); + } + } + + redoAction() { + if (this.actionCur < this.actionList.length - 1) { + this.actionCur++; + this.bookPosChanged({bookPos: this.actionList[this.actionCur]}); + } + } + buttonClick(button) { const activeClass = this.buttonActiveClass(button); @@ -771,16 +785,10 @@ class Reader extends Vue { this.loaderToggle(); break; case 'undoAction': - if (this.actionCur > 0) { - this.actionCur--; - this.bookPosChanged({bookPos: this.actionList[this.actionCur]}); - } + this.undoAction(); break; case 'redoAction': - if (this.actionCur < this.actionList.length - 1) { - this.actionCur++; - this.bookPosChanged({bookPos: this.actionList[this.actionCur]}); - } + this.redoAction(); break; case 'fullScreen': this.fullScreenToggle(); @@ -1137,15 +1145,27 @@ class Reader extends Vue { event.preventDefault(); event.stopPropagation(); 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; default: result = false; break; } switch (event.code) { - case 'KeyZ': - this.scrollingToggle(); - break; case 'KeyP': this.setPositionToggle(); break; @@ -1174,9 +1194,6 @@ class Reader extends Vue { case 'KeyO': this.offlineModeToggle(); break; - case 'KeyS': - this.settingsToggle(); - break; } } } diff --git a/client/components/Reader/SettingsPage/SettingsPage.vue b/client/components/Reader/SettingsPage/SettingsPage.vue index 1b75773e..dbaf6018 100644 --- a/client/components/Reader/SettingsPage/SettingsPage.vue +++ b/client/components/Reader/SettingsPage/SettingsPage.vue @@ -46,7 +46,7 @@ @@include('./include/ButtonsTab.inc'); -
+
@@include('./include/KeysTab.inc');
@@ -142,6 +142,7 @@ export default @Component({ class SettingsPage extends Vue { selectedTab = 'profiles'; selectedViewTab = 'color'; + selectedKeysTab = 'mouse'; form = {}; fontBold = false; fontItalic = false; diff --git a/client/components/Reader/SettingsPage/UserHotKeys/UserHotKeys.vue b/client/components/Reader/SettingsPage/UserHotKeys/UserHotKeys.vue index e98a4408..9340a343 100644 --- a/client/components/Reader/SettingsPage/UserHotKeys/UserHotKeys.vue +++ b/client/components/Reader/SettingsPage/UserHotKeys/UserHotKeys.vue @@ -39,6 +39,7 @@ class="button bg-green-8 text-white" @click="addHotKey(action)" v-ripple + :disabled="value[action].length >= maxCodesLength" > Добавить сочетание клавиш @@ -90,6 +91,7 @@ class UserHotKeys extends UserHotKeysProps { rstore = {}; tableData = []; collisions = {}; + maxCodesLength = 10; created() { this.rstore = rstore; @@ -159,6 +161,8 @@ class UserHotKeys extends UserHotKeysProps { } async addHotKey(action) { + if (this.value[action].length >= this.maxCodesLength) + return; try { const result = await this.$root.stdDialog.getHotKey(`Добавить сочетание для:
${rstore.readerActions[action]}`, ''); if (result) { diff --git a/client/components/Reader/SettingsPage/include/KeysTab.inc b/client/components/Reader/SettingsPage/include/KeysTab.inc index d3915aeb..20731c6f 100644 --- a/client/components/Reader/SettingsPage/include/KeysTab.inc +++ b/client/components/Reader/SettingsPage/include/KeysTab.inc @@ -1,12 +1,33 @@ -
Управление
- -
-
-
- -
+
+ + + +
-
- -
\ No newline at end of file +
+ +
+
+
+
+
+ +
+
+
+ +
+
+ +
+
+
diff --git a/client/components/Reader/TextPage/TextPage.vue b/client/components/Reader/TextPage/TextPage.vue index 32618243..6ad0920c 100644 --- a/client/components/Reader/TextPage/TextPage.vue +++ b/client/components/Reader/TextPage/TextPage.vue @@ -944,6 +944,14 @@ class TextPage extends Vue { let result = false; if (event.type == 'keydown' && !event.ctrlKey && !event.altKey) { result = true; + const action = this.$root.readerActionByKeyEvent(event); + + switch (action) { + default: + result = false; + break; + } + switch (event.code) { case 'ArrowDown': if (event.shiftKey) @@ -984,11 +992,6 @@ class TextPage extends Vue { else this.doFontSizeInc(); break; - case 'Enter': - case 'Backquote'://` - case 'KeyF': - this.doFullScreenToggle(); - break; case 'Tab': case 'KeyQ': this.doToolBarToggle(); diff --git a/client/store/modules/reader.js b/client/store/modules/reader.js index 26307ddf..e59929bc 100644 --- a/client/store/modules/reader.js +++ b/client/store/modules/reader.js @@ -1,12 +1,12 @@ const readerActions = { - 'help': 'Справка', - 'loader': 'Страница загрузки', + 'help': 'Вызвать cправку', + 'loader': 'На страницу загрузки', 'settings': 'Настроить', 'undoAction': 'Действие назад', 'redoAction': 'Действие вперед', 'fullScreen': 'На весь экран', 'scrolling': 'Плавный скроллинг', - 'setPosition': 'На страницу', + 'setPosition': 'Установить позицию', 'search': 'Найти в тексте', 'copyText': 'Скопировать текст со страницы', 'refresh': 'Принудительно обновить книгу', @@ -32,6 +32,12 @@ const toolButtons = [ const hotKeys = [ {name: 'help', codes: ['F1', 'H']}, {name: 'loader', codes: ['Escape']}, + {name: 'settings', codes: ['S']}, + {name: 'undoAction', codes: ['Ctrl+Z']}, + {name: 'redoAction', codes: ['Ctrl+X']}, + {name: 'fullScreen', codes: ['Enter', 'Backquote', 'F']}, + {name: 'scrolling', codes: ['Z']}, + ]; const fonts = [