| 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_header.dart'; | 8 import 'package:sky/widgets/drawer_header.dart'; |
| 9 import 'package:sky/widgets/floating_action_button.dart'; | 9 import 'package:sky/widgets/floating_action_button.dart'; |
| 10 import 'package:sky/widgets/icon.dart'; | 10 import 'package:sky/widgets/icon.dart'; |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 | 24 |
| 25 class HomeFragment extends StatefulComponent { | 25 class HomeFragment extends StatefulComponent { |
| 26 | 26 |
| 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 { | |
| 35 // if (debug) | |
| 36 // new Timer(new Duration(seconds: 1), dumpState); | |
| 37 _drawerController = new DrawerController(_handleDrawerStatusChanged); | |
| 38 super.initState(); | |
| 39 } | |
| 40 | |
| 41 void syncFields(HomeFragment source) { | 34 void syncFields(HomeFragment source) { |
| 42 navigator = source.navigator; | 35 navigator = source.navigator; |
| 43 userData = source.userData; | 36 userData = source.userData; |
| 44 } | 37 } |
| 45 | 38 |
| 46 bool _isShowingSnackBar = false; | 39 bool _isShowingSnackBar = false; |
| 47 bool _isRunning = false; | 40 bool _isRunning = false; |
| 48 | 41 |
| 49 DrawerController _drawerController; | |
| 50 bool _drawerShowing = false; | 42 bool _drawerShowing = false; |
| 51 | 43 |
| 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) { | 44 void _handleFitnessModeChange(FitnessMode value) { |
| 62 setState(() { | 45 setState(() { |
| 63 _fitnessMode = value; | 46 _fitnessMode = value; |
| 64 }); | 47 }); |
| 65 assert(navigator.currentRoute.name == '/drawer'); | |
| 66 navigator.pop(); | |
| 67 } | 48 } |
| 68 | 49 |
| 69 Drawer buildDrawer() { | 50 Drawer buildDrawer() { |
| 70 return new Drawer( | 51 return new Drawer( |
| 71 controller: _drawerController, | 52 showing: _drawerShowing, |
| 72 level: 3, | 53 level: 3, |
| 54 onStatusChange: _handleDrawerStatusChange, |
| 55 navigator: navigator, |
| 73 children: [ | 56 children: [ |
| 74 new DrawerHeader(children: [new Text('Fitness')]), | 57 new DrawerHeader(children: [new Text('Fitness')]), |
| 75 new MenuItem( | 58 new MenuItem( |
| 76 icon: 'action/assessment', | 59 icon: 'action/assessment', |
| 77 onPressed: () => _handleFitnessModeChange(FitnessMode.measure), | 60 onPressed: () => _handleFitnessModeChange(FitnessMode.measure), |
| 78 selected: _fitnessMode == FitnessMode.measure, | 61 selected: _fitnessMode == FitnessMode.measure, |
| 79 children: [new Text('Measure')]), | 62 children: [new Text('Measure')]), |
| 80 new MenuItem( | 63 new MenuItem( |
| 81 icon: 'maps/directions_run', | 64 icon: 'maps/directions_run', |
| 82 onPressed: () => _handleFitnessModeChange(FitnessMode.run), | 65 onPressed: () => _handleFitnessModeChange(FitnessMode.run), |
| 83 selected: _fitnessMode == FitnessMode.run, | 66 selected: _fitnessMode == FitnessMode.run, |
| 84 children: [new Text('Run')]), | 67 children: [new Text('Run')]), |
| 85 new MenuDivider(), | 68 new MenuDivider(), |
| 86 new MenuItem( | 69 new MenuItem( |
| 87 icon: 'action/settings', | 70 icon: 'action/settings', |
| 88 onPressed: _handleShowSettings, | 71 onPressed: _handleShowSettings, |
| 89 children: [new Text('Settings')]), | 72 children: [new Text('Settings')]), |
| 90 new MenuItem( | 73 new MenuItem( |
| 91 icon: 'action/help', | 74 icon: 'action/help', |
| 92 children: [new Text('Help & Feedback')]) | 75 children: [new Text('Help & Feedback')]) |
| 93 ] | 76 ] |
| 94 ); | 77 ); |
| 95 } | 78 } |
| 96 | 79 |
| 80 void _handleDrawerStatusChange(bool showing) { |
| 81 setState(() { |
| 82 _drawerShowing = showing; |
| 83 }); |
| 84 } |
| 85 |
| 97 void _handleShowSettings() { | 86 void _handleShowSettings() { |
| 98 assert(navigator.currentRoute.name == '/drawer'); | |
| 99 navigator.pop(); | 87 navigator.pop(); |
| 100 assert(navigator.currentRoute.name == '/'); | |
| 101 navigator.pushNamed('/settings'); | 88 navigator.pushNamed('/settings'); |
| 102 } | 89 } |
| 103 | 90 |
| 104 void _handleOpenDrawer() { | 91 void _handleOpenDrawer() { |
| 105 _drawerController.open(); | 92 setState(() { |
| 106 navigator.pushState("/drawer", (_) { | 93 _drawerShowing = true; |
| 107 _drawerController.close(); | |
| 108 }); | 94 }); |
| 109 } | 95 } |
| 110 | 96 |
| 111 // TODO(jackson): We should be localizing | 97 // TODO(jackson): We should be localizing |
| 112 String get fitnessModeTitle { | 98 String get fitnessModeTitle { |
| 113 switch(_fitnessMode) { | 99 switch(_fitnessMode) { |
| 114 case FitnessMode.measure: return "Measure"; | 100 case FitnessMode.measure: return "Measure"; |
| 115 case FitnessMode.run: return "Run"; | 101 case FitnessMode.run: return "Run"; |
| 116 } | 102 } |
| 117 } | 103 } |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 196 ); | 182 ); |
| 197 } | 183 } |
| 198 } | 184 } |
| 199 | 185 |
| 200 Widget build() { | 186 Widget build() { |
| 201 return new Scaffold( | 187 return new Scaffold( |
| 202 toolbar: buildToolBar(), | 188 toolbar: buildToolBar(), |
| 203 body: buildBody(), | 189 body: buildBody(), |
| 204 snackBar: buildSnackBar(), | 190 snackBar: buildSnackBar(), |
| 205 floatingActionButton: buildFloatingActionButton(), | 191 floatingActionButton: buildFloatingActionButton(), |
| 206 drawer: _drawerShowing ? buildDrawer() : null | 192 drawer: buildDrawer() |
| 207 ); | 193 ); |
| 208 } | 194 } |
| 209 } | 195 } |
| OLD | NEW |