添加从任务栏关闭窗口的处理逻辑

Change-Id: Icea68b36d4e769b76c61b9613f6944d59c1292d7
This commit is contained in:
dinglili 2024-08-20 13:46:23 +08:00 committed by wangpenglong
parent f446299b47
commit ab6773bb06
2 changed files with 74 additions and 8 deletions

View File

@ -267,7 +267,7 @@ class deployWindow {
writeKeyJson.push(key);
showContext += "<span class='installedHighlight'>" + tmp + "安装成功</span><br>";
} else if (installflag === 0) {
showContext += "<span class='FailPartHighlight'>" + tmp + "安装部分成功</span><br>";
showContext += "<span class='FailPartHighlight'>" + tmp + "未全部安装成功</span><br>";
} else if (installflag === -1) {
showContext += "<span class='depfailHighlight'>" + tmp + "安装失败</span><br>";
}
@ -309,7 +309,7 @@ class deployWindow {
writeKeyJson.push(key);
showContext += "<span class='installedHighlight'>" + tmp + "安装成功</span><br>";
} else if (installflag === 0) {
showContext += "<span class='FailPartHighlight'>" + tmp + "安装部分成功</span><br>";
showContext += "<span class='FailPartHighlight'>" + tmp + "未全部安装成功</span><br>";
} else if (installflag === -1) {
showContext += "<span class='depfailHighlight'>" + tmp + "安装失败</span><br>";
}
@ -427,7 +427,7 @@ class deployWindow {
goFinish(showContext: string, useFinishHtml: boolean, success: boolean) {
this.finishFlag = 0;
let preFinish = document.getElementById("finishPage");
showContext += "点击右上切换输出按钮查看安装列表详情";
showContext += "点击右上切换输出按钮查看安装列表详情";
if (useFinishHtml) {
let text = preFinish!.innerHTML;
@ -464,6 +464,7 @@ class deployWindow {
ipcRenderer.send("kylinide.installWizard.removeFileLister", { type: "extFile" });
ipcRenderer.send("kylinide.installWizard.removeFileLister", { type: "pkgFile" });
ipcRenderer.send("kylinide.installWizard.removeFileLister", { type: "installFile" });
ipcRenderer.send("kylinide.installWizard.finish", { type: "finish" });
this.removeAllListeners();
}

View File

@ -57,6 +57,35 @@ import { AbortController } from "@azure/abort-controller";
// }
type IStrictWindowState = Required<Pick<IWindowState, 'x' | 'y' | 'width' | 'height'>>;
export const enum DeployMainPhase {
// 未开始
None = 0,
//开始
Starting = 1,
/**
*
*/
HomePage = 2,
/**
*
*/
InstallPage = 3,
/**
*
*/
Cancel = 4,
/**
*
*/
Finish = 5,
/**
*
*/
Close = 6
}
export class DeployMainService implements IDeployMainService {
@ -67,6 +96,7 @@ export class DeployMainService implements IDeployMainService {
private DeployWindow: BrowserWindow | null = null;
private deployWindowrParentWindow: BrowserWindow | null = null;
private selectObject = {
dirPath: "",
updateFlag: false,
@ -97,6 +127,9 @@ export class DeployMainService implements IDeployMainService {
installProcessId: ChildProcess | null = null;
cancelInstallProcessId: ChildProcess | null = null;
cancelFlag = false;
phase: DeployMainPhase;
offset = 0;
resultIndex = 0;
@ -132,6 +165,7 @@ export class DeployMainService implements IDeployMainService {
this.localConfigObject = { depConfigInfo: "", res: 0, g_index_Object: {}, osinfo: "", localConfigMatch: 0, osrelease: "", supportList: [] };
this.updateConfigObject = { res: 0, g_index_Object: {}, osinfo: "", ConfigMatch: 0, base_url: "", depConfigInfo: "", osrelease: "", supportList: [] };
this.updateConfigDir = installUtils.installConfigDirPre() + "/" + installUtils.getDateDir();
this.phase = DeployMainPhase.None;
this.reset();
this.logger = this.loggerMainService.createLogger(URI.file(this.installConfig + "/log/instguide.log"));
this.loggerExt = this.loggerMainService.createLogger(URI.file(this.installConfig + "/log/extdetail.log"));
@ -218,6 +252,12 @@ export class DeployMainService implements IDeployMainService {
};
listenerFinish = (event: IpcMainEvent, msg: any) => {
if (msg.type === 'finish') {
this.phase = DeployMainPhase.Finish;
}
};
listenerInstallProcess = async (event: IpcMainEvent, msg: any) => {
if (msg.type === 'installExt') {
@ -259,6 +299,8 @@ export class DeployMainService implements IDeployMainService {
}
}
else if (msg.type === 'installPkg') {
this.phase = DeployMainPhase.InstallPage;
this.logger.info("开始安装操作InstallPage");
// const extlogFile = this.installConfig + '/log/extInstall.log';
// this.backupLogFile(extlogFile)
const extlogFile0 = this.installConfig + '/log/extInstall.1.log';
@ -415,6 +457,8 @@ export class DeployMainService implements IDeployMainService {
this.logger.error("取消安装授权失败:", code);
} else {
this.cancelFlag = true;
this.phase = DeployMainPhase.Cancel;
this.logger.info("取消安装操作Cancel");
if (this.DeployWindow) {
this.DeployWindow.webContents.send("kylinide.installWizard.removeFileLister", { type: 'installFile' });
this.DeployWindow.webContents.send("kylinide.installWizard.removeFileLister", { type: 'extFile' });
@ -432,10 +476,11 @@ export class DeployMainService implements IDeployMainService {
this.logger.info('kill Exit code:cancelinstallprocessid:', code);
});
} else {
this.logger.info("取消安装");
this.controller.abort();
this.cancelFlag = true;
this.phase = DeployMainPhase.Cancel;
this.installQueue?.splice(0);
this.logger.info("取消安装操作Cancel");
//结束插件下载及安装
if (this.DeployWindow) {
this.DeployWindow.webContents.send("kylinide.installWizard.cancelInstall", { type: 'cancelinstall' });
@ -981,6 +1026,7 @@ export class DeployMainService implements IDeployMainService {
validatedIpcMain.removeListener('kylinide.installWizard.init', this.listenerWriteSelectJson);
validatedIpcMain.removeListener('kylinide.installWizard.reloadwindow', this.listenerReloadWindow);
validatedIpcMain.removeListener('kylinide.installWizard.downloadExt', this.handleDownExten);
validatedIpcMain.on('kylinide.installWizard.finish', this.listenerFinish);
}
private registerListeners(): void {
this.logger.info("注册监听器");
@ -993,6 +1039,7 @@ export class DeployMainService implements IDeployMainService {
validatedIpcMain.on('kylinide.installWizard.removeFileLister', this.listenerRemoveFileLister);
validatedIpcMain.on('kylinide.installWizard.init', this.listenerWriteSelectJson);
validatedIpcMain.on('kylinide.installWizard.reloadwindow', this.listenerReloadWindow);
validatedIpcMain.on('kylinide.installWizard.finish', this.listenerFinish);
//handle从渲染进程发送的消息
validatedIpcMain.handle('kylinide.installWizard.init.configVersify', this.handleInitConfigVersify);
@ -1217,7 +1264,8 @@ export class DeployMainService implements IDeployMainService {
this.deployWindowrParentWindow = BrowserWindow.getFocusedWindow();
this.reset();
this.logger.info("开始创建界面Starting");
this.phase = DeployMainPhase.Starting;
const data = {} as DeployData;
const DeployDisposables = new DisposableStore();
const deployWindowConfigUrl = DeployDisposables.add(this.protocolMainService.createIPCObjectUrl<DeployWindowConfiguration>());
@ -1242,13 +1290,30 @@ export class DeployMainService implements IDeployMainService {
}
this.DeployWindow.webContents.on('did-finish-load', () => {
if (this.DeployWindow) {
this.logger.info("窗口加载完成");
this.logger.info("窗口加载完成显示首页HomePage", "send kylinide.installWizard.initdata");
this.DeployWindow.webContents.send('kylinide.installWizard.initdata', initData);;
this.DeployWindow.show();
this.phase = DeployMainPhase.HomePage;
}
});
this.DeployWindow.on('close', () => {
this.DeployWindow.on('close', e => {
this.logger.info("接收到关闭窗口的信号");
this.logger.info("检查是否能够关闭窗口");
if (this.phase === DeployMainPhase.InstallPage) {
this.logger.info("安装未结束,请先点击取消,然后关闭窗口");
e.preventDefault();
if (this.DeployWindow) {
this.DeployWindow.show();
dialog.showMessageBox(this.DeployWindow, {
type: 'info',
title: "提示",
message: "开发环境快速部署功能正在进行安装操作...",
detail: '请先点击开发环境快速部署右上方取消按钮,然后再关闭窗口'
})
}
return;
}
this.logger.info("关闭窗口");
this.DeployWindow = null;
try {
@ -1256,7 +1321,7 @@ export class DeployMainService implements IDeployMainService {
} catch {
this.logger.info("deployDisposables.dispose");
}
this.phase = DeployMainPhase.Close;
resolve(void 0);
});
this.deployWindowrParentWindow?.on('close', () => {