summaryrefslogtreecommitdiffstats
path: root/src/fs
diff options
context:
space:
mode:
authorJiayi Zhao <jeff.no.zhao@gmail.com>2020-12-15 11:20:35 -0500
committerJiayi Zhao <jeff.no.zhao@gmail.com>2020-12-15 11:20:35 -0500
commitf5902708a6e597064482edfc076248a67882b7c5 (patch)
tree40e97ad84d157bbc670edb97c328ff988f8c8aa6 /src/fs
parent2b29f8485e95fd3cda434ed472992fff2ee8e7a0 (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.rs2
-rw-r--r--src/fs/entry.rs13
-rw-r--r--src/fs/metadata.rs46
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> {