omacpadapters/cpdestinationnwadapter/src/cwpdestinationnwitem.cpp
author hgs
Fri, 15 Oct 2010 11:39:02 +0530
changeset 67 fdbfe0a95492
permissions -rw-r--r--
201041
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
67
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). 
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:    Settings item for one destination network. Also handles
hgs
parents:
diff changeset
    15
*                saving destination networks to permanent storage.
hgs
parents:
diff changeset
    16
*
hgs
parents:
diff changeset
    17
*/
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
#include <charconv.h>
hgs
parents:
diff changeset
    24
#include <CWPCharacteristic.h>
hgs
parents:
diff changeset
    25
#include <cmmanagerext.h>
hgs
parents:
diff changeset
    26
#include <cmdestinationext.h>
hgs
parents:
diff changeset
    27
#include <cmconnectionmethodext.h>
hgs
parents:
diff changeset
    28
#include <cmconnectionmethoddef.h>
hgs
parents:
diff changeset
    29
#include <cmpluginwlandef.h> // For WLAN plugin UID, i.e. bearer type.
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
#include "cwpdestinationnwitem.h"
hgs
parents:
diff changeset
    32
#include "wpdestinationnwdebug.h"
hgs
parents:
diff changeset
    33
hgs
parents:
diff changeset
    34
const TInt KMaxCharsInTUint32 = 10;
hgs
parents:
diff changeset
    35
hgs
parents:
diff changeset
    36
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    37
// CWPDestinationNwItem::NewL
hgs
parents:
diff changeset
    38
//
hgs
parents:
diff changeset
    39
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    40
//
hgs
parents:
diff changeset
    41
CWPDestinationNwItem* CWPDestinationNwItem::NewL()
hgs
parents:
diff changeset
    42
    {
hgs
parents:
diff changeset
    43
    CWPDestinationNwItem* self = new ( ELeave ) CWPDestinationNwItem();
hgs
parents:
diff changeset
    44
    CleanupStack::PushL( self );
hgs
parents:
diff changeset
    45
    self->ConstructL();
hgs
parents:
diff changeset
    46
    CleanupStack::Pop( self );
hgs
parents:
diff changeset
    47
    return self;
hgs
parents:
diff changeset
    48
    }
hgs
parents:
diff changeset
    49
hgs
parents:
diff changeset
    50
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    51
// CWPDestinationNwItem::CWPDestinationNwItem
hgs
parents:
diff changeset
    52
//
hgs
parents:
diff changeset
    53
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    54
//
hgs
parents:
diff changeset
    55
CWPDestinationNwItem::CWPDestinationNwItem()
hgs
parents:
diff changeset
    56
    {
hgs
parents:
diff changeset
    57
    }
hgs
parents:
diff changeset
    58
hgs
parents:
diff changeset
    59
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    60
// CWPDestinationNwItem::~CWPDestinationNwItem
hgs
parents:
diff changeset
    61
//
hgs
parents:
diff changeset
    62
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    63
//
hgs
parents:
diff changeset
    64
CWPDestinationNwItem::~CWPDestinationNwItem()
hgs
parents:
diff changeset
    65
    {
hgs
parents:
diff changeset
    66
    DBG_PRINT( "CWPDestinationNwItem::~CWPDestinationNwItem - begin" );
hgs
parents:
diff changeset
    67
    delete iAppRef;
hgs
parents:
diff changeset
    68
    delete iSettingsName;
hgs
parents:
diff changeset
    69
    iNapDefs.Close();
hgs
parents:
diff changeset
    70
    delete iSavedProfileId;
hgs
parents:
diff changeset
    71
    DBG_PRINT( "CWPDestinationNwItem::~CWPDestinationNwItem - end" );
hgs
parents:
diff changeset
    72
    }
hgs
parents:
diff changeset
    73
hgs
parents:
diff changeset
    74
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    75
// CWPDestinationNwItem::ConstructL
hgs
parents:
diff changeset
    76
//
hgs
parents:
diff changeset
    77
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    78
//
hgs
parents:
diff changeset
    79
