basiclocationinfodisplay/blid/ui/src/CBlidSatelliteControl.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 19 Aug 2010 09:48:36 +0300
branchRCL_3
changeset 16 8173571d354e
parent 3 3c271c9e6618
permissions -rw-r--r--
Revision: 201030 Kit: 201033

/*
* Copyright (c) 2007-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:  Provides blid startup view class methods.
*
*/



// SYSTEM INCLUDES
#include <StringLoader.h>
#include <blid.rsg>
#include <blid.mbg>
#include <akntitle.h> 
#include <aknnavide.h> 
#include <eikspane.h>
#include <aknlayoutscalable_apps.cdl.h>
#include <layoutmetadata.cdl.h>
#include <AknUtils.h>
#include <AknsConstants.h>
 
#include <alf/alfenv.h>
#include <alf/alfanchorlayout.h>
#include <alf/alftextvisual.h>
#include <alf/alftextstyle.h>
#include <alf/alfborderbrush.h>
#include <alf/alfbrusharray.h>
#include <alf/alfevent.h>
#include <alf/alftransformation.h>
#include <alf/alftexture.h>
#include <alf/alfdecklayout.h>
#include <alf/alfutil.h>
#include <alf/alfimagevisual.h>
#include <alf/alftexture.h>
#include <alf/alfimageloaderutil.h>
#include <alf/alfflowlayout.h>

// USER INCLUDES
#include "CBlidSatelliteControl.h"
#include "CBlidEng.h"
#include "CBlidDocument.h"
#include "MBlidLocation.h"
#include "CBlidBaseView.h"
#include "bliduiconsts.h"
#include "Debug.h"

TInt TimerCallBack(TAny* aPtr);

// ================= MEMBER FUNCTIONS =======================
// ---------------------------------------------------------
// CBlidSatelliteControl::NewL()
// ---------------------------------------------------------
//
CBlidSatelliteControl* CBlidSatelliteControl::NewL( CAlfEnv& aEnv,
		                                  const TRect& aRect,
		                                  CBlidBaseView& aView)
    {
    CBlidSatelliteControl* self = new (ELeave) CBlidSatelliteControl(aEnv,
    													   aView );
    CleanupStack::PushL(self);
    self->ConstructL( aRect );
    CleanupStack::Pop(self);
    return self;
    }


// ---------------------------------------------------------
//
 //CBlidSatelliteControl::CBlidSatelliteControl()
// ---------------------------------------------------------
//
CBlidSatelliteControl::CBlidSatelliteControl(CAlfEnv& aEnv,
		    				   	   CBlidBaseView& aView ) 
    : CAlfControl( ),iEnv(aEnv),iView(aView)
    {
    iOnlineMode = EFalse;
    }


// ---------------------------------------------------------
// CBlidSatelliteControl::ConstructL()
// ---------------------------------------------------------
//
void CBlidSatelliteControl::ConstructL( const TRect& /*aRect*/ )
    {
    CAlfControl::ConstructL( iEnv );
    
    CBlidEng* engine = iView.BlidDocument()->Engine();
    iLocation = engine->LocationModel();

	iImagePath = HBufC::NewL( iEnv.TextureManager().ImagePath().Length() + 1 );
	iImagePath->Des().Copy( iEnv.TextureManager().ImagePath() );
	
	iAvailableNoteText = StringLoader::LoadL( R_BLID_NOTE_GPS_POSITIONING_AVAILABLE, CEikonEnv::Static() );
	iSearchNoteText = StringLoader::LoadL( R_BLID_WAITNOTE_SEARCHING_GPS_SATELLITES, CEikonEnv::Static() );
    
    iMainAnchorLayout = CAlfAnchorLayout::AddNewL( *this );
    
    iGlobeDeckLayout = CAlfDeckLayout::AddNewL( *this, iMainAnchorLayout );
    iAnimationVisual = CAlfImageVisual::AddNewL(*this, iGlobeDeckLayout );

    iDisplayIcon = 1;
    iPeriodic = CPeriodic::NewL(0); // neutral priority 
    iPeriodic->Start( TTimeIntervalMicroSeconds32( 200000 ),
                      TTimeIntervalMicroSeconds32( 200000 ),
                      TCallBack(Tick, this));
                      
	CalculateRects();
	SetAnchors();
    CreateGlobeVisualL();
    UpdateGlobeVisual();
	CreateSatelliteSignalVisualsL();
	
	}
    
