Make sheet edit dialog openable again
This commit is contained in:
parent
9692b1a825
commit
ee8a887caa
@ -29,7 +29,7 @@ pub struct AppModel {
|
||||
sheets_listing: Controller<SheetListingModel>,
|
||||
edit_mode: bool,
|
||||
scroll_adjustment: Adjustment,
|
||||
sheet_edit_dialog: Controller<SheetEditDialogModel>,
|
||||
sheet_edit_dialog: Option<Controller<SheetEditDialogModel>>,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
@ -132,11 +132,6 @@ impl AsyncComponent for AppModel {
|
||||
},
|
||||
);
|
||||
|
||||
let sheet_edit_dialog = SheetEditDialogModel::builder()
|
||||
.transient_for(&window)
|
||||
.launch(())
|
||||
.forward(sender.input_sender(), |_| todo!());
|
||||
|
||||
let model = AppModel {
|
||||
database: Arc::new(init_data.database),
|
||||
directory: Arc::new(init_data.directory),
|
||||
@ -144,7 +139,7 @@ impl AsyncComponent for AppModel {
|
||||
sheets_listing,
|
||||
edit_mode: false,
|
||||
scroll_adjustment: Adjustment::builder().build(),
|
||||
sheet_edit_dialog,
|
||||
sheet_edit_dialog: None,
|
||||
};
|
||||
|
||||
let widgets = view_output!();
|
||||
@ -156,7 +151,7 @@ impl AsyncComponent for AppModel {
|
||||
&mut self,
|
||||
message: Self::Input,
|
||||
sender: AsyncComponentSender<Self>,
|
||||
_root: &Self::Root,
|
||||
root: &Self::Root,
|
||||
) {
|
||||
match message {
|
||||
AppInput::SearchStarted(query) => {
|
||||
@ -165,10 +160,12 @@ impl AsyncComponent for AppModel {
|
||||
}
|
||||
AppInput::SheetPressed(sheet) => {
|
||||
if self.edit_mode {
|
||||
self.sheet_edit_dialog
|
||||
.sender()
|
||||
.send(SheetEditDialogInput::Show(sheet))
|
||||
.unwrap();
|
||||
self.sheet_edit_dialog = Some(
|
||||
SheetEditDialogModel::builder()
|
||||
.transient_for(&root)
|
||||
.launch(sheet)
|
||||
.forward(sender.input_sender(), |_| todo!()),
|
||||
);
|
||||
} else {
|
||||
sheet.open_file();
|
||||
let mut sheet = sheet;
|
||||
|
@ -10,11 +10,12 @@ pub struct SheetEditDialogModel {
|
||||
sheet: Option<Sheet>,
|
||||
sheet_name: String,
|
||||
sheet_composer: String,
|
||||
is_book: bool,
|
||||
book_sheets: Vec<(String, String, i64)>,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum SheetEditDialogInput {
|
||||
Show(Sheet),
|
||||
Accept,
|
||||
Cancel,
|
||||
}
|
||||
@ -26,26 +27,16 @@ pub enum SheetEditDialogOutput {
|
||||
|
||||
#[relm4::component(pub)]
|
||||
impl SimpleComponent for SheetEditDialogModel {
|
||||
type Init = ();
|
||||
type Init = Sheet;
|
||||
type Input = SheetEditDialogInput;
|
||||
type Output = SheetEditDialogOutput;
|
||||
|
||||
view! {
|
||||
gtk::Window {
|
||||
set_modal: true,
|
||||
#[watch]
|
||||
set_visible: !model.hidden,
|
||||
set_modal: true,
|
||||
set_title: Some("Edit sheet"),
|
||||
// set_secondary_text: Some("All unsaved changes will be lost"),
|
||||
// add_button: ("Confirm", gtk::ResponseType::Accept),
|
||||
// add_button: ("Cancel", gtk::ResponseType::Cancel),
|
||||
// connect_response[sender] => move |_, resp| {
|
||||
// sender.input(if resp == gtk::ResponseType::Accept {
|
||||
// SheetEditDialogInput::Accept
|
||||
// } else {
|
||||
// SheetEditDialogInput::Cancel
|
||||
// })
|
||||
// },
|
||||
gtk::Box {
|
||||
set_orientation: gtk::Orientation::Vertical,
|
||||
set_margin_all : 5,
|
||||
@ -77,91 +68,73 @@ impl SimpleComponent for SheetEditDialogModel {
|
||||
}
|
||||
}
|
||||
}
|
||||
// gtk::MessageDialog {
|
||||
// set_modal: true,
|
||||
// #[watch]
|
||||
// set_visible: !model.hidden,
|
||||
// set_text: Some("Edit sheet"),
|
||||
// // set_secondary_text: Some("All unsaved changes will be lost"),
|
||||
// add_button: ("Confirm", gtk::ResponseType::Accept),
|
||||
// add_button: ("Cancel", gtk::ResponseType::Cancel),
|
||||
// connect_response[sender] => move |_, resp| {
|
||||
// sender.input(if resp == gtk::ResponseType::Accept {
|
||||
// SheetEditDialogInput::Accept
|
||||
// } else {
|
||||
// SheetEditDialogInput::Cancel
|
||||
// })
|
||||
// },
|
||||
// }
|
||||
}
|
||||
|
||||
fn init(
|
||||
_params: Self::Init,
|
||||
params: Self::Init,
|
||||
root: &Self::Root,
|
||||
sender: ComponentSender<Self>,
|
||||
) -> ComponentParts<Self> {
|
||||
let sheet = params;
|
||||
let mut sheet_name = String::new();
|
||||
let mut sheet_composer = String::new();
|
||||
let mut is_book = false;
|
||||
|
||||
match &sheet.kind {
|
||||
crate::sheet::SheetKind::Sheet { name, .. } => {
|
||||
sheet_name = name.to_string();
|
||||
// sheet_composer = composer_id.to_string();
|
||||
}
|
||||
crate::sheet::SheetKind::Orphan => {
|
||||
sheet_name = sheet.pdf.get_name().to_string();
|
||||
}
|
||||
crate::sheet::SheetKind::Book {
|
||||
name,
|
||||
composer_id,
|
||||
sheet_ids,
|
||||
} => todo!("Cannot yet handle books!"),
|
||||
};
|
||||
|
||||
let model = SheetEditDialogModel {
|
||||
hidden: true,
|
||||
sheet: None,
|
||||
sheet_name: String::new(),
|
||||
sheet_composer: String::new(),
|
||||
hidden: false,
|
||||
sheet: Some(sheet),
|
||||
sheet_name,
|
||||
sheet_composer,
|
||||
is_book,
|
||||
book_sheets: Vec::new(),
|
||||
};
|
||||
let widgets = view_output!();
|
||||
|
||||
ComponentParts { model, widgets }
|
||||
}
|
||||
|
||||
fn update(&mut self, msg: Self::Input, sender: ComponentSender<Self>) {
|
||||
match msg {
|
||||
SheetEditDialogInput::Show(sheet) => {
|
||||
self.hidden = false;
|
||||
self.sheet_name = sheet.pdf.get_name().to_string();
|
||||
match &sheet.kind {
|
||||
crate::sheet::SheetKind::Sheet {
|
||||
name,
|
||||
composer_id,
|
||||
first_page,
|
||||
book_id,
|
||||
} => {
|
||||
self.sheet_name = name.to_string();
|
||||
self.sheet_composer = composer_id.to_string();
|
||||
}
|
||||
crate::sheet::SheetKind::Orphan => {
|
||||
self.sheet_name = sheet.pdf.get_name().to_string();
|
||||
self.sheet_composer = String::new();
|
||||
}
|
||||
crate::sheet::SheetKind::Book {
|
||||
name,
|
||||
composer_id,
|
||||
sheet_ids,
|
||||
} => todo!("Cannot yet handle books!"),
|
||||
};
|
||||
|
||||
self.sheet = Some(sheet);
|
||||
}
|
||||
SheetEditDialogInput::Accept => {
|
||||
self.hidden = true;
|
||||
|
||||
if let Some(mut sheet) = self.sheet.take() {
|
||||
match sheet.kind.borrow_mut() {
|
||||
crate::sheet::SheetKind::Sheet {
|
||||
name,
|
||||
composer_id,
|
||||
first_page,
|
||||
book_id,
|
||||
} => {
|
||||
todo!("Do something!!!");
|
||||
// name = "hello world";
|
||||
// name = &mut self.sheet_name.clone();
|
||||
// composer_id = 0;
|
||||
}
|
||||
crate::sheet::SheetKind::Orphan => {
|
||||
todo!("Create Sheet");
|
||||
}
|
||||
crate::sheet::SheetKind::Book {
|
||||
name,
|
||||
composer_id,
|
||||
sheet_ids,
|
||||
} => todo!(),
|
||||
};
|
||||
// match sheet.kind.borrow_mut() {
|
||||
// crate::sheet::SheetKind::Sheet {
|
||||
// name,
|
||||
// composer_id,
|
||||
// first_page,
|
||||
// book_id,
|
||||
// } => {
|
||||
// todo!("Do something!!!");
|
||||
// // name = "hello world";
|
||||
// // name = &mut self.sheet_name.clone();
|
||||
// // composer_id = 0;
|
||||
// }
|
||||
// crate::sheet::SheetKind::Orphan => {
|
||||
// todo!("Create Sheet");
|
||||
// }
|
||||
// crate::sheet::SheetKind::Book {
|
||||
// name,
|
||||
// composer_id,
|
||||
// sheet_ids,
|
||||
// } => todo!(),
|
||||
// };
|
||||
sender
|
||||
.output(SheetEditDialogOutput::SheetEdited(sheet))
|
||||
.unwrap();
|
||||
|
Loading…
x
Reference in New Issue
Block a user