yes, i would like to put my filter function in the same file as HTTPService. 
The problem is 
that the textbox that is connected to the filterfunction is located in my 
movieView MXML 
ViewStack. and i cannot get them to connect. so simply i want the textinput 
located in 
MovieView.mxml to connect with the filterfunction in Main.mxml

here is my code if that helps:

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/
 

Reply via email to