From 902ad97225057d2af7c9f8358fb7f51cc06148d1 Mon Sep 17 00:00:00 2001 From: Elias Projahn Date: Sun, 16 Feb 2025 08:56:27 +0100 Subject: [PATCH] tracks editor: Autofill parts --- src/editor/tracks_editor.rs | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/editor/tracks_editor.rs b/src/editor/tracks_editor.rs index ae7d47a..ea9dbb2 100644 --- a/src/editor/tracks_editor.rs +++ b/src/editor/tracks_editor.rs @@ -1,6 +1,6 @@ use super::tracks_editor_track_row::{PathType, TracksEditorTrackData}; use crate::{ - db::models::Recording, + db::models::{Recording, Work}, editor::{ recording_editor::MusicusRecordingEditor, recording_selector_popover::RecordingSelectorPopover, @@ -224,12 +224,31 @@ impl TracksEditor { fn add_file(&self, path: PathBuf) { if let Some(recording) = &*self.imp().recording.borrow() { + let parts_taken = { + self.imp() + .track_rows + .borrow() + .iter() + .map(|t| t.track_data().parts.clone()) + .flatten() + .collect::>() + }; + + let next_part = recording + .work + .parts + .iter() + .find(|p| !parts_taken.contains(p)) + .into_iter() + .cloned() + .collect::>(); + self.add_track_row( recording.to_owned(), TracksEditorTrackData { track_id: None, path: PathType::System(path), - parts: Vec::new(), + parts: next_part, }, ); } else {