void CWPDestinationNwItem::ConstructL()
hgs
parents:
diff changeset
    80
    { 
hgs
parents:
diff changeset
    81
    DBG_PRINT( "CWPDestinationNwItem::ConstructL - begin" );
hgs
parents:
diff changeset
    82
    iAppRef         = HBufC8::NewL( 0 );
hgs
parents:
diff changeset
    83
    iSettingsName   = HBufC::NewL( 0 );
hgs
parents:
diff changeset
    84
    iSavedProfileId = HBufC8::NewL( KMaxCharsInTUint32 );
hgs
parents:
diff changeset
    85
    DBG_PRINT( "CWPDestinationNwItem::ConstructL - end" );
hgs
parents:
diff changeset
    86
    }
hgs
parents:
diff changeset
    87
hgs
parents:
diff changeset
    88
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    89
// CWPDestinationNwItem::SetAppRefL
hgs
parents:
diff changeset
    90
//
hgs
parents:
diff changeset
    91
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    92
//
hgs
parents:
diff changeset
    93
void CWPDestinationNwItem::SetAppRefL( const TDesC8& aAppRef )
hgs
parents:
diff changeset
    94
    {
hgs
parents:
diff changeset
    95
    delete iAppRef;
hgs
parents:
diff changeset
    96
    iAppRef = NULL;
hgs
parents:
diff changeset
    97
    iAppRef = aAppRef.AllocL();
hgs
parents:
diff changeset
    98
    }
hgs
parents:
diff changeset
    99
hgs
parents:
diff changeset
   100
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   101
// CWPDestinationNwItem::SetSettingsNameL
hgs
parents:
diff changeset
   102
//
hgs
parents:
diff changeset
   103
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   104
//
hgs
parents:
diff changeset
   105
void CWPDestinationNwItem::SetSettingsNameL( const TDesC& aSettingsName )
hgs
parents:
diff changeset
   106
    {
hgs
parents:
diff changeset
   107
    delete iSettingsName;
hgs
parents:
diff changeset
   108
    iSettingsName = NULL;
hgs
parents:
diff changeset
   109
    iSettingsName = aSettingsName.AllocL();
hgs
parents:
diff changeset
   110
    }
hgs
parents:
diff changeset
   111
hgs
parents:
diff changeset
   112
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   113
// CWPDestinationNwItem::AddNapDefL
hgs
parents:
diff changeset
   114
//
hgs
parents:
diff changeset
   115
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   116
//
hgs
parents:
diff changeset
   117
void CWPDestinationNwItem::AddNapDefL( CWPCharacteristic* aNapDef )
hgs
parents:
diff changeset
   118
    {
hgs
parents:
diff changeset
   119
    iNapDefs.AppendL( aNapDef );
hgs
parents:
diff changeset
   120
    }
hgs
parents:
diff changeset
   121
hgs
parents:
diff changeset
   122
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   123
// CWPDestinationNwItem::AppRef
hgs
parents:
diff changeset
   124
//
hgs
parents:
diff changeset
   125
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   126
//
hgs
parents:
diff changeset
   127
const TDesC8& CWPDestinationNwItem::AppRef() const
hgs
parents:
diff changeset
   128
    {
hgs
parents:
diff changeset
   129
    return *iAppRef;
hgs
parents:
diff changeset
   130
    }
hgs
parents:
diff changeset
   131
hgs
parents:
diff changeset
   132
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   133
// CWPDestinationNwItem::SettingsName
hgs
parents:
diff changeset
   134
//
hgs
parents:
diff changeset
   135
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   136
//
hgs
parents:
diff changeset
   137
const TDesC& CWPDestinationNwItem::SettingsName() const
hgs
parents:
diff changeset
   138
    {
hgs
parents:
diff changeset
   139
    return *iSettingsName;
hgs
parents:
diff changeset
   140
    }
hgs
parents:
diff changeset
   141
hgs
parents:
diff changeset
   142
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   143
// CWPDestinationNwItem::SaveL()
hgs
parents:
diff changeset
   144
