summaryrefslogtreecommitdiffstats
path: root/src/term_manager.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/term_manager.rs')
-rw-r--r--src/term_manager.rs43
1 files changed, 38 insertions, 5 deletions
diff --git a/src/term_manager.rs b/src/term_manager.rs
index 19bb611..27ac569 100644
--- a/src/term_manager.rs
+++ b/src/term_manager.rs
@@ -9,6 +9,7 @@ use tuikit::event::Event;
use tuikit::prelude::*;
use tuikit::term::Term;
+use crate::compress::CompressionMethod;
use crate::config::Colors;
use crate::constant_strings_paths::{
FILTER_PRESENTATION, HELP_FIRST_SENTENCE, HELP_SECOND_SENTENCE,
@@ -376,14 +377,15 @@ impl<'a> Draw for WinSecondary<'a> {
Mode::Navigate(Navigate::History) => self.destination(canvas, &self.tab.history),
Mode::Navigate(Navigate::Shortcut) => self.destination(canvas, &self.tab.shortcut),
Mode::Navigate(Navigate::Trash) => self.trash(canvas, &self.status.trash),
+ Mode::Navigate(Navigate::Compress) => self.compress(canvas, &self.status.compression),
Mode::Navigate(Navigate::EncryptedDrive) => {
self.encrypted_devices(self.status, self.tab, canvas)
}
+ Mode::Navigate(Navigate::Marks(_)) => self.marks(self.status, self.tab, canvas),
Mode::NeedConfirmation(confirmed_mode) => {
self.confirmation(self.status, self.tab, confirmed_mode, canvas)
}
Mode::InputCompleted(_) => self.completion(self.tab, canvas),
- Mode::InputSimple(InputSimple::Marks(_)) => self.marks(self.status, self.tab, canvas),
_ => Ok(()),
}?;
self.cursor(self.tab, canvas)?;
@@ -414,10 +416,10 @@ impl<'a> WinSecondary<'a> {
Mode::NeedConfirmation(confirmed_action) => {
vec![format!("{confirmed_action} (y/n)")]
}
- Mode::InputSimple(InputSimple::Marks(MarkAction::Jump)) => {
+ Mode::Navigate(Navigate::Marks(MarkAction::Jump)) => {
vec!["Jump to...".to_owned()]
}
- Mode::InputSimple(InputSimple::Marks(MarkAction::New)) => {
+ Mode::Navigate(Navigate::Marks(MarkAction::New)) => {
vec!["Save mark...".to_owned()]
}
Mode::InputSimple(InputSimple::Password(password_kind, _encrypted_action)) => {
@@ -451,7 +453,7 @@ impl<'a> WinSecondary<'a> {
match tab.mode {
Mode::Normal
| Mode::Tree
- | Mode::InputSimple(InputSimple::Marks(_))
+ | Mode::Navigate(Navigate::Marks(_))
| Mode::Navigate(_)
| Mode::Preview => {
canvas.show_cursor(false)?;
@@ -521,12 +523,43 @@ impl<'a> WinSecondary<'a> {
Ok(())
}
+ fn compress(
+ &self,
+ canvas: &mut dyn Canvas,
+ selectable: &impl SelectableContent<CompressionMethod>,
+ ) -> FmResult<()> {
+ canvas.print_with_attr(
+ 1,
+ 0,
+ "Archive and compress the flagged files. Pick a compression algorithm.",
+ Self::ATTR_YELLOW,
+ )?;
+ for (row, compression_method) in selectable.content().iter().enumerate() {
+ let mut attr = Attr::default();
+ if row == selectable.index() {
+ attr.effect |= Effect::REVERSE;
+ }
+
+ let _ = canvas.print_with_attr(
+ row + ContentWindow::WINDOW_MARGIN_TOP,
+ 4,
+ &format!("{compression_method}"),
+ attr,
+ );
+ }
+ Ok(())
+ }
+
fn marks(&self, status: &Status, tab: &Tab, canvas: &mut dyn Canvas) -> FmResult<()> {
canvas.print_with_attr(2, 1, "mark path", Self::ATTR_YELLOW)?;
for (i, line) in status.marks.as_strings().iter().enumerate() {
let row = calc_line_row(i, tab) + 2;
- canvas.print(row, 3, line)?;
+ let mut attr = Attr::default();
+ if i == status.marks.index() {
+ attr.effect |= Effect::REVERSE;
+ }
+ canvas.print_with_attr(row, 3, line, attr)?;
}
Ok(())
}