mirror of
https://github.com/YGGverse/Yoda.git
synced 2026-03-31 16:45:27 +00:00
add time columns
This commit is contained in:
parent
2933e5b0d6
commit
b44c5c34da
2 changed files with 72 additions and 4 deletions
|
|
@ -16,7 +16,7 @@ impl Directory {
|
|||
|
||||
// Init model
|
||||
const ATTRIBUTES: &str =
|
||||
"standard::type,standard::display-name,standard::symbolic-icon,standard::size,standard::content-type,standard::modification-date-time";
|
||||
"standard::type,standard::display-name,standard::symbolic-icon,standard::size,standard::content-type,time::modified,time::created,time::access";
|
||||
|
||||
let directory_list = gtk::DirectoryList::builder()
|
||||
.file(file)
|
||||
|
|
@ -40,13 +40,17 @@ impl Directory {
|
|||
let name = Column::name(360);
|
||||
let size = Column::size(120);
|
||||
let content_type = Column::content_type(180);
|
||||
//let modification_date_time = Column::modification_date_time();
|
||||
let creation_date_time = Column::creation_date_time(220);
|
||||
let modification_date_time = Column::modification_date_time(220);
|
||||
let access_date_time = Column::access_date_time(220);
|
||||
|
||||
column_view.append_column(&icon);
|
||||
column_view.append_column(&name);
|
||||
column_view.append_column(&size);
|
||||
column_view.append_column(&content_type);
|
||||
//column_view.append_column(&modification_date_time);
|
||||
column_view.append_column(&size);
|
||||
column_view.append_column(&creation_date_time);
|
||||
column_view.append_column(&modification_date_time);
|
||||
column_view.append_column(&access_date_time);
|
||||
|
||||
column_view.sort_by_column(Some(&name), gtk::SortType::Ascending);
|
||||
column_view
|
||||
|
|
|
|||
|
|
@ -5,7 +5,9 @@ pub trait Column {
|
|||
fn name(width: i32) -> Self;
|
||||
fn size(width: i32) -> Self;
|
||||
fn content_type(width: i32) -> Self;
|
||||
fn creation_date_time(width: i32) -> Self;
|
||||
fn modification_date_time(width: i32) -> Self;
|
||||
fn access_date_time(width: i32) -> Self;
|
||||
}
|
||||
|
||||
impl Column for gtk::ColumnViewColumn {
|
||||
|
|
@ -163,6 +165,37 @@ impl Column for gtk::ColumnViewColumn {
|
|||
.build()
|
||||
}
|
||||
|
||||
fn creation_date_time(width: i32) -> Self {
|
||||
gtk::ColumnViewColumn::builder()
|
||||
.fixed_width(width)
|
||||
.resizable(true)
|
||||
.title("Created")
|
||||
.factory(&{
|
||||
let factory = gtk::SignalListItemFactory::new();
|
||||
factory.connect_bind(|_, this| {
|
||||
use gtk::prelude::{Cast, ListItemExt};
|
||||
let list_item = this.downcast_ref::<gtk::ListItem>().unwrap();
|
||||
let item = list_item.item().unwrap();
|
||||
let file_info = item.downcast_ref::<gtk::gio::FileInfo>().unwrap();
|
||||
list_item.set_child(Some(
|
||||
>k::Label::builder()
|
||||
.halign(gtk::Align::Start)
|
||||
.ellipsize(gtk::pango::EllipsizeMode::Middle)
|
||||
.label(
|
||||
file_info
|
||||
.creation_date_time()
|
||||
.unwrap()
|
||||
.format_iso8601()
|
||||
.unwrap_or(DEFAULT.into()),
|
||||
)
|
||||
.build(),
|
||||
));
|
||||
});
|
||||
factory
|
||||
})
|
||||
.build()
|
||||
}
|
||||
|
||||
fn modification_date_time(width: i32) -> Self {
|
||||
gtk::ColumnViewColumn::builder()
|
||||
.fixed_width(width)
|
||||
|
|
@ -193,4 +226,35 @@ impl Column for gtk::ColumnViewColumn {
|
|||
})
|
||||
.build()
|
||||
}
|
||||
|
||||
fn access_date_time(width: i32) -> Self {
|
||||
gtk::ColumnViewColumn::builder()
|
||||
.fixed_width(width)
|
||||
.resizable(true)
|
||||
.title("Accessed")
|
||||
.factory(&{
|
||||
let factory = gtk::SignalListItemFactory::new();
|
||||
factory.connect_bind(|_, this| {
|
||||
use gtk::prelude::{Cast, ListItemExt};
|
||||
let list_item = this.downcast_ref::<gtk::ListItem>().unwrap();
|
||||
let item = list_item.item().unwrap();
|
||||
let file_info = item.downcast_ref::<gtk::gio::FileInfo>().unwrap();
|
||||
list_item.set_child(Some(
|
||||
>k::Label::builder()
|
||||
.halign(gtk::Align::Start)
|
||||
.ellipsize(gtk::pango::EllipsizeMode::Middle)
|
||||
.label(
|
||||
file_info
|
||||
.access_date_time()
|
||||
.unwrap()
|
||||
.format_iso8601()
|
||||
.unwrap_or(DEFAULT.into()),
|
||||
)
|
||||
.build(),
|
||||
));
|
||||
});
|
||||
factory
|
||||
})
|
||||
.build()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue