Skip to content

Commit

Permalink
Merge pull request #4 from GuoJikun/dev
Browse files Browse the repository at this point in the history
Dev
  • Loading branch information
GuoJikun authored Nov 20, 2024
2 parents c3bae74 + 35b19ca commit c7856b5
Show file tree
Hide file tree
Showing 28 changed files with 999 additions and 416 deletions.
7 changes: 7 additions & 0 deletions src-tauri/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions src-tauri/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ windows = { version = "0.58.0", features = [
infer = { version = "0.16.0", features = ["std"] }
tauri-plugin-fs = "2"
tauri-plugin-dialog = "2"
urlencoding = "2.1.3"

[target.'cfg(not(any(target_os = "android", target_os = "ios")))'.dependencies]
tauri-plugin-autostart = "2"
Expand Down
3 changes: 2 additions & 1 deletion src-tauri/capabilities/default.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
"identifier": "default",
"description": "enables the default permissions",
"windows": [
"main"
"main",
"preview"
],
"local": true,
"permissions": [
Expand Down
1 change: 1 addition & 0 deletions src-tauri/src/helper.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@ pub fn get_window_class_name(hwnd: HWND) -> String {
let len = unsafe { WindowsAndMessaging::GetClassNameW(hwnd, &mut class_name) };
String::from_utf16_lossy(&class_name[0..len as usize])
}

97 changes: 91 additions & 6 deletions src-tauri/src/preview.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use std::sync::mpsc;
use std::thread;
use tauri::{AppHandle, Emitter, Error as TauriError, Manager};
use tauri::{ webview::PageLoadEvent, AppHandle, Emitter, Error as TauriError, Event, EventTarget, Listener, Manager, WebviewUrl, WebviewWindowBuilder };
use windows::{
core::{w, Error as WError, Interface, VARIANT},
Win32::{
Expand Down Expand Up @@ -29,7 +29,7 @@ mod helper;

#[path = "./utils/mod.rs"]
mod utils;
use utils::get_file_info;
use utils::{get_file_info, File as UFile};

#[derive(Debug)]
pub struct PreviewFile {
Expand Down Expand Up @@ -221,6 +221,25 @@ impl Drop for Selected {
}
}

pub struct WebRoute {
path: String,
query: UFile,
}
impl WebRoute {
pub fn to_url(&self) -> String {
let mut url = self.path.clone();
url.push_str("?");
url.push_str(format!("file_type={}&path={}&extension={}", self.query.get_file_type(), urlencoding::encode(&self.query.get_path()), self.query.get_extension()).as_str());
url
}
pub fn new(path: String, query: UFile) -> Self {
Self {
path,
query,
}
}
}

#[allow(dead_code)]
impl PreviewFile {
// 注册键盘钩子
Expand Down Expand Up @@ -277,11 +296,77 @@ impl PreviewFile {
pub fn preview_file(app: AppHandle) -> Result<(), TauriError> {
let file_path = Selected::new();
if file_path.is_some() {
let window = app.get_webview_window("main").unwrap();
window.show()?;
window.set_focus()?;
let file_info = get_file_info(&file_path.unwrap());
window.emit("file-preview", file_info)?;

if file_info.is_none() {
return Ok(());
}
let file_info = file_info.unwrap();
match app.get_webview_window("preview") {
Some(window) => {
let route = match file_info.get_file_type().as_str() {
"Markdown" => WebRoute::new("/preview/md".to_string(), file_info.clone()),
"Text" => WebRoute::new("/preview/text".to_string(), file_info.clone()),
"Image" => WebRoute::new("/preview/image".to_string(), file_info.clone()),
"Video" => WebRoute::new("/preview/video".to_string(), file_info.clone()),
"Font" => WebRoute::new("/preview/font".to_string(), file_info.clone()),
"Code" => WebRoute::new("/preview/code".to_string(), file_info.clone()),
_ => WebRoute::new("/preview/not-support".to_string(), file_info.clone()),
};

let url = route.to_url();
let js = format!("window.location.href = '{}'", &url);
let _ = window.eval(js.as_str());

let _ = window.show();
let _ = window.set_focus();
}
None => {
let result = WebviewWindowBuilder::new(&app, "preview", WebviewUrl::App("/preview".into()))
.center()
.decorations(false)
.skip_taskbar(true)
.on_page_load(move |window, payload| {
let cur_path = payload.url().path();

if cur_path == "/preview" {
match payload.event() {
PageLoadEvent::Finished => {
let route = match file_info.get_file_type().as_str() {
"Markdown" => WebRoute::new("/preview/md".to_string(), file_info.clone()),
"Text" => WebRoute::new("/preview/text".to_string(), file_info.clone()),
"Image" => WebRoute::new("/preview/image".to_string(), file_info.clone()),
"Video" => WebRoute::new("/preview/video".to_string(), file_info.clone()),
"Font" => WebRoute::new("/preview/font".to_string(), file_info.clone()),
"Code" => WebRoute::new("/preview/code".to_string(), file_info.clone()),
_ => WebRoute::new("/preview/not-support".to_string(), file_info.clone()),
};

let url = route.to_url();
let js = format!("window.location.href = '{}'", &url);
let _ = window.eval(js.as_str());

let _ = window.show();
let _ = window.set_focus();
}
_ => {}
}
}



})
.focused(true)
.visible_on_all_workspaces(true)
.build();

if let Ok(preview) = result {

let _ = preview.show();
}

}
}
}

Ok(())
Expand Down
16 changes: 8 additions & 8 deletions src-tauri/src/tray.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use tauri::{
menu::{MenuBuilder, MenuItem, MenuItemBuilder},
tray::{MouseButton, MouseButtonState, TrayIconBuilder, TrayIconEvent},
App, Emitter, Manager, WebviewUrl, WebviewWindowBuilder,
App, Emitter, Manager
};
#[path = "updater.rs"]
mod updater;
Expand Down Expand Up @@ -42,14 +42,14 @@ pub fn create_tray(app: &mut App) -> tauri::Result<()> {
"setting" => {
println!("Setting");
// 打开设置窗口
let webview_window =
WebviewWindowBuilder::new(app, "settings", WebviewUrl::App("/settings".into()))
.build()
.unwrap();
if let Some(webview_window) = app.get_webview_window("main") {
let _ = webview_window.center();
let _ = webview_window.set_title("设置");
let _ = webview_window.eval("window.location.href = '/settings'");
let _ = webview_window.show();
}

let _ = webview_window.center();
let _ = webview_window.set_title("设置");
let _ = webview_window.show();

}
// Add more events here
_ => {}
Expand Down
Loading

0 comments on commit c7856b5

Please sign in to comment.