summaryrefslogtreecommitdiffstats
path: root/src/listview.rs
diff options
context:
space:
mode:
authorrabite <rabite@posteo.de>2019-03-11 12:08:43 +0100
committerrabite <rabite@posteo.de>2019-03-11 12:08:43 +0100
commite63c65ab7d944fb3a80f6c40bd0d98ec50b054c6 (patch)
tree06ed1d6a0f8cb1a7b13a5b36591680b922abbf32 /src/listview.rs
parent5b9a150a10411dcc47bd6340aa33fa8423aaa2be (diff)
tagging files
Diffstat (limited to 'src/listview.rs')
-rw-r--r--src/listview.rs19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/listview.rs b/src/listview.rs
index 64ec5ac..b0db7ae 100644
--- a/src/listview.rs
+++ b/src/listview.rs
@@ -46,6 +46,7 @@ impl Listable for ListView<Files> {
Key::Left => self.goto_grand_parent()?,
Key::Right => self.goto_selected()?,
Key::Char(' ') => self.multi_select_file(),
+ Key::Char('t') => self.toggle_tag()?,
Key::Char('h') => self.toggle_hidden(),
Key::Char('r') => self.reverse_sort(),
Key::Char('s') => self.cycle_sort(),
@@ -136,6 +137,11 @@ where
fn render_line(&self, file: &File) -> String {
let name = &file.name;
let (size, unit) = file.calculate_size().unwrap_or((0, "".to_string()));
+ let tag = match file.is_tagged() {
+ Ok(true) => term::color_red() + "*",
+ _ => "".to_string()
+ };
+ let tag_len = if tag != "" { 1 } else { 0 };
let selection_gap = " ".to_string();
let (name, selection_color) = if file.is_selected() {
@@ -149,18 +155,21 @@ where
+ unit.to_string().len() as u16);
let padding = sized_string.len() - sized_string.width_cjk();
let padding = xsize - padding as u16;
+ let padding = padding - tag_len;
format!(
"{}{}{}{}{}{}{}",
termion::cursor::Save,
match &file.color {
- Some(color) => format!("{}{}{:padding$}{}",
+ Some(color) => format!("{}{}{}{:padding$}{}",
+ tag,
term::from_lscolor(color),
selection_color,
&sized_string,
term::normal_color(),
padding = padding as usize),
- _ => format!("{}{}{:padding$}{}",
+ _ => format!("{}{}{}{:padding$}{}",
+ tag,
term::normal_color(),
selection_color,
&sized_string,
@@ -335,6 +344,12 @@ impl ListView<Files>
self.refresh().log();
}
+ fn toggle_tag(&mut self) -> HResult<()> {
+ self.selected_file_mut().toggle_tag()?;
+ self.move_down();
+ Ok(())
+ }
+
fn find_file(&mut self) -> HResult<()> {
let name = self.minibuffer("find")?;
let file = self.content.files.iter().find(|file| {