Skip to content

Commit

Permalink
Merge pull request #32 from TC999/wake
Browse files Browse the repository at this point in the history
函数移位
  • Loading branch information
TC999 authored Jan 5, 2025
2 parents 6f3cf85 + 245118c commit f6d203c
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 23 deletions.
32 changes: 32 additions & 0 deletions src/confirmation.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
use eframe::egui;
use crate::logger;
use crate::delete;
use crate::utils;

pub fn show_confirmation(ctx: &egui::Context, message: &str) -> Option<bool> {
let mut result = None;
Expand All @@ -22,3 +25,32 @@ pub fn show_confirmation(ctx: &egui::Context, message: &str) -> Option<bool> {

result
}

pub fn handle_delete_confirmation(
ctx: &egui::Context,
confirm_delete: &mut Option<(String, bool)>,
selected_appdata_folder: &str,
) {
if let Some((folder_name, _)) = confirm_delete {
let message = format!("确定要彻底删除文件夹 {} 吗?", folder_name);
logger::log_info(&message);
if let Some(confirm) = show_confirmation(ctx, &message) {
if confirm {
if let Some(base_path) = utils::get_appdata_dir(selected_appdata_folder) {
let full_path = base_path.join(folder_name);
if let Err(err) = delete::delete_folder(&full_path) {
eprintln!("Error: {}", err);
logger::log_error(&format!("Error: {}", err));
}
} else {
eprintln!("无法获取 {} 文件夹路径", selected_appdata_folder);
logger::log_error(&format!(
"无法获取 {} 文件夹路径",
selected_appdata_folder
));
}
}
*confirm_delete = None; // 清除状态
}
}
}
34 changes: 11 additions & 23 deletions src/ui.rs
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,16 @@ impl eframe::App for AppDataCleaner {

// 加载描述文件
if self.folder_descriptions.is_none() {
self.folder_descriptions = load_folder_descriptions("folders_description.yaml", &mut self.yaml_error_logged);
match FolderDescriptions::load_from_yaml("folders_description.yaml") {
Ok(descriptions) => self.folder_descriptions = Some(descriptions),
Err(e) => {
if !self.yaml_error_logged {
eprintln!("加载 YAML 文件失败: {}", e);
logger::log_error(&format!("加载 YAML 文件失败: {}", e));
self.yaml_error_logged = true; // 记录错误,避免重复输出
}
}
}
}

if self.is_logging_enabled != self.previous_logging_state {
Expand All @@ -94,28 +103,7 @@ impl eframe::App for AppDataCleaner {
}

// 删除确认弹窗逻辑
if let Some((folder_name, _)) = &self.confirm_delete {
let message = format!("确定要彻底删除文件夹 {} 吗?", folder_name);
logger::log_info(&message);
if let Some(confirm) = confirmation::show_confirmation(ctx, &message) {
if confirm {
if let Some(base_path) = utils::get_appdata_dir(&self.selected_appdata_folder) {
let full_path = base_path.join(folder_name);
if let Err(err) = delete::delete_folder(&full_path) {
eprintln!("Error: {}", err);
logger::log_error(&format!("Error: {}", err));
}
} else {
eprintln!("无法获取 {} 文件夹路径", self.selected_appdata_folder);
logger::log_error(&format!(
"无法获取 {} 文件夹路径",
self.selected_appdata_folder
));
}
}
self.confirm_delete = None; // 清除状态
}
}
confirmation::handle_delete_confirmation(ctx, &mut self.confirm_delete, &self.selected_appdata_folder);

// 顶部菜单
egui::TopBottomPanel::top("menu_bar").show(ctx, |ui| {
Expand Down

0 comments on commit f6d203c

Please sign in to comment.