feat: 添加闪屏

This commit is contained in:
Asahi 2024-12-10 14:52:32 +08:00
parent a279a262b7
commit 31c23efa6c
9 changed files with 60 additions and 9 deletions

16
splashscreen.html Normal file
View File

@ -0,0 +1,16 @@
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Loading</title>
</head>
<body>
<div class="container">
<h1>正在加载!</h1>
<div class="row">
<h5>正在加载所需资源!</h5>
</div>
</div>
</body>
</html>

View File

@ -1,9 +1,17 @@
use crate::{
app_error::AppError,
pe_parse::{header::ImageDosHeader, pe::PE},
services::{self, file::{get_nt_headers_data, ResponseDOSHeaderData, ResponseFileHeaderData, ResponseNTHeaderData}, GLOBAL_FILE_DATA},
services::{
self,
file::{
get_nt_headers_data, ResponseDOSHeaderData, ResponseFileHeaderData,
ResponseNTHeaderData,
},
GLOBAL_FILE_DATA,
},
};
use serde::Serialize;
use tauri::{async_runtime::Mutex, AppHandle, Manager, State};
#[derive(Serialize)]
pub struct PeNodeTreeData {
@ -11,6 +19,15 @@ pub struct PeNodeTreeData {
key: String,
children: Vec<PeNodeTreeData>,
}
// set_complete
#[tauri::command]
pub fn set_complete(app: AppHandle) -> Result<(), AppError> {
let splash_window = app.get_webview_window("splashscreen").unwrap();
let main_window = app.get_webview_window("main").unwrap();
splash_window.close().unwrap();
main_window.show().unwrap();
Ok(())
}
// TODO: 获取PE节点树的JSON数据
#[tauri::command]

View File

@ -15,6 +15,7 @@ pub fn run() {
commands::command_get_pe_data_dos_header,
commands::command_get_pe_data_nt_header,
commands::command_get_pe_data_file_header,
commands::set_complete
])
.run(tauri::generate_context!())
.expect("error while running tauri application");

View File

@ -12,9 +12,15 @@
"app": {
"windows": [
{
"title": "test-tauri",
"width": 800,
"height": 600
"label": "main",
"title": "My CFF",
"width": 1000,
"height": 800,
"visible": false
},
{
"label": "splashscreen",
"url": "/splashscreen"
}
],
"security": {

View File

@ -358,7 +358,7 @@ const App = () => {
render: (text) => {
return offsetHex ? `0x${text.toString(16).toUpperCase()}` : text;
},
onHeaderCell: (column) => ({
onHeaderCell: () => ({
onClick: () => {
setOffsetHex(!offsetHex);
}

View File

@ -157,7 +157,7 @@ const App = () => {
render: (text) => {
return offsetHex ? `0x${text.toString(16).toUpperCase()}` : text;
},
onHeaderCell: (column) => ({
onHeaderCell: () => ({
onClick: () => {
setOffsetHex(!offsetHex);
},

View File

@ -115,7 +115,7 @@ const App = () => {
render: (text) => {
return offsetHex ? `0x${text.toString(16).toUpperCase()}` : text;
},
onHeaderCell: (column) => ({
onHeaderCell: () => ({
onClick: () => {
setOffsetHex(!offsetHex);
},

View File

@ -16,7 +16,7 @@ export default function SiderTree({
// 受控 选择的节点
const [selectedKey, setSelectedKey] = useState<string>(defaultSelectedKey);
const onSelect: TreeProps["onSelect"] = (selectedKeys, info) => {
const onSelect: TreeProps["onSelect"] = (_, info) => {
let key = info.node.key as string;
console.log("onSelect", key);
setSelectedKey(key);

View File

@ -1,6 +1,17 @@
import React from "react";
import ReactDOM from "react-dom/client";
import App from "./App";
import { invoke } from "@tauri-apps/api/core";
import { delay} from "lodash-es"
async function setup() {
invoke('set_complete')
}
window.addEventListener("DOMContentLoaded", () => {
setup();
})
ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render(
<React.StrictMode>