Add home page header and hook up editors

This commit is contained in:
Elias Projahn 2024-06-05 19:03:04 +02:00
parent 38613c0063
commit f49f23a501
10 changed files with 236 additions and 55 deletions

View file

@ -1,7 +1,7 @@
use crate::{
db::{
self,
models::{Composer, Instrument, Person, WorkPart},
models::{Composer, Instrument, Person, Work, WorkPart},
},
editor::{
instrument_selector_popover::MusicusInstrumentSelectorPopover,
@ -25,6 +25,9 @@ mod imp {
#[properties(wrapper_type = super::MusicusWorkEditor)]
#[template(file = "data/ui/work_editor.blp")]
pub struct MusicusWorkEditor {
#[property(get, construct_only)]
pub navigation: OnceCell<adw::NavigationView>,
#[property(get, construct_only)]
pub library: OnceCell<MusicusLibrary>,
@ -38,6 +41,8 @@ mod imp {
pub persons_popover: OnceCell<MusicusPersonSelectorPopover>,
pub instruments_popover: OnceCell<MusicusInstrumentSelectorPopover>,
#[template_child]
pub name_editor: TemplateChild<MusicusTranslationEditor>,
#[template_child]
pub composer_list: TemplateChild<gtk::ListBox>,
#[template_child]
@ -146,8 +151,21 @@ glib::wrapper! {
#[gtk::template_callbacks]
impl MusicusWorkEditor {
pub fn new(library: &MusicusLibrary) -> Self {
glib::Object::builder().property("library", library).build()
pub fn new(
navigation: &adw::NavigationView,
library: &MusicusLibrary,
work: Option<&Work>,
) -> Self {
let obj: Self = glib::Object::builder()
.property("navigation", navigation)
.property("library", library)
.build();
if let Some(_work) = work {
// TODO: Initialize work data.
}
obj
}
#[template_callback]