Fix dialog entry buffers

This commit is contained in:
Julian Mutter 2024-05-26 12:32:23 +02:00
parent 48f789ca83
commit e0feae0546

View File

@ -3,6 +3,7 @@ use std::sync::Arc;
use relm4::{
component::{AsyncComponent, AsyncComponentParts, Connector},
gtk::EntryBuffer,
prelude::*,
AsyncComponentSender,
};
@ -14,8 +15,8 @@ pub struct SheetEditDialogModel {
database: Arc<Database>,
hidden: bool,
sheet: Option<Sheet>,
sheet_name: String,
sheet_composer: String,
name_entry_buffer: EntryBuffer,
composer_entry_buffer: EntryBuffer,
is_book: bool,
book_sheets: Vec<(String, String, i64)>,
alert_empty_fields: Connector<Alert>,
@ -62,8 +63,7 @@ impl AsyncComponent for SheetEditDialogModel {
set_text: "Sheet name"
},
gtk::Entry {
#[watch]
set_text: &model.sheet_name,
set_buffer: &model.name_entry_buffer,
set_width_chars: 40,
},
},
@ -73,8 +73,7 @@ impl AsyncComponent for SheetEditDialogModel {
set_text: "Sheet composer"
},
gtk::Entry {
#[watch]
set_text : &model.sheet_composer,
set_buffer: &model.composer_entry_buffer,
set_hexpand: true,
},
},
@ -153,8 +152,8 @@ impl AsyncComponent for SheetEditDialogModel {
database: params.database,
hidden: false,
sheet: Some(sheet),
sheet_name,
sheet_composer,
name_entry_buffer: EntryBuffer::new(Some(sheet_name)),
composer_entry_buffer: EntryBuffer::new(Some(sheet_composer)),
is_book,
book_sheets: Vec::new(),
alert_empty_fields: Alert::builder().transient_for(&root).launch(AlertSettings {
@ -183,10 +182,17 @@ impl AsyncComponent for SheetEditDialogModel {
match msg {
SheetEditDialogInput::Accept => {
if let Some(_sheet) = &self.sheet {
if self.sheet_name.is_empty() || self.sheet_composer.is_empty() {
let sheet_name_string = self.name_entry_buffer.text();
let sheet_name = sheet_name_string.trim();
let sheet_composer_string = self.composer_entry_buffer.text();
let sheet_composer = sheet_composer_string.trim();
if sheet_name.is_empty() || sheet_composer.is_empty() {
self.alert_empty_fields.emit(AlertMsg::Show);
return;
}
// match sheet.kind.borrow_mut() {
// crate::sheet::SheetKind::Sheet {
// name,