style:electron bar

This commit is contained in:
shanhexi
2024-01-09 11:19:37 +08:00
parent 5142779ea5
commit 2077a0d463
9 changed files with 65 additions and 2297 deletions

View File

@@ -83,7 +83,7 @@ export default defineConfig({
localStorage.clear();
localStorage.setItem('app-local-storage-versions', 'v4');
}`,
`if (window.electronApi) { window.electronApi.startServerForSpawn() }`,
// `if (window.electronApi) { window.electronApi.startServerForSpawn() }`,
// `if ("serviceWorker" in navigator) {
// window.addEventListener("load", function () {
// navigator.serviceWorker

View File

@@ -1,4 +1,4 @@
import React, { memo, useMemo } from 'react';
import React, { memo, useState } from 'react';
import styles from './index.less';
import classnames from 'classnames';
import { useCommonStore } from '@/store/common';
@@ -10,6 +10,7 @@ interface IProps {
export default memo<IProps>((props) => {
const { className } = props;
const [isMaximized, setIsMaximize] = useState(window.electronApi?.isMaximized());
const { appTitleBarRightComponent } = useCommonStore((state) => {
return {
@@ -27,9 +28,21 @@ export default memo<IProps>((props) => {
window.electronApi?.setMaximize();
};
const handelMaximize = () => {
const handelMinimizeWindow = (e) => {
e.stopPropagation();
window.electronApi?.minimizeWindow();
};
const handelMaximize = (e) => {
e.stopPropagation();
window.electronApi?.setMaximize();
}
setIsMaximize(!isMaximized);
};
const handelCloseWindow = (e) => {
e.stopPropagation();
window.electronApi?.closeWindow();
};
return (
<div className={classnames(styles.appTitleBar, className)} onDoubleClick={handleDoubleClick}>
@@ -40,14 +53,14 @@ export default memo<IProps>((props) => {
</div>
{isWin && (
<div className={styles.windowsCloseBar}>
<div className={styles.windowsCloseBarItem}>
<Iconfont code="&#xeb78;" />
<div className={styles.windowsCloseBarItem} onClick={handelMinimizeWindow}>
<Iconfont code="&#xe644;" />
</div>
<div className={styles.windowsCloseBarItem} onClick={handelMaximize}>
<Iconfont code="&#xeb78;" />
{isMaximized ? <Iconfont code="&#xe66e;" /> : <Iconfont code="&#xe66b;" />}
</div>
<div className={styles.windowsCloseBarItem}>
<Iconfont code="&#xeb78;" />
<div className={styles.windowsCloseBarItem} onClick={handelCloseWindow}>
<Iconfont code="&#xe66f;" />
</div>
</div>
)}

View File

@@ -9,9 +9,9 @@ if (__ENV__ === 'local') {
/* 在线链接服务仅供平台体验和调试使用,平台不承诺服务的稳定性,企业客户需下载字体包自行发布使用并做好备份。 */
@font-face {
font-family: 'iconfont'; /* Project id 3633546 */
src: url('//at.alicdn.com/t/c/font_3633546_yr9ay65j0fs.woff2?t=1703837870848') format('woff2'),
url('//at.alicdn.com/t/c/font_3633546_yr9ay65j0fs.woff?t=1703837870848') format('woff'),
url('//at.alicdn.com/t/c/font_3633546_yr9ay65j0fs.ttf?t=1703837870848') format('truetype');
src: url('//at.alicdn.com/t/c/font_3633546_vmsq4yq8hw9.woff2?t=1704769259060') format('woff2'),
url('//at.alicdn.com/t/c/font_3633546_vmsq4yq8hw9.woff?t=1704769259060') format('woff'),
url('//at.alicdn.com/t/c/font_3633546_vmsq4yq8hw9.ttf?t=1704769259060') format('truetype');
}
`;
const style = document.createElement('style');

View File

@@ -45,6 +45,10 @@ const usePollRequestService = ({ maxAttempts = 200, interval = 200, loopService
serviceFn();
if (serviceStatus !== ServiceStatus.SUCCESS) {
// 第一次请求失败,启动服务
if (attempts === 1) {
window.electronApi?.startServerForSpawn();
}
intervalId = setInterval(serviceFn, interval);
}

View File

@@ -1,4 +1,4 @@
const { app, BrowserWindow, shell, net, ipcMain } = require('electron');
const { app, BrowserWindow, shell, net, ipcMain, globalShortcut } = require('electron');
const path = require('path');
const registerAppMenu = require('./menu');
const registerAnalysis = require('./analysis');
@@ -54,6 +54,11 @@ function createWindow() {
mainWindow.on('move', () => {
store.set('windowBounds', mainWindow.getBounds());
});
// 注册快捷键Ctrl+Shift+I打开开发者工具
globalShortcut.register('CommandOrControl+Shift+I', () => {
mainWindow.webContents.openDevTools()
})
}
// const menu = Menu.buildFromTemplate(menuBar);
@@ -68,7 +73,7 @@ app.on('ready', () => {
});
app.on('activate', () => {
if (!!mainWindow) {
if (!mainWindow) {
createWindow();
} else {
if (mainWindow.isMinimized()) {
@@ -83,6 +88,7 @@ app.on('activate', () => {
});
app.on('window-all-closed', (e) => {
mainWindow = null
if (isMac) return;
app.quit();
});
@@ -134,3 +140,17 @@ ipcMain.on('set-base-url', (event, _baseUrl) => {
ipcMain.on('set-force-quit-code', (event, _forceQuitCode) => {
forceQuitCode = _forceQuitCode;
});
ipcMain.on('close-window', () => {
mainWindow.close();
});
// 最小化窗口
ipcMain.on('minimize-window', () => {
mainWindow.minimize();
});
// 获取当前窗口是否是最大化
ipcMain.on('is-maximized', () => {
return mainWindow.isMaximized();
});

View File

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
/** @license URI.js v4.4.1 (c) 2011 Gary Court. License: http://github.com/garycourt/uri-js */

View File

@@ -58,6 +58,17 @@ contextBridge.exposeInMainWorld('electronApi', {
setMaximize: () => {
ipcRenderer.send('set-maximize');
},
// 获取当前窗口是否是最大化
isMaximized: () => {
ipcRenderer.send('is-maximized');
},
closeWindow: () => {
ipcRenderer.send('close-window');
},
// 最小化窗口
minimizeWindow: () => {
ipcRenderer.send('minimize-window');
},
// 获取环境是mac还是windows还是linux
getPlatform: () => {
return {

View File

@@ -34,6 +34,9 @@ declare global {
isWin: boolean,
isLinux: boolean,
};
minimizeWindow: () => void;
closeWindow: () => void;
isMaximized: () => boolean;
};
}
const __APP_VERSION__: string;