omaprovisioning/provisioning/cpdestinationnwadapter/src/cwpdestinationnwitem.cpp
changeset 73 ae69c2e8bc34
parent 71 d2517372cc44
child 77 9f85c58c0592
--- a/omaprovisioning/provisioning/cpdestinationnwadapter/src/cwpdestinationnwitem.cpp	Tue Sep 28 17:53:08 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,345 +0,0 @@
-/*
-* Copyright (c) 2007 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:    Settings item for one destination network. Also handles
-*                saving destination networks to permanent storage.
-*
-*/
-
-
-
-
-#include <wpdestinationnwadapter.rsg>
-#include <charconv.h>
-#include <CWPCharacteristic.h>
-#include <cmmanagerext.h>
-#include <cmdestinationext.h>
-#include <cmconnectionmethodext.h>
-#include <cmconnectionmethoddef.h>
-#include <cmpluginwlandef.h> // For WLAN plugin UID, i.e. bearer type.
-
-#include "cwpdestinationnwitem.h"
-#include "wpdestinationnwdebug.h"
-
-const TInt KMaxCharsInTUint32 = 10;
-
-// ---------------------------------------------------------------------------
-// CWPDestinationNwItem::NewL
-//
-// ---------------------------------------------------------------------------
-//
-CWPDestinationNwItem* CWPDestinationNwItem::NewL()
-    {
-    CWPDestinationNwItem* self = new ( ELeave ) CWPDestinationNwItem();
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CWPDestinationNwItem::CWPDestinationNwItem
-//
-// ---------------------------------------------------------------------------
-//
-CWPDestinationNwItem::CWPDestinationNwItem()
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CWPDestinationNwItem::~CWPDestinationNwItem
-//
-// ---------------------------------------------------------------------------
-//
-CWPDestinationNwItem::~CWPDestinationNwItem()
-    {
-    DBG_PRINT( "CWPDestinationNwItem::~CWPDestinationNwItem - begin" );
-    delete iAppRef;
-    delete iSettingsName;
-    iNapDefs.Close();
-    delete iSavedProfileId;
-    DBG_PRINT( "CWPDestinationNwItem::~CWPDestinationNwItem - end" );
-    }
-
-// ---------------------------------------------------------------------------
-// CWPDestinationNwItem::ConstructL
-//
-// ---------------------------------------------------------------------------
-//
-void CWPDestinationNwItem::ConstructL()
-    { 
-    DBG_PRINT( "CWPDestinationNwItem::ConstructL - begin" );
-    iAppRef         = HBufC8::NewL( 0 );
-    iSettingsName   = HBufC::NewL( 0 );
-    iSavedProfileId = HBufC8::NewL( KMaxCharsInTUint32 );
-    DBG_PRINT( "CWPDestinationNwItem::ConstructL - end" );
-    }
-
-// ---------------------------------------------------------------------------
-// CWPDestinationNwItem::SetAppRefL
-//
-// ---------------------------------------------------------------------------
-//
-void CWPDestinationNwItem::SetAppRefL( const TDesC8& aAppRef )
-    {
-    delete iAppRef;
-    iAppRef = NULL;
-    iAppRef = aAppRef.AllocL();
-    }
-
-// ---------------------------------------------------------------------------
-// CWPDestinationNwItem::SetSettingsNameL
-//
-// ---------------------------------------------------------------------------
-//
-void CWPDestinationNwItem::SetSettingsNameL( const TDesC& aSettingsName )
-    {
-    delete iSettingsName;
-    iSettingsName = NULL;
-    iSettingsName = aSettingsName.AllocL();
-    }
-
-// ---------------------------------------------------------------------------
-// CWPDestinationNwItem::AddNapDefL
-//
-// ---------------------------------------------------------------------------
-//
-void CWPDestinationNwItem::AddNapDefL( CWPCharacteristic* aNapDef )
-    {
-    iNapDefs.AppendL( aNapDef );
-    }
-
-// ---------------------------------------------------------------------------
-// CWPDestinationNwItem::AppRef
-//
-// ---------------------------------------------------------------------------
-//
-const TDesC8& CWPDestinationNwItem::AppRef() const
-    {
-    return *iAppRef;
-    }
-
-// ---------------------------------------------------------------------------
-// CWPDestinationNwItem::SettingsName
-//
-// ---------------------------------------------------------------------------
-//
-const TDesC& CWPDestinationNwItem::SettingsName() const
-    {
-    return *iSettingsName;
-    }
-
-// ---------------------------------------------------------------------------
-// CWPDestinationNwItem::SaveL()
-// Saves the Destination network using Extended connection settings API. 
-// ---------------------------------------------------------------------------
-//
-void CWPDestinationNwItem::SaveL()
-    {
-    DBG_PRINT( "CWPDestinationNwItem::SaveL - begin" );
-    // Number of IAPs that have been linked to this destination.
-    const TInt iapCount( iNapDefs.Count() );
-    RCmManagerExt cmManager;
-    cmManager.OpenL();
-    CleanupClosePushL( cmManager ); // CS:1
-    RCmDestinationExt destination = CreateDestinationL( cmManager );
-    CleanupClosePushL( destination ); // CS:2
-    RCmConnectionMethodExt tempconn;
-    
-    // Add linked IAPs to destination.    
-    for ( TInt counter = 0; counter < iapCount; counter++ )
-        {
-        TPckgBuf<TUint32> apUid;
-        apUid.Copy( iNapDefs[counter]->Data( 0 ) );
-        // The stored id is the wap id. Convert it into the iap id
-        
-        TUint32 iapId = IapIdFromWapIdL( apUid() );
-        
-        apUid = NULL;
-        RCmConnectionMethodExt connection = 
-            cmManager.ConnectionMethodL( iapId );
-        CleanupClosePushL( connection ); // CS:5
-
-        RArray<TUint32> destinationIds;        
-        cmManager.AllDestinationsL( destinationIds );
-        CleanupClosePushL( destinationIds );
-        
-        TInt counter2(0);        
-        for ( counter2 = 0; counter2 < destinationIds.Count(); counter2++ )
-            {
-            RCmDestinationExt tempdest = cmManager.DestinationL( 
-                        destinationIds[counter2] );            
-            
-            TRAPD( err, tempconn = tempdest.ConnectionMethodByIDL( iapId ));
-                        
-            tempconn.Close();
-            tempdest.Close();
-            
-            if ( err != KErrNotFound )
-                {
-                // Found from other destination                  
-                break;                
-                }           
-            }                
-        if ( counter2 == destinationIds.Count() )
-            {
-            // Not found in any other destination
-            destination.AddConnectionMethodL( connection );            
-            }
-        else
-            {            
-            // Found in some other destination -> create copy
-            destination.AddConnectionMethodL( tempconn = connection.CreateCopyL() );
-            tempconn.Close();            
-            }
-        CleanupStack::PopAndDestroy( &destinationIds );
-
-        // Change seamlessness level for linked WLAN IAPs.
-        TUint32 bearerType = connection.GetIntAttributeL( 
-            CMManager::ECmBearerType );
-        if ( KUidWlanBearerType == bearerType )
-            {
-            connection.SetIntAttributeL( CMManager::ECmSeamlessnessLevel, 
-                CMManager::ESeamlessnessShowprogress );
-            connection.UpdateL();
-            }
-
-        destination.UpdateL();
-        CleanupStack::PopAndDestroy( &connection ); // CS:4
-        }    
-    destination.UpdateL(); // In case there were no IAP linkages.
-    // Destination ID is needed as a descriptor (used in linking settings).
-    TUint32 destinationId = destination.Id();
-    iSavedProfileId->Des().Num( destinationId, EDecimal );
-    // Pop destination & cmManager.
-    CleanupStack::PopAndDestroy( 2, &cmManager ); // CS:0
-    DBG_PRINT( "CWPDestinationNwItem::SaveL - end" );
-    }
-
-// ---------------------------------------------------------------------------
-// CWPDestinationNwItem::SaveData
-//
-// ---------------------------------------------------------------------------
-//
-const TDesC8& CWPDestinationNwItem::SaveData() const
-    {
-    return *iSavedProfileId;
-    }
-
-// ---------------------------------------------------------------------------
-// CWPDestinationNwItem::CreateDestinationL
-// Checks that settings name if unique, renames if necessary, and creates
-// a destination network.
-// ---------------------------------------------------------------------------
-//
-RCmDestinationExt CWPDestinationNwItem::CreateDestinationL( 
-    RCmManagerExt& aCmManager )
-    {
-    DBG_PRINT( "CWPDestinationNwItem::CreateDestinationL - begin" );
-    RArray<TUint32> destinationIds;
-    // Get destination ID's for checking if name to be set is reserved.
-    CleanupClosePushL( destinationIds ); // CS:1
-    aCmManager.AllDestinationsL( destinationIds );
-    const TInt destinationCount = destinationIds.Count();
-    // Destination's name to actually be used.
-    HBufC* newName = HBufC::NewLC( 
-        iSettingsName->Des().Length() + KMaxCharsInTUint32 ); // CS:2
-    newName->Des().Copy( iSettingsName->Des() );
-
-    // Check names from all existing destinations.
-    for ( TInt counter = 0; counter < destinationCount; counter++ )
-        {
-        RCmDestinationExt destination = aCmManager.DestinationL( 
-            destinationIds[counter] );
-        CleanupClosePushL( destination ); // CS:3
-        HBufC* settingsName = destination.NameLC(); // CS:4
-        // If destination exists, return it.
-        if ( 0 == newName->Des().Compare( settingsName->Des() ) )
-            {
-            // Pop settingsName & destination & newName
-            CleanupStack::PopAndDestroy( 3, &destination ); // CS:1
-            
-            RCmDestinationExt dest2 = aCmManager.DestinationL( 
-                    destinationIds[counter] );
-            
-            CleanupStack::PopAndDestroy( &destinationIds ); // CS:0
-            DBG_PRINT( "CWPDestinationNwItem::CreateDestinationL - end" );
-            return dest2;
-            }
-        // Pop settingsName & destination.
-        CleanupStack::PopAndDestroy( 2, &destination ); // CS:2
-        }
-   
-    // Create new a destination and return it.
-    RCmDestinationExt destination = aCmManager.CreateDestinationL( *newName );
-    // Pop newName & destinationIds
-    CleanupStack::PopAndDestroy( 2, &destinationIds ); // CS:0
-    DBG_PRINT( "CWPDestinationNwItem::CreateDestinationL - end" );
-    return destination;
-    }
-    
-// ---------------------------------------------------------------------------
-// CWPDestinationNwItem::IapIdFromWapId
-// Returns IAP ID from WAP ID.
-// ---------------------------------------------------------------------------
-//
-TUint32 CWPDestinationNwItem::IapIdFromWapIdL( TUint32 aWapId )
-    {
-    RCmManagerExt cmManager;
-    cmManager.OpenLC(); // CS:1
-    RArray<TUint32> iapIds;
-    TUint32 iapId( 0 );
-
-    // First get all free IAP ID's.
-    cmManager.ConnectionMethodL( iapIds );
-    CleanupClosePushL( iapIds ); // CS:2
-
-    // Then get IAP ID's from all destinations.
-    RArray<TUint32> destIds;
-    cmManager.AllDestinationsL( destIds );
-    CleanupClosePushL( destIds ); // CS:3
-    TInt destCount = destIds.Count();
-    for ( TInt destIndex = 0; destIndex < destCount; destIndex++ )
-        {
-        RCmDestinationExt dest = cmManager.DestinationL( 
-            destIds[destIndex] );
-        CleanupClosePushL( dest ); // CS:4
-        TInt cmCount = dest.ConnectionMethodCount();
-        for ( TInt cmIndex = 0; cmIndex < cmCount; cmIndex++ )
-            {
-            TUint32 apId = dest.ConnectionMethodL( 
-                cmIndex ).GetIntAttributeL( CMManager::ECmIapId );
-            iapIds.AppendL( apId );
-            }
-        CleanupStack::PopAndDestroy( &dest ); // CS:3
-        }
-    // Finally, go through all connection methods and find correct IAP ID.
-    const TInt cmCount = iapIds.Count();
-    for ( TInt counter = 0; counter < cmCount; counter++ )
-        {
-        TUint32 id = cmManager.GetConnectionMethodInfoIntL( 
-            iapIds[counter], CMManager::ECmWapId );
-        if ( id == aWapId )
-            {
-            iapId = iapIds[counter];
-            // No need to go through rest of IAPs.
-            break;
-            }
-        }
-    // PopAndDestroy destIds, iapIds, cmManager.
-    CleanupStack::PopAndDestroy( 3, &cmManager ); // CS:0
-    return iapId;
-    }
-
-
-// End of file.