omacpadapters/cpdestinationnwadapter/src/cwpdestinationnwadapter.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-2008 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:    Receives and stores Destination network settings.
hgs
parents:
diff changeset
    15
*
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
#include <e32base.h>
hgs
parents:
diff changeset
    22
#include <CWPAdapter.h>
hgs
parents:
diff changeset
    23
#include <CWPCharacteristic.h>
hgs
parents:
diff changeset
    24
#include <CWPParameter.h>
hgs
parents:
diff changeset
    25
#include <e32des8.h>
hgs
parents:
diff changeset
    26
#include <WPAdapterUtil.h> // Adapter utils
hgs
parents:
diff changeset
    27
#include <utf.h> // Unicode conversion
hgs
parents:
diff changeset
    28
#include <cmmanagerext.h>
hgs
parents:
diff changeset
    29
#include <cmdestinationext.h>
hgs
parents:
diff changeset
    30
#include <cmconnectionmethodext.h>
hgs
parents:
diff changeset
    31
#include <cmmanagerdef.h>
hgs
parents:
diff changeset
    32
hgs
parents:
diff changeset
    33
#include "cwpdestinationnwadapter.h"
hgs
parents:
diff changeset
    34
#include "wpdestinationnwdebug.h"
hgs
parents:
diff changeset
    35
#include <hbtextresolversymbian.h>
hgs
parents:
diff changeset
    36
hgs
parents:
diff changeset
    37
_LIT( KDestinationNwAdapterName, "WPDestinationNwAdapter");
hgs
parents:
diff changeset
    38
_LIT( KDestinationNwAppID,       "w904C" ); // OMA CP registration document.
hgs
parents:
diff changeset
    39
_LIT8( KDestinationNwAppID8,     "w904C" ); // OMA CP registration document.
hgs
parents:
diff changeset
    40
_LIT( KCWPDestinationAdapterFileName, "deviceupdates_" );	
hgs
parents:
diff changeset
    41
_LIT( KCWPDestinationAdapterFilePath, "z:/resource/qt/translations/" );
hgs
parents:
diff changeset
    42
hgs
parents:
diff changeset
    43
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    44
// CWPDestinationNwAdapter::CWPDestinationNwAdapter
hgs
parents:
diff changeset
    45
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    46
//
hgs
parents:
diff changeset
    47
CWPDestinationNwAdapter::CWPDestinationNwAdapter() : CWPAdapter()
hgs
parents:
diff changeset
    48
    {
hgs
parents:
diff changeset
    49
    }
hgs
parents:
diff changeset
    50
hgs
parents:
diff changeset
    51
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    52
// CWPDestinationNwAdapter::ConstructL
hgs
parents:
diff changeset
    53
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    54
//
hgs
parents:
diff changeset
    55
void CWPDestinationNwAdapter::ConstructL()
hgs
parents:
diff changeset
    56
    {
hgs
parents:
diff changeset
    57
    DBG_PRINT( "CWPDestinationNwAdapter::ConstructL - begin" );
hgs
parents:
diff changeset
    58
    
hgs
parents:
diff changeset
    59
    TBool result = HbTextResolverSymbian::Init(KCWPDestinationAdapterFileName, KCWPDestinationAdapterFilePath );
hgs
parents:
diff changeset
    60
    
hgs
parents:
diff changeset
    61
    _LIT(KCWPDestinationAdapter, "txt_device_update_dblist_destination_networks");
hgs
parents:
diff changeset
    62
    iDefaultTitle = HbTextResolverSymbian::LoadL(KCWPDestinationAdapter);
hgs
parents:
diff changeset
    63
    iDefaultName = HbTextResolverSymbian::LoadL(KCWPDestinationAdapter);
hgs
parents:
diff changeset
    64
    		
hgs
parents:
diff changeset
    65
    DBG_PRINT( "CWPDestinationNwAdapter::ConstructL - end" );
hgs
parents:
diff changeset
    66
    }
hgs
parents:
diff changeset
    67
hgs
parents:
diff changeset
    68
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    69
// CWPDestinationNwAdapter::NewL
hgs
parents:
diff changeset
    70
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    71
//
hgs
parents:
diff changeset
    72
