diff --git a/src/dlreport.rs b/src/dlreport.rs index 82ddceb..c6205d4 100644 --- a/src/dlreport.rs +++ b/src/dlreport.rs @@ -4,9 +4,10 @@ use std::io::stdout; use tokio::sync::mpsc; -use crossterm::cursor::{ MoveUp }; +use crossterm::cursor::{ MoveToPreviousLine }; use crossterm::execute; use crossterm::terminal::{ Clear, ClearType }; +use crossterm::style::{ Print }; use crate::errors::*; @@ -85,58 +86,50 @@ fn print_accumulated_report(statuses: & HashMap, msg_queue: &mu execute!( stdout(), crossterm::cursor::Hide, - MoveUp(moved_lines) + MoveToPreviousLine(moved_lines) )?; for msg in msg_queue.drain(..) { let ct_now = chrono::Local::now(); - print!("{} > {}", ct_now.format("%H:%M:%S"), msg); execute!( stdout(), - Clear(ClearType::UntilNewLine) + Print(format!("{} > {}", ct_now.format("%H:%M:%S"), msg)), + Clear(ClearType::UntilNewLine), + Print("\n") )?; - println!(); } - print!("----------------------------------------"); execute!( stdout(), - Clear(ClearType::UntilNewLine) + Print(format!("----------------------------------------")), + Clear(ClearType::UntilNewLine), + Print("\n") )?; - println!(); for (_k, v) in statuses { let percent_complete = v.progress as f64 / v.total_size as f64 * 100.0; - - print!("Status: {:6.2} mb/s {:5.2}% completed '{}'", v.speed_mbps, percent_complete, v.filename); execute!( stdout(), - Clear(ClearType::UntilNewLine) + Print(format!("Status: {:6.2} mb/s {:5.2}% completed '{}'", v.speed_mbps, percent_complete, v.filename)), + Clear(ClearType::UntilNewLine), + Print("\n") )?; - println!(""); - dl_speed_sum += v.speed_mbps; } - println!(); - - if statuses.len() != 0 { - print!(" =>> Accumulated download speed: {:6.2} mb/s", dl_speed_sum); - } - - execute!( - stdout(), - Clear(ClearType::UntilNewLine) - )?; - println!(""); - execute!( stdout(), + Clear(ClearType::CurrentLine), + Print("\n"), + Print(format!(" =>> Accumulated download speed: {:6.2} mb/s", dl_speed_sum)), + Clear(ClearType::UntilNewLine), + Print("\n"), + Clear(ClearType::FromCursorDown), crossterm::cursor::Show )?; @@ -215,10 +208,10 @@ pub async fn watch_and_print_reports(mut receiver: mpsc::UnboundedReceiver