use std::cell::{Cell, RefCell};
use std::rc::Rc;
use std::time::Duration;
use windui::prelude::*;
fn main() {
let progress = Rc::new(Cell::new(0.0f32));
let clock = Rc::new(RefCell::new(String::from("已运行 0 秒")));
let ticks = Rc::new(Cell::new(0u32));
let mut app = App::new("后台任务", 360, 180);
let pc = progress.clone();
let tx = app.channel::<f32>(move |p| pc.set(p));
std::thread::spawn(move || {
for i in 1..=100 {
std::thread::sleep(Duration::from_millis(40));
if tx.send(i as f32 / 100.0).is_err() {
break; }
}
});
let ui = Element::col()
.fill()
.padding(20)
.spacing(12)
.child(Element::label("下载进度").height(20).width_match())
.child(Element::progress(progress.clone()).width_match())
.child(Element::label_rc(clock.clone()).height(20).width_match());
let (tk, ck) = (ticks.clone(), clock.clone());
app.on_interval(Duration::from_millis(1000), move || {
tk.set(tk.get() + 1);
*ck.borrow_mut() = format!("已运行 {} 秒", tk.get());
})
.screenshot_from_args()
.content(ui)
.run();
}