| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 import 'package:sky/painting/text_style.dart'; | 5 import 'package:sky/painting/text_style.dart'; |
| 6 import 'package:sky/widgets/basic.dart'; | 6 import 'package:sky/widgets/basic.dart'; |
| 7 import 'package:sky/widgets/drawer.dart'; | 7 import 'package:sky/widgets/drawer.dart'; |
| 8 import 'package:sky/widgets/drawer_divider.dart'; | 8 import 'package:sky/widgets/drawer_divider.dart'; |
| 9 import 'package:sky/widgets/drawer_header.dart'; | 9 import 'package:sky/widgets/drawer_header.dart'; |
| 10 import 'package:sky/widgets/drawer_item.dart'; | 10 import 'package:sky/widgets/drawer_item.dart'; |
| (...skipping 16 matching lines...) Expand all Loading... |
| 27 HomeFragment(this.navigator, this.userData); | 27 HomeFragment(this.navigator, this.userData); |
| 28 | 28 |
| 29 Navigator navigator; | 29 Navigator navigator; |
| 30 List<Measurement> userData; | 30 List<Measurement> userData; |
| 31 | 31 |
| 32 FitnessMode _fitnessMode = FitnessMode.measure; | 32 FitnessMode _fitnessMode = FitnessMode.measure; |
| 33 | 33 |
| 34 void initState() { | 34 void initState() { |
| 35 // if (debug) | 35 // if (debug) |
| 36 // new Timer(new Duration(seconds: 1), dumpState); | 36 // new Timer(new Duration(seconds: 1), dumpState); |
| 37 _drawerController = new DrawerController(_handleDrawerStatusChanged); | |
| 38 super.initState(); | 37 super.initState(); |
| 39 } | 38 } |
| 40 | 39 |
| 41 void syncFields(HomeFragment source) { | 40 void syncFields(HomeFragment source) { |
| 42 navigator = source.navigator; | 41 navigator = source.navigator; |
| 43 userData = source.userData; | 42 userData = source.userData; |
| 44 } | 43 } |
| 45 | 44 |
| 46 bool _isShowingSnackBar = false; | 45 bool _isShowingSnackBar = false; |
| 47 bool _isRunning = false; | 46 bool _isRunning = false; |
| 48 | 47 |
| 49 DrawerController _drawerController; | |
| 50 bool _drawerShowing = false; | |
| 51 | |
| 52 void _handleDrawerStatusChanged(bool showing) { | |
| 53 if (!showing && navigator.currentRoute.name == "/drawer") { | |
| 54 navigator.pop(); | |
| 55 } | |
| 56 setState(() { | |
| 57 _drawerShowing = showing; | |
| 58 }); | |
| 59 } | |
| 60 | |
| 61 void _handleFitnessModeChange(FitnessMode value) { | 48 void _handleFitnessModeChange(FitnessMode value) { |
| 62 setState(() { | 49 setState(() { |
| 63 _fitnessMode = value; | 50 _fitnessMode = value; |
| 64 }); | 51 }); |
| 65 assert(navigator.currentRoute.name == '/drawer'); | |
| 66 navigator.pop(); | |
| 67 } | 52 } |
| 68 | 53 |
| 69 Drawer buildDrawer() { | 54 Drawer buildDrawer() { |
| 55 if (_drawerStatus == DrawerStatus.inactive) |
| 56 return null; |
| 70 return new Drawer( | 57 return new Drawer( |
| 71 controller: _drawerController, | 58 showing: _drawerShowing, |
| 72 level: 3, | 59 level: 3, |
| 60 onStatusChanged: _handleDrawerStatusChange, |
| 61 navigator: navigator, |
| 73 children: [ | 62 children: [ |
| 74 new DrawerHeader(children: [new Text('Fitness')]), | 63 new DrawerHeader(children: [new Text('Fitness')]), |
| 75 new DrawerItem( | 64 new DrawerItem( |
| 76 icon: 'action/assessment', | 65 icon: 'action/assessment', |
| 77 onPressed: () => _handleFitnessModeChange(FitnessMode.measure), | 66 onPressed: () => _handleFitnessModeChange(FitnessMode.measure), |
| 78 selected: _fitnessMode == FitnessMode.measure, | 67 selected: _fitnessMode == FitnessMode.measure, |
| 79 children: [new Text('Measure')]), | 68 children: [new Text('Measure')]), |
| 80 new DrawerItem( | 69 new DrawerItem( |
| 81 icon: 'maps/directions_run', | 70 icon: 'maps/directions_run', |
| 82 onPressed: () => _handleFitnessModeChange(FitnessMode.run), | 71 onPressed: () => _handleFitnessModeChange(FitnessMode.run), |
| 83 selected: _fitnessMode == FitnessMode.run, | 72 selected: _fitnessMode == FitnessMode.run, |
| 84 children: [new Text('Run')]), | 73 children: [new Text('Run')]), |
| 85 new DrawerDivider(), | 74 new DrawerDivider(), |
| 86 new DrawerItem( | 75 new DrawerItem( |
| 87 icon: 'action/settings', | 76 icon: 'action/settings', |
| 88 onPressed: _handleShowSettings, | 77 onPressed: _handleShowSettings, |
| 89 children: [new Text('Settings')]), | 78 children: [new Text('Settings')]), |
| 90 new DrawerItem( | 79 new DrawerItem( |
| 91 icon: 'action/help', | 80 icon: 'action/help', |
| 92 children: [new Text('Help & Feedback')]) | 81 children: [new Text('Help & Feedback')]) |
| 93 ] | 82 ] |
| 94 ); | 83 ); |
| 95 } | 84 } |
| 96 | 85 |
| 97 void _handleShowSettings() { | 86 bool _drawerShowing = false; |
| 98 assert(navigator.currentRoute.name == '/drawer'); | 87 DrawerStatus _drawerStatus = DrawerStatus.inactive; |
| 99 navigator.pop(); | 88 |
| 100 assert(navigator.currentRoute.name == '/'); | 89 void _handleOpenDrawer() { |
| 101 navigator.pushNamed('/settings'); | 90 setState(() { |
| 91 _drawerShowing = true; |
| 92 _drawerStatus = DrawerStatus.active; |
| 93 }); |
| 102 } | 94 } |
| 103 | 95 |
| 104 void _handleOpenDrawer() { | 96 void _handleDrawerStatusChange(DrawerStatus status) { |
| 105 _drawerController.open(); | 97 if (status == DrawerStatus.inactive && navigator.currentRoute.name == "/draw
er") { |
| 106 navigator.pushState("/drawer", (_) { | 98 navigator.pop(); |
| 107 _drawerController.close(); | 99 } |
| 100 setState(() { |
| 101 _drawerStatus = status; |
| 108 }); | 102 }); |
| 109 } | 103 } |
| 110 | 104 |
| 105 void _handleShowSettings() { |
| 106 navigator.pop(); |
| 107 navigator.pushNamed('/settings'); |
| 108 } |
| 109 |
| 111 // TODO(jackson): We should be localizing | 110 // TODO(jackson): We should be localizing |
| 112 String get fitnessModeTitle { | 111 String get fitnessModeTitle { |
| 113 switch(_fitnessMode) { | 112 switch(_fitnessMode) { |
| 114 case FitnessMode.measure: return "Measure"; | 113 case FitnessMode.measure: return "Measure"; |
| 115 case FitnessMode.run: return "Run"; | 114 case FitnessMode.run: return "Run"; |
| 116 } | 115 } |
| 117 } | 116 } |
| 118 | 117 |
| 119 Widget buildToolBar() { | 118 Widget buildToolBar() { |
| 120 return new ToolBar( | 119 return new ToolBar( |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 196 ); | 195 ); |
| 197 } | 196 } |
| 198 } | 197 } |
| 199 | 198 |
| 200 Widget build() { | 199 Widget build() { |
| 201 return new Scaffold( | 200 return new Scaffold( |
| 202 toolbar: buildToolBar(), | 201 toolbar: buildToolBar(), |
| 203 body: buildBody(), | 202 body: buildBody(), |
| 204 snackBar: buildSnackBar(), | 203 snackBar: buildSnackBar(), |
| 205 floatingActionButton: buildFloatingActionButton(), | 204 floatingActionButton: buildFloatingActionButton(), |
| 206 drawer: _drawerShowing ? buildDrawer() : null | 205 drawer: buildDrawer() |
| 207 ); | 206 ); |
| 208 } | 207 } |
| 209 } | 208 } |
| OLD | NEW |