// Saves the Destination network using Extended connection settings API. 
hgs
parents:
diff changeset
   145
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   146
//
hgs
parents:
diff changeset
   147
void CWPDestinationNwItem::SaveL()
hgs
parents:
diff changeset
   148
    {
hgs
parents:
diff changeset
   149
    DBG_PRINT( "CWPDestinationNwItem::SaveL - begin" );
hgs
parents:
diff changeset
   150
    // Number of IAPs that have been linked to this destination.
hgs
parents:
diff changeset
   151
    const TInt iapCount( iNapDefs.Count() );
hgs
parents:
diff changeset
   152
    RCmManagerExt cmManager;
hgs
parents:
diff changeset
   153
    cmManager.OpenL();
hgs
parents:
diff changeset
   154
    CleanupClosePushL( cmManager ); // CS:1
hgs
parents:
diff changeset
   155
    RCmDestinationExt destination = CreateDestinationL( cmManager );
hgs
parents:
diff changeset
   156
    CleanupClosePushL( destination ); // CS:2
hgs
parents:
diff changeset
   157
    RCmConnectionMethodExt tempconn;
hgs
parents:
diff changeset
   158
    
hgs
parents:
diff changeset
   159
    // Add linked IAPs to destination.    
hgs
parents:
diff changeset
   160
    for ( TInt counter = 0; counter < iapCount; counter++ )
hgs
parents:
diff changeset
   161
        {
hgs
parents:
diff changeset
   162
        TPckgBuf<TUint32> apUid;
hgs
parents:
diff changeset
   163
        apUid.Copy( iNapDefs[counter]->Data( 0 ) );
hgs
parents:
diff changeset
   164
        // The stored id is the wap id. Convert it into the iap id
hgs
parents:
diff changeset
   165
        
hgs
parents:
diff changeset
   166
        TUint32 iapId = IapIdFromWapIdL( apUid() );
hgs
parents:
diff changeset
   167
        
hgs
parents:
diff changeset
   168
        apUid = NULL;
hgs
parents:
diff changeset
   169
        RCmConnectionMethodExt connection = 
hgs
parents:
diff changeset
   170
            cmManager.ConnectionMethodL( iapId );
hgs
parents:
diff changeset
   171
        CleanupClosePushL( connection ); // CS:5
hgs
parents:
diff changeset
   172
hgs
parents:
diff changeset
   173
        RArray<TUint32> destinationIds;        
hgs
parents:
diff changeset
   174
        cmManager.AllDestinationsL( destinationIds );
hgs
parents:
diff changeset
   175
        CleanupClosePushL( destinationIds );
hgs
parents:
diff changeset
   176
        
hgs
parents:
diff changeset
   177
        TInt counter2(0);        
hgs
parents:
diff changeset
   178
        for ( counter2 = 0; counter2 < destinationIds.Count(); counter2++ )
hgs
parents:
diff changeset
   179
            {
hgs
parents:
diff changeset
   180
            RCmDestinationExt tempdest = cmManager.DestinationL( 
hgs
parents:
diff changeset
   181
                        destinationIds[counter2] );            
hgs
parents:
diff changeset
   182
            
hgs
parents:
diff changeset
   183
            TRAPD( err, tempconn = tempdest.ConnectionMethodByIDL( iapId ));
hgs
parents:
diff changeset
   184
                        
hgs
parents:
diff changeset
   185
            tempconn.Close();
hgs
parents:
diff changeset
   186
            tempdest.Close();
hgs
parents:
diff changeset
   187
            
hgs
parents:
diff changeset
   188
            if ( err != KErrNotFound )
hgs
parents:
diff changeset
   189
                {
hgs
parents:
diff changeset
   190
                // Found from other destination                  
hgs
parents:
diff changeset
   191
                break;                
hgs
parents:
diff changeset
   192
                }           
hgs
parents:
diff changeset
   193
            }                
hgs
parents:
diff changeset
   194
        if ( counter2 == destinationIds.Count() )
hgs
parents:
diff changeset
   195
            {
hgs
parents:
diff changeset
   196
            // Not found in any other destination
hgs
parents:
diff changeset
   197
            destination.AddConnectionMethodL( connection );            
hgs
parents:
diff changeset
   198
            }
hgs
parents:
diff changeset
   199
        else
hgs
parents:
diff changeset
   200
            {            
hgs
parents:
diff changeset
   201
            // Found in some other destination -> create copy
hgs
parents:
diff changeset
   202
            destination.AddConnectionMethodL( tempconn = connection.CreateCopyL() );
hgs
parents:
diff changeset
   203
            tempconn.Close();            
hgs
parents:
diff changeset
   204
            }
hgs
parents:
diff changeset
   205
        CleanupStack::PopAndDestroy( &destinationIds );
hgs
parents:
diff changeset
   206
hgs
parents:
diff changeset
   207
        // Change seamlessness level for linked WLAN IAPs.
hgs
parents:
diff changeset
   208
        TUint32 bearerType = connection.GetIntAttributeL( 
hgs
parents:
diff changeset
   209
            CMManager::ECmBearerType );
hgs
parents:
diff changeset
   210
        if ( KUidWlanBearerType == bearerType )
hgs
parents:
diff changeset
   211
            {
hgs
parents:
diff changeset
   212
            connection.SetIntAttributeL( CMManager::ECmSeamlessnessLevel, 
hgs
parents:
diff changeset
   213
                CMManager::ESeamlessnessShowprogress );
hgs
parents:
diff changeset
   214
            connection.UpdateL();
hgs
parents:
diff changeset
   215
            }
hgs
parents:
diff changeset
   216
hgs
parents:
diff changeset
   217
        destination.UpdateL();
hgs
parents:
diff changeset
   218
        CleanupStack::PopAndDestroy( &connection ); // CS:4
hgs
parents:
diff changeset
   219
        }    
hgs
parents:
diff changeset
   220
    destination.UpdateL(); // In case there were no IAP linkages.
hgs
parents:
diff changeset
   221
    // Destination ID is needed as a descriptor (used in linking settings).
hgs
parents:
diff changeset
   222
    TUint32 destinationId = destination.Id();
hgs
parents:
diff changeset
   223
    iSavedProfileId->Des().Num( destinationId, EDecimal );
hgs
parents:
diff changeset
   224
    // Pop destination & cmManager.
hgs
parents:
diff changeset
   225
    CleanupStack::PopAndDestroy( 2, &cmManager ); // CS:0
hgs
parents:
diff changeset
   226
    DBG_PRINT( "CWPDestinationNwItem::SaveL - end" );
hgs
parents:
diff changeset
   227
    }
