mirror of
https://github.com/algerkong/AlgerMusicPlayer.git
synced 2026-04-14 06:30:49 +08:00
✨ feat: 记忆歌词窗口位置 主窗口可关闭歌词窗口
This commit is contained in:
@@ -1,14 +1,29 @@
|
||||
const { BrowserWindow, screen, ipcRenderer } = require('electron');
|
||||
const { BrowserWindow, screen } = require('electron');
|
||||
const path = require('path');
|
||||
const Store = require('electron-store');
|
||||
const config = require('./config');
|
||||
|
||||
const store = new Store();
|
||||
let lyricWindow = null;
|
||||
|
||||
const createWin = () => {
|
||||
console.log('Creating lyric window');
|
||||
|
||||
// 获取保存的窗口位置
|
||||
const windowBounds = store.get('lyricWindowBounds') || {};
|
||||
const { x, y, width, height } = windowBounds;
|
||||
|
||||
// 获取屏幕尺寸
|
||||
const { width: screenWidth, height: screenHeight } = screen.getPrimaryDisplay().workAreaSize;
|
||||
|
||||
// 验证保存的位置是否有效
|
||||
const validPosition = x !== undefined && y !== undefined && x >= 0 && y >= 0 && x < screenWidth && y < screenHeight;
|
||||
|
||||
lyricWindow = new BrowserWindow({
|
||||
width: 800,
|
||||
height: 200,
|
||||
width: width || 800,
|
||||
height: height || 200,
|
||||
x: validPosition ? x : undefined,
|
||||
y: validPosition ? y : undefined,
|
||||
frame: false,
|
||||
show: false,
|
||||
transparent: true,
|
||||
@@ -107,6 +122,13 @@ const loadLyricWindow = (ipcMain, mainWin) => {
|
||||
const newY = Math.max(0, Math.min(currentY + deltaY, screenHeight - windowHeight));
|
||||
|
||||
lyricWindow.setPosition(newX, newY);
|
||||
|
||||
// 保存新位置
|
||||
store.set('lyricWindowBounds', {
|
||||
...lyricWindow.getBounds(),
|
||||
x: newX,
|
||||
y: newY,
|
||||
});
|
||||
});
|
||||
|
||||
// 添加鼠标穿透事件处理
|
||||
|
||||
@@ -293,25 +293,22 @@ export const sendLyricToWin = () => {
|
||||
export const openLyric = () => {
|
||||
if (!isElectron.value) return;
|
||||
console.log('Opening lyric window with current song:', playMusic.value?.name);
|
||||
windowData.electronAPI.openLyric();
|
||||
isLyricWindowOpen.value = true;
|
||||
|
||||
// 延迟一下初始化,确保窗口已经创建
|
||||
setTimeout(() => {
|
||||
if (isLyricWindowOpen.value) {
|
||||
console.log('Initializing lyric window with data:', {
|
||||
hasLyrics: lrcArray.value.length > 0,
|
||||
songName: playMusic.value?.name,
|
||||
});
|
||||
isLyricWindowOpen.value = !isLyricWindowOpen.value;
|
||||
if (isLyricWindowOpen.value) {
|
||||
setTimeout(() => {
|
||||
windowData.electronAPI.openLyric();
|
||||
sendLyricToWin();
|
||||
}
|
||||
}, 500);
|
||||
}, 500);
|
||||
sendLyricToWin();
|
||||
} else {
|
||||
closeLyric();
|
||||
}
|
||||
};
|
||||
|
||||
// 添加关闭歌词窗口的方法
|
||||
export const closeLyric = () => {
|
||||
if (!isElectron.value) return;
|
||||
isLyricWindowOpen.value = false;
|
||||
windowData.electron.ipcRenderer.send('close-lyric');
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user