Работа над хоткеями

This commit is contained in:
Book Pauk
2020-03-18 19:00:02 +07:00
parent 589f7f3c22
commit 10d0a4079c
6 changed files with 85 additions and 33 deletions

View File

@@ -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;
}
}
}

View File

@@ -46,7 +46,7 @@
@@include('./include/ButtonsTab.inc');
</div>
<!-- Управление ------------------------------------------------------------------>
<div v-if="selectedTab == 'keys'" class="fit tab-panel">
<div v-if="selectedTab == 'keys'" class="fit column">
@@include('./include/KeysTab.inc');
</div>
<!-- Листание -------------------------------------------------------------------->
@@ -142,6 +142,7 @@ export default @Component({
class SettingsPage extends Vue {
selectedTab = 'profiles';
selectedViewTab = 'color';
selectedKeysTab = 'mouse';
form = {};
fontBold = false;
fontItalic = false;

View File

@@ -39,6 +39,7 @@
class="button bg-green-8 text-white"
@click="addHotKey(action)"
v-ripple
:disabled="value[action].length >= maxCodesLength"
>
<q-tooltip :delay="1000" anchor="top middle" self="bottom middle" content-style="font-size: 80%">
Добавить сочетание клавиш
@@ -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(`Добавить сочетание для:<br><b>${rstore.readerActions[action]}</b>`, '');
if (result) {

View File

@@ -1,12 +1,33 @@
<div class="part-header">Управление</div>
<div class="item row">
<div class="label-4"></div>
<div class="col row">
<q-checkbox size="xs" v-model="clickControl" label="Включить управление кликом" />
</div>
<div class="bg-grey-4 row">
<q-tabs
v-model="selectedKeysTab"
active-color="black"
active-bg-color="white"
indicator-color="white"
dense
no-caps
class="no-mp bg-grey-4 text-grey-7"
>
<q-tab name="mouse" label="Мышь/тачскрин" />
<q-tab name="keyboard" label="Клавиатура" />
</q-tabs>
</div>
<div class="item row">
<UserHotKeys v-model="userHotKeys" />
</div>
<div class="q-mb-sm"/>
<div class="col tab-panel">
<div v-if="selectedKeysTab == 'mouse'">
<div class="item row">
<div class="label-4"></div>
<div class="col row">
<q-checkbox size="xs" v-model="clickControl" label="Включить управление кликом" />
</div>
</div>
</div>
<div v-if="selectedKeysTab == 'keyboard'">
<div class="item row">
<UserHotKeys v-model="userHotKeys" />
</div>
</div>
</div>

View File

@@ -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();