Download naming changes

This commit is contained in:
exttex 2020-09-01 16:41:15 +02:00
parent 37f97f9992
commit 4e5e3a3059
8 changed files with 260 additions and 104 deletions

View file

@ -8,7 +8,8 @@ import '../api/download.dart';
class DownloadTile extends StatelessWidget {
final Download download;
DownloadTile(this.download);
Function onDelete;
DownloadTile(this.download, {this.onDelete});
String get subtitle {
switch (download.state) {
@ -53,6 +54,34 @@ class DownloadTile extends StatelessWidget {
url: download.track.albumArt.thumb,
),
trailing: trailing,
onTap: () {
//Delete if none
if (download.state == DownloadState.NONE) {
showDialog(
context: context,
builder: (context) {
return AlertDialog(
title: Text('Delete'),
content: Text('Are you sure, you want to delete this download?'),
actions: [
FlatButton(
child: Text('Cancel'),
onPressed: () => Navigator.of(context).pop(),
),
FlatButton(
child: Text('Delete'),
onPressed: () {
downloadManager.removeDownload(download);
if (this.onDelete != null) this.onDelete();
Navigator.of(context).pop();
},
)
],
);
}
);
}
},
),
progressBar
],
@ -60,54 +89,99 @@ class DownloadTile extends StatelessWidget {
}
}
class DownloadsScreen extends StatelessWidget {
class DownloadsScreen extends StatefulWidget {
@override
_DownloadsScreenState createState() => _DownloadsScreenState();
}
class _DownloadsScreenState extends State<DownloadsScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Downloads'),
),
body: ListView(
children: <Widget>[
StreamBuilder(
stream: Stream.periodic(Duration(milliseconds: 500)), //Periodic to get current download progress
builder: (BuildContext context, AsyncSnapshot snapshot) {
appBar: AppBar(
title: Text('Downloads'),
actions: [
IconButton(
icon: Icon(Icons.delete_sweep),
onPressed: () {
showDialog(
context: context,
builder: (context) {
return AlertDialog(
title: Text('Delete'),
content: Text('Are you sure, you want to delete all queued downloads?'),
actions: [
FlatButton(
child: Text('Cancel'),
onPressed: () => Navigator.of(context).pop(),
),
FlatButton(
child: Text('Delete'),
onPressed: () async {
await downloadManager.clearQueue();
Navigator.of(context).pop();
},
)
],
);
}
);
},
)
],
),
body: ListView(
children: <Widget>[
StreamBuilder(
stream: Stream.periodic(Duration(milliseconds: 500)).asBroadcastStream(), //Periodic to get current download progress
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (downloadManager.queue.length == 0)
return Container(width: 0, height: 0,);
if (downloadManager.queue.length == 0)
return Container(width: 0, height: 0,);
return Column(
children: List.generate(downloadManager.queue.length, (i) {
return DownloadTile(downloadManager.queue[i]);
})
);
},
),
FutureBuilder(
future: downloadManager.getFinishedDownloads(),
builder: (context, snapshot) {
if (!snapshot.hasData || snapshot.data.length == 0) return Container(height: 0, width: 0,);
return Column(
children: List.generate(downloadManager.queue.length, (i) {
return DownloadTile(downloadManager.queue[i], onDelete: () => setState(() => {}));
})
);
},
),
FutureBuilder(
future: downloadManager.getFinishedDownloads(),
builder: (context, snapshot) {
if (!snapshot.hasData || snapshot.data.length == 0) return Container(height: 0, width: 0,);
return Column(
children: <Widget>[
Divider(),
Text(
'History',
style: TextStyle(
fontSize: 24.0,
fontWeight: FontWeight.bold
return Column(
children: <Widget>[
Divider(),
Text(
'History',
style: TextStyle(
fontSize: 24.0,
fontWeight: FontWeight.bold
),
),
),
...List.generate(snapshot.data.length, (i) {
Download d = snapshot.data[i];
return DownloadTile(d);
})
],
);
},
)
],
)
...List.generate(snapshot.data.length, (i) {
Download d = snapshot.data[i];
return DownloadTile(d);
}),
ListTile(
title: Text('Clear downloads history'),
leading: Icon(Icons.delete),
subtitle: Text('WARNING: This will only clear non-offline (external downloads)'),
onTap: () async {
await downloadManager.cleanDownloadHistory();
setState(() {});
},
),
],
);
},
)
],
)
);
}
}
}