summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-03-04 10:14:38 +0800
committer魏曹先生 <1992414357@qq.com>2026-03-04 10:14:38 +0800
commit68c27b90f8d6690e662ad3a2441583a5c810e060 (patch)
tree9887a124a93850b2b95be70254b8977fd1158ad3 /src
parent05b7b483056902a07f83bc14f443ab59ce1471d8 (diff)
Bump version to 0.1.20.1.2
- Add increase/reduce functions (#1)
Diffstat (limited to 'src')
-rw-r--r--src/progress.rs38
1 files changed, 37 insertions, 1 deletions
diff --git a/src/progress.rs b/src/progress.rs
index a5509ef..169dca5 100644
--- a/src/progress.rs
+++ b/src/progress.rs
@@ -137,6 +137,42 @@ pub fn complete(name: &str) {
update_progress(name, 1.);
}
+/// Increase
+///
+/// Increase a progress item's value by a specified amount (clamped to 1.0)
+pub fn increase(name: &str, amount: f32) {
+ let Some(center) = PROGRESS_CENTER.get() else {
+ return;
+ };
+ let mut state = center.tx.borrow().clone();
+ let entry = state
+ .entry(name.to_string())
+ .or_insert_with(|| ProgressState {
+ progress: 0.0,
+ info: ProgressInfo::default(),
+ });
+ entry.progress = (entry.progress + amount).clamp(0.0, 1.0);
+ let _ = center.tx.send(state);
+}
+
+/// Reduce
+///
+/// Reduce a progress item's value by a specified amount (clamped to 0.0)
+pub fn reduce(name: &str, amount: f32) {
+ let Some(center) = PROGRESS_CENTER.get() else {
+ return;
+ };
+ let mut state = center.tx.borrow().clone();
+ let entry = state
+ .entry(name.to_string())
+ .or_insert_with(|| ProgressState {
+ progress: 0.0,
+ info: ProgressInfo::default(),
+ });
+ entry.progress = (entry.progress - amount).clamp(0.0, 1.0);
+ let _ = center.tx.send(state);
+}
+
/// Clear all
///
/// Send a message to clear all items, ensuring no progress remains
@@ -177,7 +213,7 @@ pub fn update_progress(name: &str, progress: f32) {
progress: 0.0,
info: ProgressInfo::default(),
});
- entry.progress = progress;
+ entry.progress = progress.clamp(0.0, 1.0);
let _ = center.tx.send(state);
}