internetradio2.0/uisrc/irsettingsview.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 03 May 2010 12:25:23 +0300
changeset 2 2e1adbfc62af
parent 0 09774dfdd46b
permissions -rw-r--r--
Revision: 201015 Kit: 201018

/*
* Copyright (c) 2006-2006 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:  View class for Settings
*
*/


#include <akntitle.h>
#include "irsettingscontainer.h"
#include "irsettingsview.h"
#include "ircommon.h"
#include "irdebug.h"
#include <internetradio.rsg>
#include "irui.h"
#include "irnetworkcontroller.h"
#include <stringloader.h>
#include "irviewstack.h"
#include "ir.hrh"
#include "irnowplayingwrapper.h"


// -----------------------------------------------------------------------------
// CIRSettingsView::NewL()
// Two-phased constructor.
// -----------------------------------------------------------------------------
//
CIRSettingsView* CIRSettingsView::NewL()
    {
 	IRLOG_DEBUG( "CIRSettingsView::NewL" );
 	CIRSettingsView* self = CIRSettingsView::NewLC();
    CleanupStack::Pop( self );
    IRLOG_DEBUG( "CIRSettingsView::NewL - Exiting" );
    return self;
    }
// ---------------------------------------------------------------------------
// Two-phased constructor.
// ---------------------------------------------------------------------------
//
CIRSettingsView* CIRSettingsView::NewLC( )
    {
	IRLOG_DEBUG( "CIRSettingsView::NewLC - Entering" );
	CIRSettingsView* self = new ( ELeave ) CIRSettingsView();
	CleanupStack::PushL( self );
	self->ConstructL();
	IRLOG_DEBUG( "CIRSettingsView::NewLC - Exiting" );
	return self;
    }
    
// ---------------------------------------------------------------------------
// Default constructor
// ---------------------------------------------------------------------------
//
CIRSettingsView::CIRSettingsView()
    {
    IRLOG_DEBUG( "CIRSettingsView::CIRSettingsView" );
    }
    
// ---------------------------------------------------------------------------
// Second phase constructor
// ---------------------------------------------------------------------------
//
void CIRSettingsView::ConstructL()
    {
	IRLOG_DEBUG( "CIRSettingsView::ConstructL - Entering" );
	BaseConstructL();
	IRLOG_DEBUG( "CIRSettingsView::ConstructL - Exiting" );
    }

// ---------------------------------------------------------------------------
// Destructor
// ---------------------------------------------------------------------------
//
CIRSettingsView::~CIRSettingsView()
    {
    IRLOG_DEBUG( "CIRSettingsView::~CIRSettingsView" );
    }

// ---------------------------------------------------------------------------
// Getter for the view id
// ---------------------------------------------------------------------------
//
TUid CIRSettingsView::Id() const
    {
    IRLOG_DEBUG( "CIRSettingsView::Id" );
    return KIRSettingsViewId;
    }

// ---------------------------------------------------------------------------
// View activation
// ---------------------------------------------------------------------------
//
void CIRSettingsView::DoActivateL( const TVwsViewId& aPrevViewId, TUid aCustomMessageId,
					 const TDesC8& aCustomMessage )
    {
	IRLOG_DEBUG( "CIRSettingsView::DoActivateL - Entering." );
    CIRUi* appUi = static_cast<CIRUi*>( AppUi() );
	CIRSettingsViewBase::DoActivateL( aPrevViewId, aCustomMessageId, aCustomMessage );
	if(appUi->IsLandscapeOrientation())
		{
		StatusPane()->SwitchLayoutL(R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL);
		}
	else
		{
		StatusPane()->SwitchLayoutL(R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT);
		}
	SetTitleL(R_IRAPP_SETTINGS);
	if(aCustomMessageId==TUid::Uid(1))
		{
		return;
		}
	HandleViewStackL( );
	IRLOG_DEBUG( "CIRSettingsView::DoActivateL - Exiting." );
    }
    
// ---------------------------------------------------------------------------
// HandleForegroundEventL()
// Handles changes in keyboard focus when an application switches to foreground
// ---------------------------------------------------------------------------
// 
     
void CIRSettingsView::HandleForegroundEventL( TBool aForeground )
{
	IRLOG_DEBUG( "CIRSettingsView::HandleForegroundEventL - Entering." );
	CIRSettingsViewBase::HandleForegroundEventL(aForeground);
	IRLOG_DEBUG( "CIRSettingsView::HandleForegroundEventL - Exiting." );
}


// ---------------------------------------------------------------------------
// HandleViewStackL()
// Handles the view stack
// ---------------------------------------------------------------------------
// 
 
void CIRSettingsView::HandleViewStackL( )
    {
    IRLOG_DEBUG( "CIRSettingsView::HandleViewStackL - Entering." );
    CIRUi* appUi = static_cast<CIRUi*>( AppUi() );
    CIRViewStack& viewStack = appUi->ViewStack();
    
    if( viewStack.Peek() == Id() )
        {
        viewStack.Pop( );
        }
    else if( appUi->ActiveView() != Id() )
        {
        viewStack.PushL( appUi->ActiveView() );
        }
    else
        {
        // DONE
        }
    IRLOG_DEBUG( "CIRSettingsView::HandleViewStackL - Exiting." );
    }
    
    
