mirror of
https://github.com/Kuingsmile/PicList.git
synced 2025-02-02 11:08:13 -05:00
✨ Feature: users can set start mode now, mini window position will be remembered
This commit is contained in:
parent
e0e26bd9ad
commit
76c0cfbcb3
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "piclist",
|
||||
"version": "1.5.2",
|
||||
"version": "1.5.3",
|
||||
"author": {
|
||||
"name": "Kuingsmile",
|
||||
"email": "msq@msq.pub"
|
||||
|
@ -1,6 +1,7 @@
|
||||
LANG_DISPLAY_LABEL: 'English'
|
||||
ABOUT: About
|
||||
OPEN_MAIN_WINDOW: Open Main Window
|
||||
OPEN_MINI_WINDOW: Open Mini Window
|
||||
CHOOSE_DEFAULT_PICBED: Choose Default Picbed
|
||||
OPEN_UPDATE_HELPER: Open Update Helper
|
||||
PRIVACY_AGREEMENT: Privacy Agreement
|
||||
@ -111,6 +112,10 @@ SETTINGS_MIGRATE_FROM_PICGO_TITLE: Notice
|
||||
SETTINGS_MIGRATE_FROM_PICGO_CONTENT: Migrate from PicGo will overwrite your current settings and gallery, do you want to continue?
|
||||
SETTINGS_MIGRATE_FROM_PICGO_SUCCESS: Import succeed, please restart PicList
|
||||
SETTINGS_MIGRATE_FROM_PICGO_FAILED: Import failed
|
||||
SETTINGS_START_MODE: Default Start Mode
|
||||
SETTINGS_START_MODE_MINI: Mini Window
|
||||
SETTINGS_START_MODE_MAIN: Main Window
|
||||
SETTINGS_START_MODE_QUIET: Quiet Mode
|
||||
SETTINGS_CLICK_TO_OPEN: Click to Open
|
||||
SETTINGS_SET_LOG_FILE: Set Log File
|
||||
SETTINGS_CLICK_TO_SET: Click to Set
|
||||
|
@ -1,6 +1,7 @@
|
||||
LANG_DISPLAY_LABEL: 中文
|
||||
ABOUT: 关于
|
||||
OPEN_MAIN_WINDOW: 打开主窗口
|
||||
OPEN_MINI_WINDOW: 打开mini窗口
|
||||
CHOOSE_DEFAULT_PICBED: 选择默认图床
|
||||
OPEN_UPDATE_HELPER: 打开更新助手
|
||||
PRIVACY_AGREEMENT: 隐私协议
|
||||
@ -111,6 +112,10 @@ SETTINGS_MIGRATE_FROM_PICGO_TITLE: 通知
|
||||
SETTINGS_MIGRATE_FROM_PICGO_CONTENT: 即将导入PicGo的配置文件和相册, 这将覆盖当前的配置文件和相册, 是否继续?
|
||||
SETTINGS_MIGRATE_FROM_PICGO_SUCCESS: 导入成功, 请重启PicList生效
|
||||
SETTINGS_MIGRATE_FROM_PICGO_FAILED: 导入失败
|
||||
SETTINGS_START_MODE: 启动模式
|
||||
SETTINGS_START_MODE_MINI: mini窗口
|
||||
SETTINGS_START_MODE_MAIN: 主窗口
|
||||
SETTINGS_START_MODE_QUIET: 静默启动
|
||||
SETTINGS_CLICK_TO_OPEN: 点击打开
|
||||
SETTINGS_SET_LOG_FILE: 设置日志文件
|
||||
SETTINGS_CLICK_TO_SET: 点击设置
|
||||
|
@ -1,6 +1,7 @@
|
||||
LANG_DISPLAY_LABEL: 繁體中文
|
||||
ABOUT: 關於
|
||||
OPEN_MAIN_WINDOW: 打開主視窗
|
||||
OPEN_MINI_WINDOW: 打開mini視窗
|
||||
CHOOSE_DEFAULT_PICBED: 選擇預設圖床
|
||||
OPEN_UPDATE_HELPER: 開啟更新助手
|
||||
PRIVACY_AGREEMENT: 隱私協議
|
||||
@ -111,6 +112,10 @@ SETTINGS_MIGRATE_FROM_PICGO_TITLE: 通知
|
||||
SETTINGS_MIGRATE_FROM_PICGO_CONTENT: 即將導入PicGo的設定文件和相冊, 這將會覆蓋當前的設定, 是否繼續?
|
||||
SETTINGS_MIGRATE_FROM_PICGO_SUCCESS: 導入成功, 請重啟應用
|
||||
SETTINGS_MIGRATE_FROM_PICGO_FAILED: 導入失敗
|
||||
SETTINGS_START_MODE: 啟動模式
|
||||
SETTINGS_START_MODE_MINI: mini窗口
|
||||
SETTINGS_START_MODE_MAIN: 主窗口
|
||||
SETTINGS_START_MODE_QUIET: 靜默啟動
|
||||
SETTINGS_CLICK_TO_OPEN: 點擊打開
|
||||
SETTINGS_SET_LOG_FILE: 設定記錄檔案
|
||||
SETTINGS_CLICK_TO_SET: 點擊設定
|
||||
|
@ -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)
|
||||
}
|
||||
|
@ -42,6 +42,34 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
:label="$T('SETTINGS_START_MODE')"
|
||||
>
|
||||
<el-select
|
||||
v-model="currentStartMode"
|
||||
size="small"
|
||||
style="width: 50%"
|
||||
:placeholder="$T('SETTINGS_START_MODE')"
|
||||
@change="handleStartModeChange"
|
||||
>
|
||||
<el-option
|
||||
key="quiet"
|
||||
:label="$T('SETTINGS_START_MODE_QUIET')"
|
||||
:value="'quiet'"
|
||||
/>
|
||||
<el-option
|
||||
v-if="os !== 'darwin'"
|
||||
key="mini"
|
||||
:label="$T('SETTINGS_START_MODE_MINI')"
|
||||
:value="'mini'"
|
||||
/>
|
||||
<el-option
|
||||
key="main"
|
||||
:label="$T('SETTINGS_START_MODE_MAIN')"
|
||||
:value="'main'"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
:label="$T('SETTINGS_MIGRATE_FROM_PICGO')"
|
||||
>
|
||||
@ -233,6 +261,17 @@
|
||||
@change="handleMiniWindowOntop"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="os !== 'darwin'"
|
||||
:label="$T('SETTINGS_CUSTOM_MINI_ICON')"
|
||||
>
|
||||
<el-switch
|
||||
v-model="form.isCustomMiniIcon"
|
||||
:active-text="$T('SETTINGS_OPEN')"
|
||||
:inactive-text="$T('SETTINGS_CLOSE')"
|
||||
@change="handleIsCustomMiniIcon"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="os !== 'darwin' && form.isCustomMiniIcon"
|
||||
:label="$T('SETTINGS_CUSTOM_MINI_ICON_PATH')"
|
||||
@ -246,18 +285,6 @@
|
||||
{{ $T('SETTINGS_CLICK_TO_SET') }}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="os !== 'darwin'"
|
||||
:label="$T('SETTINGS_CUSTOM_MINI_ICON')"
|
||||
>
|
||||
<el-switch
|
||||
v-model="form.isCustomMiniIcon"
|
||||
:active-text="$T('SETTINGS_OPEN')"
|
||||
:inactive-text="$T('SETTINGS_CLOSE')"
|
||||
@change="handleIsCustomMiniIcon"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item
|
||||
:label="$T('SETTINGS_AUTO_COPY_URL_AFTER_UPLOAD')"
|
||||
>
|
||||
@ -1004,6 +1031,7 @@ const languageList = i18nManager.languageList.map(item => ({
|
||||
}))
|
||||
|
||||
const currentLanguage = ref('zh-CN')
|
||||
const currentStartMode = ref('quiet')
|
||||
|
||||
const picBed = ref<IPicBedType[]>([])
|
||||
|
||||
@ -1090,6 +1118,7 @@ async function initData () {
|
||||
form.isCustomMiniIcon = settings.isCustomMiniIcon || false
|
||||
form.customMiniIcon = settings.customMiniIcon || ''
|
||||
currentLanguage.value = settings.language ?? 'zh-CN'
|
||||
currentStartMode.value = settings.startMode || 'quiet'
|
||||
customLink.value = settings.customLink || '$url'
|
||||
shortKey.upload = settings.shortKey.upload
|
||||
proxy.value = picBed.proxy || ''
|
||||
@ -1403,6 +1432,12 @@ function handleLanguageChange (val: string) {
|
||||
sendToMain(GET_PICBEDS)
|
||||
}
|
||||
|
||||
function handleStartModeChange (val: 'quiet' | 'mini' | 'main') {
|
||||
saveConfig({
|
||||
'settings.startMode': val
|
||||
})
|
||||
}
|
||||
|
||||
function goConfigPage () {
|
||||
sendToMain(OPEN_URL, 'https://piclist.cn/configure.html')
|
||||
}
|
||||
|
5
src/universal/types/i18n.d.ts
vendored
5
src/universal/types/i18n.d.ts
vendored
@ -2,6 +2,7 @@ interface ILocales {
|
||||
LANG_DISPLAY_LABEL: string
|
||||
ABOUT: string
|
||||
OPEN_MAIN_WINDOW: string
|
||||
OPEN_MINI_WINDOW: string
|
||||
CHOOSE_DEFAULT_PICBED: string
|
||||
OPEN_UPDATE_HELPER: string
|
||||
PRIVACY_AGREEMENT: string
|
||||
@ -105,6 +106,10 @@ interface ILocales {
|
||||
SETTINGS_MIGRATE_FROM_PICGO_CONTENT: string
|
||||
SETTINGS_MIGRATE_FROM_PICGO_SUCCESS: string
|
||||
SETTINGS_MIGRATE_FROM_PICGO_FAILED: string
|
||||
SETTINGS_START_MODE: string
|
||||
SETTINGS_START_MODE_MINI: string
|
||||
SETTINGS_START_MODE_MAIN: string
|
||||
SETTINGS_START_MODE_QUIET: string
|
||||
SETTINGS_CLICK_TO_OPEN: string
|
||||
SETTINGS_SET_LOG_FILE: string
|
||||
SETTINGS_CLICK_TO_SET: string
|
||||
|
1
src/universal/types/types.d.ts
vendored
1
src/universal/types/types.d.ts
vendored
@ -115,6 +115,7 @@ interface IBrowserWindowOptions {
|
||||
icon?: string
|
||||
skipTaskbar?: boolean
|
||||
alwaysOnTop?: boolean
|
||||
[propName: string]: any
|
||||
}
|
||||
|
||||
interface IFileWithPath {
|
||||
|
Loading…
Reference in New Issue
Block a user