// ----------------------------------------------------
// CBlidSatelliteControl::~CBlidSatelliteControl
// Destructor
// Frees reserved resources
// ----------------------------------------------------
//
CBlidSatelliteControl::~CBlidSatelliteControl()
    {
    iTextures.Reset();
    iTextures.Close();
    delete iNavimessage;
    delete iImagePath;
    delete iSearchNoteText;
    delete iAvailableNoteText;
	iSignalBarRects.Reset();
	iSignalBarRects.Close();
	iSatelliteNumberRects.Reset();
	iSatelliteNumberRects.Close();
	delete iPeriodic;
	delete iTimer;
    }    
 
 // ---------------------------------------------------------
// CBlidSatelliteControl::Tick()
// ---------------------------------------------------------
//
TInt CBlidSatelliteControl::Tick(TAny* aObject)
    {
    ((CBlidSatelliteControl*)aObject)->UpdateGlobeVisual(); // cast, and call non-static function

    return KErrNone;
    }
    

// ---------------------------------------------------------
// CBlidSatelliteControl::UpdateL
// ---------------------------------------------------------
//
void CBlidSatelliteControl::UpdateL()
    {
    TInt satInView = iLocation->NumberOfSatellitesVisible();
    TInt satId = 0;
	DEBUG1(" CBlidSatelliteControl::UpdateL iErrorCode ::%d", iErrorCode );
	if( iOnlineMode )
		{
		CreateNaviPaneL( *iAvailableNoteText );
		// code for GPS fix received view			
	    for( TInt i = 0; i < satInView; i++ )
		    {
		    satId = iLocation->GetSatelliteNo( i );
			TBuf<5> satNumber;
			satNumber.Format(_L("%d"), satId);
			
			if( i < 16 )
				{
				DisplaySatellitesRowL( satNumber, iSignalStrengthRowOne[i], iSatNoRowOne[i], i );
				// Dimmed those satellites which are not used.
				if( !iLocation->IsSatellitesUsed( i ) )
					{
					iSignalStrengthRowOne[i]->SetOpacity( 0.3 );	
					}
				else
					{
					iSignalStrengthRowOne[i]->SetOpacity( 1.0 );						
					}					
				}

		    }

	    // Change soft key    
	    iView.CBAPtr()->SetCommandSetL( R_AVKON_SOFTKEYS_EXIT );
	    iView.CBAPtr()->DrawDeferred();	    
		// Start the timer for 2 seconds
	    if( iTimer )
	        {
	        delete iTimer;
	        iTimer = NULL;
	        }
	    iTimer = CPeriodic::NewL( EPriorityHigh );
	    if( iTimer )
	        {
		    TCallBack callback( TimerCallBack, this );
		    iTimer->Start( TTimeIntervalMicroSeconds32( 2000000 ),
	                       TTimeIntervalMicroSeconds32( 80000000 ), 
                           callback );
	        }
		// once timer completed then activate navigation view	        
		}
    else if( iLocation->WaitingGPSData() || iErrorCode == KErrTimedOut )
		{
		CreateNaviPaneL( *iSearchNoteText );
	    // code for searching GPS view
	    for( TInt i = 0; i < satInView; i++ )
		    {
		    satId = iLocation->GetSatelliteNo( i );
			TBuf<5> satNumber;
			satNumber.Format(_L("%d"), satId);
										
			if( i < 16 )
				{
				DisplaySatellitesRowL( satNumber, iSignalStrengthRowOne[i], iSatNoRowOne[i], i );
				}
		    }
		ChangeSoftKeyL();		    
		}
    }
    
