feat: replace dual progress bar components with single TransferProgressBar

This commit is contained in:
Christian Visintin
2026-04-19 01:54:46 +05:30
parent a48b226d9b
commit 4ed6b118ca
4 changed files with 10 additions and 53 deletions
@@ -1,24 +1,20 @@
use tui_realm_stdlib::ProgressBar;
use tuirealm::event::{Key, KeyEvent, KeyModifiers};
use tuirealm::props::{Alignment, BorderSides, BorderType, Borders, Color};
use tuirealm::props::{Alignment, BorderType, Borders, Color};
use tuirealm::{Component, Event, MockComponent, NoUserEvent};
use crate::ui::activities::filetransfer::{Msg, TransferMsg};
#[derive(MockComponent)]
pub struct ProgressBarFull {
pub struct TransferProgressBar {
component: ProgressBar,
}
impl ProgressBarFull {
impl TransferProgressBar {
pub fn new<S: Into<String>>(prog: f64, label: S, title: S, color: Color) -> Self {
Self {
component: ProgressBar::default()
.borders(
Borders::default()
.modifiers(BorderType::Rounded)
.sides(BorderSides::TOP | BorderSides::LEFT | BorderSides::RIGHT),
)
.borders(Borders::default().modifiers(BorderType::Rounded))
.foreground(color)
.label(label)
.progress(prog)
@@ -27,45 +23,7 @@ impl ProgressBarFull {
}
}
impl Component<Msg, NoUserEvent> for ProgressBarFull {
fn on(&mut self, ev: Event<NoUserEvent>) -> Option<Msg> {
if matches!(
ev,
Event::Keyboard(KeyEvent {
code: Key::Char('c'),
modifiers: KeyModifiers::CONTROL
})
) {
Some(Msg::Transfer(TransferMsg::AbortTransfer))
} else {
None
}
}
}
#[derive(MockComponent)]
pub struct ProgressBarPartial {
component: ProgressBar,
}
impl ProgressBarPartial {
pub fn new<S: Into<String>>(prog: f64, label: S, title: S, color: Color) -> Self {
Self {
component: ProgressBar::default()
.borders(
Borders::default()
.modifiers(BorderType::Rounded)
.sides(BorderSides::BOTTOM | BorderSides::LEFT | BorderSides::RIGHT),
)
.foreground(color)
.label(label)
.progress(prog)
.title(title, Alignment::Center),
}
}
}
impl Component<Msg, NoUserEvent> for ProgressBarPartial {
impl Component<Msg, NoUserEvent> for TransferProgressBar {
fn on(&mut self, ev: Event<NoUserEvent>) -> Option<Msg> {
if matches!(
ev,