CWPDestinationNwAdapter* CWPDestinationNwAdapter::NewL()
hgs
parents:
diff changeset
    73
    {
hgs
parents:
diff changeset
    74
    CWPDestinationNwAdapter* self = new (ELeave) 
hgs
parents:
diff changeset
    75
        CWPDestinationNwAdapter;
hgs
parents:
diff changeset
    76
    CleanupStack::PushL( self );
hgs
parents:
diff changeset
    77
    self->ConstructL();
hgs
parents:
diff changeset
    78
    CleanupStack::Pop( self );
hgs
parents:
diff changeset
    79
    return self;
hgs
parents:
diff changeset
    80
    }
hgs
parents:
diff changeset
    81
hgs
parents:
diff changeset
    82
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    83
// CWPDestinationNwAdapter::~CWPDestinationNwAdapter
hgs
parents:
diff changeset
    84
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    85
//
hgs
parents:
diff changeset
    86
CWPDestinationNwAdapter::~CWPDestinationNwAdapter()
hgs
parents:
diff changeset
    87
    {
hgs
parents:
diff changeset
    88
    DBG_PRINT( "CWPDestinationNwAdapter::~CWPDestinationNwAdapter - begin" );
hgs
parents:
diff changeset
    89
    delete iDefaultTitle;
hgs
parents:
diff changeset
    90
    delete iDefaultName;
hgs
parents:
diff changeset
    91
    iItems.ResetAndDestroy();
hgs
parents:
diff changeset
    92
    iItems.Close();
hgs
parents:
diff changeset
    93
    DBG_PRINT( "CWPDestinationNwAdapter::~CWPDestinationNwAdapter - end" );
hgs
parents:
diff changeset
    94
    }
hgs
parents:
diff changeset
    95
hgs
parents:
diff changeset
    96
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    97
// CWPDestinationNwAdapter::Des8ToUint32L()
hgs
parents:
diff changeset
    98
// Converts an 8 bit descriptor to TUint32.
hgs
parents:
diff changeset
    99
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   100
//
hgs
parents:
diff changeset
   101
TUint32 CWPDestinationNwAdapter::Des8ToUint32L( const TDesC8& aDes )
hgs
parents:
diff changeset
   102
    {
hgs
parents:
diff changeset
   103
    TLex8 lex( aDes );
hgs
parents:
diff changeset
   104
    TUint32 value( 0 );
hgs
parents:
diff changeset
   105
    User::LeaveIfError( lex.Val( value, EDecimal ) );
hgs
parents:
diff changeset
   106
    return value;
hgs
parents:
diff changeset
   107
    }
hgs
parents:
diff changeset
   108
hgs
parents:
diff changeset
   109
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   110
// CWPDestinationNwAdapter::ItemCount
hgs
parents:
diff changeset
   111
// From class CWPAdapter.
hgs
parents:
diff changeset
   112
// Checks the number of settings items.
hgs
parents:
diff changeset
   113
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   114
//
hgs
parents:
diff changeset
   115
TInt CWPDestinationNwAdapter::ItemCount() const
hgs
parents:
diff changeset
   116
    {
hgs
parents:
diff changeset
   117
    return iItems.Count();
hgs
parents:
diff changeset
   118
    }
hgs
parents:
diff changeset
   119
hgs
parents:
diff changeset
   120
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   121
// From class CWPAdapter.
hgs
parents:
diff changeset
   122
// CWPDestinationNwAdapter::SummaryTitle
hgs
parents:
diff changeset
   123
// Returns the summary title.
hgs
parents:
diff changeset
   124
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   125
//
hgs
parents:
diff changeset
   126
const TDesC16& CWPDestinationNwAdapter::SummaryTitle( TInt /*aIndex*/ ) const
hgs
parents:
diff changeset
   127
    {
hgs
parents:
diff changeset
   128
    return *iDefaultTitle;
hgs
parents:
diff changeset
   129
    }
hgs
parents:
diff changeset
   130
hgs
parents:
diff changeset
   131
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   132
// CWPDestinationNwAdapter::SummaryText
hgs
parents:
diff changeset
   133
// From class CWPAdapter.
hgs
parents:
diff changeset
   134
// Returns the summary text of a destination network.
hgs
parents:
diff changeset
   135
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   136
//
hgs
parents:
diff changeset
   137