hgs
parents:
diff changeset
   228
hgs
parents:
diff changeset
   229
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   230
// CWPDestinationNwItem::SaveData
hgs
parents:
diff changeset
   231
//
hgs
parents:
diff changeset
   232
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   233
//
hgs
parents:
diff changeset
   234
const TDesC8& CWPDestinationNwItem::SaveData() const
hgs
parents:
diff changeset
   235
    {
hgs
parents:
diff changeset
   236
    return *iSavedProfileId;
hgs
parents:
diff changeset
   237
    }
hgs
parents:
diff changeset
   238
hgs
parents:
diff changeset
   239
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   240
// CWPDestinationNwItem::CreateDestinationL
hgs
parents:
diff changeset
   241
// Checks that settings name if unique, renames if necessary, and creates
hgs
parents:
diff changeset
   242
// a destination network.
hgs
parents:
diff changeset
   243
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   244
//
hgs
parents:
diff changeset
   245
RCmDestinationExt CWPDestinationNwItem::CreateDestinationL( 
hgs
parents:
diff changeset
   246
    RCmManagerExt& aCmManager )
hgs
parents:
diff changeset
   247
    {
hgs
parents:
diff changeset
   248
    DBG_PRINT( "CWPDestinationNwItem::CreateDestinationL - begin" );
hgs
parents:
diff changeset
   249
    RArray<TUint32> destinationIds;
hgs
parents:
diff changeset
   250
    // Get destination ID's for checking if name to be set is reserved.
hgs
parents:
diff changeset
   251
    CleanupClosePushL( destinationIds ); // CS:1
hgs
parents:
diff changeset
   252
    aCmManager.AllDestinationsL( destinationIds );
hgs
parents:
diff changeset
   253
    const TInt destinationCount = destinationIds.Count();
hgs
parents:
diff changeset
   254
    // Destination's name to actually be used.
hgs
parents:
diff changeset
   255
    HBufC* newName = HBufC::NewLC( 
hgs
parents:
diff changeset
   256
        iSettingsName->Des().Length() + KMaxCharsInTUint32 ); // CS:2
hgs
parents:
diff changeset
   257
    newName->Des().Copy( iSettingsName->Des() );
hgs
parents:
diff changeset
   258
hgs
parents:
diff changeset
   259
    // Check names from all existing destinations.
hgs
parents:
diff changeset
   260
    for ( TInt counter = 0; counter < destinationCount; counter++ )
hgs
parents:
diff changeset
   261
        {
hgs
parents:
diff changeset
   262
        RCmDestinationExt destination = aCmManager.DestinationL( 
hgs
parents:
diff changeset
   263
            destinationIds[counter] );
hgs
parents:
diff changeset
   264
        CleanupClosePushL( destination ); // CS:3
hgs
parents:
diff changeset
   265
        HBufC* settingsName = destination.NameLC(); // CS:4
hgs
parents:
diff changeset
   266
        // If destination exists, return it.
hgs
parents:
diff changeset
   267
        if ( 0 == newName->Des().Compare( settingsName->Des() ) )
hgs
parents:
diff changeset
   268
            {
hgs
parents:
diff changeset
   269
            // Pop settingsName & destination & newName
hgs
parents:
diff changeset
   270
            CleanupStack::PopAndDestroy( 3, &destination ); // CS:1
hgs
parents:
diff changeset
   271
            
hgs
parents:
diff changeset
   272
            RCmDestinationExt dest2 = aCmManager.DestinationL( 
hgs
parents:
diff changeset
   273
                    destinationIds[counter] );
hgs
parents:
diff changeset
   274
            
hgs
parents:
diff changeset
   275
            CleanupStack::PopAndDestroy( &destinationIds ); // CS:0
hgs
parents:
diff changeset
   276
            DBG_PRINT( "CWPDestinationNwItem::CreateDestinationL - end" );
hgs
parents:
diff changeset
   277
            return dest2;
hgs
parents:
diff changeset
   278
            }
hgs
parents:
diff changeset
   279
        // Pop settingsName & destination.
hgs
parents:
diff changeset
   280
        CleanupStack::PopAndDestroy( 2, &destination ); // CS:2
hgs
parents:
diff changeset
   281
        }
hgs
parents:
diff changeset
   282
   
hgs
parents:
diff changeset
   283
    // Create new a destination and return it.
hgs
parents:
diff changeset
   284
    RCmDestinationExt destination = aCmManager.CreateDestinationL( *newName );
hgs
parents:
diff changeset
   285
    // Pop newName & destinationIds
hgs
parents:
diff changeset
   286
    CleanupStack::PopAndDestroy( 2, &destinationIds ); // CS:0
hgs
parents:
diff changeset
   287
    DBG_PRINT( "CWPDestinationNwItem::CreateDestinationL - end" );
hgs
parents:
diff changeset
   288
    return destination;
hgs
parents:
diff changeset
   289
    }