// ----------------------------------------------------
// CBlidSatelliteControl::MakeTitleL
// ----------------------------------------------------
//
void CBlidSatelliteControl::MakeTitleL( TInt aResourceText )
    {
    HBufC* buf = StringLoader::LoadLC(aResourceText);       
    CAknTitlePane* title = static_cast<CAknTitlePane*>( StatusPane()->
                            ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
    CleanupStack::Pop(); //buf
    title->SetText(buf); // Takes ownership of buf
    } 
    
// ----------------------------------------------------
// CBlidSatelliteControl::StatusPane
// ----------------------------------------------------
//
CEikStatusPane* CBlidSatelliteControl::StatusPane()
    {
    return CEikonEnv::Static()->AppUiFactory()->StatusPane();
    }
    
// ----------------------------------------------------
// CBlidSatelliteControl::SetErrorCode
// ----------------------------------------------------
//
void CBlidSatelliteControl::SetErrorCode( TInt aErrorCode )
	{
	iErrorCode = aErrorCode;	
	}
	
// ----------------------------------------------------
// CBlidSatelliteControl::SetOnlineMode
// ----------------------------------------------------
//
void CBlidSatelliteControl::SetOnlineMode( TBool aOnlineMode )
	{
	iOnlineMode = aOnlineMode;	
	}
	
// ----------------------------------------------------
// CBlidSatelliteControl::CreateNaviPaneL
// ----------------------------------------------------
//
void CBlidSatelliteControl::CreateNaviPaneL( const TDesC& aText )
    {
    CEikStatusPane* sp = CEikonEnv::Static()->AppUiFactory()->StatusPane();
    // Fetch pointer to the default navi pane control
    CAknNavigationControlContainer* naviPane = 
        static_cast<CAknNavigationControlContainer*>(sp->ControlL( 
        TUid::Uid(EEikStatusPaneUidNavi)));
    
    naviPane->PushDefaultL(EFalse);
    if( iNavimessage )
    	{
    	delete iNavimessage;
    	iNavimessage = NULL;
    	}
	iNavimessage = naviPane->CreateNavigationLabelL( aText );
	naviPane->PushL( *iNavimessage );
    }
    
// ----------------------------------------------------
// CBlidSatelliteControl::CreateGlobeVisualL
// ----------------------------------------------------
//
void CBlidSatelliteControl::CreateGlobeVisualL( )
	{
	// code to load svg icon
	MAlfBitmapProvider* provider = NULL;
	
	// first creste the image loader utils and then call SetSize.	
    iView.ImageLoaderUtils()->SetSize( iGlobeRect.Size() );
    
    // then create the bitmap provider  
    provider = iView.ImageLoaderUtils()->CreateImageLoaderL( KAknsIIDQgnGrafBlidSearching, // svg icon skin constant id defiened in Aknsconstant.h file
    												 iView.ImagePathName(),        // mif file name with path.
    												 EMbmBlidQgn_graf_blid_searching_01, // bitmap id defiened in mbg file
    												 EMbmBlidQgn_graf_blid_searching_01_mask ); // bitmap mask id defiened in mbg file
	// now using that bitmap provider create the texture.
	CAlfTexture & texture1 = iEnv.TextureManager().CreateTextureL( KAlfAutoGeneratedTextureId,
	                                                                provider,
	                                                                EAlfTextureFlagDefault ); 
    iTextures.Append(&texture1);
    												 
    // then create the bitmap provider  
    provider = iView.ImageLoaderUtils()->CreateImageLoaderL( KAknsIIDQgnGrafBlidSearching, // svg icon skin constant id defiened in Aknsconstant.h file
    												 iView.ImagePathName(),        // mif file name with path.
    												 EMbmBlidQgn_graf_blid_searching_02, // bitmap id defiened in mbg file
    												 EMbmBlidQgn_graf_blid_searching_02_mask ); // bitmap mask id defiened in mbg file
	// now using that bitmap provider create the texture.
	CAlfTexture & texture2 = iEnv.TextureManager().CreateTextureL( KAlfAutoGeneratedTextureId,
	                                                                provider,
	                                                                EAlfTextureFlagDefault ); 
    iTextures.Append(&texture2);
    
    // then create the bitmap provider  
    provider = iView.ImageLoaderUtils()->CreateImageLoaderL( KAknsIIDQgnGrafBlidSearching, // svg icon skin constant id defiened in Aknsconstant.h file
    												 iView.ImagePathName(),        // mif file name with path.
    												 EMbmBlidQgn_graf_blid_searching_03, // bitmap id defiened in mbg file
    												 EMbmBlidQgn_graf_blid_searching_03_mask ); // bitmap mask id defiened in mbg file
	// now using that bitmap provider create the texture.
	CAlfTexture & texture3 = iEnv.TextureManager().CreateTextureL( KAlfAutoGeneratedTextureId,
	                                                                provider,
	                                                                EAlfTextureFlagDefault ); 
    iTextures.Append(&texture3);
    
    // then create the bitmap provider  
    provider = iView.ImageLoaderUtils()->CreateImageLoaderL( KAknsIIDQgnGrafBlidSearching, // svg icon skin constant id defiened in Aknsconstant.h file
    												 iView.ImagePathName(),        // mif file name with path.
    												 EMbmBlidQgn_graf_blid_searching_04, // bitmap id defiened in mbg file
    												 EMbmBlidQgn_graf_blid_searching_04_mask ); // bitmap mask id defiened in mbg file
	// now using that bitmap provider create the texture.
	CAlfTexture & texture4 = iEnv.TextureManager().CreateTextureL( KAlfAutoGeneratedTextureId,
	                                                                provider,
	                                                                EAlfTextureFlagDefault ); 
    iTextures.Append(&texture4);
    
    // then create the bitmap provider  
    provider = iView.ImageLoaderUtils()->CreateImageLoaderL( KAknsIIDQgnGrafBlidSearching, // svg icon skin constant id defiened in Aknsconstant.h file
    												 iView.ImagePathName(),        // mif file name with path.
    												 EMbmBlidQgn_graf_blid_searching_05, // bitmap id defiened in mbg file
    												 EMbmBlidQgn_graf_blid_searching_05_mask ); // bitmap mask id defiened in mbg file
	// now using that bitmap provider create the texture.
	CAlfTexture & texture5 = iEnv.TextureManager().CreateTextureL( KAlfAutoGeneratedTextureId,
	                                                                provider,
	                                                                EAlfTextureFlagDefault ); 
    iTextures.Append(&texture5);
    
    // then create the bitmap provider  
    provider = iView.ImageLoaderUtils()->CreateImageLoaderL( KAknsIIDQgnGrafBlidSearching, // svg icon skin constant id defiened in Aknsconstant.h file
    												 iView.ImagePathName(),        // mif file name with path.
    												 EMbmBlidQgn_graf_blid_searching_06, // bitmap id defiened in mbg file
    												 EMbmBlidQgn_graf_blid_searching_06_mask ); // bitmap mask id defiened in mbg file
	// now using that bitmap provider create the texture.
	CAlfTexture & texture6 = iEnv.TextureManager().CreateTextureL( KAlfAutoGeneratedTextureId,
	                                                                provider,
	                                                                EAlfTextureFlagDefault ); 
    iTextures.Append(&texture6);
    
    // then create the bitmap provider  
    provider = iView.ImageLoaderUtils()->CreateImageLoaderL( KAknsIIDQgnGrafBlidSearching, // svg icon skin constant id defiened in Aknsconstant.h file
    												 iView.ImagePathName(),        // mif file name with path.
    												 EMbmBlidQgn_graf_blid_searching_07, // bitmap id defiened in mbg file
    												 EMbmBlidQgn_graf_blid_searching_07_mask ); // bitmap mask id defiened in mbg file
	// now using that bitmap provider create the texture.
	CAlfTexture & texture7 = iEnv.TextureManager().CreateTextureL( KAlfAutoGeneratedTextureId,
	                                                                provider,
	                                                                EAlfTextureFlagDefault ); 
    iTextures.Append(&texture7);
    
    // then create the bitmap provider  
    provider = iView.ImageLoaderUtils()->CreateImageLoaderL( KAknsIIDQgnGrafBlidSearching, // svg icon skin constant id defiened in Aknsconstant.h file
    												 iView.ImagePathName(),        // mif file name with path.
    												 EMbmBlidQgn_graf_blid_searching_08, // bitmap id defiened in mbg file
    												 EMbmBlidQgn_graf_blid_searching_08_mask ); // bitmap mask id defiened in mbg file
	// now using that bitmap provider create the texture.
	CAlfTexture & texture8 = iEnv.TextureManager().CreateTextureL( KAlfAutoGeneratedTextureId,
	                                                                provider,
	                                                                EAlfTextureFlagDefault ); 
    iTextures.Append(&texture8);
	}
	
// ----------------------------------------------------
// CBlidSatelliteControl::UpdateGlobeVisual
// ----------------------------------------------------
//
void CBlidSatelliteControl::UpdateGlobeVisual( )
	{
    if(KNumOfStartUpIcon > iDisplayIcon)
        {
        iDisplayIcon++;
        }
    else
        {
        iDisplayIcon = 1;
        }
    //iAnimationVisual->SetSize( animationRect.Size() );
    iAnimationVisual->SetImage( TAlfImage( *iTextures[iDisplayIcon-1] ) );//N   
    }
    
// ----------------------------------------------------
// CBlidSatelliteControl::CreateSatelliteSignalVisualsL
// ----------------------------------------------------
//
void CBlidSatelliteControl::CreateSatelliteSignalVisualsL( )
	{
	TInt typefaceStyleId = iEnv.TextStyleManager().CreatePlatformTextStyleL(EAknLogicalFontPrimarySmallFont, EAlfTextStyleSmall);
    CAlfTextStyle* style1 = iEnv.TextStyleManager().TextStyle( typefaceStyleId );
    style1->SetBold( ETrue );
    // Set the text font size in pixel
    style1->SetTextPaneHeightInPixels( 26, ETrue );
	
	TRgb rgb;
	AknsUtils::GetCachedColor ( AknsUtils::SkinInstance(),
								rgb,
								KAknsIIDQsnTextColors,
								EAknsCIQsnTextColorsCG1 
								);
	
	CreateSignalLayoutL( style1, rgb );
	}
	
// ----------------------------------------------------
// CBlidSatelliteControl::CreateSignalLayoutL
// ----------------------------------------------------
//
void CBlidSatelliteControl::CreateSignalLayoutL( CAlfTextStyle* aStyle, TRgb aRgb )
	{
	for( TInt i = 0; i < 16; i++ )
		{
		iSignalStrengthRowOne[i] = CAlfImageVisual::AddNewL( *this, iMainAnchorLayout );
		
		iSatNoRowOne[i] = CAlfTextVisual::AddNewL( *this, iMainAnchorLayout );
		iSatNoRowOne[i]->SetColor( aRgb );	
		iSatNoRowOne[i]->SetTextStyle( aStyle->Id() );
		iSatNoRowOne[i]->SetAlign( EAlfAlignHCenter, EAlfAlignVCenter );
		}
	}
	
// ---------------------------------------------------------
// CBlidSatelliteControl::DisplaySatellitesRowL
// ---------------------------------------------------------
//
void CBlidSatelliteControl::DisplaySatellitesRowL( const TDesC& aSatNo,
												   CAlfImageVisual* aImageVisual,
												   CAlfTextVisual* aTextVisual,
												   TInt aIndex )
	{
	// code to load svg icon
	MAlfBitmapProvider* provider = NULL;
	// first creste the image loader utils and then call SetSize.	
    iView.ImageLoaderUtils()->SetSize( iSignalBarRects[0].Size() );
	
	aTextVisual->SetTextL( aSatNo );
	
	switch( iLocation->GetSatelliteSignalStrength( aIndex ) )
		{
		case EBlidSignalStrengthZero:
			{
			                                                                  
		    // then create the bitmap provider
		    provider = iView.ImageLoaderUtils()->CreateImageLoaderL( KAknsIIDQgnGrafBlidSignalBar01, // svg icon skin constant id defiened in Aknsconstant.h file
		    												 			iView.ImagePathName(),        // mif file name with path.
		    												 			EMbmBlidQgn_graf_blid_signal_bar_01, // bitmap id defiened in mbg file
		    												 			EMbmBlidQgn_graf_blid_signal_bar_01_mask ); // bitmap mask id defiened in mbg file
		    												 
			    												 
			// now using that bitmap provider create the texture.
			CAlfTexture & texture = iEnv.TextureManager().CreateTextureL( KAlfAutoGeneratedTextureId, provider, EAlfTextureFlagDefault );	
					                                                                  
			aImageVisual->SetImage(TAlfImage(texture));		                                                                  
			break;							
			}
		case EBlidSignalStrengthOne:
			{
		    provider = iView.ImageLoaderUtils()->CreateImageLoaderL( KAknsIIDQgnGrafBlidSignalBar02, // svg icon skin constant id defiened in Aknsconstant.h file
		    												 			iView.ImagePathName(),        // mif file name with path.
		    												 			EMbmBlidQgn_graf_blid_signal_bar_02, // bitmap id defiened in mbg file
		    												 			EMbmBlidQgn_graf_blid_signal_bar_02_mask ); // bitmap mask id defiened in mbg file
		    												 
			    												 
			// now using that bitmap provider create the texture.
			CAlfTexture & texture = iEnv.TextureManager().CreateTextureL( KAlfAutoGeneratedTextureId, provider, EAlfTextureFlagDefault );	
					                                                                  
			aImageVisual->SetImage(TAlfImage(texture));		                                                                  
			break;							
			}
		case EBlidSignalStrengthTwo:
			{
		    provider = iView.ImageLoaderUtils()->CreateImageLoaderL( KAknsIIDQgnGrafBlidSignalBar03, // svg icon skin constant id defiened in Aknsconstant.h file
		    												 			iView.ImagePathName(),        // mif file name with path.
		    												 			EMbmBlidQgn_graf_blid_signal_bar_03, // bitmap id defiened in mbg file
		    												 			EMbmBlidQgn_graf_blid_signal_bar_03_mask ); // bitmap mask id defiened in mbg file
		    												 
			    												 
			// now using that bitmap provider create the texture.
			CAlfTexture & texture = iEnv.TextureManager().CreateTextureL( KAlfAutoGeneratedTextureId, provider, EAlfTextureFlagDefault );	
					                                                                  
			aImageVisual->SetImage(TAlfImage(texture));		                                                                  
			break;							
			}
		case EBlidSignalStrengthThree:
			{
		    provider = iView.ImageLoaderUtils()->CreateImageLoaderL( KAknsIIDQgnGrafBlidSignalBar04, // svg icon skin constant id defiened in Aknsconstant.h file
		    												 			iView.ImagePathName(),        // mif file name with path.
		    												 			EMbmBlidQgn_graf_blid_signal_bar_04, // bitmap id defiened in mbg file
		    												 			EMbmBlidQgn_graf_blid_signal_bar_04_mask ); // bitmap mask id defiened in mbg file
		    												 
			    												 
			// now using that bitmap provider create the texture.
			CAlfTexture & texture = iEnv.TextureManager().CreateTextureL( KAlfAutoGeneratedTextureId, provider, EAlfTextureFlagDefault );	
					                                                                  
			aImageVisual->SetImage(TAlfImage(texture));		                                                                  
			break;							
			}
		case EBlidSignalStrengthFour:
			{
		    provider = iView.ImageLoaderUtils()->CreateImageLoaderL( KAknsIIDQgnGrafBlidSignalBar05, // svg icon skin constant id defiened in Aknsconstant.h file
		    												 			iView.ImagePathName(),        // mif file name with path.
		    												 			EMbmBlidQgn_graf_blid_signal_bar_05, // bitmap id defiened in mbg file
		    												 			EMbmBlidQgn_graf_blid_signal_bar_05_mask ); // bitmap mask id defiened in mbg file
		    												 
			    												 
			// now using that bitmap provider create the texture.
			CAlfTexture & texture = iEnv.TextureManager().CreateTextureL( KAlfAutoGeneratedTextureId, provider, EAlfTextureFlagDefault );	
					                                                                  
			aImageVisual->SetImage(TAlfImage(texture));		                                                                  
			break;							
			}
		default:
			{
			break;							
			}
		}
	}

// ----------------------------------------------------
// CBlidSatelliteControl::ChangeNavigationViewL
// ----------------------------------------------------
//
void CBlidSatelliteControl::ChangeNavigationViewL()
    {
    if (iView.IsForeGroundApp())
        {
        iView.ActivateNavigationViewL();
        }
    //delete the timer if present
    delete iTimer;
    iTimer = NULL;
    }

// ----------------------------------------------------
// CBlidSatelliteControl::ChangeSoftKeyL
// ----------------------------------------------------
//
void CBlidSatelliteControl::ChangeSoftKeyL()
	{
	iView.ChangeViewSoftKeyL();
	}

// ----------------------------------------------------
// CBlidSatelliteControl::UpdateDisplayLayoutL
// ----------------------------------------------------
//
void CBlidSatelliteControl::UpdateDisplayLayoutL( )
	{
	CalculateRects();
	SetAnchors();
	}

// ----------------------------------------------------
// CBlidSatelliteControl::CalculateRects
// ----------------------------------------------------
//	
void CBlidSatelliteControl::CalculateRects()
	{
	TAknLayoutRect mainBlid2Pane;
	TAknLayoutRect layoutWindow;
	TRect mainRect;
	TRect animationRect;
	TInt variety;

	if( Layout_Meta_Data::IsLandscapeOrientation() )
	    {
	    variety = 1;
	    }
	 else
	 	{
	 	variety = 0;
	 	}
	
	/////////////// calculate animation  rect /////////////////////////
    mainBlid2Pane.LayoutRect( iView.ApplicationRect(),
    							AknLayoutScalable_Apps::main_blid2_pane().LayoutLine() );
    							
	mainRect = mainBlid2Pane.Rect(); 							
    																				   
    mainBlid2Pane.LayoutRect( mainRect, 
    							AknLayoutScalable_Apps::blid2_gps_pane( 0 ).LayoutLine() );
    							
	animationRect =  mainBlid2Pane.Rect();   							
    							
	mainBlid2Pane.LayoutRect( animationRect, 
    							AknLayoutScalable_Apps::blid2_gps_pane_g1( variety ).LayoutLine() );
	
	iGlobeRect = mainBlid2Pane.Rect();
	
	/////////////// calculate satellite grid rect /////////////////////////
	mainBlid2Pane.LayoutRect( animationRect, 
    						  AknLayoutScalable_Apps::grid_blid2_satellite_pane( variety ).LayoutLine() );
    							
	iSatGridRect = mainBlid2Pane.Rect();
	
	/////////////// calculate cell rects /////////////////////////
	TAknLayoutScalableParameterLimits paramLimits;
	paramLimits = AknLayoutScalable_Apps::cell_blid2_satellite_pane_ParamLimits();
	
	TInt numberOfRows = paramLimits.LastRow() - paramLimits.FirstRow() + 1;
	TInt numberOfColumns = paramLimits.LastColumn() - paramLimits.FirstColumn() + 1;
	iSignalBarRects.Reset();
	iSatelliteNumberRects.Reset();
	for( TInt row = paramLimits.FirstRow() ; row <= paramLimits.LastRow(); ++row )
		{
		for( TInt column = paramLimits.FirstColumn() ; column <= paramLimits.LastColumn(); ++column )
			{
			layoutWindow.LayoutRect( iSatGridRect, AknLayoutScalable_Apps::cell_blid2_satellite_pane(0, column, row).LayoutLine() );
			TRect cellRect = layoutWindow.Rect();
			
			layoutWindow.LayoutRect( cellRect, AknLayoutScalable_Apps::cell_blid2_satellite_pane_g1(0).LayoutLine());
			TRect barRect = layoutWindow.Rect();
			iSignalBarRects.Append(barRect);
			
			// Save the layouts of the satellite numbers
			TAknLayoutText satNumberLayout;
			satNumberLayout.LayoutText(cellRect, AknLayoutScalable_Apps::cell_blid2_satellite_pane_t1(0).LayoutLine());			
			iSatelliteNumberRects.Append(satNumberLayout.TextRect());
			}
		}		
	}
	
// ----------------------------------------------------
// CBlidSatelliteControl::SetAnchors
// ----------------------------------------------------
//	
void CBlidSatelliteControl::SetAnchors()
	{
	// Anchor for Globe Animation
	TAlfRealPoint topAnimationPoint( iGlobeRect.iTl );
	TAlfRealPoint bottomAnimationPoint( iGlobeRect.iBr );

    iMainAnchorLayout->SetAnchor( EAlfAnchorTopLeft, 0, 
        EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
        EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
        TAlfTimedPoint( topAnimationPoint.iX, topAnimationPoint.iY ) );
    iMainAnchorLayout->SetAnchor( EAlfAnchorBottomRight, 0, 
        EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
        EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
        TAlfTimedPoint( bottomAnimationPoint.iX, bottomAnimationPoint.iY ) );
    
    // Set anchor for all signal strength images	
	for( TInt i = 0; i < 16; i++ )
		{
		TInt ordinal = i*2 + 1;
		
		TAlfRealPoint topPoint( iSignalBarRects[i].iTl );
		TAlfRealPoint bottomPoint( iSignalBarRects[i].iBr );
		
	    iMainAnchorLayout->SetAnchor(EAlfAnchorTopLeft, ordinal, 
        EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
        EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
        TAlfTimedPoint( topPoint.iX, topPoint.iY ) );
    	iMainAnchorLayout->SetAnchor(EAlfAnchorBottomRight, ordinal, 
        EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
        EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
        TAlfTimedPoint( bottomPoint.iX, bottomPoint.iY ) );		
		}
	// Set anchor for Satellite number text	
	for( TInt i = 0; i < 16; i++ )
		{
		TInt ordinal = i*2 + 2;
		
		TAlfRealPoint topPoint( iSatelliteNumberRects[i].iTl );
		TAlfRealPoint bottomPoint( iSatelliteNumberRects[i].iBr );
		
	    iMainAnchorLayout->SetAnchor(EAlfAnchorTopLeft, ordinal, 
        EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
        EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
        TAlfTimedPoint( topPoint.iX, topPoint.iY ) );
    	iMainAnchorLayout->SetAnchor(EAlfAnchorBottomRight, ordinal, 
        EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
        EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
        TAlfTimedPoint( bottomPoint.iX, bottomPoint.iY ) );		
		}    	
	
	}
	
// ----------------------------------------------------------------------------
// TimerCallBack
// ----------------------------------------------------------------------------
//
TInt TimerCallBack(TAny* aPtr)
    {
    CBlidSatelliteControl* ptr = static_cast<CBlidSatelliteControl*>(aPtr);
    if( ptr )
        {
		// Activate navigation view
		TRAP_IGNORE( ptr->ChangeNavigationViewL() );
        }
    return 0;
    }	
//End Of File