2025-01-14 04:53:08 +02:00
|
|
|
//! Some shared helpers collection
|
|
|
|
|
2025-01-16 12:59:53 +02:00
|
|
|
// Global dependencies
|
|
|
|
use gtk::glib::{DateTime, GString, Uri};
|
|
|
|
|
2025-01-14 04:53:08 +02:00
|
|
|
/// Format bytes to KB/MB/GB presentation
|
|
|
|
pub fn format_bytes(value: usize) -> String {
|
|
|
|
const KB: f32 = 1024.0;
|
|
|
|
const MB: f32 = KB * KB;
|
|
|
|
const GB: f32 = MB * KB;
|
|
|
|
|
|
|
|
let f = value as f32;
|
|
|
|
|
|
|
|
if f < KB {
|
|
|
|
format!(
|
|
|
|
"{value} {}",
|
|
|
|
plurify::ns(value, &["byte", "bytes", "bytes"])
|
|
|
|
)
|
|
|
|
} else if f < MB {
|
|
|
|
format!("{:.2} KB", f / KB)
|
|
|
|
} else if f < GB {
|
|
|
|
format!("{:.2} MB", f / MB)
|
|
|
|
} else {
|
|
|
|
format!("{:.2} GB", f / GB)
|
|
|
|
}
|
|
|
|
}
|
2025-01-16 12:59:53 +02:00
|
|
|
|
|
|
|
/// Format given [DateTime](https://docs.gtk.org/glib/struct.DateTime.html)
|
|
|
|
pub fn format_time(t: &DateTime) -> GString {
|
|
|
|
t.format_iso8601().unwrap() // @TODO handle?
|
|
|
|
}
|
|
|
|
|
|
|
|
/// Get current [DateTime](https://docs.gtk.org/glib/struct.DateTime.html)
|
|
|
|
pub fn now() -> DateTime {
|
|
|
|
DateTime::now_local().unwrap() // @TODO handle?
|
|
|
|
}
|
|
|
|
|
|
|
|
/// Compare `subject` with `base`
|
|
|
|
pub fn _is_external(subject: &Uri, base: &Uri) -> bool {
|
|
|
|
if subject.scheme() != base.scheme() {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
if subject.port() != base.port() {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
subject.host() != base.host()
|
|
|
|
} // @TODO not in use
|