mirror of
https://github.com/Kuingsmile/PicList.git
synced 2026-05-31 08:09:44 +08:00
✨ Feature: users can set start mode now, mini window position will be remembered
This commit is contained in:
@@ -6,7 +6,8 @@ import {
|
||||
dialog,
|
||||
clipboard,
|
||||
systemPreferences,
|
||||
Notification
|
||||
Notification,
|
||||
screen
|
||||
} from 'electron'
|
||||
import uploader from 'apis/app/uploader'
|
||||
import db, { GalleryDB } from '~/main/apis/core/datastore'
|
||||
@@ -15,7 +16,6 @@ import { IWindowList } from '#/types/enum'
|
||||
import pasteTemplate from '~/main/utils/pasteTemplate'
|
||||
import pkg from 'root/package.json'
|
||||
import { ensureFilePath, handleCopyUrl } from '~/main/utils/common'
|
||||
// import { T } from '#/i18n'
|
||||
import { T } from '~/main/i18n'
|
||||
import { isMacOSVersionGreaterThanOrEqualTo } from '~/main/utils/getMacOSVersion'
|
||||
import { buildPicBedListMenu } from '~/main/events/remotes/menu'
|
||||
@@ -80,7 +80,7 @@ export function createMenu () {
|
||||
export function createContextMenu () {
|
||||
if (process.platform === 'darwin' || process.platform === 'win32') {
|
||||
const submenu = buildPicBedListMenu()
|
||||
contextMenu = Menu.buildFromTemplate([
|
||||
const template = [
|
||||
{
|
||||
label: T('ABOUT'),
|
||||
click () {
|
||||
@@ -120,7 +120,39 @@ export function createContextMenu () {
|
||||
role: 'quit',
|
||||
label: T('QUIT')
|
||||
}
|
||||
])
|
||||
] as any
|
||||
if (process.platform === 'win32') {
|
||||
template.splice(2, 0,
|
||||
{
|
||||
label: T('OPEN_MINI_WINDOW'),
|
||||
click () {
|
||||
const miniWindow = windowManager.get(IWindowList.MINI_WINDOW)!
|
||||
|
||||
if (db.get('settings.miniWindowOntop')) {
|
||||
miniWindow.setAlwaysOnTop(true)
|
||||
}
|
||||
const { width, height } = screen.getPrimaryDisplay().workAreaSize
|
||||
const lastPosition = db.get('settings.miniWindowPosition')
|
||||
if (lastPosition) {
|
||||
miniWindow.setPosition(lastPosition[0], lastPosition[1])
|
||||
} else {
|
||||
miniWindow.setPosition(width - 100, height - 100)
|
||||
}
|
||||
miniWindow.on('close', () => {
|
||||
const position = miniWindow.getPosition()
|
||||
db.set('settings.miniWindowPosition', position)
|
||||
})
|
||||
miniWindow.on('move', () => {
|
||||
const position = miniWindow.getPosition()
|
||||
db.set('settings.miniWindowPosition', position)
|
||||
})
|
||||
miniWindow.show()
|
||||
miniWindow.focus()
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
contextMenu = Menu.buildFromTemplate(template)
|
||||
} else if (process.platform === 'linux') {
|
||||
// TODO 图床选择功能
|
||||
// 由于在Linux难以像在Mac和Windows上那样在点击时构造ContextMenu,
|
||||
@@ -141,6 +173,33 @@ export function createContextMenu () {
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
label: T('OPEN_MINI_WINDOW'),
|
||||
click () {
|
||||
const miniWindow = windowManager.get(IWindowList.MINI_WINDOW)!
|
||||
|
||||
if (db.get('settings.miniWindowOntop')) {
|
||||
miniWindow.setAlwaysOnTop(true)
|
||||
}
|
||||
const { width, height } = screen.getPrimaryDisplay().workAreaSize
|
||||
const lastPosition = db.get('settings.miniWindowPosition')
|
||||
if (lastPosition) {
|
||||
miniWindow.setPosition(lastPosition[0], lastPosition[1])
|
||||
} else {
|
||||
miniWindow.setPosition(width - 100, height - 100)
|
||||
}
|
||||
miniWindow.on('close', () => {
|
||||
const position = miniWindow.getPosition()
|
||||
db.set('settings.miniWindowPosition', position)
|
||||
})
|
||||
miniWindow.on('move', () => {
|
||||
const position = miniWindow.getPosition()
|
||||
db.set('settings.miniWindowPosition', position)
|
||||
})
|
||||
miniWindow.show()
|
||||
miniWindow.focus()
|
||||
}
|
||||
},
|
||||
{
|
||||
label: T('ABOUT'),
|
||||
click () {
|
||||
|
||||
@@ -4,7 +4,8 @@ import {
|
||||
shell,
|
||||
Notification,
|
||||
IpcMainEvent,
|
||||
BrowserWindow
|
||||
BrowserWindow,
|
||||
screen
|
||||
} from 'electron'
|
||||
import windowManager from 'apis/app/window/windowManager'
|
||||
import { IWindowList } from '#/types/enum'
|
||||
@@ -170,7 +171,21 @@ export default {
|
||||
if (db.get('settings.miniWindowOntop')) {
|
||||
miniWindow.setAlwaysOnTop(true)
|
||||
}
|
||||
|
||||
const { width, height } = screen.getPrimaryDisplay().workAreaSize
|
||||
const lastPosition = db.get('settings.miniWindowPosition')
|
||||
if (lastPosition) {
|
||||
miniWindow.setPosition(lastPosition[0], lastPosition[1])
|
||||
} else {
|
||||
miniWindow.setPosition(width - 100, height - 100)
|
||||
}
|
||||
miniWindow.on('close', () => {
|
||||
const position = miniWindow.getPosition()
|
||||
db.set('settings.miniWindowPosition', position)
|
||||
})
|
||||
miniWindow.on('move', () => {
|
||||
const position = miniWindow.getPosition()
|
||||
db.set('settings.miniWindowPosition', position)
|
||||
})
|
||||
miniWindow.show()
|
||||
miniWindow.focus()
|
||||
settingWindow.hide()
|
||||
|
||||
@@ -49,12 +49,6 @@ const buildMiniPageMenu = () => {
|
||||
BrowserWindow.getFocusedWindow()!.hide()
|
||||
}
|
||||
},
|
||||
{
|
||||
label: T('PRIVACY_AGREEMENT'),
|
||||
click () {
|
||||
privacyManager.show(false)
|
||||
}
|
||||
},
|
||||
{
|
||||
label: T('RELOAD_APP'),
|
||||
click () {
|
||||
|
||||
@@ -5,7 +5,8 @@ import {
|
||||
protocol,
|
||||
Notification,
|
||||
Menu,
|
||||
dialog
|
||||
dialog,
|
||||
screen
|
||||
} from 'electron'
|
||||
import {
|
||||
createProtocol
|
||||
@@ -174,6 +175,34 @@ class LifeCycle {
|
||||
}
|
||||
await remoteNoticeHandler.init()
|
||||
remoteNoticeHandler.triggerHook(IRemoteNoticeTriggerHook.APP_START)
|
||||
if (db.get('settings.startMode') === 'mini') {
|
||||
windowManager.create(IWindowList.MINI_WINDOW)
|
||||
const miniWindow = windowManager.get(IWindowList.MINI_WINDOW)!
|
||||
if (db.get('settings.miniWindowOntop')) {
|
||||
miniWindow.setAlwaysOnTop(true)
|
||||
}
|
||||
const { width, height } = screen.getPrimaryDisplay().workAreaSize
|
||||
const lastPosition = db.get('settings.miniWindowPosition')
|
||||
if (lastPosition) {
|
||||
miniWindow.setPosition(lastPosition[0], lastPosition[1])
|
||||
} else {
|
||||
miniWindow.setPosition(width - 100, height - 100)
|
||||
}
|
||||
miniWindow.on('close', () => {
|
||||
const position = miniWindow.getPosition()
|
||||
db.set('settings.miniWindowPosition', position)
|
||||
})
|
||||
miniWindow.on('move', () => {
|
||||
const position = miniWindow.getPosition()
|
||||
db.set('settings.miniWindowPosition', position)
|
||||
})
|
||||
miniWindow.show()
|
||||
miniWindow.focus()
|
||||
} else if (db.get('settings.startMode') === 'main') {
|
||||
const settingWindow = windowManager.get(IWindowList.SETTING_WINDOW)!
|
||||
settingWindow.show()
|
||||
settingWindow.focus()
|
||||
}
|
||||
}
|
||||
app.whenReady().then(readyFunction)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user