diff --git a/lib/editors/work.dart b/lib/editors/work.dart index 6a3ca47..8ccc2ed 100644 --- a/lib/editors/work.dart +++ b/lib/editors/work.dart @@ -10,9 +10,16 @@ class PartData { int level; Person composer; - List instruments = []; + List instruments; - PartData(this.level); + PartData({ + String title, + this.level = 0, + this.composer, + this.instruments = const [], + }) { + titleController.text = title ?? ''; + } } class WorkProperties extends StatelessWidget { @@ -213,7 +220,6 @@ class _WorkEditorState extends State { backend = Backend.of(context); - // TODO: Initialize parts if (widget.work != null) { if (widget.work.composer != null) { () async { @@ -240,6 +246,30 @@ class _WorkEditorState extends State { }); } }(); + + () async { + final dbParts = await backend.db.workParts(widget.work.id).get(); + for (final dbPart in dbParts) { + final partInstruments = + await backend.db.instrumentsByWork(dbPart.id).get(); + + Person partComposer; + + if (dbPart.composer != null) { + partComposer = + await backend.db.personById(widget.work.composer).getSingle(); + } + + setState(() { + parts.add(PartData( + title: dbPart.title, + composer: partComposer, + level: dbPart.partLevel, + instruments: partInstruments, + )); + }); + } + }(); } } @@ -267,7 +297,7 @@ class _WorkEditorState extends State { onMore: () {}, onAdd: () { setState(() { - parts.insert(i + 1, PartData(part.level + 1)); + parts.insert(i + 1, PartData(level: part.level + 1)); }); }, onDelete: () { @@ -378,7 +408,7 @@ class _WorkEditorState extends State { label: Text('Add part'), onPressed: () { setState(() { - parts.add(PartData(0)); + parts.add(PartData(level: 0)); }); }, ),