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
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()
|
|
}
|
|
})
|
|
}
|
|
|