Skip to content

Commit

Permalink
Merge pull request #11 from TC999/dev1
Browse files Browse the repository at this point in the history
忽略测试
  • Loading branch information
TC999 authored Dec 3, 2024
2 parents 84039d3 + c93dea4 commit 01d2552
Show file tree
Hide file tree
Showing 4 changed files with 57 additions and 6 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,5 @@ Cargo.lock
/target

# 日志文件
*.log
*.log
adcignore.txt
24 changes: 24 additions & 0 deletions src/ignore.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
use std::collections::HashSet;
use std::fs::{self, OpenOptions};
use std::io::{self, BufRead, Write};
use std::path::Path;

const IGNORE_FILE: &str = "adcignore.txt";

pub fn load_ignored_folders() -> HashSet<String> {
let mut ignored = HashSet::new();
if let Ok(file) = fs::File::open(IGNORE_FILE) {
for line in io::BufReader::new(file).lines().flatten() {
ignored.insert(line);
}
}
ignored
}

pub fn save_ignored_folders(ignored: &HashSet<String>) {
if let Ok(mut file) = OpenOptions::new().write(true).create(true).truncate(true).open(IGNORE_FILE) {
for folder in ignored {
writeln!(file, "{}", folder).unwrap();
}
}
}
1 change: 1 addition & 0 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ mod scanner; // 引入扫盘模块
mod ui; // 引入 ui 模块
mod utils; // 文件夹大小计算模块
mod logger; // 引入日志模块
mod ignore; // 引入忽略模块

use ui::AppDataCleaner;

Expand Down
35 changes: 30 additions & 5 deletions src/ui.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,10 @@ use crate::delete;
use crate::scanner;
use crate::utils;
use crate::logger; // 导入 logger 模块
use crate::ignore;
use eframe::egui::{self, Grid, ScrollArea};
use std::sync::mpsc::{Sender, Receiver};
use std::collections::HashSet;

pub struct AppDataCleaner { // 定义数据类型
is_scanning: bool,
Expand All @@ -19,6 +21,7 @@ pub struct AppDataCleaner { // 定义数据类型
is_logging_enabled: bool, // 控制日志是否启用
//current_folder_type: String, // 新增字段
previous_logging_state: bool, // 记录上一次日志启用状态
ignored_folders: HashSet<String>, // 忽略文件夹集合
}

impl Default for AppDataCleaner { // 定义变量默认值
Expand All @@ -35,6 +38,7 @@ impl Default for AppDataCleaner { // 定义变量默认值
rx: Some(rx),
is_logging_enabled: false, // 默认禁用日志
previous_logging_state: false, // 初始时假定日志系统未启用
ignored_folders: ignore::load_ignored_folders(),
}
}
}
Expand Down Expand Up @@ -163,17 +167,38 @@ impl eframe::App for AppDataCleaner {
ui.end_row();

for (folder, size) in &self.folder_data {
ui.label(folder);
let is_ignored = self.ignored_folders.contains(folder);
if is_ignored {
ui.add_enabled(false, egui::Label::new(egui::RichText::new(folder).color(egui::Color32::GRAY)));
} else {
ui.label(folder);
}
ui.label(utils::format_size(*size));
ui.label("敬请期待"); // 百分比计算,一直死机没解决,代码在dev分支
ui.label("敬请期待");

if ui.button("彻底删除").clicked() {
self.confirm_delete = Some((folder.clone(), false));
if !self.ignored_folders.contains(folder) {
if ui.button("彻底删除").clicked() {
self.confirm_delete = Some((folder.clone(), false));
}
if ui.button("移动").clicked() {
// 移动逻辑
}
} else {
ui.add_enabled(false, |ui: &mut egui::Ui| {
let response1 = ui.button("彻底删除");
let response2 = ui.button("移动");
response1 | response2 // 返回合并的 Response
});
}
if ui.button("移动").clicked() {
// 移动逻辑

if ui.button("忽略").clicked() {
self.ignored_folders.insert(folder.clone());
ignore::save_ignored_folders(&self.ignored_folders);
println!("文件夹 '{}' 已被忽略", folder);
log::info!("文件夹 '{}' 已被忽略", folder);
}

ui.end_row();
}
});
Expand Down

0 comments on commit 01d2552

Please sign in to comment.