From 4ed3514ce0d9b0c4fa21bb653a8cf1c816a91cd3 Mon Sep 17 00:00:00 2001 From: k-chop Date: Sat, 9 Apr 2022 01:04:58 +0900 Subject: [PATCH 01/11] =?UTF-8?q?electron-window-state=E3=81=AE=E3=82=A4?= =?UTF-8?q?=E3=83=B3=E3=82=B9=E3=83=88=E3=83=BC=E3=83=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 17 +++++++++++------ package.json | 1 + 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index fb8699e0eb..73dd92f404 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8428,6 +8428,15 @@ "integrity": "sha512-qKD5Pbq+QMk4nea4lMuncUMhpEiQwaJyCW7MrvissnRcBDENhVfDmAqQYRQ3X525oTzhar9Zh1cK0L2d1UKYcw==", "dev": true }, + "electron-window-state": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/electron-window-state/-/electron-window-state-5.0.3.tgz", + "integrity": "sha512-1mNTwCfkolXl3kMf50yW3vE2lZj0y92P/HYWFBrb+v2S/pCka5mdwN3cagKm458A7NjndSwijynXgcLWRodsVg==", + "requires": { + "jsonfile": "^4.0.0", + "mkdirp": "^0.5.1" + } + }, "elegant-spinner": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", @@ -10081,8 +10090,7 @@ "graceful-fs": { "version": "4.2.6", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", - "dev": true + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==" }, "graceful-readlink": { "version": "1.0.1", @@ -11740,7 +11748,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, "requires": { "graceful-fs": "^4.1.6" } @@ -12847,8 +12854,7 @@ "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, "minipass": { "version": "3.1.3", @@ -12955,7 +12961,6 @@ "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, "requires": { "minimist": "^1.2.5" } diff --git a/package.json b/package.json index d2188e82f6..cac1556160 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ "dayjs": "1.10.7", "electron-log": "4.4.1", "electron-store": "8.0.0", + "electron-window-state": "5.0.3", "encoding-japanese": "1.0.30", "immer": "9.0.2", "lodash.debounce": "4.0.8", From 9ec3d403731a4fbf0be6767287738fb03881e299 Mon Sep 17 00:00:00 2001 From: k-chop Date: Sat, 9 Apr 2022 01:14:28 +0900 Subject: [PATCH 02/11] =?UTF-8?q?window=E3=81=AE=E4=BD=8D=E7=BD=AE?= =?UTF-8?q?=E3=82=92=E8=A8=98=E6=86=B6=E3=81=99=E3=82=8B=E3=82=88=E3=81=86?= =?UTF-8?q?=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/background.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/background.ts b/src/background.ts index 1a41da3b2d..bedb3051a3 100644 --- a/src/background.ts +++ b/src/background.ts @@ -39,6 +39,7 @@ import { import log from "electron-log"; import dayjs from "dayjs"; +import windowStateKeeper from "electron-window-state"; // silly以上のログをコンソールに出力 log.transports.console.format = "[{h}:{i}:{s}.{ms}] [{level}] {text}"; @@ -737,9 +738,16 @@ let willQuit = false; let filePathOnMac: string | null = null; // create window async function createWindow() { + const mainWindowState = windowStateKeeper({ + defaultWidth: 800, + defaultHeight: 600, + }); + win = new BrowserWindow({ - width: 800, - height: 600, + x: mainWindowState.x, + y: mainWindowState.y, + width: mainWindowState.width, + height: mainWindowState.height, frame: false, titleBarStyle: "hidden", trafficLightPosition: { x: 6, y: 4 }, @@ -753,6 +761,8 @@ async function createWindow() { icon: path.join(__static, "icon.png"), }); + mainWindowState.manage(win); + if (process.env.WEBPACK_DEV_SERVER_URL) { await win.loadURL( (process.env.WEBPACK_DEV_SERVER_URL as string) + "#/home" From 1eaf77ccde5e42deae5130ddc21ac2eb0a9608c8 Mon Sep 17 00:00:00 2001 From: k-chop Date: Sat, 9 Apr 2022 03:29:33 +0900 Subject: [PATCH 03/11] =?UTF-8?q?splitter=E3=81=AE=E4=BD=8D=E7=BD=AE?= =?UTF-8?q?=E3=82=92=E3=81=A8=E3=82=8A=E3=81=82=E3=81=88=E3=81=9A=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E3=83=BB=E5=BE=A9=E5=85=83=E3=81=A7=E3=81=8D=E3=82=8B?= =?UTF-8?q?=E3=82=88=E3=81=86=E3=81=AB=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/background.ts | 19 +++++++++++++ src/electron/preload.ts | 8 ++++++ src/type/ipc.d.ts | 10 +++++++ src/type/preload.d.ts | 8 ++++++ src/views/Home.vue | 63 ++++++++++++++++++++++++++++++++++++----- 5 files changed, 101 insertions(+), 7 deletions(-) diff --git a/src/background.ts b/src/background.ts index bedb3051a3..1349790ac6 100644 --- a/src/background.ts +++ b/src/background.ts @@ -35,6 +35,7 @@ import { ToolbarSetting, ActivePointScrollMode, EngineInfo, + SplitterPosition, } from "./type/preload"; import log from "electron-log"; @@ -207,6 +208,7 @@ const store = new Store<{ experimentalSetting: ExperimentalSetting; acceptRetrieveTelemetry: AcceptRetrieveTelemetryStatus; acceptTerms: AcceptTermsStatus; + splitterPosition: SplitterPosition; }>({ schema: { useGpu: { @@ -358,6 +360,15 @@ const store = new Store<{ enum: ["Unconfirmed", "Accepted", "Rejected"], default: "Unconfirmed", }, + splitterPosition: { + type: "object", + properties: { + portraitPainWidth: { type: "number" }, + audioInfoPainWidth: { type: "number" }, + audioDetailPainHeight: { type: "number" }, + }, + default: {}, + }, }, migrations: {}, }); @@ -1172,6 +1183,14 @@ ipcMainHandle("SET_EXPERIMENTAL_SETTING", (_, experimentalSetting) => { store.set("experimentalSetting", experimentalSetting); }); +ipcMainHandle("GET_SPLITTER_POSITION", () => { + return store.get("splitterPosition"); +}); + +ipcMainHandle("SET_SPLITTER_POSITION", (_, splitterPosition) => { + store.set("splitterPosition", splitterPosition); +}); + // app callback app.on("web-contents-created", (e, contents) => { // リンククリック時はブラウザを開く diff --git a/src/electron/preload.ts b/src/electron/preload.ts index f0c9afb6ab..20138beb7d 100644 --- a/src/electron/preload.ts +++ b/src/electron/preload.ts @@ -263,6 +263,14 @@ const api: Sandbox = { return await ipcRendererInvoke("SET_EXPERIMENTAL_SETTING", setting); }, + getSplitterPosition: async () => { + return await ipcRendererInvoke("GET_SPLITTER_POSITION"); + }, + + setSplitterPosition: async (splitterPosition) => { + return await ipcRendererInvoke("SET_SPLITTER_POSITION", splitterPosition); + }, + getDefaultHotkeySettings: async () => { return await ipcRendererInvoke("GET_DEFAULT_HOTKEY_SETTINGS"); }, diff --git a/src/type/ipc.d.ts b/src/type/ipc.d.ts index 67a2491737..d6eaeecd38 100644 --- a/src/type/ipc.d.ts +++ b/src/type/ipc.d.ts @@ -262,6 +262,16 @@ type IpcIHData = { return: void; }; + GET_SPLITTER_POSITION: { + args: []; + return: import("@/type/preload").SplitterPosition; + }; + + SET_SPLITTER_POSITION: { + args: [splitterPosition: import("@/type/preload").SplitterPosition]; + return: import("@/type/preload").SplitterPosition; + }; + THEME: { args: [obj: { newData?: string }]; return: import("@/type/preload").ThemeSetting | void; diff --git a/src/type/preload.d.ts b/src/type/preload.d.ts index 32a85c93d9..d0290a149a 100644 --- a/src/type/preload.d.ts +++ b/src/type/preload.d.ts @@ -82,6 +82,8 @@ export interface Sandbox { setAcceptTerms(acceptTerms: AcceptTermsStatus): Promise; getExperimentalSetting(): Promise; setExperimentalSetting(setting: ExperimentalSetting): Promise; + getSplitterPosition(): Promise; + setSplitterPosition(splitterPosition: SplitterPosition): Promise; getDefaultHotkeySettings(): Promise; getDefaultToolbarSetting(): Promise; theme(newData?: string): Promise; @@ -265,3 +267,9 @@ export type ExperimentalSetting = { enablePreset: boolean; enableInterrogativeUpspeak: boolean; }; + +export type SplitterPosition = { + portraitPainWidth: number | undefined; + audioInfoPainWidth: number | undefined; + audioDetailPainHeight: number | undefined; +}; diff --git a/src/views/Home.vue b/src/views/Home.vue index ae10f12190..4478b1c062 100644 --- a/src/views/Home.vue +++ b/src/views/Home.vue @@ -31,7 +31,8 @@ class="full-width" before-class="overflow-hidden" :disable="!shouldShowPanes" - v-model="audioDetailPaneHeight" + :model-value="audioDetailPaneHeight" + @update:model-value="updateAudioDetailPane" >