/*
* 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 <aknmessagequerydialog.h> //CAknMessageQueryDialog
#include <StringLoader.h>
#include <aknconsts.h>
#include <Blid.rsg>
#include <akntitle.h>
#include <aknnavide.h>
#include <eikspane.h>
#include <aknlayoutscalable_apps.cdl.h>
#include <layoutmetadata.cdl.h>
#include <blid.mbg>
// HTK includes
#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/alfimageloaderutil.h>
#include <alf/alfimagevisual.h>
#include "Blid.hrh"
// USER INCLUDES
#include "CBlidMainControl.h"
#include "CBlidEng.h"
#include "CBlidDocument.h"
#include "MBlidLocation.h"
#include "CBlidBaseView.h"
#include "CBlidBaseContainer.h"
#include "bliduiconsts.h"
#include "BlidNotes.h"
#include "CBlidLocSettingLauncher.h"
#include "Debug.h"
TInt CBlidMainControl::iPSYTimeoutCount = 0;
TInt MessageQueryCallBack( TAny* aPtr );
const TInt KTimerValue = 200000;
// ================= MEMBER FUNCTIONS =======================
// ---------------------------------------------------------
// CBlidMainControl::NewL()
// Two phased constructor
// ---------------------------------------------------------
//
CBlidMainControl* CBlidMainControl::NewL( CAlfEnv& aEnv,
const TRect& aRect,
CBlidBaseView& aView)
{
CBlidMainControl* self = new (ELeave) CBlidMainControl(aEnv,
aView );
CleanupStack::PushL(self);
self->ConstructL( aRect );
CleanupStack::Pop(self);
return self;
}
// ---------------------------------------------------------
//CBlidMainControl::CBlidMainControl()
// First phase constructor, can not leave
// ---------------------------------------------------------
//
CBlidMainControl::CBlidMainControl(CAlfEnv& aEnv,
CBlidBaseView& aView )
: CAlfControl( ),iEnv(aEnv),iView(aView)
{
iOnlineMode = EFalse;
}
// ---------------------------------------------------------
// CBlidMainControl::ConstructL()
// Second phase constructor, may leave
// ---------------------------------------------------------
//
void CBlidMainControl::ConstructL( const TRect& /*aRect*/ )
{
CAlfControl::ConstructL( iEnv );
iMainLayout = CAlfAnchorLayout::AddNewL( *this );
iSearchTextVisual = CAlfTextVisual::AddNewL( *this, iMainLayout );
iAnimationVisual = CAlfImageVisual::AddNewL(*this, iMainLayout );
iDisplayIcon = 1;
iPeriodic = CPeriodic::NewL(0); // neutral priority
iPeriodic->Start( TTimeIntervalMicroSeconds32( KTimerValue ),
TTimeIntervalMicroSeconds32( KTimerValue ),
TCallBack(Tick, this));
UpdateDisplayLayoutL();
CreateSearchingTextL();
CreateAnimationL();
UpdateAnimation();
iLauncher = NULL;
isSettingsLaunched = EFalse;
//start requesting
CBlidEng* engine = iView.BlidDocument()->Engine();
iLocation = engine->LocationModel();
}
// ---------------------------------------------------------
// CBlidMainControl::Tick()
// Timer callback function, to update image in animation
// ---------------------------------------------------------
//
TInt CBlidMainControl::Tick(TAny* aObject)
{
((CBlidMainControl*)aObject)->UpdateAnimation(); // cast, and call non-static function
return KErrNone;
}
// ---------------------------------------------------------
// CBlidMainControl::CreateSearchingTextL()
// Function to create search text visual
// ---------------------------------------------------------
//
void CBlidMainControl::CreateSearchingTextL( )
{
/* Layout Hierarchy
main_blid2_pane -> blid2_search_pane -> blid2_search_pane_t1
*/
// Get the text font
TInt typefaceStyleId = iEnv.TextStyleManager().CreatePlatformTextStyleL(EAknLogicalFontPrimarySmallFont, EAlfTextStyleNormal);
CAlfTextStyle* style1 = iEnv.TextStyleManager().TextStyle( typefaceStyleId );
style1->SetBold( ETrue );
// Set the text font size in pixel
style1->SetTextPaneHeightInPixels( 26, ETrue );
TRgb rgb;
// Fetch the skin color
AknsUtils::GetCachedColor ( AknsUtils::SkinInstance(),
rgb,
KAknsIIDQsnTextColors,
EAknsCIQsnTextColorsCG1
);
iSearchTextVisual->SetColor( rgb );
HBufC* noteText = StringLoader::LoadLC( R_BLID_NOTE_SEARCHING_ANIMATION, CEikonEnv::Static() );
iSearchTextVisual->SetTextL( *noteText );
iSearchTextVisual->SetTextStyle( style1->Id() );
iSearchTextVisual->SetAlign( EAlfAlignHCenter, EAlfAlignVCenter );
CleanupStack::PopAndDestroy(noteText); //noteText
}
// ---------------------------------------------------------
// CBlidMainControl::CreateAnimationL()
// Creates image visuals for animation
// ---------------------------------------------------------
//
void CBlidMainControl::CreateAnimationL( )
{
/* Layout Hierarchy
main_blid2_pane -> blid2_search_pane -> blid2_search_pane_g1
*/
// code to load svg icon
MAlfBitmapProvider* provider = NULL;
// first creste the image loader utils and then call SetSize.
iView.ImageLoaderUtils()->SetSize( iAnimationRect.Size() );
// then create the bitmap provider
provider = iView.ImageLoaderUtils()->CreateImageLoaderL( KAknsIIDQgnGrafBlidStartup, // svg icon skin constant id defiened in Aknsconstant.h file
iView.ImagePathName(), // mif file name with path.
EMbmBlidQgn_graf_blid_startup_01, // bitmap id defiened in mbg file
EMbmBlidQgn_graf_blid_startup_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( KAknsIIDQgnGrafBlidStartup, // svg icon skin constant id defiened in Aknsconstant.h file
iView.ImagePathName(), // mif file name with path.
EMbmBlidQgn_graf_blid_startup_02, // bitmap id defiened in mbg file
EMbmBlidQgn_graf_blid_startup_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( KAknsIIDQgnGrafBlidStartup, // svg icon skin constant id defiened in Aknsconstant.h file
iView.ImagePathName(), // mif file name with path.
EMbmBlidQgn_graf_blid_startup_03, // bitmap id defiened in mbg file
EMbmBlidQgn_graf_blid_startup_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( KAknsIIDQgnGrafBlidStartup, // svg icon skin constant id defiened in Aknsconstant.h file
iView.ImagePathName(), // mif file name with path.
EMbmBlidQgn_graf_blid_startup_04, // bitmap id defiened in mbg file
EMbmBlidQgn_graf_blid_startup_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( KAknsIIDQgnGrafBlidStartup, // svg icon skin constant id defiened in Aknsconstant.h file
iView.ImagePathName(), // mif file name with path.
EMbmBlidQgn_graf_blid_startup_05, // bitmap id defiened in mbg file
EMbmBlidQgn_graf_blid_startup_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( KAknsIIDQgnGrafBlidStartup, // svg icon skin constant id defiened in Aknsconstant.h file
iView.ImagePathName(), // mif file name with path.
EMbmBlidQgn_graf_blid_startup_06, // bitmap id defiened in mbg file
EMbmBlidQgn_graf_blid_startup_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( KAknsIIDQgnGrafBlidStartup, // svg icon skin constant id defiened in Aknsconstant.h file
iView.ImagePathName(), // mif file name with path.
EMbmBlidQgn_graf_blid_startup_07, // bitmap id defiened in mbg file
EMbmBlidQgn_graf_blid_startup_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( KAknsIIDQgnGrafBlidStartup, // svg icon skin constant id defiened in Aknsconstant.h file
iView.ImagePathName(), // mif file name with path.
EMbmBlidQgn_graf_blid_startup_08, // bitmap id defiened in mbg file
EMbmBlidQgn_graf_blid_startup_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);
}
// ---------------------------------------------------------
// CBlidMainControl::UpdateAnimation
// updates the animation image
// ---------------------------------------------------------
//
void CBlidMainControl::UpdateAnimation()
{
if(KNumOfStartUpIcon > iDisplayIcon)
{
iDisplayIcon++;
}
else
{
iDisplayIcon = 1;
}
iAnimationVisual->SetImage( TAlfImage( *iTextures[iDisplayIcon-1] ) );//N
}
// ----------------------------------------------------
// CBlidMainControl::~CBlidMainControl
// Destructor
// Frees reserved resources
// ----------------------------------------------------
//
CBlidMainControl::~CBlidMainControl()
{
iTextures.Reset();
iTextures.Close();
delete iLauncher;
delete iHeadPaneText;
delete iMsgQueryText;
delete iLinkText;
delete iMsgQText;
delete iPeriodic;
}
// ---------------------------------------------------------
// CBlidMainControl::UpdateL
// Updates the view after getting update from location model
// ---------------------------------------------------------
//
void CBlidMainControl::UpdateL()
{
TInt result = 0;
DEBUG1(" CBlidMainControl::UpdateL iErrorCode ::%d", iErrorCode );
if( !iView.IsSatViewActive() && iOnlineMode )
{
iView.ActivateSatelliteViewL();
}
else if( iErrorCode != KErrNone )
{
// Check GPS device availability
TInt retVal = iLocation->CheckGPSAvailability();
DEBUG1(" CBlidMainControl::CheckGPSAvailability code ::%d", retVal );
switch(iErrorCode)
{
case KErrTimedOut:
{
if( retVal == 1 )
{
/*
GPS device connected but position information
available but not of good quality
*/
iView.ActivateSatelliteViewL();
}
break;
}
case KErrArgument:
// The positioning module is unable to support the requested type
case KErrNotFound:
// No module (PSY) selected or invalid PSY
{
iOnlineMode = EFalse;
// Notify not module selected
if(iPSYTimeoutCount == 0)
{
if( iView.IsForeGroundApp() )
{
iLocation->StopRequesting();
TCallBack callback( MessageQueryCallBack, this );
result = DispMsgQueryWithLinkL(R_BLID_NOPSY_ENABLED,
R_BLID_ERROR_NO_PSY,
R_BLID_SELECT_POSITIONING_METHOD,
ETrue,
callback );
if( result == EBlidSoftkeyRetry )
{
iLocation->StartRequesting();
}
else if( result != KErrNotFound )
{
iView.ExitMainApplicationL( EEikCmdExit );
}
}
}
iPSYTimeoutCount++;
TInt currentInterval;
iLocation->GetCurrentUpdateInterval(currentInterval);
if(iPSYTimeoutCount*currentInterval >= KNotesTimeOut)
{
iPSYTimeoutCount = 0;
}
return;
}
case KPositionPartialUpdate:
{
iView.ActivateSatelliteViewL();
break;
}
default:
{
iOnlineMode = EFalse;
break;
}
}
if(iErrorCode != KErrNotFound)
{
if ( retVal == 0 )
{
if( iLocation->IsSatCapablePsyAvailable() )
{
iLocation->StopRequesting();
iOnlineMode = EFalse;
TCallBack callback( MessageQueryCallBack, this );
result = DispMsgQueryWithLinkL(R_BLID_NOGPS_FOUND,
R_BLID_NOGPS_FOUND_TEXT,
R_BLID_SELECT_POSITIONING_METHOD,
ETrue,
callback );
if( result == EBlidSoftkeyRetry )
{
iLocation->StartRequesting();
}
else if( result != KErrNotFound )
{
iView.ExitMainApplicationL( EEikCmdExit );
}
}
// no GPS device note
else if(iErrorCode != KErrNotFound)
{
// GPS un-available
if( iView.IsForeGroundApp() )
{
iLocation->StopRequesting();
TCallBack callback( MessageQueryCallBack, this );
DispMsgQueryWithLinkL( R_BLID_NOGPS_FOUND,
R_BLID_NOGPS_AVAILABLE_TEXT,
R_BLID_SELECT_POSITIONING_METHOD,
EFalse,
callback );
iView.ExitMainApplicationL( EEikCmdExit );
}
}
else
{
BlidNotes::iGPSUnavailableDisplayed = ETrue;
}
CBlidBaseContainer::SetGPSAvailability(EFalse);
}
}
}
}
// ----------------------------------------------------
// CBlidMainControl::MakeTitleL
// Sets the title to string represented by resource
// ----------------------------------------------------
//
void CBlidMainControl::MakeTitleL( TInt aResourceText )
{
HBufC* buffer = StringLoader::LoadLC( aResourceText );
CAknTitlePane* title = static_cast<CAknTitlePane*>( StatusPane()->
ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
CleanupStack::Pop(); //buffer
title->SetText( buffer ); // Takes ownership of buf
}
// ----------------------------------------------------
// CBlidMainControl::StatusPane
// Returns the status pane
// ----------------------------------------------------
//
CEikStatusPane* CBlidMainControl::StatusPane() const
{
return CEikonEnv::Static()->AppUiFactory()->StatusPane();
}
// ----------------------------------------------------
// CBlidMainControl::SetErrorCode
// Sets the error code
// ----------------------------------------------------
//
void CBlidMainControl::SetErrorCode( const TInt aErrorCode )
{
iErrorCode = aErrorCode;
}
// ----------------------------------------------------
// CBlidMainControl::SetOnlineMode
// Sets the online mode
// ----------------------------------------------------
//
void CBlidMainControl::SetOnlineMode( const TBool aOnlineMode )
{
iOnlineMode = aOnlineMode;
}
// ----------------------------------------------------
// CBlidMainControl::DispMsgQueryWithLinkL()
// Displays the message query with a link
// ----------------------------------------------------
//
TInt CBlidMainControl::DispMsgQueryWithLinkL( TInt aHeadingText,
TInt aMsgQueryText,
TInt aLinkText,
TBool aLinkShow,
TCallBack aCallBack )
{
CEikonEnv* env = CEikonEnv::Static();
if( !iHeadPaneText )
{
iHeadPaneText = env->AllocReadResourceL( aHeadingText );
}
if( !iMsgQueryText )
{
iMsgQueryText = env->AllocReadResourceL( aMsgQueryText );
}
if( !iLinkText )
{
iLinkText = env->AllocReadResourceL( aLinkText );
}
if( !iMsgQText )
{
iMsgQText = HBufC::NewL ( iMsgQueryText->Length() +
KNewLine().Length() + KOpeningLinkTag().Length() +
iLinkText->Length() + KClosingLinkTag().Length() ) ;
}
iMsgQText->Des().Copy(*iMsgQueryText);
iMsgQText->Des().Append(KNewLine);
if( aLinkShow )
{
iMsgQText->Des().Append( KOpeningLinkTag );
iMsgQText->Des().Append(*iLinkText);
iMsgQText->Des().Append( KClosingLinkTag );
}
else
{
iMsgQText->Des().Append(_L( " "));
}
//////////////////////////////////////////////////////
CAknMessageQueryDialog* msgDlg = CAknMessageQueryDialog::NewL( *iMsgQText );
// if we remove this if part it will give CONE8 panic
if( iDialog )
{
delete iDialog;
iDialog = NULL;
}
iDialog = msgDlg;
msgDlg->PrepareLC( R_BLID_MESSAGE_QUERY_DIALOG ); // Pushed dialog is popped inside RunLD
msgDlg->Heading()->SetTextL( *iHeadPaneText );
msgDlg->SetLink(aCallBack);
msgDlg->ButtonGroupContainer().SetCommandSetL(
R_BLID_INFOPOPUP_SOFTKEYS_RETRY__EXIT );
isDialogLaunched = ETrue;
TInt retval = msgDlg->RunLD();
if( isDialogLaunched )
{
msgDlg = NULL;
iDialog = NULL;
isDialogLaunched = EFalse;
return retval;
}
return -1;
}
// ----------------------------------------------------
// CBlidMainControl::CreateNaviPaneL
// Creates navigation pane
// ----------------------------------------------------
//
void CBlidMainControl::CreateNaviPaneL( )
{
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);
}
// ----------------------------------------------------
// CBlidMainControl::LaunchPositioningSettingsViewL
// Launches positioning settings view
// ----------------------------------------------------
//
void CBlidMainControl::LaunchPositioningSettingsViewL( )
{
if(!iLauncher )
{
iLauncher = CBlidLocSettingsLauncher::NewL();
}
iLauncher->SetControl( this );
isSettingsLaunched = ETrue;
iLauncher->LaunchL();
}
// ----------------------------------------------------
// CBlidMainControl::DeleteDialogResource
// Seletes the dialog resources
// ----------------------------------------------------
//
void CBlidMainControl::DeleteDialogResource( )
{
if( isSettingsLaunched )
{
delete iHeadPaneText;
iHeadPaneText = NULL;
delete iMsgQueryText;
iMsgQueryText = NULL;
delete iLinkText;
iLinkText = NULL;
delete iMsgQText;
iMsgQText = NULL;
}
}
// ----------------------------------------------------
// CBlidMainControl::UpdateDisplayLayoutL
// Updates the display layout in response to a change in app resource
// ----------------------------------------------------
//
void CBlidMainControl::UpdateDisplayLayoutL( )
{
/* Layout Hierarchy
main_blid2_pane -> blid2_search_pane -> blid2_search_pane_t1
main_blid2_pane -> blid2_search_pane -> blid2_search_pane_g1
*/
TAknLayoutRect mainBlid2Pane;
TAknLayoutRect blid2SearchPane;
TAknLayoutRect blid2SearchPaneG1;
TAknLayoutText blid2SearchPaneT1;
//TRect animationRect;
TInt variety;
if( Layout_Meta_Data::IsLandscapeOrientation() )
{
variety = 1;
}
else
{
variety = 0;
}
/////////////// recalculate text rect /////////////////////////
TRect rect;
AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, rect);
mainBlid2Pane.LayoutRect( rect,
AknLayoutScalable_Apps::main_blid2_pane().LayoutLine() );
blid2SearchPane.LayoutRect( mainBlid2Pane.Rect(),
AknLayoutScalable_Apps::blid2_search_pane( variety ).LayoutLine() );
blid2SearchPaneT1.LayoutText( blid2SearchPane.Rect(),
AknLayoutScalable_Apps::blid2_search_pane_t1( variety ).LayoutLine() );
/////////////// recalculate animation rect /////////////////////////
blid2SearchPaneG1.LayoutRect( blid2SearchPane.Rect(),
AknLayoutScalable_Apps::blid2_search_pane_g1( variety ).LayoutLine() );
iAnimationRect = blid2SearchPaneG1.Rect();
TAlfRealPoint topTextPoint( blid2SearchPaneT1.TextRect().iTl );
TAlfRealPoint bottomTextPoint( blid2SearchPaneT1.TextRect().iBr );
//Anchor for searching Text
iMainLayout->SetAnchor( EAlfAnchorTopLeft, 0,
EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
TAlfTimedPoint( topTextPoint.iX, topTextPoint.iY ) );
iMainLayout->SetAnchor( EAlfAnchorBottomRight, 0,
EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
TAlfTimedPoint( bottomTextPoint.iX, bottomTextPoint.iY ) );
TAlfRealPoint topAnimationPoint( iAnimationRect.iTl );
TAlfRealPoint bottomAnimationPoint( iAnimationRect.iBr );
//Anchor for animation
iMainLayout->SetAnchor( EAlfAnchorTopLeft, 1,
EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
TAlfTimedPoint( topAnimationPoint.iX, topAnimationPoint.iY ) );
iMainLayout->SetAnchor( EAlfAnchorBottomRight, 1,
EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
TAlfTimedPoint( bottomAnimationPoint.iX, bottomAnimationPoint.iY ) );
}
// -----------------------------------------------------------------------------
// CBlidMainControl::MessageQueryCallBack()
// Called when link is clicked on message query dialog
// -----------------------------------------------------------------------------
//
TInt MessageQueryCallBack( TAny* aPtr )
{
CBlidMainControl* ptr = static_cast<CBlidMainControl*>(aPtr);
if( ptr )
{
TRAP_IGNORE( ptr->LaunchPositioningSettingsViewL() );
if( ptr->iDialog )
{
TRAP_IGNORE( ptr->iDialog->ProcessCommandL( 3001 ) );
}
}
return KErrNone;
}
//End Of File