mirror of
				https://github.com/johrpan/musicus.git
				synced 2025-10-26 19:57:25 +01:00 
			
		
		
		
	
							parent
							
								
									456af4a1df
								
							
						
					
					
						commit
						16988ccc2a
					
				
					 1 changed files with 36 additions and 3 deletions
				
			
		|  | @ -299,13 +299,13 @@ impl Window { | ||||||
|                 #[weak(rename_to = obj)] |                 #[weak(rename_to = obj)] | ||||||
|                 self, |                 self, | ||||||
|                 move |_| { |                 move |_| { | ||||||
|                     obj.reset_view(); |                     obj.initial_view(); | ||||||
|                 } |                 } | ||||||
|             )); |             )); | ||||||
| 
 | 
 | ||||||
|             navigation.replace(&[empty_page.into()]); |             navigation.replace(&[empty_page.into()]); | ||||||
|         } else { |         } else { | ||||||
|             self.reset_view(); |             self.initial_view(); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         Ok(()) |         Ok(()) | ||||||
|  | @ -323,8 +323,9 @@ impl Window { | ||||||
|         Ok(()) |         Ok(()) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     fn reset_view(&self) { |     fn initial_view(&self) { | ||||||
|         let navigation = self.imp().navigation_view.get(); |         let navigation = self.imp().navigation_view.get(); | ||||||
|  | 
 | ||||||
|         navigation.replace(&[SearchPage::new( |         navigation.replace(&[SearchPage::new( | ||||||
|             &self.imp().toast_overlay, |             &self.imp().toast_overlay, | ||||||
|             &navigation, |             &navigation, | ||||||
|  | @ -334,4 +335,36 @@ impl Window { | ||||||
|         ) |         ) | ||||||
|         .into()]); |         .into()]); | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  |     fn reset_view(&self) { | ||||||
|  |         let navigation = self.imp().navigation_view.get(); | ||||||
|  | 
 | ||||||
|  |         // Get all pages that are not instances of SearchPage.
 | ||||||
|  |         let mut navigation_stack = navigation | ||||||
|  |             .navigation_stack() | ||||||
|  |             .iter::<adw::NavigationPage>() | ||||||
|  |             .filter_map(|page| match page { | ||||||
|  |                 Ok(page) => match page.downcast_ref::<SearchPage>() { | ||||||
|  |                     Some(_) => None, | ||||||
|  |                     None => Some(page), | ||||||
|  |                 }, | ||||||
|  |                 Err(_) => None, | ||||||
|  |             }) | ||||||
|  |             .collect::<Vec<adw::NavigationPage>>(); | ||||||
|  | 
 | ||||||
|  |         navigation_stack.insert( | ||||||
|  |             0, | ||||||
|  |             SearchPage::new( | ||||||
|  |                 &self.imp().toast_overlay, | ||||||
|  |                 &navigation, | ||||||
|  |                 self.imp().library.borrow().as_ref().unwrap(), | ||||||
|  |                 &self.imp().player, | ||||||
|  |                 LibraryQuery::default(), | ||||||
|  |             ) | ||||||
|  |             .into(), | ||||||
|  |         ); | ||||||
|  | 
 | ||||||
|  |         // Readd all pages except for instances of SearchPage and add a new SearchPage as the root.
 | ||||||
|  |         navigation.replace(&navigation_stack); | ||||||
|  |     } | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue