64 lines
1.8 KiB
Rust
64 lines
1.8 KiB
Rust
mod collatable_container ;
|
|
mod component ;
|
|
mod utility ;
|
|
|
|
use futures :: * ;
|
|
use gtk4 :: Orientation :: * ;
|
|
use gtk4 :: prelude :: * ;
|
|
use libadwaita :: * ;
|
|
use libadwaita :: prelude :: * ;
|
|
use libadwaita :: ViewSwitcherPolicy :: * ;
|
|
|
|
use crate :: data_manager :: * ;
|
|
use crate :: ui :: collatable_container :: * ;
|
|
use crate :: ui :: component :: * ;
|
|
use crate :: ui :: utility :: * ;
|
|
use crate :: utility :: * ;
|
|
|
|
|
|
|
|
pub struct UI {
|
|
window : & 'static ApplicationWindow ,
|
|
films_component : CollatableMediaContainer <FilmsAdapter> ,
|
|
series_component : CollatableMediaContainer <SeriesAdapter> ,
|
|
}
|
|
|
|
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 ) ,
|
|
) ) ;
|
|
|
|
UI { window , films_component , series_component }
|
|
}
|
|
|
|
pub fn show_window ( & self ) { self . window . set_visible (true) }
|
|
|
|
pub fn close_window ( & self ) { self . window . close () }
|
|
|
|
pub async fn render_collection_overview ( & self , collection : CollectionOverview ) {
|
|
join ! (
|
|
self . films_component . set_media ( collection . films ) ,
|
|
self . series_component . set_media ( collection . series ) ,
|
|
) ;
|
|
}
|
|
}
|