diff options
author | rabite <rabite@posteo.de> | 2019-01-25 11:14:41 +0100 |
---|---|---|
committer | rabite <rabite@posteo.de> | 2019-01-25 11:16:55 +0100 |
commit | f3f783a3a0bc3c96e4678c7fa986dc31bcb8d585 (patch) | |
tree | 2daa9a81e3165bf0fbbd72ddcddbc7f25401ec40 /src/listview.rs | |
parent | a1900941ce9a6277f9f0cecd685f8f1c1c6bb705 (diff) |
colored file names
Diffstat (limited to 'src/listview.rs')
-rw-r--r-- | src/listview.rs | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/src/listview.rs b/src/listview.rs index 1ec0dfb..93424d7 100644 --- a/src/listview.rs +++ b/src/listview.rs @@ -61,17 +61,22 @@ impl<T: 'static> ListView<T> where ListView<T>: Widget { self.selection += 1; } - fn render_line(&self, name: &str, size: usize, unit: &str) -> String { + fn render_line(&self, file: &File) -> String { + let name = &file.name; + let (size, unit) = file.calculate_size(); + let (xsize, _) = self.get_dimensions(); - let sized_string = term::sized_string(name, xsize); + let sized_string = term::sized_string(&name, xsize); let padding = xsize - sized_string.width() as u16; - - + let styled_string = match &file.style { + Some(style) => style.to_ansi_term_style().paint(sized_string).to_string(), + _ => format!("{}{}", term::normal_color(), sized_string), + }; + format!( - "{}{}{:padding$}{}{}{}{}", - term::normal_color(), - sized_string, + "{}{:padding$}{}{}{}{}", + styled_string, " ", term::highlight_color(), term::cursor_left(size.to_string().width() + unit.width()), @@ -150,8 +155,7 @@ impl Widget for ListView<Files> { fn render(&self) -> Vec<String> { self.content.iter().map(|file| { - let (size, unit) = file.calculate_size(); - self.render_line(&file.name, size, &unit) + self.render_line(&file) }).collect() } |