You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
2.3 KiB
76 lines
2.3 KiB
import { BrowserWindow } from 'electron'; |
|
import { ICON, preload, url, WEB_URL, WIN_CONFIG } from '../main/constant'; |
|
|
|
let recorderVideoWin: BrowserWindow | null = null; |
|
let downloadSet: Set<string> = new Set(); |
|
|
|
function createRecorderVideoWin(): BrowserWindow { |
|
recorderVideoWin = new BrowserWindow({ |
|
title: '录像', |
|
icon: ICON, |
|
height: WIN_CONFIG.recorderVideo.height, |
|
width: WIN_CONFIG.recorderVideo.width, |
|
autoHideMenuBar: WIN_CONFIG.recorderVideo.autoHideMenuBar, // 自动隐藏菜单栏 |
|
webPreferences: { |
|
preload, |
|
}, |
|
}); |
|
|
|
if (url) { |
|
recorderVideoWin.loadURL(WEB_URL + 'recorderVideo.html'); |
|
// recorderVideoWin.webContents.openDevTools(); |
|
} else { |
|
recorderVideoWin.loadFile(WIN_CONFIG.recorderVideo.html); |
|
} |
|
|
|
recorderVideoWin?.webContents.session.on( |
|
'will-download', |
|
async (event: any, item: any, webContents: any) => { |
|
const url = item.getURL(); |
|
if (downloadSet.has(url)) { |
|
// const fileName = item.getFilename(); |
|
// const filePath = (await getFilePath()) as string; |
|
// const rvFilePath = join(`${filePath}/rv`, `${fileName}`); |
|
// item.setSavePath(rvFilePath); |
|
// item.once('done', (event: any, state: any) => { |
|
// if (state === 'completed') { |
|
// setHistoryVideo(rvFilePath); |
|
// setTimeout(() => { |
|
// closeRecorderVideoWin(); |
|
// // shell.showItemInFolder(filePath); |
|
// }, 1000); |
|
// } else { |
|
// dialog.showErrorBox('下载失败', `文件 ${item.getFilename()} 因为某些原因被中断下载`); |
|
// } |
|
// }); |
|
} |
|
}, |
|
); |
|
|
|
return recorderVideoWin; |
|
} |
|
|
|
// 打开关闭录屏窗口 |
|
function closeRecorderVideoWin() { |
|
recorderVideoWin?.isDestroyed() || recorderVideoWin?.close(); |
|
recorderVideoWin = null; |
|
} |
|
|
|
function openRecorderVideoWin() { |
|
if (!recorderVideoWin || recorderVideoWin?.isDestroyed()) { |
|
recorderVideoWin = createRecorderVideoWin(); |
|
} |
|
recorderVideoWin?.show(); |
|
} |
|
|
|
function downloadURLRecorderVideoWin(downloadUrl: string) { |
|
recorderVideoWin?.webContents.downloadURL(downloadUrl); |
|
downloadSet.add(downloadUrl); |
|
} |
|
|
|
export { |
|
closeRecorderVideoWin, |
|
createRecorderVideoWin, |
|
downloadURLRecorderVideoWin, |
|
openRecorderVideoWin, |
|
};
|
|
|