// ---------------------------------------------------------------------------
// View deactivation
// ---------------------------------------------------------------------------
//
void CIRSettingsView::DoDeactivate()
    {
	IRLOG_DEBUG( "CIRSettingsView::DoDeactivate - Entering." );
	CIRSettingsViewBase::DoDeactivate();
	IRLOG_DEBUG( "CIRSettingsView::DoDeactivate - Exiting." );
    }

// ---------------------------------------------------------------------------
// System event handler
// ---------------------------------------------------------------------------
//

void CIRSettingsView::HandleSystemEventL(TIRSystemEventType aEventType)
    {
    IRLOG_DEBUG( "CIRSettingsView::HandleSystemEventL - Entering." );
	switch (aEventType)
		{
		case EIRCallActivated:
			{
			if (iContainer)
				{
				static_cast<CIRSettingsContainer*>(iContainer)->SetFaded(ETrue);
				Cba()->AddCommandSetToStackL(R_IR_SOFTKEYS_EXIT);
				Cba()->DrawDeferred();
				}
			break;
			}
		case EIRCallDeactivated:
			{
			if (iContainer)
				{
				//do not unfade the window if menu or dialog is displayed
				if(!AppUi()->IsDisplayingMenuOrDialog() && AppUi()->IsForeground()) 
					{
					static_cast<CIRSettingsContainer*>(iContainer)->SetFaded(EFalse);
					}
				Cba()->RemoveCommandFromStack(0, 0);
				Cba()->RemoveCommandFromStack(2, EAknSoftkeyExit);
				Cba()->DrawDeferred();
				}
			break;
			}
		default:
			{
			break;
			}
		}
		IRLOG_DEBUG( "CIRSettingsView::HandleSystemEventL - Exiting." );
    }

// ---------------------------------------------------------------------------
// Command handler.
// ---------------------------------------------------------------------------
//
void CIRSettingsView::HandleCommandL( TInt aCommand )
    {
    IRLOG_DEBUG( "CIRSettingsView::HandleCommandL - Entering." );
    CIRUi* appUi = static_cast<	CIRUi*>(AppUi());

		switch ( aCommand )
			{
			case EGotoNowPlayingViewCmd:
				{
				appUi->SetHistory(EFalse);
				appUi->SavePrevIDL(KIRSettingsViewId, aCommand);
				break; 			
				}

			case EAknSoftkeyBack:
		  	case EIRBack:
		   		{
	    		CIRViewStack& viewStack = appUi->ViewStack();
	        	// Check if Back Stepping Service consumes the command.
	        	if ( !static_cast< CIRUi* >( AppUi() )->ForwardBackCommandToBsWrapperL() )
	                {
	                // Command not consumed by Back Stepping Service, handle here.
	                appUi->ActivateLocalViewL( viewStack.Peek() );
	                }
		   		}
     		break;
         	
			default:
				CIRSettingsViewBase::HandleCommandL( aCommand );
			break;
			}
		IRLOG_DEBUG( "CIRSettingsView::HandleCommandL - Exiting." );
    }

// ---------------------------------------------------------------------------
// Constructs new container
// ---------------------------------------------------------------------------
//
void CIRSettingsView::CreateContainerL()
    {
    	IRLOG_DEBUG( "CIRSettingsView::CreateContainerL - Entering." );
       	//TInt defaultAccessPoint = 0; Just for PC-Lint commets :: SPP
   		if( !iContainer )
		{
		iContainer = CIRSettingsContainer::NewL(*this);
		}
   		IRLOG_DEBUG( "CIRSettingsView::CreateContainerL - Exiting." );
    }



// ---------------------------------------------------------------------------
// void CIRSettingsView::DynInitMenuPaneL()
// Dynamically initialises a menu pane
// ---------------------------------------------------------------------------
//
void CIRSettingsView::DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane)
	{
	IRLOG_DEBUG( "CIRSettingsView::DynInitMenuPaneL - Entering" );
	CIRUi* appUi = static_cast<CIRUi*>( AppUi() );

	if(!aMenuPane) User::Leave(KErrNotFound);
		{
		if(aResourceId == R_IR_MENU_SETTINGS)
			{				
			// Now Playing option
			if(appUi->iNowPlayingWrapper->iPlaying)
				{
				 aMenuPane->SetItemDimmed(EGotoNowPlayingViewCmd,EFalse);
				}
			else
				{
				 aMenuPane->SetItemDimmed(EGotoNowPlayingViewCmd,ETrue);
				}
			}
		}
	IRLOG_DEBUG( "CIRSettingsView::DynInitMenuPaneL - Exiting" );
	}
// ======== GLOBAL FUNCTIONS ========