Commit efe36a68 authored by Collin Jackson's avatar Collin Jackson

Add a confirmation dialog to stock app Settings page and style it by default

R=ianh@google.com, abarth, hixie

Review URL: https://codereview.chromium.org/1201273002.
parent 6a858a94
...@@ -5,11 +5,12 @@ ...@@ -5,11 +5,12 @@
import 'package:sky/theme/colors.dart' as colors; import 'package:sky/theme/colors.dart' as colors;
import 'package:sky/widgets/basic.dart'; import 'package:sky/widgets/basic.dart';
import 'package:sky/widgets/checkbox.dart'; import 'package:sky/widgets/checkbox.dart';
import 'package:sky/widgets/flat_button.dart';
import 'package:sky/widgets/dialog.dart';
import 'package:sky/widgets/icon_button.dart'; import 'package:sky/widgets/icon_button.dart';
import 'package:sky/widgets/menu_item.dart'; import 'package:sky/widgets/menu_item.dart';
import 'package:sky/widgets/navigator.dart'; import 'package:sky/widgets/navigator.dart';
import 'package:sky/widgets/scaffold.dart'; import 'package:sky/widgets/scaffold.dart';
import 'package:sky/widgets/theme.dart';
import 'package:sky/widgets/tool_bar.dart'; import 'package:sky/widgets/tool_bar.dart';
import 'stock_types.dart'; import 'stock_types.dart';
...@@ -23,6 +24,7 @@ class StockSettings extends Component { ...@@ -23,6 +24,7 @@ class StockSettings extends Component {
Navigator navigator; Navigator navigator;
StockMode stockMode; StockMode stockMode;
SettingsUpdater updater; SettingsUpdater updater;
bool showModeDialog = false;
void syncFields(StockSettings source) { void syncFields(StockSettings source) {
navigator = source.navigator; navigator = source.navigator;
...@@ -37,6 +39,20 @@ class StockSettings extends Component { ...@@ -37,6 +39,20 @@ class StockSettings extends Component {
sendUpdates(); sendUpdates();
} }
void _confirmStockModeChange() {
switch (stockMode) {
case StockMode.optimistic:
_handleStockModeChanged(false);
break;
case StockMode.pessimistic:
showModeDialog = true;
navigator.pushState("/settings/confirm", (_) {
showModeDialog = false;
});
break;
}
}
void sendUpdates() { void sendUpdates() {
if (updater != null) if (updater != null)
updater( updater(
...@@ -49,7 +65,7 @@ class StockSettings extends Component { ...@@ -49,7 +65,7 @@ class StockSettings extends Component {
left: new IconButton( left: new IconButton(
icon: 'navigation/arrow_back_white', icon: 'navigation/arrow_back_white',
onPressed: navigator.pop), onPressed: navigator.pop),
center: new Text('Settings', style: Theme.of(this).text.title) center: new Text('Settings')
); );
} }
...@@ -60,7 +76,7 @@ class StockSettings extends Component { ...@@ -60,7 +76,7 @@ class StockSettings extends Component {
child: new Block([ child: new Block([
new MenuItem( new MenuItem(
icon: 'action/thumb_up', icon: 'action/thumb_up',
onPressed: () => _handleStockModeChanged(stockMode == StockMode.optimistic ? false : true), onPressed: () => _confirmStockModeChange(),
children: [ children: [
new Flexible(child: new Text('Everything is awesome')), new Flexible(child: new Text('Everything is awesome')),
new Checkbox(value: stockMode == StockMode.optimistic, onChanged: _handleStockModeChanged) new Checkbox(value: stockMode == StockMode.optimistic, onChanged: _handleStockModeChanged)
...@@ -71,9 +87,30 @@ class StockSettings extends Component { ...@@ -71,9 +87,30 @@ class StockSettings extends Component {
} }
Widget build() { Widget build() {
return new Scaffold( List<Widget> layers = [new Scaffold(
toolbar: buildToolBar(), toolbar: buildToolBar(),
body: buildSettingsPane() body: buildSettingsPane()
); )];
if (showModeDialog) {
layers.add(new Dialog(
title: new Text("Change mode?"),
content: new Text("Optimistic mode means everything is awesome. Are you sure you can handle that?"),
onDismiss: navigator.pop,
actions: [
new FlatButton(
child: new Text('NO THANKS'),
onPressed: navigator.pop
),
new FlatButton(
child: new Text('AGREE'),
onPressed: () {
_handleStockModeChanged(true);
navigator.pop();
}
),
]
));
}
return new Stack(layers);
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment