toolheim/mobile-app/lib/screens/settings_screen.dart

99 lines
3.5 KiB
Dart
Raw Normal View History

2019-07-10 14:16:13 +02:00
import 'package:flutter/material.dart';
import 'package:preferences/preferences.dart';
2019-07-25 16:44:51 +02:00
import 'package:provider/provider.dart';
import 'package:toolheim/data/github_adapter.dart';
2019-07-10 14:16:13 +02:00
class SettingsScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
2019-07-25 16:44:51 +02:00
GitHubAdapter github = Provider.of<GitHubAdapter>(context);
2019-08-08 20:15:06 +02:00
//String _repository = 'Labernator/Mordheim';
//String _path = 'Mordheim-BorderTownBurning/Warband Rosters';
2019-07-10 14:16:13 +02:00
return Scaffold(
appBar: AppBar(title: Text('Settings')),
body: PreferencePage([
PreferenceTitle('GitHub'),
PreferenceText(
'Provide a valid GitHub repository with username and project (username/repository-name). This repository must contain warband roster files in subfolders. See the sample project for a kickstart.'),
2019-08-08 20:15:06 +02:00
TextFieldPreference(
'Repository',
'repository',
defaultVal: 'f0086/toolheim-example',
),
PreferenceText(
'If your warband folders are placed in a subfolder, you can specify it here.'),
2019-08-08 20:15:06 +02:00
TextFieldPreference('Path', 'path', defaultVal: '/players'),
2019-07-25 16:44:51 +02:00
PreferenceTitle('Search for Warbands'),
PreferenceText(
'Search the given GitHub repository for valid Warband files (ending with .warband.yml). This step can be done at any time.'),
FlatButton(
2019-08-07 14:55:33 +02:00
onPressed: () async {
showSyncWaitingDialog(context);
await github.search();
Navigator.of(context, rootNavigator: true).pop();
if (github.syncErrors.length > 0) {
showErrorDialog(context, github);
}
2019-07-25 16:44:51 +02:00
},
child:
Text('Start search', style: TextStyle(color: Colors.blue))),
]));
2019-07-10 14:16:13 +02:00
}
2019-07-25 16:44:51 +02:00
2019-08-01 00:05:42 +02:00
static Widget buildSyncErrors(BuildContext context) {
2019-07-25 16:44:51 +02:00
GitHubAdapter github = Provider.of<GitHubAdapter>(context);
2019-08-02 00:21:41 +02:00
return Column(children: [
for (var error in github.syncErrors)
Text(error, style: TextStyle(color: Colors.red))
]);
2019-07-25 16:44:51 +02:00
}
2019-08-07 14:55:33 +02:00
void showErrorDialog(context, github) {
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: Text('Errors'),
content:
Column(mainAxisSize: MainAxisSize.min, children: <Widget>[
Text("We've got some errors while searching for warbands"),
SizedBox(
height: 50,
),
buildSyncErrors(context),
]),
actions: <Widget>[
FlatButton(
child: Text('Close', style: TextStyle(color: Colors.blue)),
onPressed: () {
github.syncErrors.clear();
Navigator.of(context, rootNavigator: true).pop();
},
)
]);
});
}
void showSyncWaitingDialog(context) {
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: Text('Search warbands ...'),
content: Column(mainAxisSize: MainAxisSize.min, children: <Widget>[
Text(
'Checking the GitHub repository for suitable files. This can take a while ...'),
SizedBox(
height: 50,
),
CircularProgressIndicator(),
]),
);
});
}
2019-07-10 14:16:13 +02:00
}