Работа над хоткеями
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user