--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/fmradio/fmradio/inc/fmradiochannellistview.h Wed Sep 01 12:30:32 2010 +0100
@@ -0,0 +1,306 @@
+/*
+* Copyright (c) 2005 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 CFMRadioChannelListView
+*
+*/
+
+
+#ifndef FMRADIOCHANNELLISTVIEW_H
+#define FMRADIOCHANNELLISTVIEW_H
+
+// INCLUDES
+#include <aknview.h>
+#include <akntoolbarobserver.h>
+
+#include "fmradiochannellistcontainer.h"
+#include "mfmradiolayoutchangeobserver.h"
+#include "fmradiordsobserver.h"
+#include "mchannellisthandler.h"
+
+
+// FORWARD DECLARATIONS
+class CFMRadioChannelListViewContainer;
+class CRadioEngine;
+
+// CLASS DECLARATION
+
+/**
+* CFMRadioChannelListView view class.
+* @since 2.6
+*/
+class CFMRadioChannelListView : public CAknView,
+ public MCoeControlObserver,
+ public MFMRadioLayoutChangeObserver,
+ public MFMRadioRdsObserver,
+ public MAknToolbarObserver
+ {
+ public: // Constructors and destructor
+ /**
+ * Two-phase constructor of CFMRadioChannelListView
+ * @since 2.6
+ * @param aRadioEngine pointer to a radio engine object
+ * @param aObserver Handler for channel list
+ */
+ static CFMRadioChannelListView* NewL( CRadioEngine* aRadioEngine,
+ MChannelListHandler& aObserver );
+
+ /**
+ * CFMRadioChannelListView.
+ * @since 2.6
+ */
+ CFMRadioChannelListView::CFMRadioChannelListView( MChannelListHandler& aObserver ) ;
+
+ /**
+ * Destructor.
+ * @since 2.6
+ */
+ virtual ~CFMRadioChannelListView();
+ public: // New functions
+ /**
+ * Return the unique identifier corresponding to this view
+ * @since 2.6
+ * @return the unique identifier corresponding to this view
+ */
+ TUid Id() const;
+ /**
+ * Keep track of the last selected channel
+ * @since 2.6
+ * @param aIndex the index of the last listened to channel
+ */
+ void SetLastListenedChannel( TInt aIndex );
+ /**
+ * Keep track of the current selected channel
+ * @param aChannelIndex the index of the current channel
+ */
+ void SetNowPlayingChannel ( TInt aChannelIndex );
+ /**
+ * Returns the index of the playing channel item from the
+ * channel list.
+ * @return the currently playing channel
+ */
+ TInt CurrentlyPlayingChannel();
+ /**
+ * Returns the index of the selected channel item from the
+ * channel list. If the container is active get the info from
+ * it, because it may have more up-to-date info.
+ * @since 2.6
+ * @return the currently selected channel
+ */
+ TInt CurrentlySelectedChannel();
+ /**
+ * Make a request to the channel container to update the
+ * content of the channel at aIndex with the values specified
+ * @since 2.6
+ * @param aIndex the index of the channel to update
+ * @param aChannelName the new name of the channel
+ * @param aChannelFrequency the new frequency
+ */
+ void UpdateChannelListContentL( TInt aIndex, const TDesC& aChannelName, TInt aChannelFrequency );
+ /**
+ * Return true/false to indicate whether the channel specified is in play
+ * @param aChannelIndex the index of the channel to check
+ * @return true/false to indicate whether the channel is currently being played
+ */
+ TBool ChannelInPlay( TInt aChannelIndex ) const;
+ /**
+ * Retrieve the index of the next channel that has been set.
+ * @since 2.6
+ * @return the index of the next "in use" channel
+ */
+ TInt NextChannel();
+ /**
+ * Retrieve the index of the previous channel that has been set.
+ * @since 2.6
+ * @return the index of the previous "in use" channel
+ */
+ TInt PreviousChannel();
+ /**
+ * Initialize the channels with the values currently saved in
+ * the radio engine
+ * @since 2.6
+ */
+ void InitializeChannelsL();
+ /**
+ * Fade the view and all controls associated with it. Change
+ * the soft keys so that "Exit" is displayed
+ * @since 2.6
+ * @param aFaded indicates whether the view should fade/unfade.
+ */
+ void FadeAndShowExit( TBool aFaded );
+ /**
+ * Update display when focus regained
+ * @since 3.0
+ */
+ void UpdateDisplayForFocusGained();
+ /**
+ * from MFMRadioLayoutChangeObserver
+ * This method gets called by the AppUI when a dynamic layout change
+ * event occurs.
+ * @param aType layout change type
+ */
+ void LayoutChangedL( TInt aType );
+ /**
+ * Set empty channel list item
+ * when preset is deleted from fmradiopresetutility
+ * @param aIndex list index to delete
+ */
+ void SetEmptyChannelListItemL( const TInt aIndex ) const;
+
+ /**
+ * From MAknToolbarObserver
+ * Handle commands from toolbar.
+ * @param aCommandId The command id
+ */
+ void OfferToolbarEventL( TInt aCommandId );
+
+ /**
+ * Sets toolbar visibility
+ * @param aVisible
+ * @return none
+ */
+ void ShowToolbar( TBool aVisible );
+
+ /**
+ * From base class MFMRadioRdsObserver
+ */
+ void RdsDataProgrammeService( const TDesC& aProgramService );
+ void RdsDataPsNameIsStatic( TBool aStatic );
+ void RdsDataRadioText( const TDesC& aRadioText );
+ void RdsDataRadioTextPlus( const TInt aRTPlusClass, const TDesC& aRadioText );
+ void RdsAfSearchBegin();
+ void RdsAfSearchEnd( TUint32 aFrequency, TInt aError );
+ void RdsAfSearchStateChange( TBool aEnabled );
+ void RdsAvailable( TBool aAvailable );
+ /**
+ * Procedures for finishing a move of channel on the list
+ * @param none
+ * @return none
+ */
+ void MoveActionDoneL();
+
+ /**
+ * Cancel the moving
+ */
+ void CancelMoveL();
+
+ /**
+ * Dim relevant buttons when the list is empty
+ */
+ void UpdateToolbar() const;
+
+ /*
+ * Updates view when seek event is ended
+ */
+ void StopSeekL();
+
+ /**
+ * Interprets view's menu,softkey and other commands and acts
+ * accordingly by calling the appropriate command handler
+ * function for further action.
+ * @since 2.6
+ * @param aCommand the command to process
+ */
+ void HandleCommandL( TInt aCommand );
+
+ private: // Functions from base classes
+ /**
+ * Activate the channel list view
+ * @since 2.6
+ */
+ void DoActivateL( const TVwsViewId& aPrevViewId,TUid aCustomMessageId, const TDesC8& aCustomMessage );
+ /**
+ * Deactivate the channel list view
+ * @since 2.6
+ */
+ void DoDeactivate();
+ /**
+ * From MCoeControlObserver, control event observing. In this case,
+ * the user selection from the list is reported by container class
+ * and observed here.
+ * @since 2.6
+ * @param aControl the control that caused the event
+ * @param aEventType the type of event that was triggered
+ */
+ void HandleControlEventL( CCoeControl* aControl,TCoeEvent aEventType );
+ /**
+ * Sets the state of menu items dynamically according to the
+ * state of application data.
+ * @since 2.6
+ * @param aResourceId Resource ID identifying the menu pane to initialise.
+ * @param aMenuPane The in-memory representation of the menu pane.
+ */
+ void DynInitMenuPaneL( TInt aResourceId,CEikMenuPane* aMenuPane );
+
+ /**
+ * SetMiddleSoftKeyLabelL, sets the MSK label
+ *
+ */
+ void SetMiddleSoftKeyLabelL (TInt aResourceId, TInt aCommandId);
+
+ /**
+ * UpdateMiddleSoftKeyL, updates the MSK
+ *
+ */
+ void UpdateMiddleSoftKeyL();
+ private: // new functions
+ /**
+ * EPOC default constructor.
+ * @since 2.6
+ * @param aRadioEngine pointer to a radio engine object
+ */
+ void ConstructL( CRadioEngine* aRadioEngine );
+
+ /**
+ * Prepare toolbar for FMRadio command buttons
+ */
+ void PrepareToolbar();
+ /*
+ * Set view title text
+ * @param aResourceId resource Id containing the title text
+ */
+ void SetTitleL( TInt aResourceId );
+ /**
+ * Procedures for beginning a move of channel on the list
+ * @param none
+ * @return none
+ */
+ void MoveCurrentItemIndexL();
+
+ private: // Data
+ CFMRadioChannelListContainer* iContainer;
+ CRadioEngine* iRadioEngine;
+ TInt iChIndex;
+ TInt iNowPlayingIndex;
+ TInt iCurrentMSKCommandId; //owned
+ TBool iFaded;
+ MChannelListHandler& iObserver;
+
+ CAknQueryDialog* iManualQueryDialog;
+
+ TBool iMoveMode;
+
+ /**
+ * Boolean for knowing if any moves have been made
+ */
+ TBool iFirstMoveDone;
+
+ /**
+ * Toolbar for controlling the application.
+ */
+ CAknToolbar* iToolbar;
+ };
+
+#endif
+
+// End of File