Files · Items: one icon map, file icon, file row and file grid
The crate had two maps from a file's name to its icon, in chat and in the file tree, and they disagreed. One map now lives in primitives, over the Lucide file-* icons, and chat, agent, the file tree and the directory listing use it. FileIcon draws it for a file or a folder. FileItem is a file's row, a ListItem with its size and when it changed. FileList is the directory listing. FileGrid lays tiles in the order given, with a cursor seeded from the owner's pick: arrows by tile and by row, Home, End, Enter and a double press to open. The count of what fits a width has one home, layout's columns_for, and fit builds on it.
This commit is contained in:
1 parent
e75171c995
commit
a846e10847
36 files changed
+1024
-77
No files matched your search
+11
-2
@@ -9,7 +9,7 @@ use jiff::Timestamp;
|
||||
use super::{ListItem, SelectableList};
|
||||
use crate::{
|
||||
navigation::{Breadcrumb, Crumb},
|
||||
primitives::{Icon, IconName},
|
||||
primitives::{Icon, IconName, file_icon},
|
||||
theme::{ActiveTheme, IconSize, TextSize},
|
||||
typography::{format, tabular},
|
||||
};
|
||||
@@ -46,6 +46,15 @@ impl DirEntry {
|
||||
pub fn is_folder(&self) -> bool {
|
||||
self.size.is_none()
|
||||
}
|
||||
|
||||
/// A file's size in bytes; none for a folder.
|
||||
pub fn size(&self) -> Option<u64> {
|
||||
self.size
|
||||
}
|
||||
|
||||
pub fn modified(&self) -> Timestamp {
|
||||
self.modified
|
||||
}
|
||||
}
|
||||
|
||||
/// A column a listing sorts by.
|
||||
@@ -223,7 +232,7 @@ impl RenderOnce for DirectoryListing {
|
||||
Icon::new(if entry.is_folder() {
|
||||
IconName::Folder
|
||||
} else {
|
||||
IconName::File
|
||||
file_icon(&entry.name)
|
||||
})
|
||||
.size(IconSize::Md)
|
||||
.color(colors.fg_muted),
|
||||
|
||||
Reference in new issue
Block a user