From c83b942690dbd973d25ca23d23049ac32e856af7 Mon Sep 17 00:00:00 2001 From: Elias Projahn Date: Mon, 30 Mar 2020 17:34:07 +0200 Subject: [PATCH] Recording editor: Track editing skeleton --- lib/editors/recording.dart | 47 +++++++++++++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/lib/editors/recording.dart b/lib/editors/recording.dart index e3782f1..e9ec4ca 100644 --- a/lib/editors/recording.dart +++ b/lib/editors/recording.dart @@ -1,10 +1,20 @@ import 'package:flutter/material.dart'; +import 'package:path/path.dart' as pth; import '../backend.dart'; import '../database.dart'; +import '../selectors/files.dart'; import '../selectors/performer.dart'; import '../selectors/work.dart'; +class TrackModel { + final String path; + + TrackModel({ + this.path, + }); +} + class RecordingEditor extends StatefulWidget { final Recording recording; @@ -19,6 +29,7 @@ class RecordingEditor extends StatefulWidget { class _RecordingEditorState extends State { Work work; List performances = []; + List tracks = []; @override void initState() { @@ -134,9 +145,43 @@ class _RecordingEditorState extends State { title: Text('Tracks'), trailing: IconButton( icon: const Icon(Icons.add), - onPressed: () {}, + onPressed: () async { + final paths = await Navigator.push>( + context, + MaterialPageRoute( + builder: (context) => FilesSelector( + baseDirectory: backend.musicLibraryPath, + ), + fullscreenDialog: true, + ), + ); + + if (paths != null) { + setState(() { + for (final path in paths) { + final relPath = + pth.relative(path, from: backend.musicLibraryPath); + tracks.add(TrackModel( + path: relPath, + )); + } + }); + } + }, ), ), + for (final track in tracks) + ListTile( + title: Text(track.path), + trailing: IconButton( + icon: const Icon(Icons.delete), + onPressed: () { + setState(() { + tracks.remove(track); + }); + }, + ), + ), ], ), );