| <?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. |
| |
| --> |
| <s:Module xmlns:fx="http://ns.adobe.com/mxml/2009" |
| xmlns:s="library://ns.adobe.com/flex/spark" |
| xmlns:mx="library://ns.adobe.com/flex/mx" |
| xmlns:local="*" xmlns:layouts="layouts.*" |
| initialize="init()"> |
| |
| <fx:Script> |
| <![CDATA[ |
| import mx.collections.ArrayCollection; |
| import mx.rpc.xml.SimpleXMLDecoder; |
| import mx.rpc.xml.SimpleXMLEncoder; |
| import mx.utils.ArrayUtil; |
| |
| [Bindable] |
| private var items:ArrayCollection; |
| |
| [Bindable] |
| private var filteredItems:ArrayCollection; |
| |
| [Bindable] |
| private var _maxPrice:Number = 1000; |
| |
| [Bindable] |
| private var _camera:Boolean = false; |
| |
| [Bindable] |
| private var _video:Boolean = false; |
| |
| [Bindable] |
| private var _triband:Boolean = false; |
| |
| [Embed(source="data/catalog.xml", mimeType="application/octet-stream")] |
| private var XMLData:Class; |
| |
| private function init():void |
| { |
| var data:XML = XML(new XMLData()); |
| var xmlDoc:XMLDocument = new XMLDocument(data); |
| var decoder:SimpleXMLDecoder = new SimpleXMLDecoder(true); |
| var object:Object = decoder.decodeXML(xmlDoc); |
| |
| items = object.catalog.product; |
| filteredItems = new ArrayCollection(items.source); |
| filteredItems.filterFunction = filter; |
| } |
| |
| private function selectionChange():void |
| { |
| filteredItems.refresh(); |
| filterLayout.filter(); |
| } |
| |
| private function filter(item:Object):Boolean |
| { |
| return (item.price <= _maxPrice) && |
| (!_camera || item.camera) && |
| (!_video || item.video) && |
| (!_triband || item.triband); |
| } |
| |
| ]]> |
| </fx:Script> |
| |
| <s:Panel title="Custom Layout Sample" width="100%" height="100%"> |
| |
| <s:layout> |
| <s:VerticalLayout paddingLeft="10" paddingRight="10" paddingTop="10" paddingBottom="10"/> |
| </s:layout> |
| |
| <s:HGroup> |
| <s:Label text="Max Price:"/> |
| <s:HSlider id="priceSlider" minimum="0" maximum="1000" snapInterval="100" value="@{_maxPrice}" change="selectionChange()"/> |
| <mx:Spacer width="20"/> |
| <s:CheckBox label="Camera" selected="@{_camera}" change="selectionChange()"/> |
| <s:CheckBox label="Video" selected="@{_video}" change="selectionChange()"/> |
| <s:CheckBox label="Triband" selected="@{_triband}" change="selectionChange()"/> |
| </s:HGroup> |
| |
| <s:DataGroup dataProvider="{items}" itemRenderer="renderers.PhoneRenderer" width="100%" height="100%"> |
| <s:layout> |
| <layouts:FilteredTileLayout id="filterLayout" filteredItems="{filteredItems}" /> |
| </s:layout> |
| </s:DataGroup> |
| |
| </s:Panel> |
| </s:Module> |