From 9a2a3357424c7f72e24472cfa122de4cd3098619 Mon Sep 17 00:00:00 2001 From: Minoricew <154642983+Minoricew@users.noreply.github.com> Date: Sat, 14 Jun 2025 16:07:10 +0800 Subject: [PATCH] =?UTF-8?q?[=E2=9C=A8=20Feat]=20{#21}=20Add=20AppBar=20win?= =?UTF-8?q?dow=20oper=20icons?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. [+] {#21} 增加了应用栏 (顶栏) 上的窗口操作按钮 2. [-] 删掉了几个调试时留下的 console.debug --- src/aura/init/main/ipcHandler.js | 2 + .../init/main/ipcModules/baseIpcHandler.js | 59 +++++++++++++++++++ src/aura/ui/pages/config/config.html | 39 +++++++++++- src/aura/ui/pages/config/config.js | 29 +++++++++ src/aura/ui/pages/config/css/header.css | 20 ++++++- .../preferences/settings/aura.js | 3 - 6 files changed, 147 insertions(+), 5 deletions(-) create mode 100644 src/aura/init/main/ipcModules/baseIpcHandler.js diff --git a/src/aura/init/main/ipcHandler.js b/src/aura/init/main/ipcHandler.js index 8f8b080..10d68c4 100755 --- a/src/aura/init/main/ipcHandler.js +++ b/src/aura/init/main/ipcHandler.js @@ -76,6 +76,7 @@ const buildIpcMain = (electron) => { } }; + const { applyBaseIpcHandler } = require("./ipcModules/baseIpcHandler"); const { applyConfigIpcHandler } = require("./ipcModules/configIpcHandler"); const { applyFsIpcHandler } = require("./ipcModules/fsIpcHandler"); const { applyPlsIpcHandler } = require("./ipcModules/plsIpcHandler"); @@ -85,6 +86,7 @@ const buildIpcMain = (electron) => { app.exit(0); }); + applyBaseIpcHandler(ipcMain); applyConfigIpcHandler(ipcMain); applyFsIpcHandler(ipcMain); applyPlsIpcHandler(ipcMain); diff --git a/src/aura/init/main/ipcModules/baseIpcHandler.js b/src/aura/init/main/ipcModules/baseIpcHandler.js new file mode 100644 index 0000000..7f358e0 --- /dev/null +++ b/src/aura/init/main/ipcModules/baseIpcHandler.js @@ -0,0 +1,59 @@ +// @ts-check + +const { BrowserWindow } = require("electron"); + +const composables = { + getBrowserWindowInstance: (windowKey) => { + if (!global.__HUGO_AURA__.hookedWindows) return null; + const hookedWindowIns = global.__HUGO_AURA__.hookedWindows.get(windowKey); + if (!hookedWindowIns) return undefined; + const browserWindowIns = BrowserWindow.fromWebContents( + hookedWindowIns.webContents + ); + return browserWindowIns; + }, +}; + +/** + * + * @param {import("electron").IpcMain} ipcMain + */ +const applyBaseIpcHandler = (ipcMain) => { + const methodBase = "$aura.base"; + + ipcMain.on( + `${methodBase}.minimizeWindow`, + /** + * + * @param {import("electron").IpcMainEvent} _event + * @param {{ targetWindowKey: string }} arg + */ + (_event, arg) => { + const browserWindowIns = composables.getBrowserWindowInstance( + arg.targetWindowKey + ); + if (!browserWindowIns) return; + + browserWindowIns.minimize(); + } + ); + + ipcMain.on( + `${methodBase}.closeWindow`, + /** + * + * @param {import("electron").IpcMainEvent} _event + * @param {{ targetWindowKey: string }} arg + */ + (_event, arg) => { + const browserWindowIns = composables.getBrowserWindowInstance( + arg.targetWindowKey + ); + if (!browserWindowIns) return; + + browserWindowIns.close(); + } + ); +}; + +module.exports = { applyBaseIpcHandler }; diff --git a/src/aura/ui/pages/config/config.html b/src/aura/ui/pages/config/config.html index 88cddad..67f11cb 100755 --- a/src/aura/ui/pages/config/config.html +++ b/src/aura/ui/pages/config/config.html @@ -7,11 +7,48 @@
diff --git a/src/aura/ui/pages/config/config.js b/src/aura/ui/pages/config/config.js index 441f4ed..83de0a8 100755 --- a/src/aura/ui/pages/config/config.js +++ b/src/aura/ui/pages/config/config.js @@ -6,6 +6,22 @@ global.__HUGO_AURA_UI_REACTIVES__.config = { }; global.__HUGO_AURA_UI_FUNCTIONS__.config = { + closeWindow: async () => { + if (global.__HUGO_AURA_UI_REACTIVES__.config.isConfigPendingWrite) { + await global.__HUGO_AURA_UI_FUNCTIONS__.config.handleSaveConfig(); + } + + global.ipcRenderer.send("$aura.base.closeWindow", { + targetWindowKey: "assistant", + }); + }, + + minimizeWindow: () => { + global.ipcRenderer.send("$aura.base.minimizeWindow", { + targetWindowKey: "assistant", + }); + }, + handleNavBack: () => { if (global.__HUGO_AURA_UI_REACTIVES__.config.isInSubPage) { const acsDialogAreaEl = document.getElementsByClassName( @@ -30,6 +46,19 @@ global.__HUGO_AURA_UI_FUNCTIONS__.config = { } }, + handleNavHome: async () => { + if (global.__HUGO_AURA_UI_REACTIVES__.config.isConfigPendingWrite) { + global.__HUGO_AURA_UI_FUNCTIONS__.config.handleSaveConfig(); + } + + global.__HUGO_AURA_UI_FUNCTIONS__.config.hideConfigPage(); + + setTimeout(() => { + const onLeaveEvent = new CustomEvent("onCurConfigPageLeave"); + document.dispatchEvent(onLeaveEvent); + }, 500); + }, + hideConfigPage: async () => { const defaultHeader = document.getElementsByClassName( "index__header__16DmR2a5" diff --git a/src/aura/ui/pages/config/css/header.css b/src/aura/ui/pages/config/css/header.css index eb8ebcf..2c6e593 100755 --- a/src/aura/ui/pages/config/css/header.css +++ b/src/aura/ui/pages/config/css/header.css @@ -19,6 +19,11 @@ color: rgba(0, 0, 0, 0.8); } +.aura-config-page-header-area.color-reverse + .aura-config-page-app-bar-hr-vertical { + background: rgba(0, 0, 0, 0.5); +} + .aura-config-page-header-area .iconfont { font-size: 24px; } @@ -33,7 +38,7 @@ } .aura-config-page-header-area p { - margin-top: -1px; + margin-top: -2px; } .aura-config-page-header-area.header-collapsed { @@ -48,3 +53,16 @@ align-items: center; width: 100%; } + +.aura-config-page-app-bar-spacer { + flex-grow: 1; +} + +.aura-config-page-app-bar-hr-vertical { + position: relative; + margin-left: 8px; + width: 1px; + background: rgba(255, 255, 255, 0.5); + height: 12px; + transition: background 0.5s; +} diff --git a/src/aura/ui/pages/configSubPages/preferences/settings/aura.js b/src/aura/ui/pages/configSubPages/preferences/settings/aura.js index c0add3b..edc8229 100755 --- a/src/aura/ui/pages/configSubPages/preferences/settings/aura.js +++ b/src/aura/ui/pages/configSubPages/preferences/settings/aura.js @@ -96,12 +96,9 @@ const functions = { const handleExit = async () => { const result = await awaitCompletePromise; - console.debug(result); if (result) { - console.debug("ret true"); return { valid: true }; } else { - console.debug("ret false"); const inputEl = document.getElementById("auraSettingsPasswd"); // @ts-expect-error inputEl.value = "";