Yes, i want to put my filter function in the main mxml file where all my HTTPServices are locates. I have already apply my filterfunction in the result handler in the HTTPService the problem is that i cannot get it to connect with the textinput located in a MXML ViewStack component.
I pass my code here for both Main.MXML and MovieView.MXML. Hopes this help you all to help me. Main.MXML: <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" layout="absolute" horizontalAlign="center" verticalAlign="middle" backgroundGradientColors="[#000000, #000000]" width="100%" height="100%" creationComplete="initApp()" viewSourceURL="srcview/index.html" > <mx:HTTPService id="movieService" url="http://192.168.25.200/PHP/katalog.php" useProxy="false" result="srv_results(event)" fault="msFaultHandler(event);" invoke="msInvokeHandler (event);"/> <!-- HTTPSerivce for the tv-shows starts here --> <mx:HTTPService id="tvService" url="http://192.168.25.200/PHP/tvshows.php" useProxy="false" result="tv_results(event)"/> <mx:HTTPService id="epService" url="http://192.168.25.200/PHP/tvepisodes.php" useProxy="false" result="ep_results(event)"/> <!-- END --> <!--<mx:Model id="ipService" source="data/ip.xml"/>--> <mx:Style source="katalog2main.css"/> <mx:Script> <![CDATA[ import mx.managers.CursorManager; import mx.collections.IViewCursor; import mx.rpc.events.ResultEvent; import mx.rpc.events.FaultEvent; import mx.rpc.events.InvokeEvent; import mx.collections.ArrayCollection; import mx.events.ItemClickEvent; import mx.controls.Alert; import mx.events.CloseEvent; import flash.events.Event; private function initApp():void { movieService.send(); tvService.send(); epService.send(); } private function msFaultHandler(event:FaultEvent):void { // There was an error in loading the XML Alert.show (event.fault.message); // Hide the busy cursor CursorManager.removeBusyCursor(); } // Gets called when HTTPService is invoked to // request the XML. private function msInvokeHandler(event:InvokeEvent):void { // Display the busy cursor CursorManager.setBusyCursor(); } public function srv_results(event:ResultEvent):void { movieCollection = event.result.helakatalog.katalog as ArrayCollection; movieCollection.filterFunction=movieFilter; //Hide the busy cursor CursorManager.removeBusyCursor(); } public function tv_results(event:ResultEvent):void { tvCollection = event.result.helakatalog.katalog as ArrayCollection; //tvCollection.filterFunction=tvshowsFilter; } public function ep_results(event:ResultEvent):void { epCollection = event.result.helakatalog.katalog as ArrayCollection; //epCollection.filterFunction=episodeFilter; } [Bindable] private var movieCollection:ArrayCollection; [Bindable] private var tvCollection:ArrayCollection; [Bindable] private var epCollection:ArrayCollection; // Filter function public function movieFilter(item:Object):Boolean { var result:Boolean=false; if (!item.title.length || item.title.toUpperCase().indexOf(filterInput.text.toUpperCase()) >= 0) if (!item.genres.length || item.genres.toUpperCase().indexOf(genresInput.selectedItem.data.toUpperCase ()) >= 0) result=true; return result; } ]]> </mx:Script> <mx:VBox width="85%" height="100%" verticalCenter="20" horizontalCenter="0" top="0"> <mx:ViewStack id="mainViewStack" width="100%" height="100%" creationPolicy="all"> <!--MovieView HERE --> <MovieView id="mView" label="Filmer" movieCollection="{movieCollection}" movieFilter="movieFilter"/> <!--HomeView HERE--> <mx:Canvas id="home" label="Start" width="100%" height="100%"> <mx:VBox width="100%" height="100%" id="startVbox" horizontalCenter="0" bottom="0"> <mx:Canvas width="100%" height="400" id="questionCanvas" horizontalCenter="0" top="0" > <mx:Image source="assets/question.png" autoLoad="true" horizontalCenter="0" top="0"/> <mx:Image source="assets/movie_start.png" autoLoad="true" horizontalCenter="-99" bottom="134" click="mainViewStack.selectedChild=mView;"/> <mx:Image source="assets/tv_start.png" autoLoad="true" horizontalCenter="98" bottom="134" click="mainViewStack.selectedChild=tvView;"/> </mx:Canvas> <mx:ApplicationControlBar id="dockedBar" dock="true" width="100%" height="40"> <mx:HBox horizontalAlign="right" paddingBottom="5" paddingTop="5"> <mx:Spacer width="100%" id="spacer1"/> </mx:HBox> <mx:HBox horizontalAlign="left" width="100%"> <mx:Image source="assets/star.png" autoLoad="true" height="16" verticalAlign="middle" scaleContent="false" id="image1"/> <mx:Text text="SopranKatalog Ver.2.1 BETA" color="#ffffff" fontWeight="bold" fontSize="12" fontFamily="Arial" textAlign="right" id="text1"/> </mx:HBox> </mx:ApplicationControlBar> <mx:HBox id="footer" width="100%"> <mx:Spacer width="100%" /> </mx:HBox> </mx:VBox> </mx:Canvas> <!-- TVView HERE --> <TvView id="tvView" label="TV" epCollection="{epCollection}" tvCollection="{tvCollection}"/> </mx:ViewStack> </mx:VBox> </mx:Application> MovieView.MXML: <?xml version="1.0" encoding="utf-8"?> <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" width="100%" height="100%"> <mx:Script> <![CDATA[ import mx.collections.ArrayCollection; import mx.events.ItemClickEvent; import mx.controls.Alert; import mx.events.CloseEvent; [Bindable] var movieCollection:ArrayCollection; public var u:URLRequest; // Event listener to open URL when in dataGrid view private function dgMovieListClick(eventObj:Event):void { u = new URLRequest("http://192.168.25.200/Movies/" + dgMovieList.selectedItem.link); navigateToURL(u); Alert.show("Högerklicka på filnamnet och tryck spara som..", "Påbörja din nerladdning", Alert.OK); } // Event listener to open URL when in tileList view private function dgTileListClick(eventObj:Event):void { u = new URLRequest("http://192.168.25.200/Movies/" + tilelist1.selectedItem.link); navigateToURL(u); Alert.show("Högerklicka på filnamnet och tryck spara som..", "Påbörja din nerladdning", Alert.OK); } // Event listener to open Internet URL when in dataGrid view private function dgInternetClick(eventObj:Event):void { u = new URLRequest("http://sopran.dnsalias.com/Movies/" + dgMovieList.selectedItem.link); navigateToURL(u); Alert.show("Högerklicka på filnamnet och tryck spara som..", "Påbörja din nerladdning", Alert.OK); } // Event listener to open Internet URL when in tileList view private function internetClick(eventObj:Event):void { u = new URLRequest("http://sopran.dnsalias.com/Movies/" + tilelist1.selectedItem.link); navigateToURL(u); Alert.show("Högerklicka på filnamnet och tryck spara som..", "Påbörja din nerladdning", Alert.OK); } ]]> </mx:Script> <!-- An ArrayCollection with an array of objects. --> <mx:ArrayCollection id="genres"> <mx:Array> <mx:Object label="Alla" data=""/> <mx:Object label="Action" data="Action"/> <mx:Object label="Animerat" data="Animerat"/> <mx:Object label="Drama" data="Drama"/> <mx:Object label="Komedi" data="Komedi"/> <mx:Object label="Thriller" data="Thriller"/> </mx:Array> </mx:ArrayCollection> <mx:states> <!-- MovieList Grid Starts Here --> <mx:State name="Grid"> <mx:RemoveChild target="{tilelist1}"/> <mx:RemoveChild target="{dockedBar}"/> <mx:AddChild relativeTo="{mainVbox}" position="lastChild" target="{dockedBar}"/> <mx:SetEventHandler target="{stchange}" name="click" handler="currentState=''"/> <mx:AddChild relativeTo="{tilecanvas}" position="lastChild"> <mx:DataGrid id="dgMovieList" width="100%" height="100%" dataProvider="{movieCollection}" doubleClickEnabled="true" itemDoubleClick="dgMovieListClick(event);" editable="false" borderStyle="none" y="0"> <mx:columns> <mx:DataGridColumn headerText="Titel" dataField="title"/ > <mx:DataGridColumn headerText="Kategori" dataField="genres"/> <mx:DataGridColumn headerText="År" dataField="year"/> <mx:DataGridColumn headerText="Utgivare" dataField="publisher"/> </mx:columns> </mx:DataGrid> </mx:AddChild> <mx:RemoveChild target="{footer}"/> <mx:AddChild relativeTo="{mainVbox}" position="lastChild" target="{footer}"/> <mx:SetProperty target="{counterText}" name="height" value="20"/> <mx:RemoveChild target="{linkbutton1}"/> <mx:RemoveChild target="{image1}"/> </mx:State> <!-- Tv-Shows List Starts Here --> <!-- Tv-Shows END --> <!-- MovieList Grid END --> </mx:states> <!-- Define the effects for the transitions between states --> <mx:transitions> <!-- Define the transition from the base state to the Grid state.--> <mx:Transition id="toGrid" fromState="*" toState="Grid"> <mx:Sequence target="{tilecanvas}" > <mx:Parallel target="{tilecanvas}"> <mx:Fade alphaFrom="0" alphaTo="1" duration="1500"/> <mx:Move yFrom="1500" yBy="-1500" duration="1000"/> </mx:Parallel> </mx:Sequence> </mx:Transition> <!-- Define the transition from the TvShows state to the TvEpisodes state.--> <mx:Transition id="toEpisodes" fromState="TvShows" toState="TvEpisodes"> <mx:Sequence target="{tilecanvas}" > <mx:WipeUp duration="1000" /> </mx:Sequence> </mx:Transition> <!-- Define the transition from the Grid state to the base state.--> <mx:Transition id="toDefault" fromState="Grid" toState="*"> <mx:Sequence target="{tilecanvas}" > <mx:Parallel target="{tilecanvas}"> <mx:Fade alphaFrom="0" alphaTo="1" duration="1500"/> <mx:Move yFrom="1500" yBy="-1500" duration="1000"/> </mx:Parallel> </mx:Sequence> </mx:Transition> </mx:transitions> <!-- Transition effects END --> <mx:VBox width="100%" height="100%" id="mainVbox" horizontalCenter="0" top="0"> <mx:Canvas width="100%" height="80%" id="tilecanvas" > <mx:TileList id="tilelist1" width="100%" height="100%" itemRenderer="thumbnail" dataProvider="{movieCollection}" horizontalScrollPolicy="off" borderStyle="none" top="19" doubleClickEnabled="true" itemDoubleClick="dgTileListClick(event);" allowMultipleSelection="false" horizontalCenter="0"/> </mx:Canvas> <mx:ApplicationControlBar id="dockedBar" dock="true" width="100%"> <mx:HBox horizontalAlign="right" paddingBottom="5" paddingTop="5"> <mx:Image source="assets/zoom.png" autoLoad="true" height="100%" verticalAlign="middle" scaleContent="false"/> <mx:TextInput id="filterInput" text="" change="movieCollection.refresh();" width="166" toolTip="Skriv.."/> <mx:Spacer width="100%" id="spacer1"/> <mx:Image source="assets/color_swatch.png" autoLoad="true" height="100%" verticalAlign="middle" scaleContent="false"/> <mx:Text text="Kategori" color="#ffffff" fontSize="12" fontFamily="Arial" fontWeight="bold" textAlign="left" selectable="false"/> <mx:ComboBox id="genresInput" dataProvider="{genres}" enabled="true" color="#ffffff" change="movieCollection.refresh();"/> </mx:HBox> <mx:HBox horizontalAlign="right" width="100%" paddingBottom="5" paddingTop="5"> <mx:Image source="assets/application_cascade.png" autoLoad="true" height="100%" verticalAlign="middle" scaleContent="false" id="image2"/> <mx:LinkButton id="stchange" label="Byta läge" textAlign="left" width="69" click="currentState='Grid'"/> <mx:Image source="assets/film.png" autoLoad="true" height="100%" verticalAlign="middle" scaleContent="false" id="image3"/> <mx:Text id="counterText" text="{movieCollection.length}" paddingTop="2" color="#ffffff" fontWeight="bold" textAlign="left" width="30" height="20" selectable="false" toolTip="Antal filmer som visas"/> <!--<mx:LinkButton id="intlink" label="Download" />--> </mx:HBox> </mx:ApplicationControlBar> <mx:HBox id="footer" width="100%"> <mx:LinkButton id="tvchange" label="TvShows"/> <mx:Spacer width="100%" /> <mx:Text text="FilmKatalog Ver.2 BETA" color="#ffffff" fontWeight="bold" fontSize="12" fontFamily="Arial" textAlign="right" id="text1"/> <mx:Image source="assets/world_link.png" autoLoad="true" height="100%" verticalAlign="middle" scaleContent="false" id="image1"/> <mx:LinkButton label="Internet" width="63" click="internetClick(event);" textAlign="left" toolTip="Klicka här om du befinner dig utanför hemmet" id="linkbutton1"/> </mx:HBox> </mx:VBox> </mx:Canvas> --- In [email protected], "Michael Labriola" <[EMAIL PROTECTED]> wrote: > > > If I understand your question correctly (and I am not sure that I do), > I would personally put your filter function in the file that currently > calls the HTTPService and gets the result. Unless you are using one of > the, or your own, common frameworks, most people seem to put this in > their main application file. > > Depending a lot on how your code is constructed, you can probably > apply this filter function in the result handler for your HTTPService. > > If I am missing the point, or your setup is more complex, let me know. > > As an aside, please take a look at the refresh method of the > ListCollectionView. If you are not actually replacing the whole > collection, you could use this to simply apply the filter. > > --Mike > > --- In [email protected], "pioplacz" <icep87@> wrote: > > > > Hi! > > > > I was just wondering is it possible to make a filterfunction work > between ViewStack > > components. What i mean is i'm calling the HTTP service in my > main.mxml but showing > > the results in MovieView.mxml passing the data works fine. But i > can't figure out where i > > should write the filter function: > > > > // Filter function > > public function movieFilter(item:Object):Boolean > > { > > var result:Boolean=false; > > if (!item.title.length > > || > item.title.toUpperCase().indexOf(filterInput.text.toUpperCase()) >= 0) > > if (!item.genres.length > > || > item.genres.toUpperCase().indexOf(genresInput.selectedItem.data.toUpperCase > > ()) >= 0) > > result=true; > > > > return result; > > } > > > > and where i should put: > > > > movieCollection.filterFunction=movieFilter; > > > > From the beginning i had all that in my Main.mxml and it worked > fine. Can somebody help > > me, if you even get what i mean ? > > > -- Flexcoders Mailing List FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com Yahoo! Groups Links <*> To visit your group on the web, go to: http://groups.yahoo.com/group/flexcoders/ <*> Your email settings: Individual Email | Traditional <*> To change settings online go to: http://groups.yahoo.com/group/flexcoders/join (Yahoo! ID required) <*> To change settings via email: mailto:[EMAIL PROTECTED] mailto:[EMAIL PROTECTED] <*> To unsubscribe from this group, send an email to: [EMAIL PROTECTED] <*> Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/

