| Index: sky/examples/stocks-fn/lib/stock_app.dart
|
| diff --git a/sky/examples/stocks-fn/lib/stock_app.dart b/sky/examples/stocks-fn/lib/stock_app.dart
|
| deleted file mode 100644
|
| index 8b6ea059cb3cea7f1182fb13eb3c033fe81b410b..0000000000000000000000000000000000000000
|
| --- a/sky/examples/stocks-fn/lib/stock_app.dart
|
| +++ /dev/null
|
| @@ -1,170 +0,0 @@
|
| -// Copyright 2015 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -import 'package:sky/framework/components/action_bar.dart';
|
| -import 'package:sky/framework/components/drawer.dart';
|
| -import 'package:sky/framework/components/drawer_header.dart';
|
| -import 'package:sky/framework/components/floating_action_button.dart';
|
| -import 'package:sky/framework/components/icon.dart';
|
| -import 'package:sky/framework/components/icon_button.dart';
|
| -import 'package:sky/framework/components/input.dart';
|
| -import 'package:sky/framework/components/menu_divider.dart';
|
| -import 'package:sky/framework/components/menu_item.dart';
|
| -import 'package:sky/framework/components/modal_overlay.dart';
|
| -import 'package:sky/framework/components/popup_menu.dart';
|
| -import 'package:sky/framework/components/scaffold.dart';
|
| -import 'package:sky/framework/debug/tracing.dart';
|
| -import 'package:sky/framework/fn.dart';
|
| -import 'package:sky/framework/theme/typography.dart' as typography;
|
| -import 'package:sky/framework/theme/colors.dart';
|
| -import 'stock_data.dart';
|
| -import 'stock_list.dart';
|
| -import 'stock_menu.dart';
|
| -
|
| -class StocksApp extends App {
|
| - DrawerController _drawerController = new DrawerController();
|
| - PopupMenuController _menuController;
|
| -
|
| - static final Style _actionBarStyle = new Style('''
|
| - background-color: ${Purple[500]};''');
|
| -
|
| - static final Style _searchBarStyle = new Style('''
|
| - background-color: ${Grey[50]};''');
|
| -
|
| - static final Style _titleStyle = new Style('''
|
| - ${typography.white.title};''');
|
| -
|
| - StockDataFetcher _stockDataFetcher;
|
| - List<Stock> _stocks = [];
|
| - bool _isSearching = false;
|
| - bool _isShowingMenu = false;
|
| - String _searchQuery;
|
| -
|
| - StocksApp() : super() {
|
| - _stockDataFetcher = new StockDataFetcher((StockData data) {
|
| - setState(() {
|
| - data.appendTo(_stocks);
|
| - });
|
| - });
|
| - }
|
| -
|
| - void _handleSearchBegin(_) {
|
| - setState(() {
|
| - _isSearching = true;
|
| - });
|
| - }
|
| -
|
| - void _handleSearchEnd(_) {
|
| - setState(() {
|
| - _isSearching = false;
|
| - _searchQuery = null;
|
| - });
|
| - }
|
| -
|
| - void _handleSearchQueryChanged(String query) {
|
| - setState(() {
|
| - _searchQuery = query;
|
| - });
|
| - }
|
| -
|
| - void _handleMenuShow(_) {
|
| - setState(() {
|
| - _menuController = new PopupMenuController();
|
| - _menuController.open();
|
| - });
|
| - }
|
| -
|
| - void _handleMenuHide(_) {
|
| - setState(() {
|
| - _menuController.close().then((_) {
|
| - setState(() {
|
| - _menuController = null;
|
| - });
|
| - });
|
| - });
|
| - }
|
| -
|
| - Drawer buildDrawer() {
|
| - return new Drawer(
|
| - controller: _drawerController,
|
| - level: 3,
|
| - children: [
|
| - new DrawerHeader(children: [new Text('Stocks')]),
|
| - new MenuItem(
|
| - key: 'Inbox',
|
| - icon: 'content/inbox',
|
| - children: [new Text('Inbox')]),
|
| - new MenuDivider(),
|
| - new MenuItem(
|
| - key: 'Drafts',
|
| - icon: 'content/drafts',
|
| - children: [new Text('Drafts')]),
|
| - new MenuItem(
|
| - key: 'Settings',
|
| - icon: 'action/settings',
|
| - children: [new Text('Settings')]),
|
| - new MenuItem(
|
| - key: 'Help & Feedback',
|
| - icon: 'action/help',
|
| - children: [new Text('Help & Feedback')])
|
| - ]
|
| - );
|
| - }
|
| -
|
| - Node buildActionBar() {
|
| - return new StyleNode(
|
| - new ActionBar(
|
| - left: new IconButton(
|
| - icon: 'navigation/menu_white',
|
| - onGestureTap: _drawerController.toggle),
|
| - center: new Container(
|
| - style: _titleStyle,
|
| - children: [new Text('Stocks')]),
|
| - right: [
|
| - new IconButton(
|
| - icon: 'action/search_white',
|
| - onGestureTap: _handleSearchBegin),
|
| - new IconButton(
|
| - icon: 'navigation/more_vert_white',
|
| - onGestureTap: _handleMenuShow)
|
| - ]),
|
| - _actionBarStyle);
|
| - }
|
| -
|
| - // TODO(abarth): Should we factor this into a SearchBar in the framework?
|
| - Node buildSearchBar() {
|
| - return new StyleNode(
|
| - new ActionBar(
|
| - left: new IconButton(
|
| - icon: 'navigation/arrow_back_grey600',
|
| - onGestureTap: _handleSearchEnd),
|
| - center: new Input(
|
| - focused: true,
|
| - placeholder: 'Search stocks',
|
| - onChanged: _handleSearchQueryChanged)),
|
| - _searchBarStyle);
|
| - }
|
| -
|
| - void addMenuToOverlays(List<Node> overlays) {
|
| - if (_menuController == null)
|
| - return;
|
| - overlays.add(new ModalOverlay(
|
| - children: [new StockMenu(controller: _menuController)],
|
| - onDismiss: _handleMenuHide));
|
| - }
|
| -
|
| - Node build() {
|
| - List<Node> overlays = [];
|
| - addMenuToOverlays(overlays);
|
| -
|
| - return new Scaffold(
|
| - header: _isSearching ? buildSearchBar() : buildActionBar(),
|
| - content: new Stocklist(stocks: _stocks, query: _searchQuery),
|
| - fab: new FloatingActionButton(
|
| - content: new Icon(type: 'content/add_white', size: 24), level: 3),
|
| - drawer: buildDrawer(),
|
| - overlays: overlays
|
| - );
|
| - }
|
| -}
|
|
|