diff options
author | Jiayi Zhao <jeff.no.zhao@gmail.com> | 2020-12-15 11:20:35 -0500 |
---|---|---|
committer | Jiayi Zhao <jeff.no.zhao@gmail.com> | 2020-12-15 11:20:35 -0500 |
commit | f5902708a6e597064482edfc076248a67882b7c5 (patch) | |
tree | 40e97ad84d157bbc670edb97c328ff988f8c8aa6 /src/fs | |
parent | 2b29f8485e95fd3cda434ed472992fff2ee8e7a0 (diff) |
folder view now always prefix file names with a space
- remove horizontal margins in folder view
- move copy/cut methods into separate functions
- change some fields to private
Diffstat (limited to 'src/fs')
-rw-r--r-- | src/fs/dirlist.rs | 2 | ||||
-rw-r--r-- | src/fs/entry.rs | 13 | ||||
-rw-r--r-- | src/fs/metadata.rs | 46 |
3 files changed, 40 insertions, 21 deletions
diff --git a/src/fs/dirlist.rs b/src/fs/dirlist.rs index 0733f0f..797a83e 100644 --- a/src/fs/dirlist.rs +++ b/src/fs/dirlist.rs @@ -40,7 +40,7 @@ impl JoshutoDirList { let metadata = std::fs::symlink_metadata(self.file_path()); match metadata { Ok(m) => match m.modified() { - Ok(s) => s > self.metadata.modified, + Ok(s) => s > self.metadata.modified(), _ => false, }, _ => false, diff --git a/src/fs/entry.rs b/src/fs/entry.rs index e6e1ae6..5362c76 100644 --- a/src/fs/entry.rs +++ b/src/fs/entry.rs @@ -28,15 +28,14 @@ impl JoshutoDirEntry { .to_string_lossy() .to_string(); - let label = name.clone(); let label = if show_icons { - let icon = match metadata.file_type { + let icon = match metadata.file_type() { FileType::Directory => DIR_NODE_EXACT_MATCHES - .get(label.as_str()) + .get(name.as_str()) .cloned() .unwrap_or(DEFAULT_DIR), _ => FILE_NODE_EXACT_MATCHES - .get(label.as_str()) + .get(name.as_str()) .cloned() .unwrap_or(match path.extension() { Some(s) => FILE_NODE_EXTENSIONS @@ -53,9 +52,9 @@ impl JoshutoDirEntry { None => DEFAULT_FILE, }), }; - format!(" {} {}", icon, label) + format!("{} {}", icon, name) } else { - label + name.clone() }; Ok(Self { @@ -100,7 +99,7 @@ impl JoshutoDirEntry { pub fn get_style(&self) -> Style { let metadata = &self.metadata; - let filetype = &metadata.file_type; + let filetype = &metadata.file_type(); match filetype { _ if self.is_selected() => Style::default() diff --git a/src/fs/metadata.rs b/src/fs/metadata.rs index e71f793..aa6dcad 100644 --- a/src/fs/metadata.rs +++ b/src/fs/metadata.rs @@ -1,4 +1,4 @@ -use std::{fs, path, process, time}; +use std::{fs, io, path, process, time}; #[derive(Clone, Debug)] pub enum FileType { @@ -9,10 +9,10 @@ pub enum FileType { #[derive(Clone, Debug)] pub struct JoshutoMetadata { - pub len: u64, - pub modified: time::SystemTime, - pub permissions: fs::Permissions, - pub file_type: FileType, + _len: u64, + _modified: time::SystemTime, + _permissions: fs::Permissions, + _file_type: FileType, pub mimetype: Option<String>, #[cfg(unix)] pub uid: u32, @@ -23,15 +23,15 @@ pub struct JoshutoMetadata { } impl JoshutoMetadata { - pub fn from(path: &path::Path) -> std::io::Result<Self> { + pub fn from(path: &path::Path) -> io::Result<Self> { #[cfg(unix)] use std::os::unix::fs::MetadataExt; let metadata = fs::symlink_metadata(path)?; - let len = metadata.len(); - let modified = metadata.modified()?; - let permissions = metadata.permissions(); + let _len = metadata.len(); + let _modified = metadata.modified()?; + let _permissions = metadata.permissions(); let file_type = metadata.file_type(); let file_type = if file_type.is_dir() { @@ -65,10 +65,10 @@ impl JoshutoMetadata { let mode = metadata.mode(); Ok(Self { - len, - modified, - permissions, - file_type, + _len, + _modified, + _permissions, + _file_type: file_type, mimetype, #[cfg(unix)] uid, @@ -78,6 +78,26 @@ impl JoshutoMetadata { mode, }) } + + pub fn len(&self) -> u64 { + self._len + } + + pub fn modified(&self) -> time::SystemTime { + self._modified + } + + pub fn permissions_ref(&self) -> &fs::Permissions { + &self._permissions + } + + pub fn permissions_mut(&mut self) -> &mut fs::Permissions { + &mut self._permissions + } + + pub fn file_type(&self) -> &FileType { + &self._file_type + } } fn file_mimetype(path: &path::Path) -> Option<String> { |