const TDesC16& CWPDestinationNwAdapter::SummaryText( TInt aIndex ) const
hgs
parents:
diff changeset
   138
    {
hgs
parents:
diff changeset
   139
    if ( !iItems[aIndex]->SettingsName().Length() )
hgs
parents:
diff changeset
   140
        {
hgs
parents:
diff changeset
   141
        return *iDefaultName;
hgs
parents:
diff changeset
   142
        }
hgs
parents:
diff changeset
   143
    return iItems[aIndex]->SettingsName();
hgs
parents:
diff changeset
   144
    }
hgs
parents:
diff changeset
   145
hgs
parents:
diff changeset
   146
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   147
// CWPDestinationNwAdapter::SaveL
hgs
parents:
diff changeset
   148
// From class CWPAdapter.
hgs
parents:
diff changeset
   149
// Calls settings items saving method.
hgs
parents:
diff changeset
   150
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   151
//
hgs
parents:
diff changeset
   152
void CWPDestinationNwAdapter::SaveL( TInt aIndex )
hgs
parents:
diff changeset
   153
    {
hgs
parents:
diff changeset
   154
    __ASSERT_ALWAYS( aIndex >= 0 && aIndex < iItems.Count(),
hgs
parents:
diff changeset
   155
        User::Leave( KErrArgument ) );
hgs
parents:
diff changeset
   156
hgs
parents:
diff changeset
   157
    iItems[aIndex]->SaveL();
hgs
parents:
diff changeset
   158
    }
hgs
parents:
diff changeset
   159
hgs
parents:
diff changeset
   160
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   161
// CWPDestinationNwAdapter::CanSetAsDefault
hgs
parents:
diff changeset
   162
// From class CWPAdapter.
hgs
parents:
diff changeset
   163
// Not supported; always return EFalse.
hgs
parents:
diff changeset
   164
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   165
//
hgs
parents:
diff changeset
   166
TBool CWPDestinationNwAdapter::CanSetAsDefault( TInt /*aIndex*/ ) const
hgs
parents:
diff changeset
   167
    {
hgs
parents:
diff changeset
   168
    return EFalse;
hgs
parents:
diff changeset
   169
    }
hgs
parents:
diff changeset
   170
hgs
parents:
diff changeset
   171
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   172
// CWPDestinationNwAdapter::DetailsL
hgs
parents:
diff changeset
   173
// From class CWPAdapter.
hgs
parents:
diff changeset
   174
// Not supported.
hgs
parents:
diff changeset
   175
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   176
//
hgs
parents:
diff changeset
   177
TInt CWPDestinationNwAdapter::DetailsL( TInt /*aItem*/, 
hgs
parents:
diff changeset
   178
    MWPPairVisitor& /*aVisitor */ )
hgs
parents:
diff changeset
   179
    {
hgs
parents:
diff changeset
   180
    return KErrNotSupported;
hgs
parents:
diff changeset
   181
    }
hgs
parents:
diff changeset
   182
hgs
parents:
diff changeset
   183
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   184
// CWPDestinationNwAdapter::VisitL
hgs
parents:
diff changeset
   185
// From class CWPAdapter.
hgs
parents:
diff changeset
   186
// OMA CP characteristics are handled in this method.
hgs
parents:
diff changeset
   187
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   188
//
hgs
parents:
diff changeset
   189
void CWPDestinationNwAdapter::VisitL( 
hgs
parents:
diff changeset
   190
    CWPCharacteristic& aCharacteristic )
hgs
parents:
diff changeset
   191
    {
hgs
parents:
diff changeset
   192
    DBG_PRINT( "CWPDestinationNwAdapter::VisitL( characteristic ) - begin" );
hgs
parents:
diff changeset
   193
    switch ( aCharacteristic.Type() )
hgs
parents:
diff changeset
   194
        {
hgs
parents:
diff changeset
   195
        // This adapter only handles APPLICATION characteristic.
hgs
parents:
diff changeset
   196
        case KWPApplication:
hgs
parents:
diff changeset
   197
            {
hgs
parents:
diff changeset
   198
            iCurrentItem = CWPDestinationNwItem::NewL();
hgs
parents:
diff changeset
   199
            // Set default name for destination - replaced later if a name
hgs
parents:
diff changeset
   200
            // has been provisioned.
hgs
parents:
diff changeset
   201
            iCurrentItem->SetSettingsNameL( iDefaultName->Des() );
hgs
parents:
diff changeset
   202
            aCharacteristic.AcceptL( *this );
hgs
parents:
diff changeset
   203
hgs
parents:
diff changeset
   204
            // Settings are for Destination network - append current item to
hgs
parents:
diff changeset
   205
            // item array to be saved later.
hgs
parents:
diff changeset
   206
            if ( 0 == iAppId.Compare( KDestinationNwAppID() ) )
hgs
parents:
diff changeset
   207
                {
hgs
parents:
diff changeset
   208
                iItems.AppendL( iCurrentItem );
hgs
parents:
diff changeset
   209
                }
hgs
parents:
diff changeset
   210
            // Settings are not for Destination network.
hgs
parents:
diff changeset
   211
            else
hgs
parents:
diff changeset
   212
                {
hgs
parents:
diff changeset
   213
                delete iCurrentItem;
hgs
parents:
diff changeset
   214
                iCurrentItem = NULL;
hgs
parents:
diff changeset
   215
                }
hgs
parents:
diff changeset
   216
            break;
hgs
parents:
diff changeset
   217
            }
hgs
parents:
diff changeset
   218
        // All other than APPLICATION are ignored.
hgs
parents:
diff changeset
   219
        default:
hgs
parents:
diff changeset
   220
            break;
hgs
parents:
diff changeset
   221
        }
hgs
parents:
diff changeset
   222
    DBG_PRINT( "CWPDestinationNwAdapter::VisitL( characteristic ) - end" );
hgs
parents:
diff changeset
   223
    }
hgs
parents:
diff changeset
   224
hgs
parents:
diff changeset
   225
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   226
// CWPDestinationNwAdapter::VisitL
hgs
parents:
diff changeset
   227
// From class CWPAdapter.
hgs
parents:
diff changeset
   228
// Destination network parameters are handled in this method.
hgs
parents:
diff changeset
   229
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   230
//
hgs
parents:
diff changeset
   231
void CWPDestinationNwAdapter::VisitL( CWPParameter& aParameter )
hgs
parents:
diff changeset
   232
    {
hgs
parents:
diff changeset
   233
    DBG_PRINT( "CWPDestinationNwAdapter::VisitL( parameter ) - begin" );
hgs
parents:
diff changeset
   234
    // tmpValue holds the value converted from Unicode to UTF8.
hgs
parents:
diff changeset
   235
    HBufC8* tmpValue = HBufC8::NewLC( aParameter.Value().Length() ); // CS:1
hgs
parents:
diff changeset
   236
    TPtr8 ptrTmpValue( tmpValue->Des() );
hgs
parents:
diff changeset
   237
    CnvUtfConverter::ConvertFromUnicodeToUtf8( ptrTmpValue,
hgs
parents:
diff changeset
   238
        aParameter.Value() );
hgs
parents:
diff changeset
   239
hgs
parents:
diff changeset
   240
    switch ( aParameter.ID() )
hgs
parents:
diff changeset
   241
        {
hgs
parents:
diff changeset
   242
        // APPLICATION/APPID
hgs
parents:
diff changeset
   243
        case EWPParameterAppID:
hgs
parents:
diff changeset
   244
            {
hgs
parents:
diff changeset
   245
            iAppId.Set( aParameter.Value() );
hgs
parents:
diff changeset
   246
            break;
hgs
parents:
diff changeset
   247
            }
hgs
parents:
diff changeset
   248
hgs
parents:
diff changeset
   249
        // APPLICATION/NAME
hgs
parents:
diff changeset
   250
        case EWPParameterName:
hgs
parents:
diff changeset
   251
            {
hgs
parents:
diff changeset
   252
            if ( iCurrentItem )
hgs
parents:
diff changeset
   253
                {
hgs
parents:
diff changeset
   254
                iCurrentItem->SetSettingsNameL( aParameter.Value() );
hgs
parents:
diff changeset
   255
                }
hgs
parents:
diff changeset
   256
            break;
hgs
parents:
diff changeset
   257
            }
hgs
parents:
diff changeset
   258
hgs
parents:
diff changeset
   259
        // APPLICATION/APPREF
hgs
parents:
diff changeset
   260
        case EWPParameterAppRef:
hgs
parents:
diff changeset
   261
            {
hgs
parents:
diff changeset
   262
            if ( iCurrentItem )
hgs
parents:
diff changeset
   263
                {
hgs
parents:
diff changeset
   264
                iCurrentItem->SetAppRefL( tmpValue->Des() );
hgs
parents:
diff changeset
   265
                }
hgs
parents:
diff changeset
   266
            break;
hgs
parents:
diff changeset
   267
            }
hgs
parents:
diff changeset
   268
hgs
parents:
diff changeset
   269
        // Other settings are ignored.
hgs
parents:
diff changeset
   270
        default:
hgs
parents:
diff changeset
   271
            {
hgs
parents:
diff changeset
   272
            break;
hgs
parents:
diff changeset
   273
            }
hgs
parents:
diff changeset
   274
        }
hgs
parents:
diff changeset
   275
    CleanupStack::PopAndDestroy( tmpValue ); // CS:0
hgs
parents:
diff changeset
   276
    DBG_PRINT( "CWPDestinationNwAdapter::VisitL( parameter ) - end" );
hgs
parents:
diff changeset
   277
    }
