mirror of
https://github.com/fanchenio/DawnLauncher.git
synced 2025-07-13 12:52:10 +08:00
132 lines
3.5 KiB
TypeScript
132 lines
3.5 KiB
TypeScript
import { BrowserWindow, shell } from "electron";
|
|
import { join } from "node:path";
|
|
import { getMainBackgorunColor, sendToWebContent } from "../commons";
|
|
import cacheData from "../commons/cacheData";
|
|
|
|
// 窗口
|
|
let quickSearchWindow: BrowserWindow | null = null;
|
|
|
|
/**
|
|
* 快速搜索窗口
|
|
*/
|
|
function createQuickSearchWindow() {
|
|
// 创建窗口
|
|
global.quickSearchWindowInit = false;
|
|
quickSearchWindow = global.quickSearchWindow = new BrowserWindow({
|
|
title: "Dawn Launcher",
|
|
width: 600,
|
|
height: 44,
|
|
type: "toolbar",
|
|
frame: false,
|
|
show: false,
|
|
maximizable: false,
|
|
minimizable: false,
|
|
fullscreenable: false,
|
|
resizable: false,
|
|
alwaysOnTop: true,
|
|
backgroundColor: getMainBackgorunColor(),
|
|
webPreferences: {
|
|
spellcheck: false,
|
|
backgroundThrottling: false,
|
|
preload: join(__dirname, "../preload/index.js"),
|
|
devTools: process.env.NODE_ENV === "development",
|
|
},
|
|
});
|
|
if (process.env.VITE_DEV_SERVER_URL) {
|
|
quickSearchWindow.loadURL(
|
|
process.env.VITE_DEV_SERVER_URL + "Search/QuickSearch"
|
|
);
|
|
} else {
|
|
quickSearchWindow.loadFile(join(process.env.DIST, "index.html"), {
|
|
hash: "/Search/QuickSearch",
|
|
});
|
|
}
|
|
quickSearchWindow.webContents.on("did-finish-load", function () {
|
|
// 恢复上一次的位置
|
|
let bounds = cacheData.cacheStore.get("quickSearchWindowBounds");
|
|
if (bounds) {
|
|
quickSearchWindow.setBounds(bounds);
|
|
}
|
|
// 设置可以显示
|
|
global.searchWindowShow = true;
|
|
});
|
|
quickSearchWindow.webContents.setWindowOpenHandler(({ url }) => {
|
|
if (url.startsWith("https:")) shell.openExternal(url);
|
|
return { action: "deny" };
|
|
});
|
|
// 失去焦点
|
|
quickSearchWindow.on("blur", () => {
|
|
// 失去焦点后隐藏
|
|
if (global.setting.quickSearch.hideLoseFocus) {
|
|
hideQuickSearchWindow();
|
|
}
|
|
});
|
|
// 显示窗口
|
|
quickSearchWindow.on("show", () => {
|
|
// 背景色
|
|
quickSearchWindow.setBackgroundColor(
|
|
global.setting.appearance.theme.mainBackgroundColor
|
|
);
|
|
// 显示窗口时将输入法切换为英文模式
|
|
if (global.setting.general.switchEnglish) {
|
|
global.addon.switchEnglish(
|
|
quickSearchWindow.getNativeWindowHandle().readInt32LE(0)
|
|
);
|
|
}
|
|
});
|
|
// 窗口移动完毕
|
|
quickSearchWindow.on("moved", () => {
|
|
// 记录位置
|
|
cacheData.cacheStore.set(
|
|
"quickSearchWindowBounds",
|
|
quickSearchWindow.getBounds()
|
|
);
|
|
});
|
|
// 隐藏窗口
|
|
quickSearchWindow.on("hide", () => {
|
|
// 设置默认高度
|
|
quickSearchWindow.setBounds({ height: 44 });
|
|
// 发送消息清空数据
|
|
quickSearchWindow.webContents.send("onQuickSearchClearData");
|
|
});
|
|
// 禁用标题栏右键
|
|
quickSearchWindow.hookWindowMessage(278, function (e) {
|
|
// 窗口禁用
|
|
quickSearchWindow.setEnabled(false);
|
|
// 延时太快会立刻启动,太慢会妨碍窗口其他操作,可自行测试最佳时间
|
|
setTimeout(() => {
|
|
quickSearchWindow.setEnabled(true);
|
|
}, 100);
|
|
return true;
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 显示快速搜索窗口之前
|
|
*/
|
|
function showQuickSearchWindowBefore() {
|
|
// 向主窗口发送通知
|
|
sendToWebContent("quickSearchWindow", "onShowQuickSearchWindowBefore", null);
|
|
}
|
|
|
|
/**
|
|
* 显示快速搜索窗口
|
|
*/
|
|
function showQuickSearchWindow() {
|
|
quickSearchWindow.show();
|
|
}
|
|
|
|
/**
|
|
* 隐藏快速搜索窗口
|
|
*/
|
|
function hideQuickSearchWindow() {
|
|
quickSearchWindow.hide();
|
|
}
|
|
|
|
export {
|
|
createQuickSearchWindow,
|
|
showQuickSearchWindow,
|
|
hideQuickSearchWindow,
|
|
showQuickSearchWindowBefore,
|
|
};
|