From 55e31d64313895dca60a2b56625ef42aa7230db7 Mon Sep 17 00:00:00 2001 From: qkzk Date: Sat, 26 Nov 2022 15:33:52 +0100 Subject: cd on quit --- src/utils.rs | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 src/utils.rs (limited to 'src/utils.rs') 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 { + 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, + 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) +} -- cgit v1.2.3