diff --git a/src/app/browser/window/tab/item/page/content/directory.rs b/src/app/browser/window/tab/item/page/content/directory.rs index dd94e1c3..2fee9a70 100644 --- a/src/app/browser/window/tab/item/page/content/directory.rs +++ b/src/app/browser/window/tab/item/page/content/directory.rs @@ -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 diff --git a/src/app/browser/window/tab/item/page/content/directory/column.rs b/src/app/browser/window/tab/item/page/content/directory/column.rs index 676e0d4c..f5b78c41 100644 --- a/src/app/browser/window/tab/item/page/content/directory/column.rs +++ b/src/app/browser/window/tab/item/page/content/directory/column.rs @@ -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::().unwrap(); + let item = list_item.item().unwrap(); + let file_info = item.downcast_ref::().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::().unwrap(); + let item = list_item.item().unwrap(); + let file_info = item.downcast_ref::().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() + } }