supl/locationomasuplprotocolhandler/provisioninghandler/src/epos_comasuplsettings.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 02 Feb 2010 01:06:48 +0200
changeset 0 667063e416a2
child 25 73f6c2762ffe
child 44 2b4ea9893b66
permissions -rw-r--r--
Revision: 201003 Kit: 201005

/*
* 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:   SUPL settings class
*
*/




#include <CWPParameter.h>
#include <WPAdapterUtil.h>
#include <ApUtils.h>

#include "epos_comasupltrace.h"
#include "epos_comasuplsettings.h"
#include "epos_comasuplsettingsrepository.h"
#include "epos_comasuplparameters.h"
#include "epos_omasuplprovhandler.pan"
#include "epos_omasuplprovhandler.hrh"
#include <epos_omasuplprovhandlerres.rsg>


_LIT( KTraceSuplSettings, "epos_comasuplsettings.cpp" );


// -----------------------------------------------------------------------------
// COMASuplSettings::NewL
// Factory method that creates an instance of COMASuplSettings
// -----------------------------------------------------------------------------
//
COMASuplSettings* COMASuplSettings::NewL( COMASuplParameters* aItem, COMASuplTrace* aTrace )
    {
    COMASuplSettings* self = new ( ELeave ) COMASuplSettings( aItem, aTrace );
    CleanupStack::PushL( self );
    self->ConstructL();
    CleanupStack::Pop();
    return self;
    }


// -----------------------------------------------------------------------------    
// Destructor
//
// -----------------------------------------------------------------------------
//
COMASuplSettings::~COMASuplSettings()
    {
    delete iDefaultName;
    delete iItem;
    }


// -----------------------------------------------------------------------------
// COMASuplSettings::SaveL
//
// -----------------------------------------------------------------------------
//
void COMASuplSettings::SaveL( COMASuplSettingsRepository* aRepository )
    {
    iTrace->Trace( _L( "COMASuplSettings::SaveL() Start" ), KTraceSuplSettings, __LINE__ );
     
     HBufC* iapn = NULL;                                       
     _LIT(KNull, "");
     TUint32 iapID = 0;                                      
    // Retrieve APN from Comms DB
    TRAPD(err, iapID = IapIdFromWapIdL( iItem->AssociatedIapId() ) );
    if(err == KErrNone)
    {
    	iapn = iItem->AssociatedIapNameL( iapID, iCommsDb );
    	if ( iapn == NULL )
        {
        iTrace->Trace( _L( "Error Retrieving APN from CommsDB" ), 
                                            KTraceSuplSettings, __LINE__ );
    	User::Leave(KErrNotFound);    
        }
    
    	
    }
    
    // Retrieve HSLP Address
    const TDesC& hslp = iItem->ParameterValue( EWPParameterAddr );
    
    if(iapn!=NULL)
    {
    CleanupStack::PushL( iapn );
    aRepository->SaveL(iapn->Des(), hslp);
    CleanupStack::PopAndDestroy();
  	}
		else
		aRepository->SaveL(KNull, hslp);
	
	    
    }


// -----------------------------------------------------------------------------
// COMASuplSettings::SummaryText
//
// -----------------------------------------------------------------------------
//
const TDesC& COMASuplSettings::SummaryText()
    {    
    return *iDefaultName;
    }

// -----------------------------------------------------------------------------
// COMASuplSettings::SetDefaultNameL
//
// -----------------------------------------------------------------------------
//
void COMASuplSettings::SetDefaultNameL( const TDesC& aDefaultName )
    {
    if ( aDefaultName.Length() )
    	{
	    HBufC* temp = aDefaultName.AllocL();
	    delete iDefaultName;
	    iDefaultName = temp;
    	}
    }

// -----------------------------------------------------------------------------
// COMASuplSettings::SetCommsDataBase
// -----------------------------------------------------------------------------
//
void COMASuplSettings::SetCommsDataBase( CCommsDatabase& aCommsDataBase )
    {
    iCommsDb = &aCommsDataBase;
    }
    

// -----------------------------------------------------------------------------
// COMASuplSettings::IapIdFromWapIdL
//
// -----------------------------------------------------------------------------
//
TUint32 COMASuplSettings::IapIdFromWapIdL( TUint32 aWapId ) const
    {
    CApUtils* apUtils = CApUtils::NewLC( *iCommsDb );
    TUint32 iapId = NULL;
    iapId = apUtils->IapIdFromWapIdL( aWapId );
    __ASSERT_ALWAYS( iapId, Panic( SuplAdapterInvalidId ) );
    CleanupStack::PopAndDestroy( apUtils );
    return iapId;
    }


// -----------------------------------------------------------------------------
// COMASuplSettings::COMASuplSettings
// C++ default constructor can NOT contain any code, that
// might leave.
// -----------------------------------------------------------------------------
//
COMASuplSettings::COMASuplSettings( COMASuplParameters* aItem, COMASuplTrace* aTrace )
                                    :iItem( aItem )
    {
    iTrace = aTrace;
    }
    
    
// -----------------------------------------------------------------------------
// COMASuplSettings::ConstructL
// Symbian 2nd phase constructor can leave.
// -----------------------------------------------------------------------------
//
void COMASuplSettings::ConstructL()
    { 
    TFileName fileName;
    Dll::FileName( fileName );
    iDefaultName = WPAdapterUtil::ReadHBufCL( fileName, KSuplAdapter, 
                                R_QTN_SM_DEFAULT_SUPL_NAME );
    }