hgs
parents:
diff changeset
   290
    
hgs
parents:
diff changeset
   291
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   292
// CWPDestinationNwItem::IapIdFromWapId
hgs
parents:
diff changeset
   293
// Returns IAP ID from WAP ID.
hgs
parents:
diff changeset
   294
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   295
//
hgs
parents:
diff changeset
   296
TUint32 CWPDestinationNwItem::IapIdFromWapIdL( TUint32 aWapId )
hgs
parents:
diff changeset
   297
    {
hgs
parents:
diff changeset
   298
    RCmManagerExt cmManager;
hgs
parents:
diff changeset
   299
    cmManager.OpenLC(); // CS:1
hgs
parents:
diff changeset
   300
    RArray<TUint32> iapIds;
hgs
parents:
diff changeset
   301
    TUint32 iapId( 0 );
hgs
parents:
diff changeset
   302
hgs
parents:
diff changeset
   303
    // First get all free IAP ID's.
hgs
parents:
diff changeset
   304
    cmManager.ConnectionMethodL( iapIds );
hgs
parents:
diff changeset
   305
    CleanupClosePushL( iapIds ); // CS:2
hgs
parents:
diff changeset
   306
hgs
parents:
diff changeset
   307
    // Then get IAP ID's from all destinations.
hgs
parents:
diff changeset
   308
    RArray<TUint32> destIds;
hgs
parents:
diff changeset
   309
    cmManager.AllDestinationsL( destIds );
hgs
parents:
diff changeset
   310
    CleanupClosePushL( destIds ); // CS:3
hgs
parents:
diff changeset
   311
    TInt destCount = destIds.Count();
hgs
parents:
diff changeset
   312
    for ( TInt destIndex = 0; destIndex < destCount; destIndex++ )
hgs
parents:
diff changeset
   313
        {
hgs
parents:
diff changeset
   314
        RCmDestinationExt dest = cmManager.DestinationL( 
hgs
parents:
diff changeset
   315
            destIds[destIndex] );
hgs
parents:
diff changeset
   316
        CleanupClosePushL( dest ); // CS:4
hgs
parents:
diff changeset
   317
        TInt cmCount = dest.ConnectionMethodCount();
hgs
parents:
diff changeset
   318
        for ( TInt cmIndex = 0; cmIndex < cmCount; cmIndex++ )
hgs
parents:
diff changeset
   319
            {
hgs
parents:
diff changeset
   320
            TUint32 apId = dest.ConnectionMethodL( 
hgs
parents:
diff changeset
   321
                cmIndex ).GetIntAttributeL( CMManager::ECmIapId );
hgs
parents:
diff changeset
   322
            iapIds.AppendL( apId );
hgs
parents:
diff changeset
   323
            }
hgs
parents:
diff changeset
   324
        CleanupStack::PopAndDestroy( &dest ); // CS:3
hgs
parents:
diff changeset
   325
        }
hgs
parents:
diff changeset
   326
    // Finally, go through all connection methods and find correct IAP ID.
hgs
parents:
diff changeset
   327
    const TInt cmCount = iapIds.Count();
hgs
parents:
diff changeset
   328
    for ( TInt counter = 0; counter < cmCount; counter++ )
hgs
parents:
diff changeset
   329
        {
hgs
parents:
diff changeset
   330
        TUint32 id = cmManager.GetConnectionMethodInfoIntL( 
hgs
parents:
diff changeset
   331
            iapIds[counter], CMManager::ECmWapId );
hgs
parents:
diff changeset
   332
        if ( id == aWapId )
hgs
parents:
diff changeset
   333
            {
hgs
parents:
diff changeset
   334
            iapId = iapIds[counter];
hgs
parents:
diff changeset
   335
            // No need to go through rest of IAPs.
hgs
parents:
diff changeset
   336
            break;
hgs
parents:
diff changeset
   337
            }
hgs
parents:
diff changeset
   338
        }
hgs
parents:
diff changeset
   339
    // PopAndDestroy destIds, iapIds, cmManager.
hgs
parents:
diff changeset
   340
    CleanupStack::PopAndDestroy( 3, &cmManager ); // CS:0
hgs
parents:
diff changeset
   341
    return iapId;
hgs
parents:
diff changeset
   342
    }
hgs
parents:
diff changeset
   343
hgs
parents:
diff changeset
   344
hgs
parents:
diff changeset
   345
// End of file.