Use shared-mime-info for mime detection

This commit is contained in:
Jeremy Soller 2024-03-04 11:16:25 -07:00
parent ac4626d9cf
commit 672821a5fc
No known key found for this signature in database
GPG key ID: D02FD439211AF56F
4 changed files with 169 additions and 805 deletions

View file

@ -20,7 +20,7 @@ use cosmic::{
},
theme, widget, Element,
};
use mime_guess::{mime, Mime, MimeGuess};
use mime_guess::{mime, Mime};
use once_cell::sync::Lazy;
use std::{
cell::Cell,
@ -39,7 +39,7 @@ use crate::{
key_bind::KeyBind,
menu,
mime_app::{mime_apps, MimeApp},
mime_icon::mime_icon,
mime_icon::{mime_for_path, mime_icon},
mouse_area,
};
@ -232,12 +232,12 @@ pub fn scan_path(tab_path: &PathBuf, sizes: IconSizes) -> Vec<Item> {
folder_icon(&path, sizes.list_condensed()),
)
} else {
let mime = mime_for_path(&path);
(
//TODO: best fallback mime for files?
MimeGuess::from_path(&path).first_or_octet_stream(),
mime_icon(&path, sizes.grid()),
mime_icon(&path, sizes.list()),
mime_icon(&path, sizes.list_condensed()),
mime.clone(),
mime_icon(mime.clone(), sizes.grid()),
mime_icon(mime.clone(), sizes.list()),
mime_icon(mime, sizes.list_condensed()),
)
};
@ -349,13 +349,15 @@ pub fn scan_trash(sizes: IconSizes) -> Vec<Item> {
folder_icon(&path, sizes.list()),
folder_icon(&path, sizes.list_condensed()),
),
trash::TrashItemSize::Bytes(_) => (
//TODO: best fallback mime for files?
MimeGuess::from_path(&path).first_or_octet_stream(),
mime_icon(&path, sizes.grid()),
mime_icon(&path, sizes.list()),
mime_icon(&path, sizes.list_condensed()),
),
trash::TrashItemSize::Bytes(_) => {
let mime = mime_for_path(&path);
(
mime.clone(),
mime_icon(mime.clone(), sizes.grid()),
mime_icon(mime.clone(), sizes.list()),
mime_icon(mime, sizes.list_condensed()),
)
}
};
items.push(Item {