Добавил цвета для статусбара и разделителя
This commit is contained in:
@@ -148,6 +148,20 @@ export default @Component({
|
||||
if (hex.test(newValue))
|
||||
this.backgroundColor = newValue;
|
||||
},
|
||||
dualDivColor(newValue) {
|
||||
this.dualDivColorFiltered = newValue;
|
||||
},
|
||||
dualDivColorFiltered(newValue) {
|
||||
if (hex.test(newValue))
|
||||
this.dualDivColor = newValue;
|
||||
},
|
||||
statusBarColor(newValue) {
|
||||
this.statusBarColorFiltered = newValue;
|
||||
},
|
||||
statusBarColorFiltered(newValue) {
|
||||
if (hex.test(newValue))
|
||||
this.statusBarColor = newValue;
|
||||
},
|
||||
},
|
||||
})
|
||||
class SettingsPage extends Vue {
|
||||
@@ -161,6 +175,7 @@ class SettingsPage extends Vue {
|
||||
tabsScrollable = false;
|
||||
textColorFiltered = '';
|
||||
bgColorFiltered = '';
|
||||
dualDivColorFiltered = '';
|
||||
|
||||
webFonts = [];
|
||||
fonts = [];
|
||||
@@ -221,6 +236,8 @@ class SettingsPage extends Vue {
|
||||
this.vertShift = this.fontShifts[font] || 0;
|
||||
this.textColorFiltered = this.textColor;
|
||||
this.bgColorFiltered = this.backgroundColor;
|
||||
this.dualDivColorFiltered = this.dualDivColor;
|
||||
this.statusBarColorFiltered = this.statusBarColor;
|
||||
}
|
||||
|
||||
get mode() {
|
||||
@@ -357,6 +374,12 @@ class SettingsPage extends Vue {
|
||||
case 'bg':
|
||||
result += `background-color: ${this.backgroundColor};`
|
||||
break;
|
||||
case 'div':
|
||||
result += `background-color: ${this.dualDivColor};`
|
||||
break;
|
||||
case 'statusbar':
|
||||
result += `background-color: ${this.statusBarColor};`
|
||||
break;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -39,6 +39,42 @@
|
||||
|
||||
<div v-show="dualPageMode">
|
||||
<div class="part-header">Разделитель</div>
|
||||
|
||||
<div class="item row no-wrap">
|
||||
<div class="label-2">Цвет</div>
|
||||
<div class="col-left row">
|
||||
<q-input class="col-left no-mp"
|
||||
outlined dense
|
||||
v-model="dualDivColorFiltered"
|
||||
:rules="['hexColor']"
|
||||
style="max-width: 150px"
|
||||
:disable="dualDivColorAsText"
|
||||
>
|
||||
<template v-slot:prepend>
|
||||
<q-icon name="la la-angle-down la-xs" class="cursor-pointer text-white" :style="colorPanStyle('div')">
|
||||
<q-popup-proxy anchor="bottom middle" self="top middle">
|
||||
<div>
|
||||
<q-color v-model="dualDivColor"
|
||||
no-header default-view="palette" :palette="predefineTextColors"
|
||||
/>
|
||||
</div>
|
||||
</q-popup-proxy>
|
||||
</q-icon>
|
||||
</template>
|
||||
</q-input>
|
||||
</div>
|
||||
|
||||
<div class="q-px-xs"/>
|
||||
<q-checkbox v-model="dualDivColorAsText" size="xs" label="Как у текста" />
|
||||
</div>
|
||||
|
||||
<div class="item row">
|
||||
<div class="label-2">Прозрачность</div>
|
||||
<div class="col row">
|
||||
<NumInput class="col-left" v-model="dualDivColorAlpha" :min="0" :max="1" :digits="2" :step="0.1"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="item row">
|
||||
<div class="label-2">Ширина (px)</div>
|
||||
<div class="col row">
|
||||
@@ -61,13 +97,6 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="item row">
|
||||
<div class="label-2">Прозрачность</div>
|
||||
<div class="col row">
|
||||
<NumInput class="col-left" v-model="dualDivColorAlpha" :min="0" :max="1" :digits="2" :step="0.1"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="item row">
|
||||
<div class="label-2">Пунктир</div>
|
||||
<div class="col row">
|
||||
|
||||
@@ -5,25 +5,53 @@
|
||||
<div class="label-2">Статус</div>
|
||||
<div class="col row">
|
||||
<q-checkbox v-model="showStatusBar" size="xs" label="Показывать" />
|
||||
<q-checkbox class="q-ml-sm" v-model="statusBarTop" size="xs" :disable="!showStatusBar" label="Вверху/внизу" />
|
||||
<q-checkbox v-show="showStatusBar" class="q-ml-sm" v-model="statusBarTop" size="xs" label="Вверху/внизу" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="item row">
|
||||
<div class="label-2">Высота</div>
|
||||
<div class="col row">
|
||||
<NumInput class="col-left" v-model="statusBarHeight" :min="5" :max="100" :disable="!showStatusBar"/>
|
||||
<div v-show="showStatusBar" class="item row no-wrap">
|
||||
<div class="label-2">Цвет</div>
|
||||
<div class="col-left row">
|
||||
<q-input class="col-left no-mp"
|
||||
outlined dense
|
||||
v-model="statusBarColorFiltered"
|
||||
:rules="['hexColor']"
|
||||
style="max-width: 150px"
|
||||
:disable="statusBarColorAsText"
|
||||
>
|
||||
<template v-slot:prepend>
|
||||
<q-icon name="la la-angle-down la-xs" class="cursor-pointer text-white" :style="colorPanStyle('statusbar')">
|
||||
<q-popup-proxy anchor="bottom middle" self="top middle">
|
||||
<div>
|
||||
<q-color v-model="statusBarColor"
|
||||
no-header default-view="palette" :palette="predefineTextColors"
|
||||
/>
|
||||
</div>
|
||||
</q-popup-proxy>
|
||||
</q-icon>
|
||||
</template>
|
||||
</q-input>
|
||||
</div>
|
||||
|
||||
<div class="q-px-xs"/>
|
||||
<q-checkbox v-model="statusBarColorAsText" size="xs" label="Как у текста"/>
|
||||
</div>
|
||||
|
||||
<div class="item row">
|
||||
<div v-show="showStatusBar" class="item row">
|
||||
<div class="label-2">Прозрачность</div>
|
||||
<div class="col row">
|
||||
<NumInput class="col-left" v-model="statusBarColorAlpha" :min="0" :max="1" :digits="2" :step="0.1" :disable="!showStatusBar"/>
|
||||
<NumInput class="col-left" v-model="statusBarColorAlpha" :min="0" :max="1" :digits="2" :step="0.1"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="item row">
|
||||
<div v-show="showStatusBar" class="item row">
|
||||
<div class="label-2">Высота</div>
|
||||
<div class="col row">
|
||||
<NumInput class="col-left" v-model="statusBarHeight" :min="5" :max="100"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-show="showStatusBar" class="item row">
|
||||
<div class="label-2"></div>
|
||||
<div class="col row">
|
||||
<q-checkbox v-model="statusBarClickOpen" size="xs" label="Открывать оригинал по клику">
|
||||
|
||||
@@ -213,8 +213,8 @@ export default class DrawHelper {
|
||||
|
||||
if (w1 + w2 + w3 <= w && w3 > (10 + fh2)) {
|
||||
const barWidth = w - w1 - w2 - fh2;
|
||||
out += this.strokeRect(x + w1, y + pad, barWidth, fh - 2, this.statusBarColor);
|
||||
out += this.fillRect(x + w1 + 2, y + pad + 2, (barWidth - 4)*read, fh - 6, this.statusBarColor);
|
||||
out += this.strokeRect(x + w1, y + pad, barWidth, fh - 2, this.statusBarRgbaColor);
|
||||
out += this.fillRect(x + w1 + 2, y + pad + 2, (barWidth - 4)*read, fh - 6, this.statusBarRgbaColor);
|
||||
}
|
||||
|
||||
if (w1 <= w)
|
||||
@@ -227,12 +227,12 @@ export default class DrawHelper {
|
||||
|
||||
let out = `<div class="layout" style="` +
|
||||
`width: ${this.realWidth}px; height: ${statusBarHeight}px; ` +
|
||||
`color: ${this.statusBarColor}">`;
|
||||
`color: ${this.statusBarRgbaColor}">`;
|
||||
|
||||
const fontSize = statusBarHeight*0.75;
|
||||
const font = 'bold ' + this.fontBySize(fontSize);
|
||||
|
||||
out += this.fillRect(0, (statusBarTop ? statusBarHeight : 0), this.realWidth, 1, this.statusBarColor);
|
||||
out += this.fillRect(0, (statusBarTop ? statusBarHeight : 0), this.realWidth, 1, this.statusBarRgbaColor);
|
||||
|
||||
const date = new Date();
|
||||
const time = `${date.getHours().toString().padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')}`;
|
||||
|
||||
@@ -189,8 +189,10 @@ class TextPage extends Vue {
|
||||
this.$refs.statusBar.style.left = '0px';
|
||||
this.$refs.statusBar.style.top = (this.statusBarTop ? 1 : this.realHeight - this.statusBarHeight) + 'px';
|
||||
|
||||
this.statusBarColor = this.hex2rgba(this.textColor || '#000000', this.statusBarColorAlpha);
|
||||
this.dualDivColor = this.hex2rgba(this.textColor || '#000000', this.dualDivColorAlpha);
|
||||
const sbColor = (this.statusBarColorAsText ? this.textColor : this.statusBarColor);
|
||||
this.statusBarRgbaColor = this.hex2rgba(sbColor || '#000000', this.statusBarColorAlpha);
|
||||
const ddColor = (this.dualDivColorAsText ? this.textColor : this.dualDivColor);
|
||||
this.dualDivRgbaColor = this.hex2rgba(ddColor || '#000000', this.dualDivColorAlpha);
|
||||
|
||||
//drawHelper
|
||||
this.drawHelper.realWidth = this.realWidth;
|
||||
@@ -205,13 +207,13 @@ class TextPage extends Vue {
|
||||
this.drawHelper.dualIndentLR = this.dualIndentLR;
|
||||
/*this.drawHelper.dualDivWidth = this.dualDivWidth;
|
||||
this.drawHelper.dualDivHeight = this.dualDivHeight;
|
||||
this.drawHelper.dualDivColor = this.dualDivColor;
|
||||
this.drawHelper.dualDivRgbaColor = this.dualDivRgbaColor;
|
||||
this.drawHelper.dualDivStrokeFill = this.dualDivStrokeFill;
|
||||
this.drawHelper.dualDivStrokeGap = this.dualDivStrokeGap;
|
||||
this.drawHelper.dualDivShadowWidth = this.dualDivShadowWidth;*/
|
||||
|
||||
this.drawHelper.backgroundColor = this.backgroundColor;
|
||||
this.drawHelper.statusBarColor = this.statusBarColor;
|
||||
this.drawHelper.statusBarRgbaColor = this.statusBarRgbaColor;
|
||||
this.drawHelper.fontStyle = this.fontStyle;
|
||||
this.drawHelper.fontWeight = this.fontWeight;
|
||||
this.drawHelper.fontSize = this.fontSize;
|
||||
@@ -792,9 +794,9 @@ class TextPage extends Vue {
|
||||
`top: ${(this.showStatusBar && this.statusBarTop ? this.statusBarHeight + 1 : 0)}px; position: relative;">` +
|
||||
`<div class="fit row justify-center items-center no-wrap">` +
|
||||
`<div style="height: ${Math.round(this.scrollHeight*this.dualDivHeight/100)}px; width: ${this.dualDivWidth}px; ` +
|
||||
`box-shadow: 0 0 ${this.dualDivShadowWidth}px ${this.dualDivColor}; ` +
|
||||
`box-shadow: 0 0 ${this.dualDivShadowWidth}px ${this.dualDivRgbaColor}; ` +
|
||||
`background-image: url("data:image/svg+xml;utf8,<svg width='100%' height='100%' xmlns='http://www.w3.org/2000/svg'>` +
|
||||
`<line x1='${this.dualDivWidth/2}' y1='0' x2='${this.dualDivWidth/2}' y2='100%' stroke='${this.dualDivColor}' ` +
|
||||
`<line x1='${this.dualDivWidth/2}' y1='0' x2='${this.dualDivWidth/2}' y2='100%' stroke='${this.dualDivRgbaColor}' ` +
|
||||
`stroke-width='${this.dualDivWidth}' stroke-dasharray='${this.dualDivStrokeFill} ${this.dualDivStrokeGap}'/>` +
|
||||
`</svg>");">` +
|
||||
`</div>` +
|
||||
|
||||
@@ -208,7 +208,7 @@ const webFonts = [
|
||||
//----------------------------------------------------------------------------------------------------------
|
||||
const settingDefaults = {
|
||||
textColor: '#000000',
|
||||
backgroundColor: '#EBE2C9',
|
||||
backgroundColor: '#ebe2c9',
|
||||
wallpaper: '',
|
||||
fontStyle: '',// 'italic'
|
||||
fontWeight: '',// 'bold'
|
||||
@@ -230,6 +230,8 @@ const settingDefaults = {
|
||||
dualIndentLR: 10,// px, отступ слева и справа внутри страницы в двухстраничном режиме
|
||||
dualDivWidth: 2,// px, ширина разделителя
|
||||
dualDivHeight: 100,// процент, высота разделителя
|
||||
dualDivColorAsText: true,//цвет как у текста
|
||||
dualDivColor: '#000000',
|
||||
dualDivColorAlpha: 0.7,// прозрачность разделителя
|
||||
dualDivStrokeFill: 1,// px, заполнение пунктира
|
||||
dualDivStrokeGap: 1,// px, промежуток пунктира
|
||||
@@ -238,6 +240,8 @@ const settingDefaults = {
|
||||
showStatusBar: true,
|
||||
statusBarTop: false,// top, bottom
|
||||
statusBarHeight: 19,// px
|
||||
statusBarColorAsText: true,//цвет как у текста
|
||||
statusBarColor: '#000000',
|
||||
statusBarColorAlpha: 0.4,
|
||||
statusBarClickOpen: true,
|
||||
|
||||
|
||||
Reference in New Issue
Block a user