diff --git a/client/components/Reader/HelpPage/CommonHelpPage/CommonHelpPage.vue b/client/components/Reader/HelpPage/CommonHelpPage/CommonHelpPage.vue
index de26beda..29f8e293 100644
--- a/client/components/Reader/HelpPage/CommonHelpPage/CommonHelpPage.vue
+++ b/client/components/Reader/HelpPage/CommonHelpPage/CommonHelpPage.vue
@@ -5,7 +5,7 @@
загрузка любой страницы интернета
изменение цвета фона, текста, размер и тип шрифта и прочее
установка и запоминание текущей позиции и настроек в браузере (в будущем планируется сохранение и на сервер)
- кеширование файлов книг на клиенте и на сервере
+ кэширование файлов книг на клиенте и на сервере
открытие книг с локального диска
плавный скроллинг текста
анимация перелистывания (скоро)
@@ -37,9 +37,7 @@ export default @Component({
Window,
},
})
-class HelpPage extends Vue {
- selectedTab = null;
-
+class CommonHelpPage extends Vue {
created() {
this.config = this.$store.state.config;
}
@@ -63,6 +61,7 @@ class HelpPage extends Vue {
padding: 15px;
overflow-y: auto;
font-size: 150%;
+ line-height: 130%;
}
h4 {
diff --git a/client/components/Reader/HelpPage/HelpPage.vue b/client/components/Reader/HelpPage/HelpPage.vue
index 1723a15b..221aa56d 100644
--- a/client/components/Reader/HelpPage/HelpPage.vue
+++ b/client/components/Reader/HelpPage/HelpPage.vue
@@ -11,6 +11,7 @@
+
@@ -30,11 +31,13 @@ import Component from 'vue-class-component';
import Window from '../../share/Window.vue';
import CommonHelpPage from './CommonHelpPage/CommonHelpPage.vue';
+import HotkeysHelpPage from './HotkeysHelpPage/HotkeysHelpPage.vue';
export default @Component({
components: {
Window,
CommonHelpPage,
+ HotkeysHelpPage,
},
})
class HelpPage extends Vue {
diff --git a/client/components/Reader/HelpPage/HotkeysHelpPage/HotkeysHelpPage.vue b/client/components/Reader/HelpPage/HotkeysHelpPage/HotkeysHelpPage.vue
new file mode 100644
index 00000000..e13d8ba0
--- /dev/null
+++ b/client/components/Reader/HelpPage/HotkeysHelpPage/HotkeysHelpPage.vue
@@ -0,0 +1,58 @@
+
+
+
Управление с помощью горячих клавиш:
+
+ - Escape - показать/скрыть страницу загрузки
+ - Tab - показать/скрыть панель управления
+ - PageUp, Left, Shift+Space, Backspace - страницу назад
+ - PageDown, Right, Space - страницу вперед
+ - Home - в начало книги
+ - End - в конец книги
+ - Up - строчку назад
+ - Down - строчку вперёд
+ - A, Shift+A - изменить размер шрифта
+ - Enter, F, F11, ` (апостроф) - вкл./выкл. полный экран
+ - Z - вкл./выкл. плавный скроллинг текста
+ - Shift+Down/Shift+Up - увеличить/уменьшить скорость скроллинга
+
- P - установить страницу
+ - Ctrl+F - найти в тексте
+ - Ctrl+C - скопировать текст со страницы
+ - R - принудительно обновить книгу в обход кэша
+ - H - открыть недавние
+ - S - открыть окно настроек
+
+
+
+
+
+
+
diff --git a/client/components/Reader/TextPage/TextPage.vue b/client/components/Reader/TextPage/TextPage.vue
index 6ab4397b..78f50525 100644
--- a/client/components/Reader/TextPage/TextPage.vue
+++ b/client/components/Reader/TextPage/TextPage.vue
@@ -860,22 +860,77 @@ class TextPage extends Vue {
this.$emit('tool-bar-toggle');
}
+ async doFontSizeInc() {
+ if (!this.settingsChanging) {
+ this.settingsChanging = true;
+ const newSize = (this.settings.fontSize + 1 < 100 ? this.settings.fontSize + 1 : 100);
+ const newSettings = Object.assign({}, this.settings, {fontSize: newSize});
+ this.commit('reader/setSettings', newSettings);
+ await sleep(50);
+ this.settingsChanging = false;
+ }
+ }
+
+ async doFontSizeDec() {
+ if (!this.settingsChanging) {
+ this.settingsChanging = true;
+ const newSize = (this.settings.fontSize - 1 > 5 ? this.settings.fontSize - 1 : 5);
+ const newSettings = Object.assign({}, this.settings, {fontSize: newSize});
+ this.commit('reader/setSettings', newSettings);
+ await sleep(50);
+ this.settingsChanging = false;
+ }
+ }
+
+ async doScrollingSpeedUp() {
+ if (!this.settingsChanging) {
+ this.settingsChanging = true;
+ const newDelay = (this.settings.scrollingDelay - 50 > 1 ? this.settings.scrollingDelay - 50 : 1);
+ const newSettings = Object.assign({}, this.settings, {scrollingDelay: newDelay});
+ this.commit('reader/setSettings', newSettings);
+ await sleep(50);
+ this.settingsChanging = false;
+ }
+ }
+
+ async doScrollingSpeedDown() {
+ if (!this.settingsChanging) {
+ this.settingsChanging = true;
+ const newDelay = (this.settings.scrollingDelay + 50 < 10000 ? this.settings.scrollingDelay + 50 : 10000);
+ const newSettings = Object.assign({}, this.settings, {scrollingDelay: newDelay});
+ this.commit('reader/setSettings', newSettings);
+ await sleep(50);
+ this.settingsChanging = false;
+ }
+ }
+
keyHook(event) {
let result = false;
- if (event.type == 'keydown' && !event.ctrlKey && !event.altKey && !event.shiftKey) {
+ if (event.type == 'keydown' && !event.ctrlKey && !event.altKey) {
result = true;
switch (event.code) {
case 'ArrowDown':
- this.doDown();
+ if (event.shiftKey)
+ this.doScrollingSpeedUp();
+ else
+ this.doDown();
break;
case 'ArrowUp':
- this.doUp();
+ if (event.shiftKey)
+ this.doScrollingSpeedDown();
+ else
+ this.doUp();
break;
case 'PageDown':
case 'ArrowRight':
- case 'Space':
this.doPageDown();
break;
+ case 'Space':
+ if (event.shiftKey)
+ this.doPageUp();
+ else
+ this.doPageDown();
+ break;
case 'PageUp':
case 'ArrowLeft':
case 'Backspace':
@@ -887,6 +942,12 @@ class TextPage extends Vue {
case 'End':
this.doEnd();
break;
+ case 'KeyA':
+ if (event.shiftKey)
+ this.doFontSizeDec();
+ else
+ this.doFontSizeInc();
+ break;
case 'Enter':
case 'Backquote'://`
case 'KeyF':