--- /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 <e32base.h>
+#include <CWPAdapter.h>
+#include <CWPCharacteristic.h>
+#include <CWPParameter.h>
+#include <e32des8.h>
+#include <WPAdapterUtil.h> // Adapter utils
+#include <utf.h> // Unicode conversion
+#include <cmmanagerext.h>
+#include <cmdestinationext.h>
+#include <cmconnectionmethodext.h>
+#include <cmmanagerdef.h>
+
+#include "cwpdestinationnwadapter.h"
+#include "wpdestinationnwdebug.h"
+#include <hbtextresolversymbian.h>
+
+_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<HBufC8>& 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.