hgs
parents:
diff changeset
   278
hgs
parents:
diff changeset
   279
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   280
// CWPDestinationNwAdapter::VisitLinkL
hgs
parents:
diff changeset
   281
//
hgs
parents:
diff changeset
   282
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   283
//
hgs
parents:
diff changeset
   284
void CWPDestinationNwAdapter::VisitLinkL( CWPCharacteristic& aLink )
hgs
parents:
diff changeset
   285
    {
hgs
parents:
diff changeset
   286
    if ( KWPNapDef == aLink.Type() && iCurrentItem )
hgs
parents:
diff changeset
   287
        {
hgs
parents:
diff changeset
   288
        iCurrentItem->AddNapDefL( &aLink );
hgs
parents:
diff changeset
   289
        }
hgs
parents:
diff changeset
   290
    }
hgs
parents:
diff changeset
   291
hgs
parents:
diff changeset
   292
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   293
// CWPDestinationNwAdapter::GetSavingInfoL
hgs
parents:
diff changeset
   294
// APPID is set to [0], APPREF to [1] and saving info (storage ID) to [2].
hgs
parents:
diff changeset
   295
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   296
//
hgs
parents:
diff changeset
   297
void CWPDestinationNwAdapter::GetSavingInfoL( TInt aIndex, 
hgs
parents:
diff changeset
   298
    RPointerArray<HBufC8>& aSavingInfo )
hgs
parents:
diff changeset
   299
    {
hgs
parents:
diff changeset
   300
    __ASSERT_ALWAYS( aIndex >= 0 && aIndex < iItems.Count(),
hgs
parents:
diff changeset
   301
        User::Leave( KErrArgument ) );
hgs
parents:
diff changeset
   302
hgs
parents:
diff changeset
   303
    aSavingInfo.AppendL( KDestinationNwAppID8().AllocL() );
hgs
parents:
diff changeset
   304
    aSavingInfo.AppendL( iItems[aIndex]->AppRef().AllocL() );
hgs
parents:
diff changeset
   305
    aSavingInfo.AppendL( iItems[aIndex]->SaveData().AllocL() );
hgs
parents:
diff changeset
   306
    }
hgs
parents:
diff changeset
   307
hgs
parents:
diff changeset
   308
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   309
// CWPDestinationNwAdapter::ContextExtension
hgs
parents:
diff changeset
   310
// From class MWPContextExtension.
hgs
parents:
diff changeset
   311
// Returns a pointer to context extension.
hgs
parents:
diff changeset
   312
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   313
//
hgs
parents:
diff changeset
   314
TInt CWPDestinationNwAdapter::ContextExtension( 
hgs
parents:
diff changeset
   315
    MWPContextExtension*& aExtension )
hgs
parents:
diff changeset
   316
    {
hgs
parents:
diff changeset
   317
    aExtension = this;
hgs
parents:
diff changeset
   318
    return KErrNone;
hgs
parents:
diff changeset
   319
    }
