fmradio/fmradio/src/fmradiomainview.cpp
branchRCL_3
changeset 19 cce62ebc198e
parent 18 1a6714c53019
child 20 93c594350b9a
--- a/fmradio/fmradio/src/fmradiomainview.cpp	Thu Aug 19 09:55:21 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1471 +0,0 @@
-/*
-* 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:  Implementation of the class CFMRadioMainView
-*
-*/
-
-// INCLUDE FILES
-#include <featmgr.h>
-#include <aknViewAppUi.h>
-#include <akntitle.h>
-#include <avkon.hrh>
-#include <avkon.rsg>
-#include <avkon.mbg>
-#include <data_caging_path_literals.hrh>
-#include <akntoolbar.h>
-#include <fmradio.rsg>
-#include <StringLoader.h>
-#include <aknbutton.h>
-#include <aknconsts.h>
-#include <aknmessagequerydialog.h>
-#include <fmradio.mbg>
-#include <fmradiouids.h>
-#include <akntoolbarextension.h>
-
-#include "fmradiomusicstorehandler.h"
-#include "fmradiobacksteppingservicewrapper.h"
-#include "fmradiodocument.h"
-#include "fmradiordsreceiverbase.h"
-#include "fmradioalfvisualizer.h"
-#include "fmradioengine.h"
-#include "fmradiomainview.h"
-#include "fmradiomaincontainer.h"
-#include "fmradioappui.h"
-#include "fmradio.hrh"
-#include "fmradioengineradiosettings.h"
-#include "fmradioalfmediaidle.h"
-#include "fmradiopubsub.h"
-#include "fmradioalfrdsviewer.h"
-#include "fmradioidlecontroller.h"
-#include "fmradiologo.h"
-#include "debug.h"
-
-// A debug flag which is used for differentiating between original version and updated
-// version, when set will add identifier on Main View title. Used for testing purposes
-#undef __FM_UPDATE_PACKAGE__
-
-// CONSTANTS
-
-#ifdef __FM_UPDATE_PACKAGE__
-_LIT( KFMRadioUpdated, " *" );
-#endif
-
-// Delay in milliseconds for fading out the RDS indicator
-const TInt KFMRadioRdsSignalFadeOutDelay = 1000;
-
-// ================= MEMBER FUNCTIONS =======================
-
-// ---------------------------------------------------------
-// CFMRadioMainView::NewL
-// Two-phase constructor of CFMRadioMainView
-// ---------------------------------------------------------
-//
-CFMRadioMainView* CFMRadioMainView::NewL(
-    CRadioEngine* aRadioEngine, CAlfEnv& aAlfEnv, MChannelListHandler& aObserver )
-    {
-    CFMRadioMainView* self = new (ELeave) CFMRadioMainView( aRadioEngine, aAlfEnv, aObserver );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------
-// CFMRadioMainView::ConstructL
-// EPOC two-phased constructor
-// ---------------------------------------------------------
-//
-void CFMRadioMainView::ConstructL()
-    {
-    BaseConstructL( R_FMRADIO_MAIN_VIEW );
-    PrepareToolbar();
-    
-    if ( !AknLayoutUtils::PenEnabled() )
-        {
-        ShowToolbar( EFalse );
-        }
-
-    iRdsSignalTimer = CPeriodic::NewL(CActive::EPriorityStandard);
-    iMusicStoreHandler = CFMRadioMusicStoreHandler::NewL( R_FMRADIO_MAIN_OPTIONS_MENU );
-    iMusicStoreHandler->EnableMusicStore( ETrue );
-    
-    CAknToolbarExtension* toolbarExt = iToolbar->ToolbarExtension();
-    CAknButton* operatorStoreButton = NULL;
-    operatorStoreButton = static_cast<CAknButton*>( toolbarExt->ControlOrNull( EFMRadioToolbarButtonCmdOperatorMusicStore ) );
-    const TDesC& storeName = iMusicStoreHandler->OperatorMusicStoreName();
-    
-    if ( operatorStoreButton )
-        {
-        // set text for button tooltip
-        operatorStoreButton->State()->SetHelpTextL( storeName );
-        }
-    }
-
-// ---------------------------------------------------------
-// CFMRadioMainView::CFMRadioMainView
-// default constructor
-// ---------------------------------------------------------
-//
-CFMRadioMainView::CFMRadioMainView(
-    CRadioEngine* aRadioEngine,
-    CAlfEnv& /*aAlfEnv*/,
-    MChannelListHandler& aObserver)
-    : iRadioEngine( aRadioEngine ),
-      iSeeking( EFalse ),
-      iChangeDirection( EFMRadioStationChangeNone ),
-      iStartUp( ETrue ),
-      iObserver( aObserver )
-    {
-    }
-
-// ---------------------------------------------------------
-// CFMRadioMainView::~CFMRadioMainView
-// Class destructor
-// ---------------------------------------------------------
-//
-CFMRadioMainView::~CFMRadioMainView()
-    {
-    if( iRdsSignalTimer && iRdsSignalTimer->IsActive() )
-        {
-        iRdsSignalTimer->Cancel();
-        }   
-    if ( iRdsSignalTimer )
-    	{
-	    delete iRdsSignalTimer;
-	    iRdsSignalTimer = NULL;
-    	}
-
-    CAlfEnv* alfEnv = CAlfEnv::Static();
-    if ( alfEnv && iContainer )
-        {
-        iContainer->RdsViewer().RemoveObserver( this );
-        iContainer->Logo().RemoveObserver( this );
-        }
-    
-    delete iContainer;
-    iContainer = NULL;
-
-    delete iMusicStoreHandler;
-    }
-
-// ---------------------------------------------------------
-// TUid CFMRadioMainView::Id
-// Return the unique identifier corresponding to this view
-// ---------------------------------------------------------
-//
-TUid CFMRadioMainView::Id() const
-    {
-    return KFMRadioMainViewId;
-    }
-
-// ---------------------------------------------------------
-// CFMRadioMainView::StopSeekL
-// Seek operation has completed. Update the view to reflect
-// this fact.
-// ---------------------------------------------------------
-//
-void CFMRadioMainView::StopSeekL()
-    {
-    FTRACE( FPrint( _L("CFMRadioMainView::StopSeekL  Start") ) );
-    if ( iContainer && iSeeking)
-        {
-        FTRACE( FPrint( _L("CFMRadioMainView::StopSeekL  inside first if") ) );
-        if ( !AknLayoutUtils::PenEnabled() )
-            {
-            Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK ); // Change softkeys
-            Cba()->SetCommandL( CEikButtonGroupContainer::EMiddleSoftkeyPosition, 0, KNullDesC );
-            }
-        else
-            {
-            Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK__SELECT ); // Change softkeys
-            }
-        
-        SetToolbarDimmedState( EFalse );
-        iContainer->VisualControl()->StopTuningAnimation();
-        iSeeking = EFalse;
-        Cba()->DrawDeferred(); // Redraw softkeys
-        }
-    
-    CFMRadioAppUi* appUi = static_cast<CFMRadioAppUi*>( iCoeEnv->AppUi() );
-    
-    TInt presetIndex = iRadioEngine->GetPresetIndex();
-    TInt channelCount = iObserver.Channels().Count();
-    
-    if ( iRadioEngine->GetRadioMode() == CRadioEngine::ERadioPresetMode && 
-            channelCount > 0 &&
-            presetIndex < channelCount )
-        {
-        DisplayChannelL( presetIndex );
-        FTRACE( FPrint( _L("CFMRadioMainView::StopSeekL  ERadioPresetMode preset index = %d"),iRadioEngine->GetPresetIndex() ) );
-        }
-    else
-        {
-        FTRACE( FPrint( _L("CFMRadioMainView::StopSeekL  inside else") ) );
-        TInt channelIndex = appUi->MatchingChannelL( iRadioEngine->GetTunedFrequency() ); //, need to get here!
-        if ( channelIndex != KErrNotFound )
-            {
-            FTRACE( FPrint( _L("CFMRadioMainView::StopSeekL  if channelIndex is found, channelIndex = %d"),channelIndex ) );
-            iRadioEngine->TunePresetL( channelIndex ); //update engine to let it know that we've locked onto a preset.
-            }
-        else
-            {
-            FTRACE( FPrint( _L("CFMRadioMainView::StopSeekL  else, get tuned freq = %d"),iRadioEngine->GetTunedFrequency() ) );
-            DisplayChannelL( KErrNotFound );
-            }
-        }
-
-    // show default radio logo
-    if ( iContainer )
-        {
-        iContainer->IdleController().ShowControl( iContainer->Logo() );
-        }
-    }
-
-// ---------------------------------------------------------
-// CFMRadioMainView::FadeAndShowExit
-// Fade the view and all controls associated with it. Change
-// the soft keys so that "Exit" is displayed
-// ---------------------------------------------------------
-//
-void CFMRadioMainView::FadeAndShowExit(
-    TBool aFaded )
-    {
-    iFaded = aFaded;
-    
-    if ( iContainer )
-        {
-        if ( aFaded || iRadioEngine->IsInCall() ) // Needs to be faded - headset missing
-            {
-            StopDisplayingMenuBar(); // In case options menu is open when headset is disconnected
-            SetToolbarDimmedState( ETrue );
-            TRAP_IGNORE( Cba()->SetCommandSetL( R_FMRADIO_SOFTKEYS_EXIT ) ); // Change softkeys
-            }
-        else // Unfade
-            {
-            SetToolbarDimmedState( EFalse );
-            if ( !AknLayoutUtils::PenEnabled() )
-                {
-                TRAP_IGNORE( Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK ); // Change softkeys
-                    Cba()->SetCommandL( CEikButtonGroupContainer::EMiddleSoftkeyPosition, 0, KNullDesC ); )
-                }
-            else
-                {
-                TRAP_IGNORE ( Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK__SELECT ); )// Change softkeys
-                }
-            }
-        iContainer->SetFaded( aFaded ); // Unfade controls inside container
-        Cba()->DrawDeferred(); // Redraw softkeys
-        }
-    }
-
-// ---------------------------------------------------------
-// CFMRadioMainView::UpdateDisplayForFocusGained
-// Update display to override default behavior
-// Can be removed when auto resume is implemented
-// ---------------------------------------------------------
-//
-void CFMRadioMainView::UpdateDisplayForFocusGained()
-    {
-    FTRACE( FPrint( _L("CFMRadioMainView::UpdateDisplayForFocusGained") ) );
-    FadeAndShowExit( iFaded );
-    DetermineActiveMediaIdleComponent();
-    }
-
-// ---------------------------------------------------------
-// CFMRadioMainView::SeekL
-// Tells the window owning container to display seek note
-// and updates softkeys
-// ---------------------------------------------------------
-//
-void CFMRadioMainView::SeekL()
-    {
-    if ( iContainer )
-        {
-		HBufC* seekString = StringLoader::LoadLC( R_QTN_FMRADIO_TUNING, iCoeEnv );									
-		iContainer->VisualControl()->SetStaticInfoTextL( iChangeDirection, *seekString );
-		CleanupStack::PopAndDestroy( seekString );				
-        iContainer->RdsViewer().Reset();
-        iContainer->MediaIdle().ResetMediaIdleContent();
-		iContainer->ShowRTPlusInteractionIndicator( EFalse, ETrue );
-        iContainer->IdleController().ShowControl( iContainer->Logo() );
-		iContainer->VisualControl()->StartTuningAnimation();
-        iSeeking = ETrue;
-        SetToolbarDimmedState( ETrue );
-        // force update for toolbar extension view
-        iToolbar->ToolbarExtension()->SetShown( EFalse );
-        }
-    Cba()->SetCommandSetL( R_FMRADIO_MAIN_VIEW_TUNING_STATE_SOFTKEYS );
-
-    Cba()->DrawDeferred(); // Redraw softkeys
-    }
-
-// ---------------------------------------------------------
-// CFMRadioMainView::ShowToolbar
-// Sets toolbar visibility.
-// ---------------------------------------------------------
-//
-void CFMRadioMainView::ShowToolbar( TBool aVisible )
-	{
-	if ( iToolbar )
-		{
-		iToolbar->SetToolbarVisibility( aVisible );
-		iToolbar->UpdateBackground();
-		iToolbar->DrawDeferred();			
-		}
-	}
-
-// ---------------------------------------------------------
-// CFMRadioMainView::HandleForegroundEventL
-// ---------------------------------------------------------
-//
-void CFMRadioMainView::HandleForegroundEventL(TBool aForeground)
-    {
-    CAknView::HandleForegroundEventL(aForeground);
-    CFMRadioAppUi* appUi = static_cast<CFMRadioAppUi*>( AppUi() );
-    if ( aForeground )
-        {	 
-        if ( iStartUp )
-            {
-            iStartUp = EFalse;
-            CFMRadioRdsReceiverBase& receiver = iRadioEngine->RdsReceiver();
-            TBool afEnabled = iRadioEngine->RadioSettings().IsRdsAfSearchEnabled();
-            iContainer->ShowRdsInfo( receiver.SignalAvailable(), ETrue, afEnabled );
-            TBool showMusicStore = IsRTPlusInterActionIndicatorNeeded();
-            iContainer->ShowRTPlusInteractionIndicator(showMusicStore, ETrue);
-            }
-        }
-    else
-        {
-        CAlfEnv* env = CAlfEnv::Static();
-        if ( iContainer && env )
-            {
-            iContainer->IdleController().DeactivateControls();
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CFMRadioMainView::RdsDataProgrammeService
-// ---------------------------------------------------------------------------
-//
-void CFMRadioMainView::RdsDataProgrammeService( const TDesC& aProgramService )
-    {
-	TRAP_IGNORE( 
-		RdsDataProgrammeServiceL( aProgramService ) 
-		);
-    }
-
-// ---------------------------------------------------------------------------
-// CFMRadioMainView::RdsDataPsNameIsStatic
-// ---------------------------------------------------------------------------
-//
-void CFMRadioMainView::RdsDataPsNameIsStatic( TBool aStatic )
-    {
-    TRAP_IGNORE( HandleStaticProgrammeServiceL( aStatic ) )
-    }
-
-// ---------------------------------------------------------------------------
-// CFMRadioMainView::RdsDataProgrammeServiceL
-// ---------------------------------------------------------------------------
-//
-void CFMRadioMainView::RdsDataProgrammeServiceL( const TDesC& aProgramService )
-    {
-    FTRACE(FPrint(_L("CFMRadioMainView::RdsDataProgrammeServiceL('%S')"), &aProgramService));
-    if( iContainer )
-        {
-        CAlfEnv* alfEnv = CAlfEnv::Static();
-        if( alfEnv )
-            {
-            if(  aProgramService.Length() > 0 )
-                {
-                TInt presetIndexToDisplay = KErrNotFound;
-                TInt presetIndex = iRadioEngine->GetPresetIndex();
-                // When we haven't preset name, ps name will save as preset name
-                if ( iRadioEngine->GetRadioMode() == CRadioEngine::ERadioPresetMode &&
-                        presetIndex < iObserver.Channels().Count() )
-                    {
-                    presetIndexToDisplay = presetIndex;
-                    }
-                SetStationChangeType( EFMRadioStationChangeNone );
-                DisplayChannelL( presetIndexToDisplay );
-                }
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CFMRadioMainView::HandleStaticProgrammeServiceL
-// ---------------------------------------------------------------------------
-//
-void CFMRadioMainView::HandleStaticProgrammeServiceL( TBool aStatic )
-    {
-    FTRACE(FPrint(_L("CFMRadioMainView::HandleStaticProgrammeServiceL(%d)"), aStatic));
-    
-    if( iContainer )
-        {
-        if ( aStatic )
-            {
-            // When we haven't got a name for preset, a static ps name will be saved
-            TInt channelCount = iObserver.Channels().Count();
-            TInt currentPresetIx = iRadioEngine->GetPresetIndex();
-            
-            if ( aStatic && iRadioEngine->GetRadioMode() == CRadioEngine::ERadioPresetMode &&
-                    currentPresetIx != KErrNotFound &&
-                    channelCount > 0 &&
-                    currentPresetIx < channelCount )
-                {
-                const TDesC& stationName = iObserver.Channels()[ currentPresetIx ]->PresetName();
-                TInt presetFreq = iObserver.Channels()[ currentPresetIx ]->PresetFrequency();
-        
-                if ( stationName.Length() == 0 && 
-                        presetFreq != KErrNotFound && 
-                        iRadioEngine->RdsReceiver().ProgrammeService().Length() )
-                    {  
-                    iObserver.Channels()[ currentPresetIx ]->SetPresetNameL( iRadioEngine->RdsReceiver().ProgrammeService() );
-                    iObserver.UpdateChannelsL( EStoreIndexToRepository, currentPresetIx, 0 );
-                    // Update station information display
-                    DisplayChannelL( currentPresetIx );
-                    }  
-                }
-            iContainer->MediaIdle().AddPsNameToMediaIdleL( iRadioEngine->RdsReceiver().ProgrammeService() );
-            }
-        }
-    }
-
-// ---------------------------------------------------------
-// CFMRadioMainView::RdsDataRadioText
-// ---------------------------------------------------------
-//
-void CFMRadioMainView::RdsDataRadioText( const TDesC& aRadioText )
-    {
-    FTRACE(FPrint(_L("CFMRadioMainView::RdsDataRadioText('%S')"), &aRadioText));
-    if ( iContainer && aRadioText.Length() > 0 )
-        {
-            TRAP_IGNORE( iContainer->SetRdsRadioTextL( aRadioText ) );
-        }
-    }
-
-// ---------------------------------------------------------
-// CFMRadioMainView::RdsDataRadioTextPlus
-// ---------------------------------------------------------
-//
-void CFMRadioMainView::RdsDataRadioTextPlus( const TInt aRadioTextPlusClass, const TDesC& aRadioText )
-    {
-    if ( aRadioTextPlusClass == ERTplusProgramHomepage &&
-            iRadioEngine->GetRadioMode() == CRadioEngine::ERadioPresetMode )
-        {
-        TInt currentPresetIx = iRadioEngine->GetPresetIndex();
-        
-        if ( currentPresetIx < iObserver.Channels().Count() )
-            {
-            TRAP_IGNORE
-                (
-                // save permanently
-                iRadioEngine->SaveUrlToPresetL( currentPresetIx, aRadioText );
-                // save to ui list
-                iObserver.Channels()[ currentPresetIx ]->SetPresetUrlL( aRadioText );
-                )
-            }
-        }
-    
-    
-    if ( IsRTPlusInterActionIndicatorNeeded() )
-        {
-        iContainer->ShowRTPlusInteractionIndicator( ETrue, ETrue );
-        if ( !iRadioEngine->MusicStoreNoteDisplayed() )
-            {
-            TRAP_IGNORE( ShowRTPlusFirstTimeDialogL() )
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CFMRadioMainView::IsRTPlusInterActionIndicatorNeeded
-// ---------------------------------------------------------------------------
-//
-TBool CFMRadioMainView::IsRTPlusInterActionIndicatorNeeded()
-    {
-    CFMRadioRdsReceiverBase& receiver = iRadioEngine->RdsReceiver();
-    TBool songInformation = receiver.RtPlusSong().Length() || 
-                            receiver.RtPlusArtist().Length() ||
-                            receiver.RtPlusAlbum().Length();
-    TBool webLink = receiver.RtPlusProgramUrl().Length() &&
-                    iRadioEngine->GetRTPlusSupportLevel() == EFMRadioAllInteractions;
-
-    return songInformation || webLink;
-    }
-
-// ---------------------------------------------------------------------------
-// CFMRadioMainView::ShowRTPlusFirstTimeDialogL
-// ---------------------------------------------------------------------------
-//
-void CFMRadioMainView::ShowRTPlusFirstTimeDialogL()
-    {
-    // to avoid further calls
-    iRadioEngine->SetMusicStoreNoteDisplayed();
-    
-    HBufC* noteTxt = StringLoader::LoadLC( R_QTN_FMRADIO_RTPLUS_FIRSTTIME, iCoeEnv );
-
-    CAknMessageQueryDialog* rdsFirstTimeDialog = new (ELeave) CAknMessageQueryDialog;
-    CleanupStack::PushL( rdsFirstTimeDialog );
-    rdsFirstTimeDialog->SetMessageTextL( *noteTxt );
-    CleanupStack::Pop( rdsFirstTimeDialog );
-    rdsFirstTimeDialog->ExecuteLD( R_FMRADIO_RTPLUS_FIRSTTIME_NOTE );
-
-    CleanupStack::PopAndDestroy( noteTxt );
-    }
-
-// ---------------------------------------------------------------------------
-// CFMRadioMainView::RdsAfSearchBegin
-// ---------------------------------------------------------------------------
-//
-void CFMRadioMainView::RdsAfSearchBegin()
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CFMRadioMainView::RdsAfSearchEnd
-// ---------------------------------------------------------------------------
-//
-void CFMRadioMainView::RdsAfSearchEnd( TUint32 /*aFrequency*/, TInt /*aError*/ )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CFMRadioMainView::RdsAfSearchStateChange
-// ---------------------------------------------------------------------------
-//
-void CFMRadioMainView::RdsAfSearchStateChange( TBool aEnabled )
-    { 
-    CFMRadioAppUi* appUi = static_cast<CFMRadioAppUi*>(AppUi());
-    if( appUi->ActiveView() == KFMRadioMainViewId )
-        {
-        CFMRadioRdsReceiverBase& receiver = iRadioEngine->RdsReceiver();
-        TBool show = receiver.SignalAvailable();
-        iContainer->ShowRdsInfo( show, ETrue, aEnabled );
-       }
-    }
-
-// ---------------------------------------------------------------------------
-// CFMRadioMainView::RdsAvailable
-// ---------------------------------------------------------------------------
-//
-void CFMRadioMainView::RdsAvailable( TBool aAvailable )
-    {
-    CAlfEnv* alfEnv = CAlfEnv::Static();
-    if( alfEnv )
-        {
-        CFMRadioAppUi* appUi = static_cast<CFMRadioAppUi*>(AppUi());
-
-        if( appUi->ActiveView() == KFMRadioMainViewId )
-            {
-            if( aAvailable )
-                {
-                iRdsSignalTimer->Cancel();
-                TBool afEnabled = iRadioEngine->RadioSettings().IsRdsAfSearchEnabled();
-                iContainer->ShowRdsInfo( ETrue, ETrue, afEnabled );
-                }
-            else
-                {
-                // Start timer only if it wasn't activated before
-                if( !iRdsSignalTimer->IsActive() )
-                    {
-                    // Used for conversing milliseconds to format timer understand, ie. microseconds
-                    const TInt timerMultiplier = 1000;
-
-                    // Start timer to fade rds icon after a delay
-                    iRdsSignalTimer->Start( TTimeIntervalMicroSeconds32( KFMRadioRdsSignalFadeOutDelay * timerMultiplier ),
-                            TTimeIntervalMicroSeconds32(0), TCallBack( StaticRdsSignalTimerCallback, this ) );
-                    }
-                }
-            }
-        }
-    }
-
-// ---------------------------------------------------------
-// CFMRadioMainView::StaticRdsSignalTimerCallback
-// ---------------------------------------------------------
-TInt CFMRadioMainView::StaticRdsSignalTimerCallback( TAny* aSelfPtr )
-    {
-    CFMRadioMainView* self = reinterpret_cast<CFMRadioMainView*>(aSelfPtr);
-    if(self)
-        {
-        self->iRdsSignalTimer->Cancel();
-        if(self->iContainer)
-            {
-            self->iContainer->ShowRdsInfo(EFalse, ETrue);
-            }
-        }
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------
-// CFMRadioMainView::DisplayChannelL
-// Inform the window owning container that it should display
-// the frequency and name of the channel specified.
-// ---------------------------------------------------------
-//
-void CFMRadioMainView::DisplayChannelL( TInt aChannelIndex )
-    {
-    FTRACE(FPrint(_L("DisplayChannelL Start, index: %d "), aChannelIndex));
-
-    if ( iContainer )
-        { 
-        iContainer->MediaIdle().ResetMediaIdleContent();
-        
-        if ( aChannelIndex != KErrNotFound )
-            {
-            CRadioEngine::TStationName stationName;
-            TInt channelNumber = aChannelIndex + 1;
-            TInt channelFrequency = KErrNotFound;
-            
-            iRadioEngine->GetPresetNameAndFrequencyL( aChannelIndex, stationName, channelFrequency );
-            
-            TFMRadioStationChangeType seekDirection = iChangeDirection;
-            
-            // Hide index number as the frequency was set by RDS AF search.
-            if ( iRadioEngine->FrequencySetByRdsAf() && channelFrequency != iRadioEngine->GetTunedFrequency() )
-                {
-                channelNumber = KErrNotFound;
-                channelFrequency = iRadioEngine->GetTunedFrequency();
-                seekDirection = EFMRadioStationChangeNone;
-                }
-    
-            // Update view
-            iContainer->DisplayChannelInfoL( channelNumber, 
-                                             stationName, 
-                                             seekDirection, 
-                                             channelFrequency );
-            
-            // show '+' indicator if channel exists and url is stored
-            if ( channelNumber && iObserver.Channels()[ aChannelIndex ]->PresetUrl().Length() )
-                {
-                iContainer->ShowRTPlusInteractionIndicator( ETrue, ETrue );
-                }
-            }
-        else
-            {
-            iContainer->DisplayChannelInfoL( aChannelIndex, 
-                                             KNullDesC, 
-                                             iChangeDirection, 
-                                             iRadioEngine->GetTunedFrequency() );
-            }
-        
-        FTRACE( FPrint(_L("DisplayChannelL End") ) );
-        }
-    }
-
-// ---------------------------------------------------------
-// CFMRadioMainView::HandleCommandL
-// All commands are handled by the AppUi
-// ---------------------------------------------------------
-//
-void CFMRadioMainView::HandleCommandL( TInt aCommand )
-    {
-    CFMRadioAppUi* appUi = static_cast<CFMRadioAppUi*>( AppUi() );
-    switch ( aCommand )
-        {
-        case EAknSoftkeyBack:
-            {
-            const TVwsViewId viewId( TUid::Uid( KUidFMRadioApplication ), Id() );
-            if ( !appUi->BackSteppingWrapper().HandleBackCommandL( viewId ) )
-                {
-                // Command not consumed by Back Stepping Service, handle here by going background
-                TApaTask task( iEikonEnv->WsSession() );
-                task.SetWgId( iEikonEnv->RootWin().Identifier() );
-                task.SendToBackground();
-                }
-            break;
-            }
-        case EMPXPbvCmdInternetGoToWeb:
-            {
-            LaunchBrowserL( aCommand );
-            break;
-            }
-        case EFMRadioCmdChannelList:
-            {
-            HandleSaveChannelQueryL();
-            appUi->HandleCommandL( aCommand );
-            break;
-            }
-        case EFMRadioRockerButtonKeyUp:
-        case EFMRadioRockerButtonKeyDown:
-            {
-            // NOP
-            break;
-            }
-        case EAknSoftkeySelect: // MSK
-            {
-            if ( !iFaded && !iSeeking )
-                {
-                HandleSaveChannelQueryL();
-                appUi->HandleCommandL( EFMRadioCmdChannelList );
-                }
-            break;
-            }
-        case EFMRadioRockerButtonKeyLeft:
-            {
-            if ( !iFaded && !iSeeking )
-                {
-                appUi->HandleCommandL( EFMRadioCmdPrevChannel );
-                }
-            break;
-            }
-        case EFMRadioRockerButtonKeyLeftLong:
-            {
-            if ( !iFaded && !iSeeking )
-                {
-                appUi->HandleCommandL( EFMRadioCmdSeekDown );
-                }
-            break;
-            }
-        case EFMRadioRockerButtonKeyRight:
-            {
-            if ( !iFaded && !iSeeking )
-                {
-                appUi->HandleCommandL( EFMRadioCmdNextChannel );
-                }
-            break;
-            }
-         case EFMRadioRockerButtonKeyRightLong:
-            {
-            if ( !iFaded && !iSeeking )
-                {
-                appUi->HandleCommandL( EFMRadioCmdSeekUp );
-                }
-            break;
-            }
-         case EFMRadioCmdErase:
-             {
-             if ( appUi->EraseChannelL( iRadioEngine->GetPresetIndex() ) )
-                 {
-                 // delete has been confirmed, update station info
-                 if ( iContainer )
-                     {
-                     if ( IsRTPlusInterActionIndicatorNeeded() )
-                         {
-                         iContainer->ShowRTPlusInteractionIndicator( ETrue, ETrue );
-                         }
-                     else
-                         {
-                         iContainer->ShowRTPlusInteractionIndicator( EFalse, ETrue );
-                         }
-                     }
-                 SetStationChangeType( EFMRadioStationChangeNone );
-                 iRadioEngine->SetTunerModeOn();
-                 DisplayChannelL( KErrNotFound );
-                 }
-             break;
-             }
-         case EFMRadioToolbarButtonCmdToggleIhf:
-             {
-             if ( iRadioEngine->GetAudioOutput() == CRadioEngine::EFMRadioOutputHeadset )
-                 {
-                 appUi->HandleCommandL( EFMRadioCmdActivateIhf );
-                 }
-             else
-                 {
-                 appUi->HandleCommandL( EFMRadioCmdDeactivateIhf );
-                 }
-             break;
-             }
-         default:
-            {
-            if ( iMusicStoreHandler->IsMusicStoreCommandId( aCommand ) )
-                {
-                LaunchBrowserL( aCommand );
-                }
-            else
-                {
-                appUi->HandleCommandL( aCommand );
-                }
-            break;
-            }
-        }
-    }
-
-// ----------------------------------------
-// Launch Browser
-// ----------------------------------------
-void CFMRadioMainView::LaunchBrowserL( TInt aCommandId )
-    {
-    FTRACE( FPrint(_L("CFMRadioMainView::LaunchBrowserL") ) );
-    
-    CFMRadioRdsReceiverBase& receiver = iRadioEngine->RdsReceiver();
-    switch ( aCommandId )
-        {
-        case EMPXPbvCmdInternetGoToWeb:
-            {
-            RBuf webLinkToLaunch;
-            webLinkToLaunch.CleanupClosePushL();
-            if ( receiver.RtPlusProgramUrl().Length() )
-                {
-                webLinkToLaunch.CreateL( receiver.RtPlusProgramUrl() );
-                }           
-            else if ( iRadioEngine->GetRadioMode() == CRadioEngine::ERadioPresetMode )
-                {
-                webLinkToLaunch.CreateL(
-                        iObserver.Channels()[ iRadioEngine->GetPresetIndex() ]->PresetUrl() );
-                }
-            iMusicStoreHandler->LaunchWebPageL( webLinkToLaunch );
-            CleanupStack::PopAndDestroy( &webLinkToLaunch );
-            break;
-            }
-        default:
-            iMusicStoreHandler->LaunchMusicStoreL( aCommandId, 
-                                                   receiver.RtPlusSong(),
-                                                   receiver.RtPlusArtist(),
-                                                   receiver.RtPlusAlbum() );
-            break;
-        }
-    }
-
-// ----------------------------------------------------------------------------------------------------
-// CFMRadioMainView::NotifyRdsTextTimerCompletion()
-// From MFMRadioAlfRdsViewObserver
-// Called when same RT has stayed on display for 60 sec.
-// ----------------------------------------------------------------------------------------------------
-//
-void CFMRadioMainView::NotifyRdsTextTimerCompletion()
-    {
-    DetermineActiveMediaIdleComponent();
-    }
-// ---------------------------------------------------------
-// CFMRadioMainView::DoActivateL
-// Activate the main view
-// ---------------------------------------------------------
-//
-void CFMRadioMainView::DoActivateL(
-        const TVwsViewId& /*aPrevViewId*/,
-        TUid /*aCustomMessageId*/,
-        const TDesC8& /*aCustomMessage*/)
-    {
-    CAknTitlePane* titlePane = static_cast<CAknTitlePane*>( StatusPane()->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
-    titlePane->SetTextToDefaultL();
-#ifdef __FM_UPDATE_PACKAGE__
-    const TDesC* titleText = titlePane->Text();
-    TBufC<2> titleAddition( KFMRadioUpdated );
-    HBufC* newTitle = HBufC::NewLC( titleText->Length() + titleAddition.Length() );
-    newTitle->Des().Copy( *titleText );
-    newTitle->Des().Append( titleAddition );
-    titlePane->SetTextL( *newTitle, ETrue );
-    CleanupStack::PopAndDestroy( newTitle );
-#endif
-
-    if ( !iContainer )
-        {
-        CAlfEnv* alfEnv = CAlfEnv::Static();
-        CFMRadioAppUi* appUi = static_cast<CFMRadioAppUi*>( AppUi() );
-        iContainer = CFMRadioMainContainer::NewL( ClientRect() , *alfEnv, *iRadioEngine );
-        iContainer->RdsViewer().SetObserver( this );
-        iContainer->Logo().SetObserver( this );
-        }
-    if ( !AknLayoutUtils::PenEnabled() )
-        {
-        // explicitly remove the middle softkey that shouldn't be there.
-        Cba()->SetCommandL( CEikButtonGroupContainer::EMiddleSoftkeyPosition, 0, KNullDesC );
-        }
-
-    SetStationChangeType( EFMRadioStationChangeNone );
-
-    if ( !iStartUp )
-        {
-        StopSeekL(); //used to trigger a UI update
-        }
-    else
-        {
-        AppUi()->HandleCommandL( EFMRadioCmdUpdateVolume );
-        }
-
-    AppUi()->HandleCommandL( EFMRadioCmdMainViewActive );
-
-    iRadioEngine->RdsReceiver().AddObserver( this );
-
-    TBool afEnabled = iRadioEngine->RadioSettings().IsRdsAfSearchEnabled();
-
-    iContainer->ShowRdsInfo( iRadioEngine->RdsReceiver().SignalAvailable(), EFalse, afEnabled );
-    FadeAndShowExit(iFaded);
-    }
-
-// ---------------------------------------------------------
-// CFMRadioMainView::DoDeactivate
-// Deactivate the main view
-// ---------------------------------------------------------
-//
-void CFMRadioMainView::DoDeactivate()
-    {
-    CFMRadioAppUi* appUi = static_cast<CFMRadioAppUi*>(AppUi());
-    
-    if ( appUi->RadioEngine() )
-        {
-        iRadioEngine->RdsReceiver().RemoveObserver( this );
-    	}
-    
-    if ( iContainer )
-        {
-        CAlfEnv* alfEnv = CAlfEnv::Static();
-        if ( alfEnv )
-            {
-            iContainer->RdsViewer().RemoveObserver( this );
-            iContainer->RdsViewer().Reset();
-            iContainer->Logo().RemoveObserver( this );
-            iContainer->IdleController().HideAllControls();
-            }
-        delete iContainer;
-	    iContainer = NULL;
-        }
-    }
-	
-// ---------------------------------------------------------
-// CFMRadioMainView::DynInitMenuPaneL
-// Sets the state of menu items dynamically according to the
-// state of application data.
-// ---------------------------------------------------------
-//
-void CFMRadioMainView::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane )
-    {
-    iMusicStoreHandler->InitializeMenuL( aResourceId, aMenuPane );
-    
-    if ( aResourceId == R_FMRADIO_MAIN_OPTIONS_MENU ) // Main menu
-        {
-        if ( IsWebLinkAvailable() )
-            {
-            aMenuPane->SetItemDimmed( EMPXPbvCmdInternetGoToWeb, EFalse );
-            }
-        else
-            {
-            aMenuPane->SetItemDimmed( EMPXPbvCmdInternetGoToWeb, ETrue );
-            }
-
-        if ( iRadioEngine->IsAudioRoutingPossible() )
-        	{
-	        if ( iRadioEngine->GetAudioOutput() == CRadioEngine::EFMRadioOutputIHF )
-	            {
-	            // Delete existing menu option and add a new one
-	            aMenuPane->DeleteMenuItem( EFMRadioCmdActivateIhf );
-	            if ( iRadioEngine->IsHeadsetConnected() )
-	                {
-	                aMenuPane->SetItemTextL( EFMRadioCmdDeactivateIhf, R_QTN_FMRADIO_OPTIONS_DEACTIVATE );
-	                }
-	            else
-	                {
-	                aMenuPane->DeleteMenuItem( EFMRadioCmdDeactivateIhf );
-	                }
-	            }
-	        else
-	            {
-	            // Delete existing menu option and add a new one
-	            aMenuPane->DeleteMenuItem( EFMRadioCmdDeactivateIhf );
-	            aMenuPane->SetItemTextL( EFMRadioCmdActivateIhf,R_QTN_FMRADIO_OPTIONS_ACTIVATE );
-	            }
-        	}
-		else
-			{
-			aMenuPane->SetItemDimmed( EFMRadioCmdDeactivateIhf, ETrue );	
-			aMenuPane->SetItemDimmed( EFMRadioCmdActivateIhf, ETrue );
-			}        	
-
-        // if help is not enabled, disable help option
-        if ( !FeatureManager::FeatureSupported( KFeatureIdHelp ) )
-            {
-            aMenuPane->SetItemDimmed( EAknCmdHelp, ETrue );
-            }
-        CFMRadioAppUi* appUi = static_cast<CFMRadioAppUi*>( iCoeEnv->AppUi() );
-        if ( appUi->MatchingChannelL( iRadioEngine->GetTunedFrequency() ) == KErrNotFound || 
-              iRadioEngine->GetRadioMode() == CRadioEngine::ERadioTunerMode ) // current frequency not saved
-            {
-            aMenuPane->SetItemDimmed( EFMRadioCmdRename, ETrue );
-            aMenuPane->SetItemDimmed( EFMRadioCmdSaveChannel, EFalse );
-            aMenuPane->SetItemDimmed( EFMRadioCmdErase, ETrue );
-            }
-        else
-            {
-            aMenuPane->SetItemDimmed( EFMRadioCmdRename, EFalse );
-            aMenuPane->SetItemDimmed( EFMRadioCmdSaveChannel, ETrue );
-            aMenuPane->SetItemDimmed( EFMRadioCmdErase, EFalse );
-            }
-        }
-        
-    if ( aResourceId == R_FMRADIO_OPTIONS_AF_SUB_MENU ) // Rds af search sub menu
-        {
-        TBool afEnabled = iRadioEngine->RadioSettings().IsRdsAfSearchEnabled();
-	    if ( afEnabled )
-	    	{
-			aMenuPane->SetItemButtonState( EFMRadioCmdDisableRdsAfSearch, EEikMenuItemSymbolIndeterminate );        	
-        	aMenuPane->SetItemButtonState( EFMRadioCmdEnableRdsAfSearch, EEikMenuItemSymbolOn );
-        	}
-        else
-        	{      	
-			aMenuPane->SetItemButtonState( EFMRadioCmdEnableRdsAfSearch, EEikMenuItemSymbolIndeterminate );
-        	aMenuPane->SetItemButtonState( EFMRadioCmdDisableRdsAfSearch, EEikMenuItemSymbolOn );
-        	}
-        }
-    
-    }
-
-// ---------------------------------------------------------
-// CFMRadioMainView::LayoutChangedL
-// ---------------------------------------------------------
-//
-void CFMRadioMainView::LayoutChangedL( TInt aType )
-    {
-    if ( iContainer ) 
-    	{
-    	iContainer->HandleResourceChange( aType );
-    	}
-    }
-    
-// ---------------------------------------------------------
-// CFMRadioMainView::SetStationChangeType
-// ---------------------------------------------------------
-//
-void CFMRadioMainView::SetStationChangeType( TFMRadioStationChangeType aChangeType )
-	{
-	iChangeDirection = aChangeType;
-	}
-	
-// ---------------------------------------------------------
-// CFMRadioMainView::PrepareViewForChannelChange
-// ---------------------------------------------------------
-//
-void CFMRadioMainView::PrepareViewForChannelChange()
-	{
-	TRAP_IGNORE( PrepareViewForChannelChangeL() );
-	}
-	
-// ---------------------------------------------------------
-// CFMRadioMainView::PrepareViewForChannelChangeL
-// ---------------------------------------------------------
-//
-void CFMRadioMainView::PrepareViewForChannelChangeL()
-	{	
-	switch ( iChangeDirection ) 
-		{
-		case EFMRadioStationChangeNext: // fall through
-        case EFMRadioStationChangePrevious:
-        case EFMRadioStationChangeScanUp:
-        case EFMRadioStationChangeScanDown:
-			{
-			if( iContainer )
-				{
-				iContainer->VisualControl()->ScrollOutCurrentStationInformationL( iChangeDirection );
-				}
-			}
-            break;
-		default:
-			{
-			break;
-			}
-		}	
-    if ( iContainer )
-        {
-        iContainer->RdsViewer().Reset();
-        }
-
-    if ( iContainer )
-        {
-        iContainer->ShowRTPlusInteractionIndicator( EFalse, ETrue);
-        }
-    // force update for toolbar extension view
-    iToolbar->ToolbarExtension()->SetShown( EFalse );
-    }
-
-// --------------------------------------------------------------------------------
-// CFMRadioMainView::PrepareToolbar
-// Prepare toolbar for displaying basic radio command buttons
-// --------------------------------------------------------------------------------
-//
-void CFMRadioMainView::PrepareToolbar()
-	{
-	// get toolbar from view
-   	iToolbar = Toolbar();
-   	
-   	// Set observer
-    iToolbar->SetToolbarObserver( this );
-
-   	CAknButton* leftButton = NULL;
- 	CAknButton* rightButton = NULL;	
-   	leftButton = static_cast<CAknButton*>( iToolbar->ControlOrNull( EFMRadioToolbarButtonCmdTuneDown ) );
-    rightButton = static_cast<CAknButton*>( iToolbar->ControlOrNull( EFMRadioToolbarButtonCmdTuneUp) );
-    
-    //set delay after buttons report long key press	
-   	if ( leftButton )
-   		{
-    	leftButton->SetLongPressInterval( KLongPressDelayValueInMicroseconds );
-    	}
-	if ( rightButton )
-		{
-		rightButton->SetLongPressInterval( KLongPressDelayValueInMicroseconds );
-		}		          	
-	}
-
-// --------------------------------------------------------------------------------
-// CFMRadioMainView::OfferToolbarEventL
-// Handle commands from toolbar.
-// --------------------------------------------------------------------------------
-//
-void CFMRadioMainView::OfferToolbarEventL( TInt aCommandId )
-    {
-    // Event modifiers are valid only during CAknToolbar::OfferToolbarEventL
-    TBool isHandled = EFalse;
-    if ( iToolbar->EventModifiers() == CAknToolbar::ELongPress )
-        {
-        switch( aCommandId )
-            {
-            case EFMRadioToolbarButtonCmdTuneDown:
-                {
-                isHandled = ETrue;
-                AppUi()->HandleCommandL( EFMRadioCmdSeekDown );
-                break;
-                }
-            case EFMRadioToolbarButtonCmdTuneUp:
-                {
-                isHandled = ETrue;
-                AppUi()->HandleCommandL( EFMRadioCmdSeekUp );
-                break;
-                }
-            default:
-                {
-                // fall through.
-                // dont break here because extension list buttons
-                // seem to report longpress also after the tuning buttons
-                // are pressed long.
-                }
-            }
-        }
-        
-    if ( iToolbar->EventModifiers() != CAknToolbar::ELongPress && 
-        iToolbar->EventModifiers() != CAknToolbar::ELongPressEnded )
-        {
-        switch( aCommandId )
-            {
-            case EFMRadioToolbarButtonCmdTuneDown:
-                {
-                isHandled = ETrue;
-                AppUi()->HandleCommandL( EFMRadioCmdPrevChannel );
-                break;
-                }
-            case EFMRadioToolbarButtonCmdTuneUp:
-                {
-                isHandled = ETrue;
-                AppUi()->HandleCommandL( EFMRadioCmdNextChannel );
-                break;
-                }
-            default:
-                {
-                // fall through.
-                // dont break here because extension list buttons
-                // seem to report longpress also after the tuning buttons
-                // are pressed long.
-                }
-            }
-        }
-    if ( !isHandled )
-        {
-        switch( aCommandId )
-            {
-            case EFMRadioToolbarButtonCmdNokiaMusicStore:
-                {
-                HandleCommandL( EFMRadioMusicStoreNokiaMusicShop );
-                break;
-                }
-            case EFMRadioToolbarButtonCmdOperatorMusicStore:
-                {
-                HandleCommandL( EFMRadioMusicStoreOperator );
-                break;
-                }
-            case EFMRadioCmdRename:
-                {
-                iToolbar->ToolbarExtension()->SetShown( EFalse );
-                HandleCommandL( aCommandId );
-                break;
-                }
-            case EFMRadioCmdErase:
-                {
-                iToolbar->ToolbarExtension()->SetShown( EFalse );
-                HandleCommandL( aCommandId );
-                break;
-                }
-            case EFMRadioCmdChannelList:
-                {
-                iToolbar->ToolbarExtension()->SetShown( EFalse );
-                HandleCommandL( aCommandId );
-                break;
-                }
-            default:
-                {
-                HandleCommandL( aCommandId );
-                break;
-                }
-            }
-        }
-    }
-
-// --------------------------------------------------------------------------------
-// CFMRadioMainView::DynInitToolbarL
-// from MAknToolbarObserver
-// --------------------------------------------------------------------------------
-//
-void CFMRadioMainView::DynInitToolbarL( TInt /*aResourceId*/, CAknToolbar* aToolbar )
-    {
-    if ( iToolbar == aToolbar )
-        {
-        CFMRadioAppUi* appUi = static_cast<CFMRadioAppUi*>( iCoeEnv->AppUi() );
-        CAknToolbarExtension* toolbarExtension = iToolbar->ToolbarExtension();
-        
-        if ( appUi->MatchingChannelL( iRadioEngine->GetTunedFrequency() ) == KErrNotFound  || 
-              iRadioEngine->GetRadioMode() == CRadioEngine::ERadioTunerMode )
-            {
-            // current frequency not saved
-            // show save
-            toolbarExtension->HideItemL( EFMRadioCmdSaveChannel, EFalse );
-            // hide rename
-            toolbarExtension->HideItemL( EFMRadioCmdRename, ETrue );
-            // dim delete
-            toolbarExtension->SetItemDimmed( EFMRadioCmdErase, ETrue );
-            }
-        else
-            {
-            // show rename
-            toolbarExtension->HideItemL( EFMRadioCmdRename, EFalse );
-            // hide save
-            toolbarExtension->HideItemL( EFMRadioCmdSaveChannel, ETrue );
-            // undim delete
-            toolbarExtension->SetItemDimmed( EFMRadioCmdErase, EFalse );
-            }
-        
-        if ( IsWebLinkAvailable() )
-            {
-            // show web button
-            toolbarExtension->HideItemL( EMPXPbvCmdInternetGoToWeb, EFalse );
-            }
-        else
-            {
-            // hide web button
-            toolbarExtension->HideItemL( EMPXPbvCmdInternetGoToWeb, ETrue );
-            }
-        
-        TBool musicStoreEnabled = iMusicStoreHandler->IsMusicStoreEnabled();
-        
-        if ( iMusicStoreHandler->OperatorMusicStoreAvailable() && musicStoreEnabled )
-            {
-            // show operator store
-            toolbarExtension->HideItemL( EFMRadioToolbarButtonCmdOperatorMusicStore, EFalse );
-            // hide speaker button
-            toolbarExtension->HideItemL( EFMRadioToolbarButtonCmdToggleIhf, ETrue );
-            }
-        else
-            {
-            // hide operator store
-            toolbarExtension->HideItemL( EFMRadioToolbarButtonCmdOperatorMusicStore, ETrue );
-            // show and update speaker button
-            UpdateToolbarSpeakerButtonStatus();
-            toolbarExtension->HideItemL( EFMRadioToolbarButtonCmdToggleIhf, EFalse );
-            }
-        
-        if ( iMusicStoreHandler->NokiaMusicStoreAvailable() && musicStoreEnabled )
-            {
-            // show Nokia Music Store
-            toolbarExtension->HideItemL( EFMRadioToolbarButtonCmdNokiaMusicStore, EFalse );
-            }
-        else
-            {
-            // hide Nokia Music Store
-            toolbarExtension->HideItemL( EFMRadioToolbarButtonCmdNokiaMusicStore, ETrue );
-            }
-        }
-    }
-
-// --------------------------------------------------------------------------------
-// CFMRadioMainView::SetToolbarDimmedState
-// Set the current state of the buttons in the button group
-// --------------------------------------------------------------------------------
-//
-void CFMRadioMainView::SetToolbarDimmedState( TBool aState )
-    {	
-    iToolbar->SetDimmed( aState );
-    iToolbar->DrawDeferred();
-    }
-
-// ---------------------------------------------------------------------------
-// CFMRadioMainView::HandleSaveChannelQueryL
-// show query if the current channel is not saved
-// ---------------------------------------------------------------------------
-//
-void CFMRadioMainView::HandleSaveChannelQueryL()
-    {
-    CFMRadioAppUi* appUi = static_cast<CFMRadioAppUi*>( iCoeEnv->AppUi() );
-    TInt channelIndex = appUi->MatchingChannelL( iRadioEngine->GetTunedFrequency() );
-    
-    if ( KErrNotFound == channelIndex )
-        {
-        TBool accepted = EFalse; // Operation accepted or discarded
-        CAknQueryDialog* saveQuery = CAknQueryDialog::NewL();
-        accepted = saveQuery->ExecuteLD( R_FMRADIO_QUERY_SAVE_CURRENT );
-        
-        if ( accepted )
-            {
-            AppUi()->HandleCommandL( EFMRadioCmdSaveChannel );
-            }
-        }
-    }
-
-// --------------------------------------------------------------------------------
-// CFMRadioMainView::SetEmphasis
-// From MEikMenuObserver. 
-// --------------------------------------------------------------------------------
-//
-void CFMRadioMainView::SetEmphasis( CCoeControl* aMenuControl, TBool aEmphasis )
-    {
-    CAknView::SetEmphasis( aMenuControl, aEmphasis );
-
-    if ( iContainer )
-        {
-        if ( aEmphasis ) // options menu opened
-            {
-            iOptionsMenuOpen = ETrue;
-            // deactivate controls to help improve UI performance
-            iContainer->IdleController().DeactivateControls();
-            }
-        else
-            {
-            if ( iOptionsMenuOpen )
-                {
-                // menu has been been really opened so update status
-                iOptionsMenuOpen = EFalse;
-                DetermineActiveMediaIdleComponent();
-                }
-            }
-        }
-    }
-
-// --------------------------------------------------------------------------------
-// CFMRadioMainView::LogoDisplayTimeCompleted
-// from MFMRadioAlfLogoObserver 
-// --------------------------------------------------------------------------------
-//
-void CFMRadioMainView::LogoDisplayTimeCompleted()
-    {
-    DetermineActiveMediaIdleComponent();
-    }
-
-// --------------------------------------------------------------------------------
-// CFMRadioMainView::DetermineActiveMediaIdleComponent
-// --------------------------------------------------------------------------------
-//
-void CFMRadioMainView::DetermineActiveMediaIdleComponent()
-    {
-    CFMRadioAppUi* appUi = static_cast<CFMRadioAppUi*> (AppUi());
-    TBool wizardHandled = appUi->IsStartupWizardHandled();
-
-     if ( iContainer &&
-          !iOptionsMenuOpen &&
-          wizardHandled &&
-          IsForeground() )
-        {
-        
-        if ( iContainer->RdsViewer().IsRdsTextVisibilityTimerCompleted() )
-            {
-            // same text displayed for a while, ok to start idle
-            iContainer->IdleController().ShowControl( iContainer->MediaIdle() );
-            }
-        else
-            {
-            // display the rds text until the NotifyRdsTextTimerCompletion() callback
-            iContainer->IdleController().ShowControl( iContainer->RdsViewer() );
-            }
-        }
-    }
-
-// --------------------------------------------------------------------------------
-// CFMRadioMainView::IsWebLinkAvailabe
-// --------------------------------------------------------------------------------
-//
-TBool CFMRadioMainView::IsWebLinkAvailable()
-    {
-    TBool response = EFalse;
-    TBool webLinkStored = EFalse;
-    TInt presetIndex = iRadioEngine->GetPresetIndex();
-    
-    if ( iRadioEngine->GetRadioMode() == CRadioEngine::ERadioPresetMode &&
-            presetIndex < iObserver.Channels().Count() )
-        {
-        if ( iObserver.Channels()[ presetIndex ]->PresetUrl().Length() )
-            {
-            webLinkStored = ETrue;
-            }
-        }
-
-    CFMRadioRdsReceiverBase& receiver = iRadioEngine->RdsReceiver();
-    
-    if ( ( receiver.RtPlusProgramUrl().Length() || 
-            webLinkStored ) && 
-            iRadioEngine->GetRTPlusSupportLevel() == EFMRadioAllInteractions )
-        {
-        response = ETrue;
-        }
-    
-    return response;
-    }
-
-// --------------------------------------------------------------------------------
-// CFMRadioMainView::UpdateToolbarSpeakerButtonStatus
-// --------------------------------------------------------------------------------
-//
-void CFMRadioMainView::UpdateToolbarSpeakerButtonStatus()
-    {
-    if ( iToolbar && iContainer )
-        {
-        CAknToolbarExtension* toolbarExtension = iToolbar->ToolbarExtension();
-        
-        if ( iRadioEngine->IsAudioRoutingPossible() )
-            {
-            toolbarExtension->SetItemDimmed( EFMRadioToolbarButtonCmdToggleIhf, EFalse );
-            CAknButton* speakerButton = NULL;
-            
-            speakerButton = static_cast<CAknButton*>( toolbarExtension->ControlOrNull( EFMRadioToolbarButtonCmdToggleIhf ) );
-            
-            if ( speakerButton )
-                {
-                if ( iRadioEngine->GetAudioOutput() == CRadioEngine::EFMRadioOutputIHF )
-                    {
-                    speakerButton->SetCurrentState( 1, ETrue );
-                    }
-                else
-                    {
-                    speakerButton->SetCurrentState( 0, ETrue );
-                    }
-                }
-            }
-        else
-            {
-            toolbarExtension->SetItemDimmed( EFMRadioToolbarButtonCmdToggleIhf, ETrue );
-            }
-        }
-    }
-
-// --------------------------------------------------------------------------------
-// CFMRadioMainView::ShowDefaultLogo
-// --------------------------------------------------------------------------------
-//
-void CFMRadioMainView::ShowDefaultLogo()
-    {
-    // show default radio logo
-    if ( iContainer )
-        {
-        iContainer->IdleController().ShowControl( iContainer->Logo() );
-        }
-    }
-
-// End of File