增加模块状态指示器

This commit is contained in:
xkeyC 2024-02-24 17:55:03 +08:00
parent ca2f584f20
commit a6a086fea3
2 changed files with 37 additions and 10 deletions

View File

@ -2,6 +2,7 @@ import 'package:file_sizes/file_sizes.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
import 'package:starcitizen_doctor/base/ui.dart'; import 'package:starcitizen_doctor/base/ui.dart';
import 'package:starcitizen_doctor/base/ui_model.dart'; import 'package:starcitizen_doctor/base/ui_model.dart';
import 'package:starcitizen_doctor/common/io/aria2c.dart';
import 'downloads_ui_model.dart'; import 'downloads_ui_model.dart';
@ -12,19 +13,22 @@ class DownloadsUI extends BaseUI<DownloadsUIModel> {
Widget? buildBody(BuildContext context, DownloadsUIModel model) { Widget? buildBody(BuildContext context, DownloadsUIModel model) {
return makeDefaultPage(context, model, return makeDefaultPage(context, model,
content: Column( content: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
const SizedBox(height: 12), const SizedBox(height: 12),
Row( Row(
children: [ children: [
const Spacer(), const Spacer(),
const SizedBox(width: 24), const SizedBox(width: 24),
const SizedBox(width: 12),
for (final item in <MapEntry<String, IconData>, String>{ for (final item in <MapEntry<String, IconData>, String>{
const MapEntry("settings", FluentIcons.settings): "限速设置", const MapEntry("settings", FluentIcons.settings): "限速设置",
if (model.tasks.isNotEmpty) if (model.tasks.isNotEmpty)
const MapEntry("pause_all", FluentIcons.pause): "暂停全部" const MapEntry("pause_all", FluentIcons.pause): "全部暂停",
else if (model.waitingTasks.isNotEmpty)
const MapEntry("resume_all", FluentIcons.download): "恢复全部", const MapEntry("resume_all", FluentIcons.download): "恢复全部",
const MapEntry("cancel_all", FluentIcons.cancel): "取消全部", if (model.tasks.isNotEmpty || model.waitingTasks.isNotEmpty)
const MapEntry("cancel_all", FluentIcons.cancel): "全部取消",
}.entries) }.entries)
Padding( Padding(
padding: const EdgeInsets.only(left: 6, right: 6), padding: const EdgeInsets.only(left: 6, right: 6),
@ -79,11 +83,6 @@ class DownloadsUI extends BaseUI<DownloadsUIModel> {
fontSize: 24, fontSize: 24,
fontWeight: FontWeight.bold), fontWeight: FontWeight.bold),
), ),
if (type == "active")
Text(
"下载: ${FileSize.getSize(model.globalStat?.downloadSpeed ?? 0)}/s 上传:${FileSize.getSize(model.globalStat?.uploadSpeed ?? 0)}/s",
style: const TextStyle(fontSize: 13),
),
], ],
)), )),
], ],
@ -213,7 +212,32 @@ class DownloadsUI extends BaseUI<DownloadsUIModel> {
); );
}, },
itemCount: model.getTasksLen(), itemCount: model.getTasksLen(),
)) )),
Container(
color: FluentTheme.of(context).cardColor.withOpacity(.06),
child: Padding(
padding: const EdgeInsets.only(left: 12, bottom: 3, top: 3),
child: Row(
children: [
Container(
width: 8,
height: 8,
decoration: BoxDecoration(
color: Aria2cManager.isAvailable
? Colors.green
: Colors.white,
borderRadius: BorderRadius.circular(1000),
),
),
const SizedBox(width: 12),
Text(
"下载: ${FileSize.getSize(model.globalStat?.downloadSpeed ?? 0)}/s 上传:${FileSize.getSize(model.globalStat?.uploadSpeed ?? 0)}/s",
style: const TextStyle(fontSize: 12),
)
],
),
),
),
], ],
)); ));
} }

View File

@ -39,11 +39,12 @@ class DownloadsUIModel extends BaseUIModel {
case "pause_all": case "pause_all":
if (!Aria2cManager.isAvailable) return; if (!Aria2cManager.isAvailable) return;
await Aria2cManager.getClient().pauseAll(); await Aria2cManager.getClient().pauseAll();
await Aria2cManager.getClient().saveSession();
return; return;
case "resume_all": case "resume_all":
if (!Aria2cManager.isAvailable) return; if (!Aria2cManager.isAvailable) return;
await Aria2cManager.getClient().unpauseAll(); await Aria2cManager.getClient().unpauseAll();
await Aria2cManager.getClient().saveSession();
return; return;
case "cancel_all": case "cancel_all":
final userOK = await showConfirmDialogs( final userOK = await showConfirmDialogs(
@ -54,6 +55,7 @@ class DownloadsUIModel extends BaseUIModel {
for (var value in [...tasks, ...waitingTasks]) { for (var value in [...tasks, ...waitingTasks]) {
await Aria2cManager.getClient().remove(value.gid!); await Aria2cManager.getClient().remove(value.gid!);
} }
await Aria2cManager.getClient().saveSession();
} catch (e) { } catch (e) {
dPrint("DownloadsUIModel cancel_all Error: $e"); dPrint("DownloadsUIModel cancel_all Error: $e");
} }
@ -241,6 +243,7 @@ class DownloadsUIModel extends BaseUIModel {
if (r != null) { if (r != null) {
await box.put('downloader_up_limit', upCtrl.text.trim()); await box.put('downloader_up_limit', upCtrl.text.trim());
await box.put('downloader_down_limit', downCtrl.text.trim()); await box.put('downloader_down_limit', downCtrl.text.trim());
notifyListeners();
} }
} }
} }