hgs
parents:
diff changeset
   320
hgs
parents:
diff changeset
   321
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   322
// CWPDestinationNwAdapter::SaveDataL
hgs
parents:
diff changeset
   323
// From class MWPContextExtension.
hgs
parents:
diff changeset
   324
// Returns ID of saved data.
hgs
parents:
diff changeset
   325
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   326
//
hgs
parents:
diff changeset
   327
const TDesC8& CWPDestinationNwAdapter::SaveDataL( TInt aIndex ) const
hgs
parents:
diff changeset
   328
    {
hgs
parents:
diff changeset
   329
    __ASSERT_ALWAYS( aIndex >= 0 && aIndex < iItems.Count(),
hgs
parents:
diff changeset
   330
        User::Leave( KErrArgument ) );
hgs
parents:
diff changeset
   331
hgs
parents:
diff changeset
   332
    return iItems[aIndex]->SaveData();
hgs
parents:
diff changeset
   333
    }
hgs
parents:
diff changeset
   334
hgs
parents:
diff changeset
   335
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   336
// CWPDestinationNwAdapter::DeleteL
hgs
parents:
diff changeset
   337
// From class MWPContextExtension.
hgs
parents:
diff changeset
   338
// Deletes a Destination network.
hgs
parents:
diff changeset
   339
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   340
//
hgs
parents:
diff changeset
   341
void CWPDestinationNwAdapter::DeleteL( const TDesC8& aSaveData )
hgs
parents:
diff changeset
   342
    {
hgs
parents:
diff changeset
   343
    DBG_PRINT( "CWPDestinationNwAdapter::DeleteL - begin" );
hgs
parents:
diff changeset
   344
    RCmManagerExt cmManager;
hgs
parents:
diff changeset
   345
    cmManager.OpenL();
hgs
parents:
diff changeset
   346
    CleanupClosePushL( cmManager ); // CS:1
hgs
parents:
diff changeset
   347
    TUint32 destinationId = Des8ToUint32L( aSaveData );
hgs
parents:
diff changeset
   348
    RCmDestinationExt destination = cmManager.DestinationL( destinationId );
hgs
parents:
diff changeset
   349
    CleanupClosePushL( destination ); // CS:2
hgs
parents:
diff changeset
   350
    const TInt cmCount = destination.ConnectionMethodCount();
hgs
parents:
diff changeset
   351
    // First remove IAPs from destination network because this adapter must
hgs
parents:
diff changeset
   352
    // not delete IAPs.
hgs
parents:
diff changeset
   353
    for ( TInt counter = 0; counter < cmCount; counter++ )
hgs
parents:
diff changeset
   354
        {
hgs
parents:
diff changeset
   355
        destination.RemoveConnectionMethodL( 
hgs
parents:
diff changeset
   356
            destination.ConnectionMethodL( 0 ) );
hgs
parents:
diff changeset
   357
        destination.UpdateL();
hgs
parents:
diff changeset
   358
        }
hgs
parents:
diff changeset
   359
    CleanupStack::Pop( &destination ); // CS:1
hgs
parents:
diff changeset
   360
    destination.DeleteLD();
hgs
parents:
diff changeset
   361
    CleanupStack::PopAndDestroy( &cmManager ); // CS:0
hgs
parents:
diff changeset
   362
    DBG_PRINT( "CWPDestinationNwAdapter::DeleteL - end" );
hgs
parents:
diff changeset
   363
    }
hgs
parents:
diff changeset
   364
hgs
parents:
diff changeset
   365
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   366
// CWPDestinationNwAdapter::Uid
hgs
parents:
diff changeset
   367
// From class MWPContextExtension.
hgs
parents:
diff changeset
   368
// Returns the UID of this adapter.
hgs
parents:
diff changeset
   369
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   370
//
hgs
parents:
diff changeset
   371
TUint32 CWPDestinationNwAdapter::Uid() const
hgs
parents:
diff changeset
   372
    {
hgs
parents:
diff changeset
   373
    return iDtor_ID_Key.iUid;
hgs
parents:
diff changeset
   374
    }
hgs
parents:
diff changeset
   375
// End of file.