zoodex/src/ui/mod.rs

65 lines
1.8 KiB
Rust
Raw Normal View History

mod collatable_container ;
mod component ;
2024-11-20 16:32:37 +01:00
mod utility ;
use futures :: * ;
2025-02-05 14:57:07 +01:00
use gtk4 :: Orientation :: * ;
use gtk4 :: prelude :: * ;
use libadwaita :: * ;
use libadwaita :: prelude :: * ;
use libadwaita :: ViewSwitcherPolicy :: * ;
2024-11-20 16:32:37 +01:00
2025-02-05 14:57:07 +01:00
use crate :: data_manager :: * ;
use crate :: ui :: collatable_container :: * ;
use crate :: ui :: component :: * ;
use crate :: ui :: utility :: * ;
use crate :: utility :: * ;
2024-11-20 16:32:37 +01:00
pub struct UI {
window : & 'static ApplicationWindow ,
films_component : CollatableMediaContainer <FilmsAdapter> ,
series_component : CollatableMediaContainer <SeriesAdapter> ,
2024-11-20 16:32:37 +01:00
}
impl UI {
pub fn new ( application : & Application ) -> UI {
let window = leak ( application_window ! (
@ application : application ;
@ title : "Zoödex" ;
) ) ;
let films_component = CollatableMediaContainer :: <FilmsAdapter> :: new (
|film| dialog ! () . present ( Some (window) ) ,
) ;
let series_component = CollatableMediaContainer :: <SeriesAdapter> :: new (
|series| dialog ! () . present ( Some (window) ) ,
) ;
let switched = view_stack ! (
( "Films" , "camera-video-symbolic" , films_component . get_widget () ) ,
( "Series" , "video-display-symbolic" , series_component . get_widget () ) ,
) ;
let header_bar = header_bar ! (
& view_switcher ! ( @ policy : Wide ; & switched ) ,
) ;
window . set_content ( Some (
& toolbar_view ! ( @ top_bar : & header_bar ; & switched ) ,
) ) ;
2024-11-20 16:32:37 +01:00
UI { window , films_component , series_component }
2024-11-20 16:32:37 +01:00
}
pub fn show_window ( & self ) { self . window . set_visible (true) }
2024-11-29 21:06:14 +01:00
pub fn close_window ( & self ) { self . window . close () }
2025-02-05 13:51:22 +01:00
pub async fn render_collection_overview ( & self , collection : CollectionOverview ) {
join ! (
self . films_component . set_media ( collection . films ) ,
self . series_component . set_media ( collection . series ) ,
) ;
2024-11-20 16:32:37 +01:00
}
}