diff --git a/src/background.js b/src/background.js index 2bdaee7..e1fcfdd 100644 --- a/src/background.js +++ b/src/background.js @@ -201,14 +201,15 @@ class Background { this.window.on('close', e => { log('windows close event'); - if (this.willQuitApp) { + let closeOpt = this.store.get('settings.closeAppOption'); + if (this.willQuitApp && (closeOpt === 'exit' || closeOpt === 'ask')) { /* the user tried to quit the app */ this.window = null; app.quit(); } else { /* the user only tried to close the window */ e.preventDefault(); - this.window.hide(); + this.window.minimize(); } }); @@ -223,7 +224,7 @@ class Background { this.window.on('minimize', () => { if ( ['win32', 'linux'].includes(process.platform) && - this.store.get('settings.minimizeToTray') + this.store.get('settings.closeAppOption') === 'minimizeToTray' ) { this.window.hide(); } diff --git a/src/electron/ipcMain.js b/src/electron/ipcMain.js index 678b661..e641f67 100644 --- a/src/electron/ipcMain.js +++ b/src/electron/ipcMain.js @@ -39,30 +39,21 @@ export function initIpcMain(win, store) { ipcMain.on('close', e => { if (process.platform == 'darwin') { win.hide(); + exitAsk(e); + return; + } + + let closeOpt = store.get('settings.closeAppOption'); + if (closeOpt === 'exit') { + win = null; + //app.quit(); + app.exit(); //exit()直接关闭客户端,不会执行quit(); + } else if (closeOpt === 'minimize' || closeOpt === 'minimizeToTray') { + e.preventDefault(); //阻止默认行为 + win.minimize(); //调用 最小化实例方法 + } else { + exitAsk(e); } - e.preventDefault(); //阻止默认行为 - dialog - .showMessageBox({ - type: 'info', - title: 'Information', - cancelId: 2, - defaultId: 0, - message: '确定要关闭吗?', - buttons: ['最小化', '直接退出'], - }) - .then(result => { - if (result.response == 0) { - e.preventDefault(); //阻止默认行为 - win.minimize(); //调用 最小化实例方法 - } else if (result.response == 1) { - win = null; - //app.quit(); - app.exit(); //exit()直接关闭客户端,不会执行quit(); - } - }) - .catch(err => { - log(err); - }); }); ipcMain.on('minimize', () => { @@ -156,4 +147,30 @@ export function initIpcMain(win, store) { globalShortcut.unregisterAll(); registerGlobalShortcut(win, store); }); + + const exitAsk = e => { + e.preventDefault(); //阻止默认行为 + dialog + .showMessageBox({ + type: 'info', + title: 'Information', + cancelId: 2, + defaultId: 0, + message: '确定要关闭吗?', + buttons: ['最小化', '直接退出'], + }) + .then(result => { + if (result.response == 0) { + e.preventDefault(); //阻止默认行为 + win.minimize(); //调用 最小化实例方法 + } else if (result.response == 1) { + win = null; + //app.quit(); + app.exit(); //exit()直接关闭客户端,不会执行quit(); + } + }) + .catch(err => { + log(err); + }); + }; } diff --git a/src/locale/lang/en.js b/src/locale/lang/en.js index bd79b17..f7e55d2 100644 --- a/src/locale/lang/en.js +++ b/src/locale/lang/en.js @@ -151,7 +151,6 @@ export default { clearSongsCache: 'Clear Songs Cache', cacheCount: 'Cached {song} songs ({size})', showLyricsTranslation: 'Show lyrics translation', - minimizeToTray: 'Minimize to tray', showPlaylistsByAppleMusic: 'Show playlists by Apple Music', enableDiscordRichPresence: 'Enable Discord Rich Presence', enableGlobalShortcut: 'Enable Global Shortcut', @@ -162,6 +161,13 @@ export default { on: 'On', dynamic: 'Dynamic (High GPU usage)', }, + closeAppOption: { + text: 'Close App...', + ask: 'Ask', + exit: 'Exit', + minimize: 'Minimize', + minimizeToTray: 'Minimize to tray', + }, }, contextMenu: { play: 'Play', diff --git a/src/locale/lang/tr.js b/src/locale/lang/tr.js index 21179c2..a774b11 100644 --- a/src/locale/lang/tr.js +++ b/src/locale/lang/tr.js @@ -147,7 +147,6 @@ export default { clearSongsCache: 'Müzik çerezlerini temizle', cacheCount: 'Çerezlenen {song} Müzikler ({size})', showLyricsTranslation: 'Müzik sözlerinin çevirilerini göster', - minimizeToTray: 'Küçült', showPlaylistsByAppleMusic: "Apple Music'in Çalma Listelerini Göster", enableDiscordRichPresence: 'Discord gösterimini aktifleştir', showLibraryDefault: 'Kitaplık Varsayılanını göster', @@ -157,6 +156,13 @@ export default { on: 'açık', dynamic: 'dinamik(Yüksek GPU kullanımı)', }, + closeAppOption: { + text: 'Close App...', + ask: 'Ask', + exit: 'Exit', + minimize: 'Minimize', + minimizeToTray: 'Küçült', + }, }, contextMenu: { play: 'Oynat', diff --git a/src/locale/lang/zh-CN.js b/src/locale/lang/zh-CN.js index 56cbc05..2dfaaac 100644 --- a/src/locale/lang/zh-CN.js +++ b/src/locale/lang/zh-CN.js @@ -152,7 +152,6 @@ export default { clearSongsCache: '清除歌曲缓存', cacheCount: '已缓存 {song} 首 ({size})', showLyricsTranslation: '显示歌词翻译', - minimizeToTray: '最小化到托盘', showPlaylistsByAppleMusic: '首页显示来自 Apple Music 的歌单', enableDiscordRichPresence: '启用 Discord Rich Presence', enableGlobalShortcut: '启用全局快捷键', @@ -163,6 +162,13 @@ export default { on: '打开', dynamic: '动态(GPU 占用较高)', }, + closeAppOption: { + text: '关闭主面板时...', + ask: '询问', + exit: '退出', + minimize: '最小化', + minimizeToTray: '最小化到托盘', + }, }, contextMenu: { play: '播放', diff --git a/src/locale/lang/zh-TW.js b/src/locale/lang/zh-TW.js index 92e4859..f506bf7 100644 --- a/src/locale/lang/zh-TW.js +++ b/src/locale/lang/zh-TW.js @@ -159,6 +159,13 @@ export default { on: '開啟', dynamic: '動態(GPU 占用較高)', }, + closeAppOption: { + text: '關閉主面板時...', + ask: '詢問', + exit: '退出', + minimize: '最小化', + minimizeToTray: '最小化到系統列', + }, }, contextMenu: { play: '播放', diff --git a/src/store/initLocalStorage.js b/src/store/initLocalStorage.js index b0a9cdc..b2a1dcf 100644 --- a/src/store/initLocalStorage.js +++ b/src/store/initLocalStorage.js @@ -22,7 +22,7 @@ let localStorage = { nyancatStyle: false, showLyricsTranslation: true, lyricsBackground: true, - minimizeToTray: false, + closeAppOption: 'ask', enableDiscordRichPresence: false, enableGlobalShortcut: true, showLibraryDefault: false, diff --git a/src/views/settings.vue b/src/views/settings.vue index bd76c56..04b6819 100644 --- a/src/views/settings.vue +++ b/src/views/settings.vue @@ -285,18 +285,23 @@