0.5.1 - Download fixes
This commit is contained in:
parent
8db1223805
commit
22ceca2d9c
16 changed files with 437 additions and 91 deletions
|
|
@ -1,12 +1,16 @@
|
|||
import 'dart:async';
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:filesize/filesize.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:freezer/api/download.dart';
|
||||
import 'package:freezer/translations.i18n.dart';
|
||||
|
||||
import 'package:path/path.dart' as p;
|
||||
import 'package:path_provider/path_provider.dart';
|
||||
import 'cached_image.dart';
|
||||
|
||||
import 'dart:async';
|
||||
|
||||
|
||||
class DownloadsScreen extends StatefulWidget {
|
||||
@override
|
||||
_DownloadsScreenState createState() => _DownloadsScreenState();
|
||||
|
|
@ -189,15 +193,30 @@ class DownloadTile extends StatelessWidget {
|
|||
|
||||
String subtitle() {
|
||||
String out = '';
|
||||
//Download type
|
||||
if (download.private) out += 'Offline'.i18n;
|
||||
else out += 'External'.i18n;
|
||||
out += ' | ';
|
||||
|
||||
if (download.state != DownloadState.DOWNLOADING && download.state != DownloadState.POST) {
|
||||
//Download type
|
||||
if (download.private) out += 'Offline'.i18n;
|
||||
else out += 'External'.i18n;
|
||||
out += ' | ';
|
||||
}
|
||||
|
||||
if (download.state == DownloadState.POST) {
|
||||
return 'Post processing...'.i18n;
|
||||
}
|
||||
|
||||
//Quality
|
||||
if (download.quality == 9) out += 'FLAC';
|
||||
if (download.quality == 3) out += 'MP3 320kbps';
|
||||
if (download.quality == 1) out += 'MP3 128kbps';
|
||||
|
||||
//Downloading show progress
|
||||
if (download.state == DownloadState.DOWNLOADING) {
|
||||
out += ' | ${filesize(download.received, 2)} / ${filesize(download.filesize, 2)}';
|
||||
double progress = download.received.toDouble() / download.filesize.toDouble();
|
||||
out += ' ${(progress*100.0).toStringAsFixed(2)}%';
|
||||
}
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
|
|
@ -281,4 +300,63 @@ class DownloadTile extends StatelessWidget {
|
|||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class DownloadLogViewer extends StatefulWidget {
|
||||
@override
|
||||
_DownloadLogViewerState createState() => _DownloadLogViewerState();
|
||||
}
|
||||
|
||||
class _DownloadLogViewerState extends State<DownloadLogViewer> {
|
||||
|
||||
List<String> data = [];
|
||||
|
||||
//Load log from file
|
||||
Future _load() async {
|
||||
String path = p.join((await getExternalStorageDirectory()).path, 'download.log');
|
||||
File file = File(path);
|
||||
if (await file.exists()) {
|
||||
String _d = await file.readAsString();
|
||||
setState(() {
|
||||
data = _d.replaceAll("\r", "").split("\n");
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
//Get color by log type
|
||||
Color color(String line) {
|
||||
if (line.startsWith('E:')) return Colors.red;
|
||||
if (line.startsWith('W:')) return Colors.orange[600];
|
||||
return null;
|
||||
}
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
_load();
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text('Download Log'.i18n),
|
||||
),
|
||||
body: ListView.builder(
|
||||
itemCount: data.length,
|
||||
itemBuilder: (context, i) {
|
||||
return Padding(
|
||||
padding: EdgeInsets.all(8.0),
|
||||
child: Text(
|
||||
data[i],
|
||||
style: TextStyle(
|
||||
fontSize: 14.0,
|
||||
color: color(data[i])
|
||||
),
|
||||
),
|
||||
);
|
||||
},
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue