Работа над хоткеями
This commit is contained in:
@@ -2,26 +2,6 @@
|
|||||||
<div class="page">
|
<div class="page">
|
||||||
<span class="text-h6 text-bold">Управление с помощью горячих клавиш:</span>
|
<span class="text-h6 text-bold">Управление с помощью горячих клавиш:</span>
|
||||||
<ul>
|
<ul>
|
||||||
<li><b>F1, H</b> - открыть справку</li>
|
|
||||||
<li><b>Escape</b> - показать/скрыть страницу загрузки</li>
|
|
||||||
<li><b>Tab, Q</b> - показать/скрыть панель управления</li>
|
|
||||||
<li><b>PageUp, Left, Shift+Space, Backspace</b> - страницу назад</li>
|
|
||||||
<li><b>PageDown, Right, Space</b> - страницу вперед</li>
|
|
||||||
<li><b>Home</b> - в начало книги</li>
|
|
||||||
<li><b>End</b> - в конец книги</li>
|
|
||||||
<li><b>Up</b> - строчку назад</li>
|
|
||||||
<li><b>Down</b> - строчку вперёд</li>
|
|
||||||
<li><b>A, Shift+A</b> - изменить размер шрифта</li>
|
|
||||||
<li><b>Enter, F, F11, ` (апостроф)</b> - вкл./выкл. полный экран</li>
|
|
||||||
<li><b>Z</b> - вкл./выкл. плавный скроллинг текста</li>
|
|
||||||
<li><b>Shift+Down/Shift+Up</b> - увеличить/уменьшить скорость скроллинга
|
|
||||||
<li><b>P</b> - установить страницу</li>
|
|
||||||
<li><b>Ctrl+F</b> - найти в тексте</li>
|
|
||||||
<li><b>Ctrl+C</b> - скопировать текст со страницы</li>
|
|
||||||
<li><b>R</b> - принудительно обновить книгу в обход кэша</li>
|
|
||||||
<li><b>X</b> - открыть недавние</li>
|
|
||||||
<li><b>O</b> - автономный режим</li>
|
|
||||||
<li><b>S</b> - открыть окно настроек</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -1160,39 +1160,32 @@ class Reader extends Vue {
|
|||||||
case 'scrolling':
|
case 'scrolling':
|
||||||
this.scrollingToggle();
|
this.scrollingToggle();
|
||||||
break;
|
break;
|
||||||
default:
|
case 'setPosition':
|
||||||
result = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (event.code) {
|
|
||||||
case 'KeyP':
|
|
||||||
this.setPositionToggle();
|
this.setPositionToggle();
|
||||||
break;
|
break;
|
||||||
case 'KeyF':
|
case 'search':
|
||||||
if (event.ctrlKey) {
|
this.searchToggle();
|
||||||
this.searchToggle();
|
event.preventDefault();
|
||||||
event.preventDefault();
|
event.stopPropagation();
|
||||||
event.stopPropagation();
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case 'KeyC':
|
case 'copyText':
|
||||||
if (event.ctrlKey) {
|
this.copyTextToggle();
|
||||||
this.copyTextToggle();
|
event.preventDefault();
|
||||||
event.preventDefault();
|
event.stopPropagation();
|
||||||
event.stopPropagation();
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case 'KeyR':
|
case 'refresh':
|
||||||
this.refreshBook();
|
this.refreshBook();
|
||||||
break;
|
break;
|
||||||
case 'KeyX':
|
case 'offlineMode':
|
||||||
|
this.offlineModeToggle();
|
||||||
|
break;
|
||||||
|
case 'recentBooks':
|
||||||
this.recentBooksToggle();
|
this.recentBooksToggle();
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
break;
|
break;
|
||||||
case 'KeyO':
|
default:
|
||||||
this.offlineModeToggle();
|
result = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -146,7 +146,8 @@ class UserHotKeys extends UserHotKeysProps {
|
|||||||
collisionWarning(code) {
|
collisionWarning(code) {
|
||||||
if (this.collisions[code]) {
|
if (this.collisions[code]) {
|
||||||
const descs = this.collisions[code].map(action => `<b>${rstore.readerActions[action]}</b>`);
|
const descs = this.collisions[code].map(action => `<b>${rstore.readerActions[action]}</b>`);
|
||||||
this.$root.stdDialog.alert(`Сочетание '${code}' одновременно назначено<br>следующим действиям:<br>${descs.join('<br>')}`, 'Предупреждение');
|
this.$root.stdDialog.alert(`Сочетание '${code}' одновременно назначено<br>следующим действиям:<br>${descs.join('<br>')}<br><br>
|
||||||
|
Возможно неожиданное поведение.`, 'Предупреждение');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -183,7 +184,7 @@ class UserHotKeys extends UserHotKeysProps {
|
|||||||
|
|
||||||
async defaultHotKey(action) {
|
async defaultHotKey(action) {
|
||||||
try {
|
try {
|
||||||
if (await this.$root.stdDialog.confirm(`Подтвердите установку клавиш по умолчанию для:<br><b>${rstore.readerActions[action]}</b>`, ' ')) {
|
if (await this.$root.stdDialog.confirm(`Подтвердите сброс сочетаний клавиш<br>в значения по умолчанию для действия:<br><b>${rstore.readerActions[action]}</b>`, ' ')) {
|
||||||
const codes = Array.from(rstore.settingDefaults.userHotKeys[action]);
|
const codes = Array.from(rstore.settingDefaults.userHotKeys[action]);
|
||||||
const newValue = Object.assign({}, this.value, {[action]: codes});
|
const newValue = Object.assign({}, this.value, {[action]: codes});
|
||||||
this.$emit('input', newValue);
|
this.$emit('input', newValue);
|
||||||
@@ -195,7 +196,7 @@ class UserHotKeys extends UserHotKeysProps {
|
|||||||
|
|
||||||
async defaultHotKeyAll() {
|
async defaultHotKeyAll() {
|
||||||
try {
|
try {
|
||||||
if (await this.$root.stdDialog.confirm('Подтвердите установку ВСЕХ <br>сочетаний клавиш по умолчанию:', ' ')) {
|
if (await this.$root.stdDialog.confirm('Подтвердите сброс ВСЕХ сочетаний<br>клавиш в значения по умолчанию:', ' ')) {
|
||||||
const newValue = Object.assign({}, rstore.settingDefaults.userHotKeys);
|
const newValue = Object.assign({}, rstore.settingDefaults.userHotKeys);
|
||||||
this.$emit('input', newValue);
|
this.$emit('input', newValue);
|
||||||
}
|
}
|
||||||
@@ -218,8 +219,19 @@ class UserHotKeys extends UserHotKeysProps {
|
|||||||
border-bottom: 1px solid grey;
|
border-bottom: 1px solid grey;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.table-row:nth-child(even) {
|
||||||
|
background-color: #f7f7f7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-row:hover {
|
||||||
|
background-color: #f0f0f0;
|
||||||
|
}
|
||||||
|
|
||||||
.desc {
|
.desc {
|
||||||
width: 100px;
|
width: 130px;
|
||||||
|
overflow-wrap: break-word;
|
||||||
|
word-wrap: break-word;
|
||||||
|
white-space: normal;
|
||||||
}
|
}
|
||||||
|
|
||||||
.hotKeys {
|
.hotKeys {
|
||||||
|
|||||||
@@ -899,7 +899,7 @@ class TextPage extends Vue {
|
|||||||
async doFontSizeInc() {
|
async doFontSizeInc() {
|
||||||
if (!this.settingsChanging) {
|
if (!this.settingsChanging) {
|
||||||
this.settingsChanging = true;
|
this.settingsChanging = true;
|
||||||
const newSize = (this.settings.fontSize + 1 < 100 ? this.settings.fontSize + 1 : 100);
|
const newSize = (this.settings.fontSize + 1 < 200 ? this.settings.fontSize + 1 : 100);
|
||||||
const newSettings = Object.assign({}, this.settings, {fontSize: newSize});
|
const newSettings = Object.assign({}, this.settings, {fontSize: newSize});
|
||||||
this.commit('reader/setSettings', newSettings);
|
this.commit('reader/setSettings', newSettings);
|
||||||
await sleep(50);
|
await sleep(50);
|
||||||
@@ -947,57 +947,41 @@ class TextPage extends Vue {
|
|||||||
const action = this.$root.readerActionByKeyEvent(event);
|
const action = this.$root.readerActionByKeyEvent(event);
|
||||||
|
|
||||||
switch (action) {
|
switch (action) {
|
||||||
default:
|
case 'switchToolbar':
|
||||||
result = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (event.code) {
|
|
||||||
case 'ArrowDown':
|
|
||||||
if (event.shiftKey)
|
|
||||||
this.doScrollingSpeedUp();
|
|
||||||
else
|
|
||||||
this.doDown();
|
|
||||||
break;
|
|
||||||
case 'ArrowUp':
|
|
||||||
if (event.shiftKey)
|
|
||||||
this.doScrollingSpeedDown();
|
|
||||||
else
|
|
||||||
this.doUp();
|
|
||||||
break;
|
|
||||||
case 'PageDown':
|
|
||||||
case 'ArrowRight':
|
|
||||||
this.doPageDown();
|
|
||||||
break;
|
|
||||||
case 'Space':
|
|
||||||
if (event.shiftKey)
|
|
||||||
this.doPageUp();
|
|
||||||
else
|
|
||||||
this.doPageDown();
|
|
||||||
break;
|
|
||||||
case 'PageUp':
|
|
||||||
case 'ArrowLeft':
|
|
||||||
case 'Backspace':
|
|
||||||
this.doPageUp();
|
|
||||||
break;
|
|
||||||
case 'Home':
|
|
||||||
this.doHome();
|
|
||||||
break;
|
|
||||||
case 'End':
|
|
||||||
this.doEnd();
|
|
||||||
break;
|
|
||||||
case 'KeyA':
|
|
||||||
if (event.shiftKey)
|
|
||||||
this.doFontSizeDec();
|
|
||||||
else
|
|
||||||
this.doFontSizeInc();
|
|
||||||
break;
|
|
||||||
case 'Tab':
|
|
||||||
case 'KeyQ':
|
|
||||||
this.doToolBarToggle();
|
this.doToolBarToggle();
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
break;
|
break;
|
||||||
|
case 'bookBegin':
|
||||||
|
this.doHome();
|
||||||
|
break;
|
||||||
|
case 'bookEnd':
|
||||||
|
this.doEnd();
|
||||||
|
break;
|
||||||
|
case 'pageBack':
|
||||||
|
this.doPageUp();
|
||||||
|
break;
|
||||||
|
case 'pageForward':
|
||||||
|
this.doPageDown();
|
||||||
|
break;
|
||||||
|
case 'lineBack':
|
||||||
|
this.doUp();
|
||||||
|
break;
|
||||||
|
case 'lineForward':
|
||||||
|
this.doDown();
|
||||||
|
break;
|
||||||
|
case 'incFontSize':
|
||||||
|
this.doFontSizeInc();
|
||||||
|
break;
|
||||||
|
case 'decFontSize':
|
||||||
|
this.doFontSizeDec();
|
||||||
|
break;
|
||||||
|
case 'scrollingSpeedUp':
|
||||||
|
this.doScrollingSpeedUp();
|
||||||
|
break;
|
||||||
|
case 'scrollingSpeedDown':
|
||||||
|
this.doScrollingSpeedDown();
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
result = false;
|
result = false;
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ export const versionHistory = [
|
|||||||
content:
|
content:
|
||||||
`
|
`
|
||||||
<ul>
|
<ul>
|
||||||
|
<li>в настройки добавлена возможность назначать сочетания клавиш для действий читалки</li>
|
||||||
|
<li>в настройки добавлена возможность назначать действия на области экрана при управлении кликом</li>
|
||||||
<li>переход на Service Worker вместо AppCache для автономного режима работы</li>
|
<li>переход на Service Worker вместо AppCache для автономного режима работы</li>
|
||||||
</ul>
|
</ul>
|
||||||
`
|
`
|
||||||
|
|||||||
@@ -12,6 +12,17 @@ const readerActions = {
|
|||||||
'refresh': 'Принудительно обновить книгу',
|
'refresh': 'Принудительно обновить книгу',
|
||||||
'offlineMode': 'Автономный режим (без интернета)',
|
'offlineMode': 'Автономный режим (без интернета)',
|
||||||
'recentBooks': 'Открыть недавние',
|
'recentBooks': 'Открыть недавние',
|
||||||
|
'switchToolbar': 'Показать/скрыть панель управления',
|
||||||
|
'bookBegin': 'В начало книги',
|
||||||
|
'bookEnd': 'В конец книги',
|
||||||
|
'pageBack': 'Страницу назад',
|
||||||
|
'pageForward': 'Страницу вперед',
|
||||||
|
'lineBack': 'Строчку назад',
|
||||||
|
'lineForward': 'Строчку вперед',
|
||||||
|
'incFontSize': 'Увеличить размер шрифта',
|
||||||
|
'decFontSize': 'Уменьшить размер шрифта',
|
||||||
|
'scrollingSpeedUp': 'Увеличить скорость скроллинга',
|
||||||
|
'scrollingSpeedDown': 'Уменьшить скорость скроллинга',
|
||||||
};
|
};
|
||||||
|
|
||||||
//readerActions[name]
|
//readerActions[name]
|
||||||
@@ -37,7 +48,24 @@ const hotKeys = [
|
|||||||
{name: 'redoAction', codes: ['Ctrl+X']},
|
{name: 'redoAction', codes: ['Ctrl+X']},
|
||||||
{name: 'fullScreen', codes: ['Enter', 'Backquote', 'F']},
|
{name: 'fullScreen', codes: ['Enter', 'Backquote', 'F']},
|
||||||
{name: 'scrolling', codes: ['Z']},
|
{name: 'scrolling', codes: ['Z']},
|
||||||
|
{name: 'setPosition', codes: ['P']},
|
||||||
|
{name: 'search', codes: ['Ctrl+F']},
|
||||||
|
{name: 'copyText', codes: ['Ctrl+C']},
|
||||||
|
{name: 'refresh', codes: ['R']},
|
||||||
|
{name: 'offlineMode', codes: ['O']},
|
||||||
|
{name: 'recentBooks', codes: ['X']},
|
||||||
|
|
||||||
|
{name: 'switchToolbar', codes: ['Tab', 'Q']},
|
||||||
|
{name: 'bookBegin', codes: ['Home']},
|
||||||
|
{name: 'bookEnd', codes: ['End']},
|
||||||
|
{name: 'pageBack', codes: ['PageUp', 'ArrowLeft', 'Backspace', 'Shift+Space']},
|
||||||
|
{name: 'pageForward', codes: ['PageDown', 'ArrowRight', 'Space']},
|
||||||
|
{name: 'lineBack', codes: ['ArrowUp']},
|
||||||
|
{name: 'lineForward', codes: ['ArrowDown']},
|
||||||
|
{name: 'incFontSize', codes: ['A']},
|
||||||
|
{name: 'decFontSize', codes: ['Shift+A']},
|
||||||
|
{name: 'scrollingSpeedUp', codes: ['Shift+ArrowDown']},
|
||||||
|
{name: 'scrollingSpeedDown', codes: ['Shift+ArrowUp']},
|
||||||
];
|
];
|
||||||
|
|
||||||
const fonts = [
|
const fonts = [
|
||||||
|
|||||||
Reference in New Issue
Block a user