2024-11-26 17:20:53 +01:00
|
|
|
mod collatable_container ;
|
|
|
|
mod collated_grid ;
|
|
|
|
mod collation_menu ;
|
2024-11-20 16:32:37 +01:00
|
|
|
mod internal ;
|
|
|
|
mod utility ;
|
|
|
|
|
|
|
|
use { gtk4 :: prelude :: * , libadwaita :: * } ;
|
|
|
|
|
2024-11-20 17:18:22 +01:00
|
|
|
use crate :: {
|
|
|
|
collection :: * ,
|
2024-11-26 17:20:53 +01:00
|
|
|
ui :: { collatable_container :: * , internal :: * , utility :: * } ,
|
2024-11-20 17:18:22 +01:00
|
|
|
} ;
|
2024-11-20 16:32:37 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pub struct UI {
|
|
|
|
window : ApplicationWindow ,
|
2024-11-26 17:20:53 +01:00
|
|
|
films_container : CollatableFilmsContainer ,
|
|
|
|
series_container : CollatableSeriesContainer ,
|
2024-11-20 16:32:37 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
impl UI {
|
|
|
|
pub fn new ( application : & Application ) -> UI {
|
2024-11-26 17:20:53 +01:00
|
|
|
let films_container = CollatableFilmsContainer :: new ( vec ! () ) ;
|
|
|
|
let series_container = CollatableSeriesContainer :: new ( vec ! () ) ;
|
2024-11-20 16:32:37 +01:00
|
|
|
let collection_view_stack = create_view_stack ! (
|
|
|
|
"Films" , "camera-video-symbolic" , films_container . get_widget () ,
|
|
|
|
"Series" , "video-display-symbolic" , series_container . get_widget () ,
|
|
|
|
) ;
|
|
|
|
let header_bar = create_header_bar ( & collection_view_stack ) ;
|
|
|
|
let window = create_window ( application , & header_bar , & collection_view_stack ) ;
|
|
|
|
|
|
|
|
UI { window , films_container , series_container }
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn show_window ( & self ) { self . window . set_visible (true) }
|
|
|
|
|
2024-11-27 11:47:20 +01:00
|
|
|
pub fn render_collection ( & self , collection : Collection ) {
|
2024-11-20 16:32:37 +01:00
|
|
|
self . films_container . set_films ( collection . films ) ;
|
|
|
|
self . series_container . set_series ( collection . series ) ;
|
|
|
|
}
|
|
|
|
}
|