Переход на quasar

This commit is contained in:
Book Pauk
2020-02-26 13:40:06 +07:00
parent 09115c9658
commit 6418e8ee30
3 changed files with 18 additions and 21 deletions

View File

@@ -52,6 +52,7 @@
</q-page-container> </q-page-container>
</q-layout--> </q-layout-->
<div class="fit row"> <div class="fit row">
<StdDialog ref="stdDialog"/>
<keep-alive> <keep-alive>
<router-view class="col"></router-view> <router-view class="col"></router-view>
</keep-alive> </keep-alive>
@@ -62,9 +63,13 @@
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
import Vue from 'vue'; import Vue from 'vue';
import Component from 'vue-class-component'; import Component from 'vue-class-component';
import StdDialog from './share/StdDialog.vue';
import * as utils from '../share/utils'; import * as utils from '../share/utils';
export default @Component({ export default @Component({
components: {
StdDialog,
},
watch: { watch: {
mode: function() { mode: function() {
this.setAppTitle(); this.setAppTitle();
@@ -135,6 +140,7 @@ class App extends Vue {
} }
mounted() { mounted() {
this.$root.stdDialog = this.$refs.stdDialog;
this.dispatch('config/loadConfig'); this.dispatch('config/loadConfig');
this.$watch('apiError', function(newError) { this.$watch('apiError', function(newError) {
if (newError) { if (newError) {

View File

@@ -1,6 +1,5 @@
<template> <template>
<div class="column no-wrap"> <div class="column no-wrap">
<StdDialog ref="stdDialog"/>
<div ref="header" class="header" v-show="toolBarActive"> <div ref="header" class="header" v-show="toolBarActive">
<div ref="buttons" class="row justify-between no-wrap"> <div ref="buttons" class="row justify-between no-wrap">
<button ref="loader" class="tool-button" :class="buttonActiveClass('loader')" @click="buttonClick('loader')" v-ripple> <button ref="loader" class="tool-button" :class="buttonActiveClass('loader')" @click="buttonClick('loader')" v-ripple>
@@ -159,7 +158,6 @@ import Component from 'vue-class-component';
import _ from 'lodash'; import _ from 'lodash';
import {Buffer} from 'safe-buffer'; import {Buffer} from 'safe-buffer';
import StdDialog from '../share/StdDialog.vue';
import LoaderPage from './LoaderPage/LoaderPage.vue'; import LoaderPage from './LoaderPage/LoaderPage.vue';
import TextPage from './TextPage/TextPage.vue'; import TextPage from './TextPage/TextPage.vue';
import ProgressPage from './ProgressPage/ProgressPage.vue'; import ProgressPage from './ProgressPage/ProgressPage.vue';
@@ -180,7 +178,6 @@ import {versionHistory} from './versionHistory';
export default @Component({ export default @Component({
components: { components: {
StdDialog,
LoaderPage, LoaderPage,
TextPage, TextPage,
ProgressPage, ProgressPage,
@@ -300,7 +297,6 @@ class Reader extends Vue {
} }
mounted() { mounted() {
this.stdDialog = this.$refs.stdDialog;
this.updateHeaderMinWidth(); this.updateHeaderMinWidth();
(async() => { (async() => {
@@ -1033,7 +1029,7 @@ class Reader extends Vue {
} catch (e) { } catch (e) {
progress.hide(); this.progressActive = false; progress.hide(); this.progressActive = false;
this.loaderActive = true; this.loaderActive = true;
this.stdDialog.alert(e.message, 'Ошибка', {type: 'negative'}); this.$root.stdDialog.alert(e.message, 'Ошибка', {type: 'negative'});
} }
} }
@@ -1057,7 +1053,7 @@ class Reader extends Vue {
} catch (e) { } catch (e) {
progress.hide(); this.progressActive = false; progress.hide(); this.progressActive = false;
this.loaderActive = true; this.loaderActive = true;
this.stdDialog.alert(e.message, 'Ошибка', {type: 'negative'}); this.$root.stdDialog.alert(e.message, 'Ошибка', {type: 'negative'});
} }
} }
@@ -1091,7 +1087,7 @@ class Reader extends Vue {
keyHook(event) { keyHook(event) {
if (this.$root.rootRoute() == '/reader') { if (this.$root.rootRoute() == '/reader') {
if (this.stdDialog.active) if (this.$root.stdDialog.active)
return; return;
let handled = false; let handled = false;

View File

@@ -4,8 +4,6 @@
Настройки Настройки
</template> </template>
<StdDialog ref="stdDialog"/>
<div class="col row"> <div class="col row">
<div class="full-height"> <div class="full-height">
<q-tabs <q-tabs
@@ -78,7 +76,6 @@ import _ from 'lodash';
import * as utils from '../../../share/utils'; import * as utils from '../../../share/utils';
import Window from '../../share/Window.vue'; import Window from '../../share/Window.vue';
import NumInput from '../../share/NumInput.vue'; import NumInput from '../../share/NumInput.vue';
import StdDialog from '../../share/StdDialog.vue';
import rstore from '../../../store/modules/reader'; import rstore from '../../../store/modules/reader';
import defPalette from './defPalette'; import defPalette from './defPalette';
import * as notify from '../../share/notify'; import * as notify from '../../share/notify';
@@ -89,7 +86,6 @@ export default @Component({
components: { components: {
Window, Window,
NumInput, NumInput,
StdDialog,
}, },
data: function() { data: function() {
return Object.assign({}, rstore.settingDefaults); return Object.assign({}, rstore.settingDefaults);
@@ -168,7 +164,6 @@ class SettingsPage extends Vue {
} }
mounted() { mounted() {
this.stdDialog = this.$refs.stdDialog;
this.$watch( this.$watch(
'$refs.tabs.scrollable', '$refs.tabs.scrollable',
(newValue) => { (newValue) => {
@@ -350,7 +345,7 @@ class SettingsPage extends Vue {
async setDefaults() { async setDefaults() {
try { try {
if (await this.stdDialog.confirm('Подтвердите установку настроек по умолчанию:', ' ')) { if (await this.$root.stdDialog.confirm('Подтвердите установку настроек по умолчанию:', ' ')) {
this.form = Object.assign({}, rstore.settingDefaults); this.form = Object.assign({}, rstore.settingDefaults);
for (let prop in rstore.settingDefaults) { for (let prop in rstore.settingDefaults) {
this[prop] = this.form[prop]; this[prop] = this.form[prop];
@@ -368,15 +363,15 @@ class SettingsPage extends Vue {
async addProfile() { async addProfile() {
try { try {
if (Object.keys(this.profiles).length >= 100) { if (Object.keys(this.profiles).length >= 100) {
this.stdDialog.alert('Достигнут предел количества профилей', 'Ошибка'); this.$root.stdDialog.alert('Достигнут предел количества профилей', 'Ошибка');
return; return;
} }
const result = await this.stdDialog.prompt('Введите произвольное название для профиля устройства:', ' ', { const result = await this.$root.stdDialog.prompt('Введите произвольное название для профиля устройства:', ' ', {
inputValidator: (str) => { if (!str) return 'Название не должно быть пустым'; else if (str.length > 50) return 'Слишком длинное название'; else return true; }, inputValidator: (str) => { if (!str) return 'Название не должно быть пустым'; else if (str.length > 50) return 'Слишком длинное название'; else return true; },
}); });
if (result && result.value) { if (result && result.value) {
if (this.profiles[result.value]) { if (this.profiles[result.value]) {
this.stdDialog.alert('Такой профиль уже существует', 'Ошибка'); this.$root.stdDialog.alert('Такой профиль уже существует', 'Ошибка');
} else { } else {
const newProfiles = Object.assign({}, this.profiles, {[result.value]: 1}); const newProfiles = Object.assign({}, this.profiles, {[result.value]: 1});
this.commit('reader/setAllowProfilesSave', true); this.commit('reader/setAllowProfilesSave', true);
@@ -397,7 +392,7 @@ class SettingsPage extends Vue {
return; return;
try { try {
const result = await this.stdDialog.prompt(`<b>Предупреждение!</b> Удаление профиля '${this.currentProfile}' необратимо.` + const result = await this.$root.stdDialog.prompt(`<b>Предупреждение!</b> Удаление профиля '${this.currentProfile}' необратимо.` +
`<br>Все настройки профиля будут потеряны, однако список читаемых книг сохранится.` + `<br>Все настройки профиля будут потеряны, однако список читаемых книг сохранится.` +
`<br><br>Введите 'да' для подтверждения удаления:`, ' ', { `<br><br>Введите 'да' для подтверждения удаления:`, ' ', {
inputValidator: (str) => { if (str && str.toLowerCase() === 'да') return true; else return 'Удаление не подтверждено'; }, inputValidator: (str) => { if (str && str.toLowerCase() === 'да') return true; else return 'Удаление не подтверждено'; },
@@ -425,7 +420,7 @@ class SettingsPage extends Vue {
return; return;
try { try {
const result = await this.stdDialog.prompt(`<b>Предупреждение!</b> Удаление ВСЕХ профилей с настройками необратимо.` + const result = await this.$root.stdDialog.prompt(`<b>Предупреждение!</b> Удаление ВСЕХ профилей с настройками необратимо.` +
`<br><br>Введите 'да' для подтверждения удаления:`, ' ', { `<br><br>Введите 'да' для подтверждения удаления:`, ' ', {
inputValidator: (str) => { if (str && str.toLowerCase() === 'да') return true; else return 'Удаление не подтверждено'; }, inputValidator: (str) => { if (str && str.toLowerCase() === 'да') return true; else return 'Удаление не подтверждено'; },
}); });
@@ -459,7 +454,7 @@ class SettingsPage extends Vue {
async enterServerStorageKey(key) { async enterServerStorageKey(key) {
try { try {
const result = await this.stdDialog.prompt(`<b>Предупреждение!</b> Изменение ключа доступа приведет к замене всех профилей и читаемых книг в читалке.` + const result = await this.$root.stdDialog.prompt(`<b>Предупреждение!</b> Изменение ключа доступа приведет к замене всех профилей и читаемых книг в читалке.` +
`<br><br>Введите новый ключ доступа:`, ' ', { `<br><br>Введите новый ключ доступа:`, ' ', {
inputValidator: (str) => { inputValidator: (str) => {
try { try {
@@ -484,7 +479,7 @@ class SettingsPage extends Vue {
async generateServerStorageKey() { async generateServerStorageKey() {
try { try {
const result = await this.stdDialog.prompt(`<b>Предупреждение!</b> Генерация нового ключа доступа приведет к удалению всех профилей и читаемых книг в читалке.` + const result = await this.$root.stdDialog.prompt(`<b>Предупреждение!</b> Генерация нового ключа доступа приведет к удалению всех профилей и читаемых книг в читалке.` +
`<br><br>Введите 'да' для подтверждения генерации нового ключа:`, ' ', { `<br><br>Введите 'да' для подтверждения генерации нового ключа:`, ' ', {
inputValidator: (str) => { if (str && str.toLowerCase() === 'да') return true; else return 'Генерация не подтверждена'; }, inputValidator: (str) => { if (str && str.toLowerCase() === 'да') return true; else return 'Генерация не подтверждена'; },
}); });
@@ -499,7 +494,7 @@ class SettingsPage extends Vue {
} }
keyHook(event) { keyHook(event) {
if (!this.stdDialog.active && event.type == 'keydown' && event.code == 'Escape') { if (!this.$root.stdDialog.active && event.type == 'keydown' && event.code == 'Escape') {
this.close(); this.close();
} }
return true; return true;