tracks editor: Autofill parts

This commit is contained in:
Elias Projahn 2025-02-16 08:56:27 +01:00
parent 53680df13d
commit 902ad97225

View file

@ -1,6 +1,6 @@
use super::tracks_editor_track_row::{PathType, TracksEditorTrackData}; use super::tracks_editor_track_row::{PathType, TracksEditorTrackData};
use crate::{ use crate::{
db::models::Recording, db::models::{Recording, Work},
editor::{ editor::{
recording_editor::MusicusRecordingEditor, recording_editor::MusicusRecordingEditor,
recording_selector_popover::RecordingSelectorPopover, recording_selector_popover::RecordingSelectorPopover,
@ -224,12 +224,31 @@ impl TracksEditor {
fn add_file(&self, path: PathBuf) { fn add_file(&self, path: PathBuf) {
if let Some(recording) = &*self.imp().recording.borrow() { 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::<Vec<Work>>()
};
let next_part = recording
.work
.parts
.iter()
.find(|p| !parts_taken.contains(p))
.into_iter()
.cloned()
.collect::<Vec<Work>>();
self.add_track_row( self.add_track_row(
recording.to_owned(), recording.to_owned(),
TracksEditorTrackData { TracksEditorTrackData {
track_id: None, track_id: None,
path: PathType::System(path), path: PathType::System(path),
parts: Vec::new(), parts: next_part,
}, },
); );
} else { } else {