summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRupert Rutledge <eosis2 [at] gmail.com>2020-05-09 15:48:11 +0100
committerRupert Rutledge <eosis2 [at] gmail.com>2020-05-09 15:48:11 +0100
commita177280040ff6b93ed7660054f456f614d825a07 (patch)
tree004d3668f354506de6a2b93f3d50cd8ee641a19e
parent598239a3bcfee96545bc5364a4141f9131fada2a (diff)
Split the header row into 3 columns
We now have the bandwidth data, paused status and duration in separate columns.
-rw-r--r--src/display/components/layout.rs1
-rw-r--r--src/display/components/total_bandwidth.rs45
2 files changed, 36 insertions, 10 deletions
diff --git a/src/display/components/layout.rs b/src/display/components/layout.rs
index 6c9812d..d3edb81 100644
--- a/src/display/components/layout.rs
+++ b/src/display/components/layout.rs
@@ -99,6 +99,7 @@ impl<'a> Layout<'a> {
self.build_three_children_layout(rect)
}
}
+
pub fn render(&self, frame: &mut Frame<impl Backend>, rect: Rect) {
let (top, app, bottom) = top_app_and_bottom_split(rect);
let layout_slots = self.build_layout(app);
diff --git a/src/display/components/total_bandwidth.rs b/src/display/components/total_bandwidth.rs
index dbc2e78..3da80cd 100644
--- a/src/display/components/total_bandwidth.rs
+++ b/src/display/components/total_bandwidth.rs
@@ -5,6 +5,7 @@ use ::tui::terminal::Frame;
use ::tui::widgets::{Paragraph, Text, Widget};
use crate::display::{DisplayBandwidth, UIState};
+use tui::layout::{Constraint, Direction};
pub struct HeaderDetails<'a> {
pub state: &'a UIState,
@@ -14,23 +15,38 @@ pub struct HeaderDetails<'a> {
impl<'a> HeaderDetails<'a> {
pub fn render(&self, frame: &mut Frame<impl Backend>, rect: Rect) {
+ let parts = ::tui::layout::Layout::default()
+ .direction(Direction::Horizontal)
+ .margin(0)
+ .constraints(
+ [
+ Constraint::Percentage(33),
+ Constraint::Percentage(33),
+ Constraint::Percentage(33),
+ ]
+ .as_ref(),
+ )
+ .split(rect);
+
let color = if self.paused {
Color::Yellow
} else {
Color::Green
};
- if self.state.cumulative_mode { self.render_elapsed_time(frame, rect, &color) };
- self.render_bandwidth(frame, rect, &color);
+
+ if self.state.cumulative_mode {
+ self.render_elapsed_time(frame, parts[2], &color)
+ };
+ self.render_paused(frame, parts[1], &color);
+ self.render_bandwidth(frame, parts[0], &color);
}
fn render_bandwidth(&self, frame: &mut Frame<impl Backend>, rect: Rect, color: &Color) {
let c_mode = self.state.cumulative_mode;
let title_text = {
- let paused_str = if self.paused { "[PAUSED]" } else { "" };
-
[Text::styled(
format!(
- " Total Up / Down: {} / {} {}",
+ " Total Up / Down: {} / {}",
DisplayBandwidth {
bandwidth: self.state.total_bytes_uploaded as f64,
as_rate: !c_mode,
@@ -38,8 +54,7 @@ impl<'a> HeaderDetails<'a> {
DisplayBandwidth {
bandwidth: self.state.total_bytes_downloaded as f64,
as_rate: !c_mode,
- },
- paused_str
+ }
),
Style::default().fg(*color).modifier(Modifier::BOLD),
)]
@@ -58,12 +73,22 @@ impl<'a> HeaderDetails<'a> {
(self.elapsed_time.as_secs() % 3600) / 60,
self.elapsed_time.as_secs() % 60
),
- Style::default()
- .fg(*color)
- .modifier(Modifier::BOLD),
+ Style::default().fg(*color).modifier(Modifier::BOLD),
)];
Paragraph::new(elapsed_time_text.iter())
.alignment(Alignment::Right)
.render(frame, rect);
}
+
+ fn render_paused(&self, frame: &mut Frame<impl Backend>, rect: Rect, color: &Color) {
+ if self.paused {
+ let paused_text = [Text::styled(
+ format!("PAUSED"),
+ Style::default().fg(*color).modifier(Modifier::BOLD),
+ )];
+ Paragraph::new(paused_text.iter())
+ .alignment(Alignment::Center)
+ .render(frame, rect);
+ }
+ }
}