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.
 
 
 
 

133 lines
3.4 KiB

/**
* electron 主文件
*/
"use strict"
import Shared from "./share"
import setTray from "./disk"
import { getFileUrl } from "./util"
// import '../renderer/store'
import "./facilities"
import { app, BrowserWindow, dialog } from "electron"
Shared.data = {
mainWindow: null, // 主窗口
floatWindow: null, // 浮动窗口
miniWindow: null,
forceClose: false,
lastChoice: -1, // 做过的选择
}
console.log("asdasadsads")
/**
* Set `__static` path to static files in production
* https://simulatedgreg.gitbooks.io/electron-vue/content/en/using-static-assets.html
*/
let isDev = process.env.NODE_ENV == "development" ? true : false
if (!isDev) {
// @ts-ignore
global.__static = require("path").join(__dirname, "/static").replace(/\\/g, "\\\\")
}
function createWindow() {
/**
* Initial window options
*/
Shared.data.mainWindow = new BrowserWindow({
height: 400,
useContentSize: true,
width: 600,
resizable: true,
minWidth: 450,
minHeight: 400,
icon: __static + "/icon.png",
// frame: false,
// transparent: true,
alwaysOnTop: false,
webPreferences: {
nodeIntegration: true,
contextIsolation: false,
},
})
Shared.data.mainWindow.loadURL(getFileUrl(""))
Shared.data.mainWindow.on("close", (event: any) => {
if (Shared.data.forceClose) {
Shared.data.mainWindow = null
app.quit()
} else if (Shared.data.mainWindow) {
if (Shared.data.lastChoice === 1) {
if (Shared.data.miniWindow) {
Shared.data.mainWindow.hide() // 调用 最小化实例方法
} else {
setTray(app, Shared.data.mainWindow)
}
event.preventDefault()
} else {
const choice = dialog.showMessageBoxSync(Shared.data.mainWindow, {
type: "info",
title: "Information",
defaultId: 0,
cancelId: 0,
message: "确定要关闭吗?",
buttons: ["没事", "最小化到托盘", "直接退出"],
})
if (choice === 1) {
Shared.data.lastChoice = 1
if (Shared.data.miniWindow) {
Shared.data.mainWindow.hide() // 调用 最小化实例方法
} else {
setTray(app, Shared.data.mainWindow)
}
event.preventDefault()
} else if (choice === 2) {
Shared.data.mainWindow = null
// app.quit()
// 不要用quit();试了会弹两次
Shared.data.forceClose = true
app.quit() // exit()直接关闭客户端,不会执行quit();
} else {
event.preventDefault()
}
}
}
})
}
const gotTheLock = app.requestSingleInstanceLock()
if (!gotTheLock) {
app.exit()
} else {
require("./menu")
require("./float")
app.on("second-instance", (event, commandLine, workingDirectory) => {
// 当运行第二个实例时,将会聚焦到mainWindow这个窗口
if (Shared.data.mainWindow) {
if (Shared.data.mainWindow.isMinimized()) Shared.data.mainWindow.restore()
Shared.data.mainWindow.focus()
Shared.data.mainWindow.show()
}
})
app.on("ready", createWindow)
app.on("before-quit", event => {
if (Shared.data.forceClose) {
app.exit()
} else {
event.preventDefault()
}
})
app.on("window-all-closed", () => {
if (process.platform !== "darwin") {
app.exit()
}
})
app.on("activate", () => {
if (Shared.data.mainWindow === null) {
createWindow()
}
})
}