diff options
author | qkzk <qu3nt1n@gmail.com> | 2022-11-26 15:33:52 +0100 |
---|---|---|
committer | qkzk <qu3nt1n@gmail.com> | 2022-11-26 15:33:52 +0100 |
commit | 55e31d64313895dca60a2b56625ef42aa7230db7 (patch) | |
tree | a79c9de5921b310ec0190f3995b952ec8d091c53 /src/utils.rs | |
parent | 23be112c4a0ca6f7e4afc08919ec722f4ff40b0e (diff) |
cd on quitcd_on_quit
Diffstat (limited to 'src/utils.rs')
-rw-r--r-- | src/utils.rs | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/utils.rs b/src/utils.rs new file mode 100644 index 0000000..3ce6685 --- /dev/null +++ b/src/utils.rs @@ -0,0 +1,48 @@ +use std::sync::Arc; + +use sysinfo::{Disk, DiskExt}; +use tuikit::term::Term; + +use crate::actioner::Actioner; +use crate::fileinfo::human_size; +use crate::fm_error::FmResult; +use crate::status::Status; +use crate::term_manager::{Display, EventReader}; + +/// Returns a `Display` instance after `tuikit::term::Term` creation. +pub fn init_term() -> FmResult<Term> { + let term: Term<()> = Term::new()?; + term.enable_mouse_support()?; + Ok(term) +} + +pub fn disk_space(disks: &[Disk], path_str: String) -> String { + if path_str.is_empty() { + return "".to_owned(); + } + let mut size = 0_u64; + let mut disks: Vec<&Disk> = disks.iter().collect(); + disks.sort_by_key(|disk| disk.mount_point().as_os_str().len()); + for disk in disks { + if path_str.contains(disk.mount_point().as_os_str().to_str().unwrap()) { + size = disk.available_space(); + }; + } + human_size(size) +} + +pub fn print_on_quit( + term: Arc<Term>, + actioner: Actioner, + event_reader: EventReader, + status: Status, + display: Display, +) { + let path = status.selected_non_mut().path_str().unwrap_or_default(); + std::mem::drop(term); + std::mem::drop(actioner); + std::mem::drop(event_reader); + std::mem::drop(status); + std::mem::drop(display); + println!("{}", path) +} |