From b57dc4b224f04d52534e8d5ed332ef2eae0c3bee Mon Sep 17 00:00:00 2001 From: tsukinaha Date: Fri, 19 Jul 2024 19:14:51 +0800 Subject: [PATCH] fix lists --- src/client/client.rs | 5 ++--- src/client/structs.rs | 12 +++++++++++- src/ui/widgets/home.rs | 2 +- src/ui/widgets/hortu_scrolled.rs | 2 +- src/ui/widgets/list.rs | 5 +++-- src/ui/widgets/search.rs | 4 ++-- src/ui/widgets/singlelist.rs | 9 +++++++-- 7 files changed, 27 insertions(+), 12 deletions(-) diff --git a/src/client/client.rs b/src/client/client.rs index 2d43c1c4..9361ec06 100644 --- a/src/client/client.rs +++ b/src/client/client.rs @@ -556,11 +556,11 @@ impl EmbyClient { ("ImageTypeLimit", "1"), ("StartIndex", start), ("Recursive", "true"), - ("IncludeItemTypes", "Movie,Series,Video,Game,MusicAlbum"), + ("IncludeItemTypes", "Movie,Series,MusicAlbum"), ("SortBy", sortby), ("SortOrder", sort_order), ("EnableImageTypes", "Primary,Backdrop,Thumb"), - if listtype == "Genres" { + if listtype == "Genre" { ("GenreIds", parentid) } else if listtype == "Studios" { ("StudioIds", parentid) @@ -568,7 +568,6 @@ impl EmbyClient { ("TagIds", parentid) }, ]; - let id_clone; if let Some(id) = id { id_clone = id.clone(); diff --git a/src/client/structs.rs b/src/client/structs.rs index 2bd071b8..8c20a3db 100644 --- a/src/client/structs.rs +++ b/src/client/structs.rs @@ -549,7 +549,7 @@ impl SGTitem { } impl SimpleListItem { - pub fn activate(&self, widget: &T) + pub fn activate(&self, widget: &T, parentid: Option) where T: gtk::prelude::WidgetExt + glib::clone::Downgrade, { @@ -602,6 +602,16 @@ impl SimpleListItem { ); push_page_with_tag(window, page, self.name.clone()); } + "Tag" | "Genre" => { + let page = SingleListPage::new( + self.id.clone(), + "".to_string(), + &self.latest_type, + parentid, + true, + ); + push_page_with_tag(window, page, self.name.clone()); + } _ => toast!(window, gettext("Not Supported Type")), } } diff --git a/src/ui/widgets/home.rs b/src/ui/widgets/home.rs index 3f2f55d9..6477efde 100644 --- a/src/ui/widgets/home.rs +++ b/src/ui/widgets/home.rs @@ -142,7 +142,7 @@ impl HomePage { fn carousel_pressed_cb(&self) { let position = self.imp().carousel.position(); if let Some(item) = self.imp().carouset_items.borrow().get(position as usize) { - item.activate(self); + item.activate(self, None); } } diff --git a/src/ui/widgets/hortu_scrolled.rs b/src/ui/widgets/hortu_scrolled.rs index 4feb3995..ccea9184 100644 --- a/src/ui/widgets/hortu_scrolled.rs +++ b/src/ui/widgets/hortu_scrolled.rs @@ -85,7 +85,7 @@ mod imp { .and_downcast::() .unwrap(); let result: std::cell::Ref = item.borrow(); - result.activate(listview); + result.activate(listview, None); }); } } diff --git a/src/ui/widgets/list.rs b/src/ui/widgets/list.rs index 4ec6d0d3..fd9a3269 100644 --- a/src/ui/widgets/list.rs +++ b/src/ui/widgets/list.rs @@ -93,7 +93,7 @@ impl ListPage { pub async fn set_pages(&self) { let imp = self.imp(); - let id = imp.id.get().unwrap(); + let id = self.id(); let collection_type = imp.collectiontype.get().unwrap(); let stack = imp.stack.get(); @@ -105,9 +105,10 @@ impl ListPage { ("genres", "Genres"), ("liked", "Liked"), ]; + for (name, title) in pages { - let page = SingleListPage::new(id.clone(), collection_type.clone(), name, None, false); + let page = SingleListPage::new(id.clone(), collection_type.clone(), name, Some(id.clone()), false); stack.add_titled(&page, Some(name), &gettext(title)); } } diff --git a/src/ui/widgets/search.rs b/src/ui/widgets/search.rs index 4fad5223..1ad203fb 100644 --- a/src/ui/widgets/search.rs +++ b/src/ui/widgets/search.rs @@ -142,7 +142,7 @@ impl SearchPage { #[weak(rename_to = obj)] self, move |_| { - item.activate(&obj); + item.activate(&obj, None); } )); recommendbox.append(&button); @@ -168,7 +168,7 @@ impl SearchPage { .and_downcast::() .unwrap(); let result: std::cell::Ref = item.borrow(); - result.activate(listview); + result.activate(listview, None); })); } diff --git a/src/ui/widgets/singlelist.rs b/src/ui/widgets/singlelist.rs index d8513324..f8bd27b5 100644 --- a/src/ui/widgets/singlelist.rs +++ b/src/ui/widgets/singlelist.rs @@ -299,15 +299,20 @@ impl SingleListPage { imp.listgrid.set_min_columns(1); imp.listgrid.set_max_columns(13); + let parentid = self.parentid(); + imp.listgrid - .connect_activate(glib::clone!(move |listview, position| { + .connect_activate(glib::clone!( + #[strong] + parentid, + move |listview, position| { let model = listview.model().unwrap(); let item = model .item(position) .and_downcast::() .unwrap(); let result: std::cell::Ref = item.borrow(); - result.activate(listview); + result.activate(listview, parentid.clone()); })); }