diff --git a/public/i18n/en.yml b/public/i18n/en.yml index 2d50bf9..5d47401 100644 --- a/public/i18n/en.yml +++ b/public/i18n/en.yml @@ -164,6 +164,8 @@ SETTINGS_CHECK_UPDATE: Check Update SETTINGS_OPEN_UPDATE_HELPER: Open Update Helper SETTINGS_OPEN: Open SETTINGS_CLOSE: Close +SETTINGS_CLOSE_MINI_WINDOW_SYNC: Close Mini Window When open Main Window +SETTINGS_CLOSE_MAIN_WINDOW_SYNC: Close Main Window When open Mini Window SETTINGS_ACCEPT_BETA_UPDATE: Accept Beta Update SETTINGS_LAUNCH_ON_BOOT: Launch On Boot SETTINGS_RENAME_BEFORE_UPLOAD: Rename Before Upload diff --git a/public/i18n/zh-CN.yml b/public/i18n/zh-CN.yml index 535255e..995b71e 100644 --- a/public/i18n/zh-CN.yml +++ b/public/i18n/zh-CN.yml @@ -166,6 +166,8 @@ SETTINGS_CHECK_UPDATE: 检查更新 SETTINGS_OPEN_UPDATE_HELPER: 打开更新助手 SETTINGS_OPEN: 开 SETTINGS_CLOSE: 关 +SETTINGS_CLOSE_MINI_WINDOW_SYNC: 打开主窗口时关闭mini窗口 +SETTINGS_CLOSE_MAIN_WINDOW_SYNC: 打开mini窗口时关闭主窗口 SETTINGS_ACCEPT_BETA_UPDATE: 接受Beta版本更新 SETTINGS_LAUNCH_ON_BOOT: 开机自启 SETTINGS_RENAME_BEFORE_UPLOAD: 上传前重命名 diff --git a/public/i18n/zh-TW.yml b/public/i18n/zh-TW.yml index b259bab..d2bc904 100644 --- a/public/i18n/zh-TW.yml +++ b/public/i18n/zh-TW.yml @@ -164,6 +164,8 @@ SETTINGS_CHECK_UPDATE: 檢查更新 SETTINGS_OPEN_UPDATE_HELPER: 打開更新助手 SETTINGS_OPEN: 開 SETTINGS_CLOSE: 關 +SETTINGS_CLOSE_MINI_WINDOW_SYNC: 開主窗口同步關閉mini窗口 +SETTINGS_CLOSE_MAIN_WINDOW_SYNC: 關mini窗口同步關閉主窗口 SETTINGS_ACCEPT_BETA_UPDATE: 接受Beta版本更新 SETTINGS_LAUNCH_ON_BOOT: 開機時啟動 SETTINGS_RENAME_BEFORE_UPLOAD: 上傳前重新命名 diff --git a/src/main/apis/app/system/index.ts b/src/main/apis/app/system/index.ts index a44e38c..65d1156 100644 --- a/src/main/apis/app/system/index.ts +++ b/src/main/apis/app/system/index.ts @@ -28,6 +28,7 @@ let tray: Tray | null export function setDockMenu () { const isListeningClipboard = db.get('settings.isListeningClipboard') || false + const autoCloseMiniWindow = db.get('settings.autoCloseMiniWindow') || false const dockMenu = Menu.buildFromTemplate([ { label: T('OPEN_MAIN_WINDOW'), @@ -35,6 +36,9 @@ export function setDockMenu () { const settingWindow = windowManager.get(IWindowList.SETTING_WINDOW) settingWindow!.show() settingWindow!.focus() + if (windowManager.has(IWindowList.MINI_WINDOW) && autoCloseMiniWindow) { + windowManager.get(IWindowList.MINI_WINDOW)!.hide() + } } }, { @@ -74,8 +78,12 @@ export function createMenu () { label: T('OPEN_MAIN_WINDOW'), click () { const settingWindow = windowManager.get(IWindowList.SETTING_WINDOW) + const autoCloseMiniWindow = db.get('settings.autoCloseMiniWindow') || false settingWindow!.show() settingWindow!.focus() + if (windowManager.has(IWindowList.MINI_WINDOW) && autoCloseMiniWindow) { + windowManager.get(IWindowList.MINI_WINDOW)!.hide() + } } }, { @@ -135,8 +143,12 @@ export function createContextMenu () { label: T('OPEN_MAIN_WINDOW'), click () { const settingWindow = windowManager.get(IWindowList.SETTING_WINDOW) + const autoCloseMiniWindow = db.get('settings.autoCloseMiniWindow') || false settingWindow!.show() settingWindow!.focus() + if (windowManager.has(IWindowList.MINI_WINDOW) && autoCloseMiniWindow) { + windowManager.get(IWindowList.MINI_WINDOW)!.hide() + } } }, { @@ -206,6 +218,10 @@ export function createContextMenu () { miniWindow.on('move', setPositionFunc) miniWindow.show() miniWindow.focus() + const autoCloseMainWindow = db.get('settings.autoCloseMainWindow') || false + if (windowManager.has(IWindowList.SETTING_WINDOW) && autoCloseMainWindow) { + windowManager.get(IWindowList.SETTING_WINDOW)!.hide() + } } } ) @@ -224,8 +240,12 @@ export function createContextMenu () { label: T('OPEN_MAIN_WINDOW'), click () { const settingWindow = windowManager.get(IWindowList.SETTING_WINDOW) + const autoCloseMiniWindow = db.get('settings.autoCloseMiniWindow') || false settingWindow!.show() settingWindow!.focus() + if (windowManager.has(IWindowList.MINI_WINDOW) && autoCloseMiniWindow) { + windowManager.get(IWindowList.MINI_WINDOW)!.hide() + } } }, { @@ -251,6 +271,10 @@ export function createContextMenu () { miniWindow.on('move', setPositionFunc) miniWindow.show() miniWindow.focus() + const autoCloseMainWindow = db.get('settings.autoCloseMainWindow') || false + if (windowManager.has(IWindowList.SETTING_WINDOW) && autoCloseMainWindow) { + windowManager.get(IWindowList.SETTING_WINDOW)!.hide() + } } }, { @@ -358,8 +382,12 @@ export function createTray () { windowManager.get(IWindowList.TRAY_WINDOW)!.hide() } const settingWindow = windowManager.get(IWindowList.SETTING_WINDOW) + const autoCloseMiniWindow = db.get('settings.autoCloseMiniWindow') || false settingWindow!.show() settingWindow!.focus() + if (windowManager.has(IWindowList.MINI_WINDOW) && autoCloseMiniWindow) { + windowManager.get(IWindowList.MINI_WINDOW)!.hide() + } } }) diff --git a/src/main/events/ipcList.ts b/src/main/events/ipcList.ts index 590b790..32000f7 100644 --- a/src/main/events/ipcList.ts +++ b/src/main/events/ipcList.ts @@ -214,6 +214,12 @@ export default { ipcMain.on('openSettingWindow', () => { windowManager.get(IWindowList.SETTING_WINDOW)!.show() + const autoCloseMiniWindow = db.get('settings.autoCloseMiniWindow') || false + if (autoCloseMiniWindow) { + if (windowManager.has(IWindowList.MINI_WINDOW)) { + windowManager.get(IWindowList.MINI_WINDOW)!.hide() + } + } }) ipcMain.on('openMiniWindow', () => { diff --git a/src/main/events/remotes/menu.ts b/src/main/events/remotes/menu.ts index 93fb16e..52da2b4 100644 --- a/src/main/events/remotes/menu.ts +++ b/src/main/events/remotes/menu.ts @@ -30,6 +30,12 @@ const buildMiniPageMenu = () => { label: T('OPEN_MAIN_WINDOW'), click () { windowManager.get(IWindowList.SETTING_WINDOW)!.show() + const autoCloseMiniWindow = db.get('settings.autoCloseMiniWindow') || false + if (autoCloseMiniWindow) { + if (windowManager.has(IWindowList.MINI_WINDOW)) { + windowManager.get(IWindowList.MINI_WINDOW)!.hide() + } + } } }, { diff --git a/src/renderer/pages/PicGoSetting.vue b/src/renderer/pages/PicGoSetting.vue index b4a0079..30ed00f 100644 --- a/src/renderer/pages/PicGoSetting.vue +++ b/src/renderer/pages/PicGoSetting.vue @@ -110,6 +110,28 @@ {{ $T('SETTINGS_CLICK_TO_SET') }} + + + + + + ({ uploadNotification: false, uploadResultNotification: true, miniWindowOntop: false, + autoCloseMiniWindow: false, + autoCloseMainWindow: false, logLevel: ['all'], autoCopyUrl: true, checkBetaUpdate: true, @@ -1693,6 +1717,8 @@ async function initData () { form.uploadNotification = settings.uploadNotification || false form.uploadResultNotification = settings.uploadResultNotification === undefined ? true : settings.uploadResultNotification form.miniWindowOntop = settings.miniWindowOntop || false + form.autoCloseMiniWindow = settings.autoCloseMiniWindow || false + form.autoCloseMainWindow = settings.autoCloseMainWindow || false form.logLevel = initLogLevel(settings.logLevel || []) form.autoCopyUrl = settings.autoCopy === undefined ? true : settings.autoCopy form.checkBetaUpdate = settings.checkBetaUpdate === undefined ? true : settings.checkBetaUpdate @@ -1993,6 +2019,14 @@ async function confirmWindowSize () { } } +function handleAutoCloseMainWindowChange (val: ICheckBoxValueType) { + saveConfig('settings.autoCloseMainWindow', val) +} + +function handleAutoCloseMiniWindowChange (val: ICheckBoxValueType) { + saveConfig('settings.autoCloseMiniWindow', val) +} + function handleMiniWindowOntop (val: ICheckBoxValueType) { saveConfig('settings.miniWindowOntop', val) $message.info($T('TIPS_NEED_RELOAD')) diff --git a/src/universal/types/i18n.d.ts b/src/universal/types/i18n.d.ts index 2ec48b9..a33d9a2 100644 --- a/src/universal/types/i18n.d.ts +++ b/src/universal/types/i18n.d.ts @@ -159,6 +159,8 @@ interface ILocales { SETTINGS_OPEN_UPDATE_HELPER: string SETTINGS_OPEN: string SETTINGS_CLOSE: string + SETTINGS_CLOSE_MINI_WINDOW_SYNC: string + SETTINGS_CLOSE_MAIN_WINDOW_SYNC: string SETTINGS_ACCEPT_BETA_UPDATE: string SETTINGS_LAUNCH_ON_BOOT: string SETTINGS_RENAME_BEFORE_UPLOAD: string diff --git a/src/universal/types/view.d.ts b/src/universal/types/view.d.ts index ffe2515..70c690b 100644 --- a/src/universal/types/view.d.ts +++ b/src/universal/types/view.d.ts @@ -7,6 +7,8 @@ interface ISettingForm { uploadNotification: boolean uploadResultNotification: boolean miniWindowOntop: boolean + autoCloseMiniWindow: boolean + autoCloseMainWindow: boolean logLevel: string[] autoCopyUrl: boolean checkBetaUpdate: boolean