feat: consolidate theme progress bar fields into single transfer_progress_bar

This commit is contained in:
Christian Visintin
2026-03-21 20:43:51 +01:00
parent f01b61a927
commit a73fdc4d0b
21 changed files with 56 additions and 137 deletions

View File

@@ -775,8 +775,7 @@ mod tests {
transfer_local_explorer_highlighted = "Yellow"
transfer_log_background = "255, 255, 255"
transfer_log_window = "LightGreen"
transfer_progress_bar_full = "forestgreen"
transfer_progress_bar_partial = "Green"
transfer_progress_bar = "forestgreen"
transfer_remote_explorer_background = "#f0f0f0"
transfer_remote_explorer_foreground = "rgb(40, 40, 40)"
transfer_remote_explorer_highlighted = "LightBlue"

View File

@@ -114,14 +114,11 @@ pub struct Theme {
pub transfer_log_window: Color,
#[serde(
deserialize_with = "deserialize_color",
serialize_with = "serialize_color"
serialize_with = "serialize_color",
alias = "transfer_progress_bar_full",
alias = "transfer_progress_bar_partial"
)]
pub transfer_progress_bar_full: Color,
#[serde(
deserialize_with = "deserialize_color",
serialize_with = "serialize_color"
)]
pub transfer_progress_bar_partial: Color,
pub transfer_progress_bar: Color,
#[serde(
deserialize_with = "deserialize_color",
serialize_with = "serialize_color"
@@ -176,8 +173,7 @@ impl Default for Theme {
transfer_local_explorer_highlighted: Color::Yellow,
transfer_log_background: Color::Reset,
transfer_log_window: Color::LightGreen,
transfer_progress_bar_partial: Color::Green,
transfer_progress_bar_full: Color::Green,
transfer_progress_bar: Color::Green,
transfer_remote_explorer_background: Color::Reset,
transfer_remote_explorer_foreground: Color::Reset,
transfer_remote_explorer_highlighted: Color::LightBlue,
@@ -239,8 +235,7 @@ mod test {
assert_eq!(theme.transfer_local_explorer_highlighted, Color::Yellow);
assert_eq!(theme.transfer_log_background, Color::Reset);
assert_eq!(theme.transfer_log_window, Color::LightGreen);
assert_eq!(theme.transfer_progress_bar_full, Color::Green);
assert_eq!(theme.transfer_progress_bar_partial, Color::Green);
assert_eq!(theme.transfer_progress_bar, Color::Green);
assert_eq!(theme.transfer_remote_explorer_background, Color::Reset);
assert_eq!(theme.transfer_remote_explorer_foreground, Color::Reset);
assert_eq!(theme.transfer_remote_explorer_highlighted, Color::LightBlue);

View File

@@ -142,18 +142,17 @@ impl TransferProgress {
self.files_total <= 1
}
#[cfg(test)]
pub fn bytes_written(&self) -> usize {
self.bytes_written
}
#[cfg(test)]
pub fn files_completed(&self) -> usize {
self.files_completed
}
pub fn files_total(&self) -> usize {
self.files_total
}
#[cfg(test)]
pub fn files_started(&self) -> usize {
self.files_started
}
@@ -381,7 +380,7 @@ mod test {
progress.add_bytes(256);
let display = progress.to_string();
assert!(display.contains("/ 1.0 KB"));
assert!(display.contains("/ 1.0 KiB"));
assert!(!display.contains('~'));
}

View File

@@ -426,7 +426,7 @@ impl FileTransferActivity {
&mut self,
root_name: String,
) {
let prog_color = self.theme().transfer_progress_bar_full;
let prog_color = self.theme().transfer_progress_bar;
ui_result(self.app.remount(
Id::TransferProgressBar,
Box::new(components::TransferProgressBar::new(

View File

@@ -103,8 +103,7 @@ pub enum IdTheme {
MiscSave,
MiscTitle,
MiscWarn,
ProgBarFull,
ProgBarPartial,
ProgBar,
StatusHidden,
StatusSorting,
StatusSync,
@@ -225,10 +224,8 @@ pub enum ThemeMsg {
MiscSaveBlurUp,
MiscWarnBlurDown,
MiscWarnBlurUp,
ProgBarFullBlurDown,
ProgBarFullBlurUp,
ProgBarPartialBlurDown,
ProgBarPartialBlurUp,
ProgBarBlurDown,
ProgBarBlurUp,
StatusHiddenBlurDown,
StatusHiddenBlurUp,
StatusSortingBlurDown,

View File

@@ -248,11 +248,8 @@ impl SetupActivity {
IdTheme::LogWindow => {
theme.transfer_log_window = color;
}
IdTheme::ProgBarFull => {
theme.transfer_progress_bar_full = color;
}
IdTheme::ProgBarPartial => {
theme.transfer_progress_bar_partial = color;
IdTheme::ProgBar => {
theme.transfer_progress_bar = color;
}
IdTheme::StatusHidden => {
theme.transfer_status_hidden = color;
@@ -339,12 +336,9 @@ impl SetupActivity {
let transfer_log_window = self
.get_color(&Id::Theme(IdTheme::LogWindow))
.map_err(|_| Id::Theme(IdTheme::LogWindow))?;
let transfer_progress_bar_full = self
.get_color(&Id::Theme(IdTheme::ProgBarFull))
.map_err(|_| Id::Theme(IdTheme::ProgBarFull))?;
let transfer_progress_bar_partial = self
.get_color(&Id::Theme(IdTheme::ProgBarPartial))
.map_err(|_| Id::Theme(IdTheme::ProgBarPartial))?;
let transfer_progress_bar = self
.get_color(&Id::Theme(IdTheme::ProgBar))
.map_err(|_| Id::Theme(IdTheme::ProgBar))?;
let transfer_status_hidden = self
.get_color(&Id::Theme(IdTheme::StatusHidden))
.map_err(|_| Id::Theme(IdTheme::StatusHidden))?;
@@ -378,8 +372,7 @@ impl SetupActivity {
theme.transfer_remote_explorer_highlighted = transfer_remote_explorer_highlighted;
theme.transfer_log_background = transfer_log_background;
theme.transfer_log_window = transfer_log_window;
theme.transfer_progress_bar_full = transfer_progress_bar_full;
theme.transfer_progress_bar_partial = transfer_progress_bar_partial;
theme.transfer_progress_bar = transfer_progress_bar;
theme.transfer_status_hidden = transfer_status_hidden;
theme.transfer_status_sorting = transfer_status_sorting;
theme.transfer_status_sync_browsing = transfer_status_sync_browsing;

View File

@@ -649,50 +649,25 @@ impl Component<Msg, NoUserEvent> for MiscWarn {
}
#[derive(MockComponent)]
pub struct ProgBarFull {
pub struct ProgBar {
component: InputColor,
}
impl ProgBarFull {
pub fn new(value: Color) -> Self {
impl ProgBar {
pub fn new(color: Color) -> Self {
Self {
component: InputColor::new(
"'Full transfer' Progress bar",
IdTheme::ProgBarFull,
value,
Msg::Theme(ThemeMsg::ProgBarFullBlurDown),
Msg::Theme(ThemeMsg::ProgBarFullBlurUp),
"Progress bar",
IdTheme::ProgBar,
color,
Msg::Theme(ThemeMsg::ProgBarBlurDown),
Msg::Theme(ThemeMsg::ProgBarBlurUp),
),
}
}
}
impl Component<Msg, NoUserEvent> for ProgBarFull {
fn on(&mut self, ev: Event<NoUserEvent>) -> Option<Msg> {
self.component.on(ev)
}
}
#[derive(MockComponent)]
pub struct ProgBarPartial {
component: InputColor,
}
impl ProgBarPartial {
pub fn new(value: Color) -> Self {
Self {
component: InputColor::new(
"'Partial transfer' Progress bar",
IdTheme::ProgBarPartial,
value,
Msg::Theme(ThemeMsg::ProgBarPartialBlurDown),
Msg::Theme(ThemeMsg::ProgBarPartialBlurUp),
),
}
}
}
impl Component<Msg, NoUserEvent> for ProgBarPartial {
impl Component<Msg, NoUserEvent> for ProgBar {
fn on(&mut self, ev: Event<NoUserEvent>) -> Option<Msg> {
self.component.on(ev)
}

View File

@@ -467,7 +467,7 @@ impl SetupActivity {
}
}
ThemeMsg::ExplorerRemoteHgBlurDown => {
if let Err(err) = self.app.active(&Id::Theme(IdTheme::ProgBarFull)) {
if let Err(err) = self.app.active(&Id::Theme(IdTheme::ProgBar)) {
error!("Failed to activate component: {err}");
}
}
@@ -476,23 +476,13 @@ impl SetupActivity {
error!("Failed to activate component: {err}");
}
}
ThemeMsg::ProgBarFullBlurDown => {
if let Err(err) = self.app.active(&Id::Theme(IdTheme::ProgBarPartial)) {
error!("Failed to activate component: {err}");
}
}
ThemeMsg::ProgBarFullBlurUp => {
if let Err(err) = self.app.active(&Id::Theme(IdTheme::ExplorerRemoteHg)) {
error!("Failed to activate component: {err}");
}
}
ThemeMsg::ProgBarPartialBlurDown => {
ThemeMsg::ProgBarBlurDown => {
if let Err(err) = self.app.active(&Id::Theme(IdTheme::LogBg)) {
error!("Failed to activate component: {err}");
}
}
ThemeMsg::ProgBarPartialBlurUp => {
if let Err(err) = self.app.active(&Id::Theme(IdTheme::ProgBarFull)) {
ThemeMsg::ProgBarBlurUp => {
if let Err(err) = self.app.active(&Id::Theme(IdTheme::ExplorerRemoteHg)) {
error!("Failed to activate component: {err}");
}
}
@@ -502,7 +492,7 @@ impl SetupActivity {
}
}
ThemeMsg::LogBgBlurUp => {
if let Err(err) = self.app.active(&Id::Theme(IdTheme::ProgBarPartial)) {
if let Err(err) = self.app.active(&Id::Theme(IdTheme::ProgBar)) {
error!("Failed to activate component: {err}");
}
}

View File

@@ -184,8 +184,7 @@ impl SetupActivity {
.constraints(
[
Constraint::Length(1), // Title
Constraint::Length(3), // Full prog bar
Constraint::Length(3), // Partial prog bar
Constraint::Length(3), // prog bar
Constraint::Length(3), // log bg
Constraint::Length(3), // log window
Constraint::Length(3), // status sorting
@@ -202,39 +201,34 @@ impl SetupActivity {
transfer_colors_layout_col2[0],
);
self.app.view(
&Id::Theme(IdTheme::ProgBarFull),
&Id::Theme(IdTheme::ProgBar),
f,
transfer_colors_layout_col2[1],
);
self.app.view(
&Id::Theme(IdTheme::ProgBarPartial),
&Id::Theme(IdTheme::LogBg),
f,
transfer_colors_layout_col2[2],
);
self.app.view(
&Id::Theme(IdTheme::LogBg),
&Id::Theme(IdTheme::LogWindow),
f,
transfer_colors_layout_col2[3],
);
self.app.view(
&Id::Theme(IdTheme::LogWindow),
&Id::Theme(IdTheme::StatusSorting),
f,
transfer_colors_layout_col2[4],
);
self.app.view(
&Id::Theme(IdTheme::StatusSorting),
&Id::Theme(IdTheme::StatusHidden),
f,
transfer_colors_layout_col2[5],
);
self.app.view(
&Id::Theme(IdTheme::StatusHidden),
f,
transfer_colors_layout_col2[6],
);
self.app.view(
&Id::Theme(IdTheme::StatusSync),
f,
transfer_colors_layout_col2[7],
transfer_colors_layout_col2[6],
);
// Popups
self.view_popups(f);
@@ -430,19 +424,8 @@ impl SetupActivity {
error!("Failed to remount component: {err}");
}
if let Err(err) = self.app.remount(
Id::Theme(IdTheme::ProgBarFull),
Box::new(components::ProgBarFull::new(
theme.transfer_progress_bar_full,
)),
vec![],
) {
error!("Failed to remount component: {err}");
}
if let Err(err) = self.app.remount(
Id::Theme(IdTheme::ProgBarPartial),
Box::new(components::ProgBarPartial::new(
theme.transfer_progress_bar_partial,
)),
Id::Theme(IdTheme::ProgBar),
Box::new(components::ProgBar::new(theme.transfer_progress_bar)),
vec![],
) {
error!("Failed to remount component: {err}");

View File

@@ -17,8 +17,7 @@ transfer_local_explorer_foreground = "#c6d0f5"
transfer_local_explorer_highlighted = "#e5c890"
transfer_log_background = "#303446"
transfer_log_window = "#e5c890"
transfer_progress_bar_full = "##a6d189"
transfer_progress_bar_partial = "##a6d189"
transfer_progress_bar = "##a6d189"
transfer_remote_explorer_background = "#303446"
transfer_remote_explorer_foreground = "#c6d0f5"
transfer_remote_explorer_highlighted = "#99d1db"

View File

@@ -17,8 +17,7 @@ transfer_local_explorer_foreground = "#4c4f69"
transfer_local_explorer_highlighted = "#fe640b"
transfer_log_background = "#eff1f5"
transfer_log_window = "#179299"
transfer_progress_bar_full = "#40a02b"
transfer_progress_bar_partial = "#40a02b"
transfer_progress_bar = "#40a02b"
transfer_remote_explorer_background = "#eff1f5"
transfer_remote_explorer_foreground = "#4c4f69"
transfer_remote_explorer_highlighted = "#1e66f5"

View File

@@ -17,8 +17,7 @@ transfer_local_explorer_foreground = "#cad3f5"
transfer_local_explorer_highlighted = "#f5a97f"
transfer_log_background = "#cad3f5"
transfer_log_window = "#a6da95"
transfer_progress_bar_full = "#a6da95"
transfer_progress_bar_partial = "#a6da95"
transfer_progress_bar = "#a6da95"
transfer_remote_explorer_background = "#24273a"
transfer_remote_explorer_foreground = "#cad3f5"
transfer_remote_explorer_highlighted = "#8aadf4"

View File

@@ -17,8 +17,7 @@ transfer_local_explorer_foreground = "#cdd6f4"
transfer_local_explorer_highlighted = "#fab387"
transfer_log_background = "#1e1e2e"
transfer_log_window = "#a6e3a1"
transfer_progress_bar_full = "#a6e3a1"
transfer_progress_bar_partial = "#a6e3a1"
transfer_progress_bar = "#a6e3a1"
transfer_remote_explorer_background = "#1e1e2e"
transfer_remote_explorer_foreground = "#cdd6f4"
transfer_remote_explorer_highlighted = "#89b4fa"

View File

@@ -17,8 +17,7 @@ transfer_local_explorer_foreground = "Default"
transfer_local_explorer_highlighted = "Yellow"
transfer_log_background = "Default"
transfer_log_window = "LightGreen"
transfer_progress_bar_full = "Green"
transfer_progress_bar_partial = "Green"
transfer_progress_bar = "Green"
transfer_remote_explorer_background = "Default"
transfer_remote_explorer_foreground = "Default"
transfer_remote_explorer_highlighted = "LightBlue"

View File

@@ -17,8 +17,7 @@ transfer_local_explorer_foreground = "Default"
transfer_local_explorer_highlighted = "aquamarine"
transfer_log_background = "Default"
transfer_log_window = "#c43bff"
transfer_progress_bar_full = "deeppink"
transfer_progress_bar_partial = "turquoise"
transfer_progress_bar = "deeppink"
transfer_remote_explorer_background = "Default"
transfer_remote_explorer_foreground = "Default"
transfer_remote_explorer_highlighted = "greenyellow"

View File

@@ -17,8 +17,7 @@ transfer_local_explorer_foreground = "lightcoral"
transfer_local_explorer_highlighted = "coral"
transfer_log_background = "Default"
transfer_log_window = "royalblue"
transfer_progress_bar_full = "hotpink"
transfer_progress_bar_partial = "deeppink"
transfer_progress_bar = "hotpink"
transfer_remote_explorer_background = "Default"
transfer_remote_explorer_foreground = "lightsalmon"
transfer_remote_explorer_highlighted = "salmon"

View File

@@ -17,8 +17,7 @@ transfer_local_explorer_foreground = "Default"
transfer_local_explorer_highlighted = "#bbbbbb"
transfer_log_background = "Default"
transfer_log_window = "black"
transfer_progress_bar_full = "black"
transfer_progress_bar_partial = "black"
transfer_progress_bar = "black"
transfer_remote_explorer_background = "Default"
transfer_remote_explorer_foreground = "Default"
transfer_remote_explorer_highlighted = "#bbbbbb"

View File

@@ -17,8 +17,7 @@ transfer_local_explorer_foreground = "Default"
transfer_local_explorer_highlighted = "white"
transfer_log_background = "Default"
transfer_log_window = "white"
transfer_progress_bar_full = "white"
transfer_progress_bar_partial = "white"
transfer_progress_bar = "white"
transfer_remote_explorer_background = "Default"
transfer_remote_explorer_foreground = "Default"
transfer_remote_explorer_highlighted = "white"

View File

@@ -17,8 +17,7 @@ transfer_local_explorer_foreground = "pink"
transfer_local_explorer_highlighted = "hotpink"
transfer_log_background = "Default"
transfer_log_window = "palevioletred"
transfer_progress_bar_full = "hotpink"
transfer_progress_bar_partial = "deeppink"
transfer_progress_bar = "hotpink"
transfer_remote_explorer_background = "Default"
transfer_remote_explorer_foreground = "plum"
transfer_remote_explorer_highlighted = "violet"

View File

@@ -17,8 +17,7 @@ transfer_local_explorer_foreground = "Default"
transfer_local_explorer_highlighted = "Yellow"
transfer_log_background = "Default"
transfer_log_window = "lawngreen"
transfer_progress_bar_full = "lawngreen"
transfer_progress_bar_partial = "lawngreen"
transfer_progress_bar = "lawngreen"
transfer_remote_explorer_background = "Default"
transfer_remote_explorer_foreground = "Default"
transfer_remote_explorer_highlighted = "turquoise"

View File

@@ -17,8 +17,7 @@ transfer_local_explorer_foreground = "Default"
transfer_local_explorer_highlighted = "orange"
transfer_log_background = "Default"
transfer_log_window = "limegreen"
transfer_progress_bar_full = "lawngreen"
transfer_progress_bar_partial = "limegreen"
transfer_progress_bar = "lawngreen"
transfer_remote_explorer_background = "Default"
transfer_remote_explorer_foreground = "Default"
transfer_remote_explorer_highlighted = "turquoise"