fmradio/fmradio/inc/fmradioscanlocalstationscontainer.h
changeset 0 f3d95d9c00ab
child 8 f73067c3e563
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fmradio/fmradio/inc/fmradioscanlocalstationscontainer.h	Tue Feb 02 00:17:10 2010 +0200
@@ -0,0 +1,200 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  definition of the class CFMRadioScanLocalStationsContainer
+*
+*/
+
+
+#ifndef FMRADIOSCANLOCALSTATIONSCONTAINER_H
+#define FMRADIOSCANLOCALSTATIONSCONTAINER_H
+
+// INCLUDES
+#include <coecntrl.h>
+#include <aknlists.h>
+
+#include "fmradiodefines.h"
+#include "fmradio.hrh"
+#include "fmradioengine.h"
+// FORWARD DECLARATIONS
+class CAknWaitDialog;
+
+// CLASS DECLARATION
+
+/**
+* Creates and owns the UI components related to the Scan Local Stations View.
+* @since 2.6
+*/
+class CFMRadioScanLocalStationsContainer : public CCoeControl,
+                                     	   public MEikListBoxObserver
+    {
+    public: // Constructors and destructor
+        /**
+        * Two-phase constructor of CFMRadioScanLocalStationsContainer
+        * @since 2.6
+        * @param aRect Frame rectangle for container.
+        * @param aRadioEngine Radio engine reference
+        */
+        static CFMRadioScanLocalStationsContainer* NewL( const TRect& aRect, CRadioEngine& aRadioEngine );
+        /**
+        * Destructor.
+        */
+        virtual ~CFMRadioScanLocalStationsContainer();
+    public: // New functions
+        /**
+        * Returns the index of the selected channel item from the channel list.
+        * @since 2.6
+        * @return the index of the currently selected channel
+        */
+        TInt CurrentlySelectedChannel() const; 
+        /**
+        * Update the content of the channel at aIndex with the values specified
+        * @since 2.6
+        * @param aIndex index of the channel to update
+        * @param aInfoText Info text to be shown instead of the frequency value
+        * @param aChannelFrequency the new frequency of the channel
+        * @param aNowPlaying indicates if 'Now playing' icon needs to be shown
+        * @param aInfoTextPlacement ETrue if info text is displayed after frequency string; EFalse otherwise.
+        */
+        void UpdateChannelListContentL( TInt aIndex, const TDesC& aInfoText, TInt aChannelFrequency, TBool aNowPlaying, TBool aInfoTextPlacement = EFalse );
+        void RemoveChannelListContentL( TInt aIndex );
+        /**
+        * Update the content of the channel at aIndex with the values specified
+        * @since 2.6
+        * @param aIndex index of the last selected channel
+        */
+        void UpdateLastListenedChannel( TInt aIndex );
+        /**
+        * Displays 'Now Playing' icon for given index.
+        * @param aNewIndex Index of channel to get the icon
+        * @param aOldIndex Index of channel to loose the icon
+        */
+        void UpdateNowPlayingIconL( TInt aNewIndex, TInt aOldIndex = KErrNotFound );
+        /**
+        * Hide 'Now Playing' icon from given index
+        * @param aIndex Index of channel to hide the icon
+        * @param aDraw flag for updating list after icon removal
+        */
+        void HideNowPlayingIconL( TInt aIndex, TBool aDraw );
+        /**
+        * Fades the entire window and controls in the window owned by this container control.
+        * @since 2.6
+        * @param aFaded flag to indicate whether we should fade or unfade
+        */
+        void SetFaded( TBool aFaded );
+        /**
+        * From CCoeControl
+        */
+        void HandleResourceChange(TInt aType);
+        /**
+        * Resets channel list
+        */
+        void ResetChannelListL();
+        /**
+        * Create the channel list (initially all spots are set as empty)
+        * @since 2.6
+        */
+        void InitializeChannelListL();
+        
+        void SetStationListEmptyTextL( const TDesC& aText );
+        
+        /*
+         * Adds frequency to the scanned channels list. Used while
+         * scanning is ongoing
+         * @param aIndex channel index
+         * @param aChannelFrequency frequency to add
+         */
+        void InsertScannedChannelToListL( TInt aIndex, TInt aChannelFrequency );
+
+    private: // Functions from base classes
+        /**
+        * Called by framework when the view size is changed
+        * @since 2.6
+        */
+        void SizeChanged();
+        /**
+        * Return the number of controls in the window owned by this container
+        * @since 2.6
+        * @return number of controls
+        */
+        TInt CountComponentControls() const;
+        /**
+        * Return the control corresponding to the specified index
+        * @since 2.6
+        * @param aIndex the index of the control to retrieve
+        * @return the control corresponding to the specified index
+        */
+        CCoeControl* ComponentControl( TInt aIndex ) const;
+        /**
+        * Redraw the window owned by this container
+        * @since 2.6
+        * @param aRect the size of the window to redraw
+        */
+        void Draw( const TRect& aRect ) const;
+        /**
+        * From MEikListBoxObserver, for listbox event handling.
+        * @since 2.6
+        * @param aListBox The originating list box.
+        * @param aEventType A code for the event.
+        */
+        void HandleListBoxEventL( CEikListBox* aListBox, TListBoxEvent aEventType );
+        /**
+        * Allow the channel list to process key events
+        * @since 2.6
+        * @param aKeyEvent The key event.
+        * @param aType The type of key event.
+        */
+        TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType );
+		/**
+        * Required for help.
+		* @since 2.7
+		* @param aContext the help context to be used.
+        */
+        void GetHelpContext(TCoeHelpContext& aContext) const;
+        
+        void FocusChanged(TDrawNow aDrawNow);
+        /*
+        * from CCoeControl
+        */
+        void HandlePointerEventL( const TPointerEvent& aPointerEvent );
+        
+    private: // new functions
+    	// Default constructor
+    	CFMRadioScanLocalStationsContainer( CRadioEngine& aRadioEngine );    
+        /**
+        * EPOC two phased constructor
+        * @since 2.6
+        * @param aRect Frame rectangle for container.
+        */
+        void ConstructL( const TRect& aRect);
+
+    private: //data
+    
+        // The channel list listbox
+        CAknSingleNumberStyleListBox* iChannelList;
+        // Array of channel list items
+        CDesCArray* iChannelItemArray;
+        
+        // Index of the most recently listened channel to keep the listbox up-to-date.
+        TInt iLastChIndex;
+        RPointerArray<CCoeControl>    iControls;
+        TBool iFadeStatus;
+        CAknsBasicBackgroundControlContext* iBackground;
+        MAknsSkinInstance* iSkin;
+        CRadioEngine& iRadioEngine; //not own
+
+    };
+
+#endif
+
+// End of File