diff -r 03849bd79877 -r fdbfe0a95492 omacpadapters/cpdestinationnwadapter/src/cwpdestinationnwadapter.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omacpadapters/cpdestinationnwadapter/src/cwpdestinationnwadapter.cpp Fri Oct 15 11:39:02 2010 +0530 @@ -0,0 +1,375 @@ +/* +* 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: Receives and stores Destination network settings. +* +*/ + + + + +#include +#include +#include +#include +#include +#include // Adapter utils +#include // Unicode conversion +#include +#include +#include +#include + +#include "cwpdestinationnwadapter.h" +#include "wpdestinationnwdebug.h" +#include + +_LIT( KDestinationNwAdapterName, "WPDestinationNwAdapter"); +_LIT( KDestinationNwAppID, "w904C" ); // OMA CP registration document. +_LIT8( KDestinationNwAppID8, "w904C" ); // OMA CP registration document. +_LIT( KCWPDestinationAdapterFileName, "deviceupdates_" ); +_LIT( KCWPDestinationAdapterFilePath, "z:/resource/qt/translations/" ); + +// --------------------------------------------------------------------------- +// CWPDestinationNwAdapter::CWPDestinationNwAdapter +// --------------------------------------------------------------------------- +// +CWPDestinationNwAdapter::CWPDestinationNwAdapter() : CWPAdapter() + { + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwAdapter::ConstructL +// --------------------------------------------------------------------------- +// +void CWPDestinationNwAdapter::ConstructL() + { + DBG_PRINT( "CWPDestinationNwAdapter::ConstructL - begin" ); + + TBool result = HbTextResolverSymbian::Init(KCWPDestinationAdapterFileName, KCWPDestinationAdapterFilePath ); + + _LIT(KCWPDestinationAdapter, "txt_device_update_dblist_destination_networks"); + iDefaultTitle = HbTextResolverSymbian::LoadL(KCWPDestinationAdapter); + iDefaultName = HbTextResolverSymbian::LoadL(KCWPDestinationAdapter); + + DBG_PRINT( "CWPDestinationNwAdapter::ConstructL - end" ); + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwAdapter::NewL +// --------------------------------------------------------------------------- +// +CWPDestinationNwAdapter* CWPDestinationNwAdapter::NewL() + { + CWPDestinationNwAdapter* self = new (ELeave) + CWPDestinationNwAdapter; + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwAdapter::~CWPDestinationNwAdapter +// --------------------------------------------------------------------------- +// +CWPDestinationNwAdapter::~CWPDestinationNwAdapter() + { + DBG_PRINT( "CWPDestinationNwAdapter::~CWPDestinationNwAdapter - begin" ); + delete iDefaultTitle; + delete iDefaultName; + iItems.ResetAndDestroy(); + iItems.Close(); + DBG_PRINT( "CWPDestinationNwAdapter::~CWPDestinationNwAdapter - end" ); + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwAdapter::Des8ToUint32L() +// Converts an 8 bit descriptor to TUint32. +// --------------------------------------------------------------------------- +// +TUint32 CWPDestinationNwAdapter::Des8ToUint32L( const TDesC8& aDes ) + { + TLex8 lex( aDes ); + TUint32 value( 0 ); + User::LeaveIfError( lex.Val( value, EDecimal ) ); + return value; + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwAdapter::ItemCount +// From class CWPAdapter. +// Checks the number of settings items. +// --------------------------------------------------------------------------- +// +TInt CWPDestinationNwAdapter::ItemCount() const + { + return iItems.Count(); + } + +// --------------------------------------------------------------------------- +// From class CWPAdapter. +// CWPDestinationNwAdapter::SummaryTitle +// Returns the summary title. +// --------------------------------------------------------------------------- +// +const TDesC16& CWPDestinationNwAdapter::SummaryTitle( TInt /*aIndex*/ ) const + { + return *iDefaultTitle; + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwAdapter::SummaryText +// From class CWPAdapter. +// Returns the summary text of a destination network. +// --------------------------------------------------------------------------- +// +const TDesC16& CWPDestinationNwAdapter::SummaryText( TInt aIndex ) const + { + if ( !iItems[aIndex]->SettingsName().Length() ) + { + return *iDefaultName; + } + return iItems[aIndex]->SettingsName(); + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwAdapter::SaveL +// From class CWPAdapter. +// Calls settings items saving method. +// --------------------------------------------------------------------------- +// +void CWPDestinationNwAdapter::SaveL( TInt aIndex ) + { + __ASSERT_ALWAYS( aIndex >= 0 && aIndex < iItems.Count(), + User::Leave( KErrArgument ) ); + + iItems[aIndex]->SaveL(); + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwAdapter::CanSetAsDefault +// From class CWPAdapter. +// Not supported; always return EFalse. +// --------------------------------------------------------------------------- +// +TBool CWPDestinationNwAdapter::CanSetAsDefault( TInt /*aIndex*/ ) const + { + return EFalse; + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwAdapter::DetailsL +// From class CWPAdapter. +// Not supported. +// --------------------------------------------------------------------------- +// +TInt CWPDestinationNwAdapter::DetailsL( TInt /*aItem*/, + MWPPairVisitor& /*aVisitor */ ) + { + return KErrNotSupported; + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwAdapter::VisitL +// From class CWPAdapter. +// OMA CP characteristics are handled in this method. +// --------------------------------------------------------------------------- +// +void CWPDestinationNwAdapter::VisitL( + CWPCharacteristic& aCharacteristic ) + { + DBG_PRINT( "CWPDestinationNwAdapter::VisitL( characteristic ) - begin" ); + switch ( aCharacteristic.Type() ) + { + // This adapter only handles APPLICATION characteristic. + case KWPApplication: + { + iCurrentItem = CWPDestinationNwItem::NewL(); + // Set default name for destination - replaced later if a name + // has been provisioned. + iCurrentItem->SetSettingsNameL( iDefaultName->Des() ); + aCharacteristic.AcceptL( *this ); + + // Settings are for Destination network - append current item to + // item array to be saved later. + if ( 0 == iAppId.Compare( KDestinationNwAppID() ) ) + { + iItems.AppendL( iCurrentItem ); + } + // Settings are not for Destination network. + else + { + delete iCurrentItem; + iCurrentItem = NULL; + } + break; + } + // All other than APPLICATION are ignored. + default: + break; + } + DBG_PRINT( "CWPDestinationNwAdapter::VisitL( characteristic ) - end" ); + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwAdapter::VisitL +// From class CWPAdapter. +// Destination network parameters are handled in this method. +// --------------------------------------------------------------------------- +// +void CWPDestinationNwAdapter::VisitL( CWPParameter& aParameter ) + { + DBG_PRINT( "CWPDestinationNwAdapter::VisitL( parameter ) - begin" ); + // tmpValue holds the value converted from Unicode to UTF8. + HBufC8* tmpValue = HBufC8::NewLC( aParameter.Value().Length() ); // CS:1 + TPtr8 ptrTmpValue( tmpValue->Des() ); + CnvUtfConverter::ConvertFromUnicodeToUtf8( ptrTmpValue, + aParameter.Value() ); + + switch ( aParameter.ID() ) + { + // APPLICATION/APPID + case EWPParameterAppID: + { + iAppId.Set( aParameter.Value() ); + break; + } + + // APPLICATION/NAME + case EWPParameterName: + { + if ( iCurrentItem ) + { + iCurrentItem->SetSettingsNameL( aParameter.Value() ); + } + break; + } + + // APPLICATION/APPREF + case EWPParameterAppRef: + { + if ( iCurrentItem ) + { + iCurrentItem->SetAppRefL( tmpValue->Des() ); + } + break; + } + + // Other settings are ignored. + default: + { + break; + } + } + CleanupStack::PopAndDestroy( tmpValue ); // CS:0 + DBG_PRINT( "CWPDestinationNwAdapter::VisitL( parameter ) - end" ); + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwAdapter::VisitLinkL +// +// --------------------------------------------------------------------------- +// +void CWPDestinationNwAdapter::VisitLinkL( CWPCharacteristic& aLink ) + { + if ( KWPNapDef == aLink.Type() && iCurrentItem ) + { + iCurrentItem->AddNapDefL( &aLink ); + } + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwAdapter::GetSavingInfoL +// APPID is set to [0], APPREF to [1] and saving info (storage ID) to [2]. +// --------------------------------------------------------------------------- +// +void CWPDestinationNwAdapter::GetSavingInfoL( TInt aIndex, + RPointerArray& aSavingInfo ) + { + __ASSERT_ALWAYS( aIndex >= 0 && aIndex < iItems.Count(), + User::Leave( KErrArgument ) ); + + aSavingInfo.AppendL( KDestinationNwAppID8().AllocL() ); + aSavingInfo.AppendL( iItems[aIndex]->AppRef().AllocL() ); + aSavingInfo.AppendL( iItems[aIndex]->SaveData().AllocL() ); + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwAdapter::ContextExtension +// From class MWPContextExtension. +// Returns a pointer to context extension. +// --------------------------------------------------------------------------- +// +TInt CWPDestinationNwAdapter::ContextExtension( + MWPContextExtension*& aExtension ) + { + aExtension = this; + return KErrNone; + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwAdapter::SaveDataL +// From class MWPContextExtension. +// Returns ID of saved data. +// --------------------------------------------------------------------------- +// +const TDesC8& CWPDestinationNwAdapter::SaveDataL( TInt aIndex ) const + { + __ASSERT_ALWAYS( aIndex >= 0 && aIndex < iItems.Count(), + User::Leave( KErrArgument ) ); + + return iItems[aIndex]->SaveData(); + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwAdapter::DeleteL +// From class MWPContextExtension. +// Deletes a Destination network. +// --------------------------------------------------------------------------- +// +void CWPDestinationNwAdapter::DeleteL( const TDesC8& aSaveData ) + { + DBG_PRINT( "CWPDestinationNwAdapter::DeleteL - begin" ); + RCmManagerExt cmManager; + cmManager.OpenL(); + CleanupClosePushL( cmManager ); // CS:1 + TUint32 destinationId = Des8ToUint32L( aSaveData ); + RCmDestinationExt destination = cmManager.DestinationL( destinationId ); + CleanupClosePushL( destination ); // CS:2 + const TInt cmCount = destination.ConnectionMethodCount(); + // First remove IAPs from destination network because this adapter must + // not delete IAPs. + for ( TInt counter = 0; counter < cmCount; counter++ ) + { + destination.RemoveConnectionMethodL( + destination.ConnectionMethodL( 0 ) ); + destination.UpdateL(); + } + CleanupStack::Pop( &destination ); // CS:1 + destination.DeleteLD(); + CleanupStack::PopAndDestroy( &cmManager ); // CS:0 + DBG_PRINT( "CWPDestinationNwAdapter::DeleteL - end" ); + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwAdapter::Uid +// From class MWPContextExtension. +// Returns the UID of this adapter. +// --------------------------------------------------------------------------- +// +TUint32 CWPDestinationNwAdapter::Uid() const + { + return iDtor_ID_Key.iUid; + } +// End of file.