mirror of
https://github.com/veeso/termscp.git
synced 2026-09-27 06:21:22 -07:00
feat: consolidate theme progress bar fields into single transfer_progress_bar
This commit is contained in:
@@ -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('~'));
|
||||
}
|
||||
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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}");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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}");
|
||||
|
||||
Reference in New Issue
Block a user