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
|
// Init model
|
||||||
const ATTRIBUTES: &str =
|
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()
|
let directory_list = gtk::DirectoryList::builder()
|
||||||
.file(file)
|
.file(file)
|
||||||
|
|
@ -40,13 +40,17 @@ impl Directory {
|
||||||
let name = Column::name(360);
|
let name = Column::name(360);
|
||||||
let size = Column::size(120);
|
let size = Column::size(120);
|
||||||
let content_type = Column::content_type(180);
|
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(&icon);
|
||||||
column_view.append_column(&name);
|
column_view.append_column(&name);
|
||||||
column_view.append_column(&size);
|
|
||||||
column_view.append_column(&content_type);
|
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.sort_by_column(Some(&name), gtk::SortType::Ascending);
|
||||||
column_view
|
column_view
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,9 @@ pub trait Column {
|
||||||
fn name(width: i32) -> Self;
|
fn name(width: i32) -> Self;
|
||||||
fn size(width: i32) -> Self;
|
fn size(width: i32) -> Self;
|
||||||
fn content_type(width: i32) -> Self;
|
fn content_type(width: i32) -> Self;
|
||||||
|
fn creation_date_time(width: i32) -> Self;
|
||||||
fn modification_date_time(width: i32) -> Self;
|
fn modification_date_time(width: i32) -> Self;
|
||||||
|
fn access_date_time(width: i32) -> Self;
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Column for gtk::ColumnViewColumn {
|
impl Column for gtk::ColumnViewColumn {
|
||||||
|
|
@ -163,6 +165,37 @@ impl Column for gtk::ColumnViewColumn {
|
||||||
.build()
|
.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 {
|
fn modification_date_time(width: i32) -> Self {
|
||||||
gtk::ColumnViewColumn::builder()
|
gtk::ColumnViewColumn::builder()
|
||||||
.fixed_width(width)
|
.fixed_width(width)
|
||||||
|
|
@ -193,4 +226,35 @@ impl Column for gtk::ColumnViewColumn {
|
||||||
})
|
})
|
||||||
.build()
|
.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