2026-01-02 14:14:59 +08:00
|
|
|
import { contextBridge, ipcRenderer } from 'electron'
|
|
|
|
|
|
|
|
|
|
contextBridge.exposeInMainWorld('electronAPI', {
|
2026-01-21 15:39:22 +08:00
|
|
|
// 窗口控制
|
2026-01-02 14:14:59 +08:00
|
|
|
minimizeWindow: () => ipcRenderer.send('window-minimize'),
|
|
|
|
|
maximizeWindow: () => ipcRenderer.send('window-maximize'),
|
|
|
|
|
closeWindow: () => ipcRenderer.send('window-close'),
|
2026-01-21 15:39:22 +08:00
|
|
|
isMaximized: () => ipcRenderer.invoke('window-is-maximized'),
|
2026-02-02 21:27:48 +08:00
|
|
|
|
2026-02-05 18:52:58 +08:00
|
|
|
// qzplayer Control
|
|
|
|
|
qzplayer: {
|
|
|
|
|
load: (url: string) => ipcRenderer.invoke('qzplayer-load', url),
|
|
|
|
|
play: () => ipcRenderer.invoke('qzplayer-play'),
|
|
|
|
|
pause: () => ipcRenderer.invoke('qzplayer-pause'),
|
|
|
|
|
togglePause: () => ipcRenderer.invoke('qzplayer-toggle-pause'),
|
|
|
|
|
stop: () => ipcRenderer.invoke('qzplayer-stop'),
|
|
|
|
|
setVolume: (vol: number) => ipcRenderer.invoke('qzplayer-set-volume', vol),
|
|
|
|
|
seek: (time: number) => ipcRenderer.invoke('qzplayer-seek', time),
|
|
|
|
|
onEvent: (callback: (event: any, data: any) => void) => ipcRenderer.on('qzplayer-event', callback)
|
2026-02-03 12:59:04 +08:00
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// Plugin System
|
|
|
|
|
plugin: {
|
|
|
|
|
call: (pluginId: string, method: string, args: any[]) => ipcRenderer.invoke('plugin:call', pluginId, method, args)
|
2026-02-04 14:14:40 +08:00
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// Cache Control
|
|
|
|
|
getCacheInfo: () => ipcRenderer.invoke('cache:getInfo'),
|
|
|
|
|
setCachePersist: (persist: boolean) => ipcRenderer.invoke('cache:setPersist', persist),
|
|
|
|
|
openCacheFolder: () => ipcRenderer.invoke('cache:openFolder'),
|
|
|
|
|
clearCache: () => ipcRenderer.invoke('cache:clear'),
|
|
|
|
|
|
|
|
|
|
// Settings
|
|
|
|
|
settings: {
|
|
|
|
|
getAll: () => ipcRenderer.invoke('settings:getAll'),
|
|
|
|
|
set: (settings: any) => ipcRenderer.invoke('settings:set', settings),
|
|
|
|
|
getTheme: () => ipcRenderer.invoke('settings:getTheme'),
|
|
|
|
|
setTheme: (theme: 'dark' | 'light') => ipcRenderer.invoke('settings:setTheme', theme),
|
|
|
|
|
getAccentColor: () => ipcRenderer.invoke('settings:getAccentColor'),
|
|
|
|
|
setAccentColor: (color: string) => ipcRenderer.invoke('settings:setAccentColor', color)
|
2026-02-02 21:27:48 +08:00
|
|
|
}
|
2026-01-02 14:14:59 +08:00
|
|
|
})
|