summaryrefslogtreecommitdiffstats
path: root/src/utils.rs
diff options
context:
space:
mode:
authorqkzk <qu3nt1n@gmail.com>2022-11-26 15:33:52 +0100
committerqkzk <qu3nt1n@gmail.com>2022-11-26 15:33:52 +0100
commit55e31d64313895dca60a2b56625ef42aa7230db7 (patch)
treea79c9de5921b310ec0190f3995b952ec8d091c53 /src/utils.rs
parent23be112c4a0ca6f7e4afc08919ec722f4ff40b0e (diff)
cd on quitcd_on_quit
Diffstat (limited to 'src/utils.rs')
-rw-r--r--src/utils.rs48
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)
+}