mirror of
https://gitlab.gnome.org/World/Authenticator.git
synced 2025-03-04 16:54:45 +01:00
various sorting fixes
This commit is contained in:
parent
4845bcb3ea
commit
3a4161c46c
3 changed files with 17 additions and 5 deletions
|
@ -15,6 +15,7 @@ mod imp {
|
|||
#[template_child(id = "providers_list")]
|
||||
pub providers_list: TemplateChild<gtk::ListBox>,
|
||||
pub filter_model: gtk::FilterListModel,
|
||||
pub sorter: ProviderSorter,
|
||||
}
|
||||
|
||||
impl ObjectSubclass for ProvidersList {
|
||||
|
@ -31,6 +32,7 @@ mod imp {
|
|||
gtk::FilterListModel::new(gtk::NONE_FILTER_LIST_MODEL, gtk::NONE_FILTER);
|
||||
Self {
|
||||
providers_list: TemplateChild::default(),
|
||||
sorter: ProviderSorter::new(),
|
||||
filter_model,
|
||||
}
|
||||
}
|
||||
|
@ -79,6 +81,7 @@ impl ProvidersList {
|
|||
if let Some(filter) = self_.filter_model.get_filter() {
|
||||
filter.changed(gtk::FilterChange::Different);
|
||||
}
|
||||
self_.sorter.changed(gtk::SorterChange::Different);
|
||||
}
|
||||
|
||||
pub fn search(&self, text: String) {
|
||||
|
@ -94,8 +97,7 @@ impl ProvidersList {
|
|||
|
||||
fn setup_widgets(&self) {
|
||||
let self_ = imp::ProvidersList::from_instance(self);
|
||||
let sorter = ProviderSorter::new();
|
||||
let sort_model = gtk::SortListModel::new(Some(&self_.filter_model), Some(&sorter));
|
||||
let sort_model = gtk::SortListModel::new(Some(&self_.filter_model), Some(&self_.sorter));
|
||||
self_.providers_list.get().bind_model(
|
||||
Some(&sort_model),
|
||||
Some(Box::new(clone!(@weak self as list => move |obj| {
|
||||
|
@ -104,7 +106,7 @@ impl ProvidersList {
|
|||
row.connect_local("changed", false, clone!(@weak list => move |_| {
|
||||
list.refilter();
|
||||
None
|
||||
}));
|
||||
})).unwrap();
|
||||
|
||||
row.upcast::<gtk::Widget>()
|
||||
}))),
|
||||
|
|
|
@ -118,7 +118,7 @@ impl ProviderRow {
|
|||
|
||||
let provider = self.provider();
|
||||
|
||||
let create_callback = clone!(@weak self as provider_row => move |account: &glib::Object| {
|
||||
let create_callback = clone!(@weak self as provider_row, @weak sorter => move |account: &glib::Object| {
|
||||
let account = account.clone().downcast::<Account>().unwrap();
|
||||
let row = AccountRow::new(account.clone());
|
||||
row.connect_local(
|
||||
|
@ -130,6 +130,15 @@ impl ProviderRow {
|
|||
provider_row.emit("changed", &[]).unwrap();
|
||||
None
|
||||
}),
|
||||
).unwrap();
|
||||
account.connect_local("notify::name",
|
||||
false,
|
||||
clone!(@weak provider_row, @weak sorter => move |_| {
|
||||
// Re-sort in case the name was updated
|
||||
sorter.changed(gtk::SorterChange::Different);
|
||||
provider_row.emit("changed", &[]).unwrap();
|
||||
None
|
||||
}),
|
||||
)
|
||||
.unwrap();
|
||||
row.upcast::<gtk::Widget>()
|
||||
|
|
|
@ -222,6 +222,7 @@ impl Window {
|
|||
};
|
||||
None
|
||||
}),
|
||||
);
|
||||
)
|
||||
.unwrap();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue