Don't allow empty track sets

This commit is contained in:
Elias Projahn 2021-04-25 13:43:29 +02:00
parent e0619b6b27
commit 4a0251bcf4

View file

@ -78,7 +78,8 @@ impl Screen<Arc<ImportSession>, TrackSetData> for TrackSetEditor {
this.handle.pop(None); this.handle.pop(None);
})); }));
this.save_button.connect_clicked(clone!(@weak this => move |_| { this.save_button
.connect_clicked(clone!(@weak this => move |_| {
let data = TrackSetData { let data = TrackSetData {
recording: this.recording.borrow().clone().unwrap(), recording: this.recording.borrow().clone().unwrap(),
tracks: this.tracks.borrow().clone(), tracks: this.tracks.borrow().clone(),
@ -172,6 +173,8 @@ impl Screen<Arc<ImportSession>, TrackSetData> for TrackSetEditor {
row.upcast() row.upcast()
})); }));
this.validate();
this this
} }
} }
@ -180,11 +183,14 @@ impl TrackSetEditor {
/// Set everything up after selecting a recording. /// Set everything up after selecting a recording.
fn recording_selected(&self) { fn recording_selected(&self) {
if let Some(recording) = &*self.recording.borrow() { if let Some(recording) = &*self.recording.borrow() {
self.recording_row.set_title(Some(&recording.work.get_title())); self.recording_row
self.recording_row.set_subtitle(Some(&recording.get_performers())); .set_title(Some(&recording.work.get_title()));
self.recording_row
.set_subtitle(Some(&recording.get_performers()));
self.save_button.set_sensitive(true); self.save_button.set_sensitive(true);
} }
// This will also call validate().
self.autofill_parts(); self.autofill_parts();
} }
@ -210,6 +216,13 @@ impl TrackSetEditor {
fn update_tracks(&self) { fn update_tracks(&self) {
let length = self.tracks.borrow().len(); let length = self.tracks.borrow().len();
self.track_list.update(length); self.track_list.update(length);
self.validate();
}
/// Validate data and allow saving if possible.
fn validate(&self) {
self.save_button
.set_sensitive(self.recording.borrow().is_some() && !self.tracks.borrow().is_empty());
} }
} }
@ -218,4 +231,3 @@ impl Widget for TrackSetEditor {
self.widget.clone().upcast() self.widget.clone().upcast()
} }
} }