| 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/editing2/input.dart'; | 5 import 'package:sky/editing2/input.dart'; |
| 6 import 'package:sky/theme2/colors.dart' as colors; | 6 import 'package:sky/theme2/colors.dart' as colors; |
| 7 import 'package:sky/theme2/typography.dart' as typography; | 7 import 'package:sky/theme2/typography.dart' as typography; |
| 8 import 'package:sky/widgets/basic.dart'; | 8 import 'package:sky/widgets/basic.dart'; |
| 9 import 'package:sky/widgets/drawer.dart'; | 9 import 'package:sky/widgets/drawer.dart'; |
| 10 import 'package:sky/widgets/drawer_header.dart'; | 10 import 'package:sky/widgets/drawer_header.dart'; |
| (...skipping 28 matching lines...) Expand all Loading... |
| 39 }); | 39 }); |
| 40 _drawerController = new DrawerController(_handleDrawerStatusChanged); | 40 _drawerController = new DrawerController(_handleDrawerStatusChanged); |
| 41 } | 41 } |
| 42 | 42 |
| 43 List<Stock> _stocks = []; | 43 List<Stock> _stocks = []; |
| 44 Navigator _navigator; | 44 Navigator _navigator; |
| 45 | 45 |
| 46 bool _isSearching = false; | 46 bool _isSearching = false; |
| 47 String _searchQuery; | 47 String _searchQuery; |
| 48 | 48 |
| 49 void _handleSearchBegin(_) { | 49 void _handleSearchBegin() { |
| 50 setState(() { | 50 setState(() { |
| 51 _isSearching = true; | 51 _isSearching = true; |
| 52 }); | 52 }); |
| 53 } | 53 } |
| 54 | 54 |
| 55 void _handleSearchEnd(_) { | 55 void _handleSearchEnd() { |
| 56 setState(() { | 56 setState(() { |
| 57 _isSearching = false; | 57 _isSearching = false; |
| 58 _searchQuery = null; | 58 _searchQuery = null; |
| 59 }); | 59 }); |
| 60 } | 60 } |
| 61 | 61 |
| 62 void _handleSearchQueryChanged(String query) { | 62 void _handleSearchQueryChanged(String query) { |
| 63 setState(() { | 63 setState(() { |
| 64 _searchQuery = query; | 64 _searchQuery = query; |
| 65 }); | 65 }); |
| 66 } | 66 } |
| 67 | 67 |
| 68 DrawerController _drawerController; | 68 DrawerController _drawerController; |
| 69 bool _drawerShowing = false; | 69 bool _drawerShowing = false; |
| 70 | 70 |
| 71 void _handleDrawerStatusChanged(bool showing) { | 71 void _handleDrawerStatusChanged(bool showing) { |
| 72 setState(() { | 72 setState(() { |
| 73 _drawerShowing = showing; | 73 _drawerShowing = showing; |
| 74 }); | 74 }); |
| 75 } | 75 } |
| 76 | 76 |
| 77 PopupMenuController _menuController; | 77 PopupMenuController _menuController; |
| 78 | 78 |
| 79 void _handleMenuShow(_) { | 79 void _handleMenuShow() { |
| 80 setState(() { | 80 setState(() { |
| 81 _menuController = new PopupMenuController(); | 81 _menuController = new PopupMenuController(); |
| 82 _menuController.open(); | 82 _menuController.open(); |
| 83 }); | 83 }); |
| 84 } | 84 } |
| 85 | 85 |
| 86 void _handleMenuHide(_) { | 86 void _handleMenuHide() { |
| 87 setState(() { | 87 setState(() { |
| 88 _menuController.close().then((_) { | 88 _menuController.close().then((_) { |
| 89 setState(() { | 89 setState(() { |
| 90 _menuController = null; | 90 _menuController = null; |
| 91 }); | 91 }); |
| 92 }); | 92 }); |
| 93 }); | 93 }); |
| 94 } | 94 } |
| 95 | 95 |
| 96 bool _autorefresh = false; | 96 bool _autorefresh = false; |
| (...skipping 21 matching lines...) Expand all Loading... |
| 118 icon: 'action/assessment', | 118 icon: 'action/assessment', |
| 119 children: [new Text('Stock List')]), | 119 children: [new Text('Stock List')]), |
| 120 new MenuItem( | 120 new MenuItem( |
| 121 key: 'Account Balance', | 121 key: 'Account Balance', |
| 122 icon: 'action/account_balance', | 122 icon: 'action/account_balance', |
| 123 children: [new Text('Account Balance')]), | 123 children: [new Text('Account Balance')]), |
| 124 new MenuDivider(key: 'div1'), | 124 new MenuDivider(key: 'div1'), |
| 125 new MenuItem( | 125 new MenuItem( |
| 126 key: 'Optimistic Menu Item', | 126 key: 'Optimistic Menu Item', |
| 127 icon: 'action/thumb_up', | 127 icon: 'action/thumb_up', |
| 128 onGestureTap: (event) => _handleStockModeChange(StockMode.optimistic), | 128 onPressed: () => _handleStockModeChange(StockMode.optimistic), |
| 129 children: [ | 129 children: [ |
| 130 new Flexible(child: new Text('Optimistic')), | 130 new Flexible(child: new Text('Optimistic')), |
| 131 new Radio(key: 'optimistic-radio', value: StockMode.optimistic, grou
pValue: _stockMode, onChanged: _handleStockModeChange) | 131 new Radio(key: 'optimistic-radio', value: StockMode.optimistic, grou
pValue: _stockMode, onChanged: _handleStockModeChange) |
| 132 ]), | 132 ]), |
| 133 new MenuItem( | 133 new MenuItem( |
| 134 key: 'Pessimistic Menu Item', | 134 key: 'Pessimistic Menu Item', |
| 135 icon: 'action/thumb_down', | 135 icon: 'action/thumb_down', |
| 136 onGestureTap: (event) => _handleStockModeChange(StockMode.pessimistic)
, | 136 onPressed: () => _handleStockModeChange(StockMode.pessimistic), |
| 137 children: [ | 137 children: [ |
| 138 new Flexible(child: new Text('Pessimistic')), | 138 new Flexible(child: new Text('Pessimistic')), |
| 139 new Radio(key: 'pessimistic-radio', value: StockMode.pessimistic, gr
oupValue: _stockMode, onChanged: _handleStockModeChange) | 139 new Radio(key: 'pessimistic-radio', value: StockMode.pessimistic, gr
oupValue: _stockMode, onChanged: _handleStockModeChange) |
| 140 ]), | 140 ]), |
| 141 new MenuDivider(key: 'div2'), | 141 new MenuDivider(key: 'div2'), |
| 142 new MenuItem( | 142 new MenuItem( |
| 143 key: 'Settings', | 143 key: 'Settings', |
| 144 icon: 'action/settings', | 144 icon: 'action/settings', |
| 145 onGestureTap: (event) => _navigator.pushNamed('/settings'), | 145 onPressed: () => _navigator.pushNamed('/settings'), |
| 146 children: [new Text('Settings')]), | 146 children: [new Text('Settings')]), |
| 147 new MenuItem( | 147 new MenuItem( |
| 148 key: 'Help & Feedback', | 148 key: 'Help & Feedback', |
| 149 icon: 'action/help', | 149 icon: 'action/help', |
| 150 children: [new Text('Help & Feedback')]) | 150 children: [new Text('Help & Feedback')]) |
| 151 ] | 151 ] |
| 152 ); | 152 ); |
| 153 } | 153 } |
| 154 | 154 |
| 155 Widget buildToolBar() { | 155 Widget buildToolBar() { |
| 156 return new ToolBar( | 156 return new ToolBar( |
| 157 left: new IconButton( | 157 left: new IconButton( |
| 158 icon: 'navigation/menu_white', | 158 icon: 'navigation/menu_white', |
| 159 onGestureTap: (_) => _drawerController.toggle()), | 159 onPressed: _drawerController.toggle), |
| 160 center: new Text('Stocks', style: typography.white.title), | 160 center: new Text('Stocks', style: typography.white.title), |
| 161 right: [ | 161 right: [ |
| 162 new IconButton( | 162 new IconButton( |
| 163 icon: 'action/search_white', | 163 icon: 'action/search_white', |
| 164 onGestureTap: _handleSearchBegin), | 164 onPressed: _handleSearchBegin), |
| 165 new IconButton( | 165 new IconButton( |
| 166 icon: 'navigation/more_vert_white', | 166 icon: 'navigation/more_vert_white', |
| 167 onGestureTap: _handleMenuShow) | 167 onPressed: _handleMenuShow) |
| 168 ], | 168 ], |
| 169 backgroundColor: colors.Purple[500] | 169 backgroundColor: colors.Purple[500] |
| 170 ); | 170 ); |
| 171 } | 171 } |
| 172 | 172 |
| 173 // TODO(abarth): Should we factor this into a SearchBar in the framework? | 173 // TODO(abarth): Should we factor this into a SearchBar in the framework? |
| 174 Widget buildSearchBar() { | 174 Widget buildSearchBar() { |
| 175 return new ToolBar( | 175 return new ToolBar( |
| 176 left: new IconButton( | 176 left: new IconButton( |
| 177 icon: 'navigation/arrow_back_grey600', | 177 icon: 'navigation/arrow_back_grey600', |
| 178 onGestureTap: _handleSearchEnd), | 178 onPressed: _handleSearchEnd), |
| 179 center: new Input( | 179 center: new Input( |
| 180 focused: true, | 180 focused: true, |
| 181 placeholder: 'Search stocks', | 181 placeholder: 'Search stocks', |
| 182 onChanged: _handleSearchQueryChanged), | 182 onChanged: _handleSearchQueryChanged), |
| 183 backgroundColor: colors.Grey[50] | 183 backgroundColor: colors.Grey[50] |
| 184 ); | 184 ); |
| 185 } | 185 } |
| 186 | 186 |
| 187 void addMenuToOverlays(List<Widget> overlays) { | 187 void addMenuToOverlays(List<Widget> overlays) { |
| 188 if (_menuController == null) | 188 if (_menuController == null) |
| (...skipping 15 matching lines...) Expand all Loading... |
| 204 floatingActionButton: new FloatingActionButton( | 204 floatingActionButton: new FloatingActionButton( |
| 205 child: new Icon(type: 'content/add_white', size: 24) | 205 child: new Icon(type: 'content/add_white', size: 24) |
| 206 ), | 206 ), |
| 207 drawer: _drawerShowing ? buildDrawer() : null | 207 drawer: _drawerShowing ? buildDrawer() : null |
| 208 ), | 208 ), |
| 209 ]; | 209 ]; |
| 210 addMenuToOverlays(overlays); | 210 addMenuToOverlays(overlays); |
| 211 return new Stack(overlays); | 211 return new Stack(overlays); |
| 212 } | 212 } |
| 213 } | 213 } |
| OLD | NEW |