| <?xml version="1.0" encoding="utf-8"?> |
| <!-- |
| |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| |
| --> |
| <!-- Christophe Coenraets, http://coenraets.org --> |
| <s:View xmlns:fx="http://ns.adobe.com/mxml/2009" |
| xmlns:s="library://ns.adobe.com/flex/spark" |
| xmlns:charts="charts.*" |
| width="100%" height="100%" |
| creationComplete="creationComplete()" |
| viewActivate="activateHandler()" |
| viewDeactivate="deactivateHandler()"> |
| |
| |
| <fx:Script> |
| <![CDATA[ |
| import controller.Feed; |
| |
| import mx.core.FlexGlobals; |
| |
| [Bindable] |
| [Embed("assets/up.png")] |
| protected var iconUp:Class; |
| |
| [Bindable] |
| [Embed("assets/down.png")] |
| protected var iconDown:Class; |
| |
| protected var feed:Feed; |
| |
| protected function creationComplete():void |
| { |
| feed = FlexGlobals.topLevelApplication.feed; |
| } |
| |
| protected function activateHandler():void |
| { |
| feed.subscribe(); |
| } |
| |
| protected function deactivateHandler():void |
| { |
| feed.unsubscribe(); |
| } |
| |
| override public function setCurrentState(stateName:String, playTransition:Boolean=true):void |
| { |
| if (stateName == "landscape") |
| { |
| if (FlexGlobals.topLevelApplication.height<500) |
| super.setCurrentState("landscapeSmall", playTransition); |
| else if (FlexGlobals.topLevelApplication.height<600) |
| super.setCurrentState("landscapeMedium", playTransition); |
| else |
| super.setCurrentState("landscapeLarge", playTransition); |
| } |
| else |
| { |
| super.setCurrentState(stateName, playTransition); |
| } |
| } |
| |
| ]]> |
| </fx:Script> |
| |
| <s:states> |
| <s:State name="portrait"/> |
| <s:State name="landscape"/> |
| <s:State name="landscapeSmall"/> |
| <s:State name="landscapeMedium"/> |
| <s:State name="landscapeLarge"/> |
| </s:states> |
| |
| <fx:Declarations> |
| <s:NumberFormatter id="nf" fractionalDigits="2" trailingZeros="true"/> |
| </fx:Declarations> |
| |
| <s:navigationContent> |
| <s:Button icon="@Embed('assets/back.png')" click="navigator.popView();" height="55"/> |
| </s:navigationContent> |
| |
| <s:Label text="{data.symbol}" fontSize="36" left="10" top="10" height="79" width="95" backgroundColor="#F0F0F0" verticalAlign="middle" textAlign="center" color="#646464"/> |
| |
| <s:HGroup top="10" left="106" right="10" gap="1"> |
| <s:Label text="Open" width="85" height="39" backgroundColor="#919191" verticalAlign="middle" paddingRight="8" textAlign="right"/> |
| <s:Label text="Last" width="85" height="39" backgroundColor="#919191" verticalAlign="middle" paddingRight="8" textAlign="right"/> |
| <s:Label text="Change" width="85" height="39" backgroundColor="#919191" verticalAlign="middle" paddingRight="8" textAlign="right" includeIn="landscapeLarge,landscapeMedium,landscapeSmall"/> |
| <s:Label text="High" width="85" height="39" backgroundColor="#919191" verticalAlign="middle" paddingRight="8" textAlign="right"/> |
| <s:Label text="Low" width="85" height="39" backgroundColor="#919191" verticalAlign="middle" paddingRight="8" textAlign="right"/> |
| </s:HGroup> |
| |
| <s:HGroup top="50" left="106" right="10" gap="1"> |
| <s:Label text="{nf.format(data.open)}" width="85" height="39" backgroundColor="#F0F0F0" verticalAlign="middle" paddingRight="8" textAlign="right"/> |
| <s:Group> |
| <s:Label text="{nf.format(data.last)}" color="{data.change>0?0x006600:0xFF0000}" width="85" height="39" backgroundColor="#F0F0F0" verticalAlign="middle" paddingRight="18" textAlign="right"/> |
| <s:Image source="{data.change>0?iconUp:iconDown}" x="70" y="14"/> |
| </s:Group> |
| <s:Label text="{nf.format(data.change)}" color="{data.change>0?0x006600:0xFF0000}" width="85" height="39" backgroundColor="#F0F0F0" verticalAlign="middle" paddingRight="8" textAlign="right" includeIn="landscapeLarge,landscapeMedium,landscapeSmall"/> |
| <s:Label text="{nf.format(data.high)}" width="85" height="39" backgroundColor="#F0F0F0" verticalAlign="middle" paddingRight="8" textAlign="right"/> |
| <s:Label text="{nf.format(data.low)}" width="85" height="39" backgroundColor="#F0F0F0" verticalAlign="middle" paddingRight="8" textAlign="right"/> |
| </s:HGroup> |
| |
| <charts:RealTimeChart stock="{data}" |
| top="150" top.landscapeSmall="120" top.landscapeMedium="120" |
| height="350" height.landscapeSmall="{undefined}" height.landscapeMedium="{undefined}" |
| bottom.landscapeSmall="30" bottom.landscapeMedium="40" left="20" right="20"/> |
| |
| <s:Label bottom="4" text="Rotate device for bigger chart." fontSize="16" color="#AAAAAA" horizontalCenter="0" includeIn="portrait"/> |
| |
| </s:View> |