omadmadapters/syncmldm/src/NSmlDmSettingsAdapter.cpp
author hgs
Tue, 13 Jul 2010 03:48:30 +0530
changeset 45 0f9fc722d255
parent 44 deviceupdatesui/omadmadapters/syncmldm/src/NSmlDmSettingsAdapter.cpp@137912d1a556
permissions -rw-r--r--
201021_01
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
44
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2005 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:    DM-settings adapter
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 FILES
hgs
parents:
diff changeset
    22
#include "NSmlDMSettingsAdapter.h"
hgs
parents:
diff changeset
    23
#include "nsmldebug.h"
hgs
parents:
diff changeset
    24
#include "nsmlconstants.h"
hgs
parents:
diff changeset
    25
#include "nsmldmconstants.h"
hgs
parents:
diff changeset
    26
#include "nsmldmimpluids.h"
hgs
parents:
diff changeset
    27
#include "nsmldmiapmatcher.h"
hgs
parents:
diff changeset
    28
#include "nsmldmauthinfo.h"
hgs
parents:
diff changeset
    29
#include <featmgr.h>
hgs
parents:
diff changeset
    30
#include <implementationproxy.h>
hgs
parents:
diff changeset
    31
#include <SyncMLClientDM.h>
hgs
parents:
diff changeset
    32
#include <SyncMLTransportProperties.h>
hgs
parents:
diff changeset
    33
hgs
parents:
diff changeset
    34
hgs
parents:
diff changeset
    35
#ifndef __WINS__
hgs
parents:
diff changeset
    36
// This lowers the unnecessary compiler warning (armv5) to remark.
hgs
parents:
diff changeset
    37
// "Warning:  #174-D: expression has no effect..." is caused by 
hgs
parents:
diff changeset
    38
// DBG_ARGS8 macro in no-debug builds.
hgs
parents:
diff changeset
    39
#pragma diag_remark 174
hgs
parents:
diff changeset
    40
#endif
hgs
parents:
diff changeset
    41
hgs
parents:
diff changeset
    42
hgs
parents:
diff changeset
    43
// ============================ MEMBER FUNCTIONS ===============================
hgs
parents:
diff changeset
    44
hgs
parents:
diff changeset
    45
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    46
//  CNSmlDMSettingsAdapter::NewL
hgs
parents:
diff changeset
    47
//  Two-phased constructor.
hgs
parents:
diff changeset
    48
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    49
CNSmlDMSettingsAdapter* CNSmlDMSettingsAdapter::NewL( MSmlDmCallback* aDmCallback )
hgs
parents:
diff changeset
    50
	{
hgs
parents:
diff changeset
    51
	_DBG_FILE("CNSmlDMSettingsAdapter::NewL(): begin");
hgs
parents:
diff changeset
    52
hgs
parents:
diff changeset
    53
	CNSmlDMSettingsAdapter* self = NewLC( aDmCallback );
hgs
parents:
diff changeset
    54
	CleanupStack::Pop();
hgs
parents:
diff changeset
    55
hgs
parents:
diff changeset
    56
	_DBG_FILE("CNSmlDMSettingsAdapter::NewL(): end");
hgs
parents:
diff changeset
    57
	return self;
hgs
parents:
diff changeset
    58
	}
hgs
parents:
diff changeset
    59
hgs
parents:
diff changeset
    60
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    61
//  CNSmlDMSettingsAdapter::NewLC( )
hgs
parents:
diff changeset
    62
//  Loads the CNSmlDMSettingsAdapter class and pushes it to clenupstack.
hgs
parents:
diff changeset
    63
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    64
CNSmlDMSettingsAdapter* CNSmlDMSettingsAdapter::NewLC( MSmlDmCallback* aDmCallback )
hgs
parents:
diff changeset
    65
	{
hgs
parents:
diff changeset
    66
	_DBG_FILE( "CNSmlDMSettingsAdapter::NewLC(): begin" );
hgs
parents:
diff changeset
    67
	CNSmlDMSettingsAdapter* self = new ( ELeave ) CNSmlDMSettingsAdapter( aDmCallback );
hgs
parents:
diff changeset
    68
	CleanupStack::PushL( self );
hgs
parents:
diff changeset
    69
    self->iCallBack = aDmCallback;
hgs
parents:
diff changeset
    70
	self->ConstructL();
hgs
parents:
diff changeset
    71
	self->iLeafType = EDMUnset;
hgs
parents:
diff changeset
    72
hgs
parents:
diff changeset
    73
	_DBG_FILE( "CNSmlDMSettingsAdapter::NewLC(): end" );
hgs
parents:
diff changeset
    74
	return self;
hgs
parents:
diff changeset
    75
	}
hgs
parents:
diff changeset
    76
hgs
parents:
diff changeset
    77
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    78
//  CNSmlDMSettingsAdapter::CNSmlDMSettingsAdapter()
hgs
parents:
diff changeset
    79
//  Default constructor.
hgs
parents:
diff changeset
    80
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    81
CNSmlDMSettingsAdapter::CNSmlDMSettingsAdapter( TAny* aEcomArguments) : 
hgs
parents:
diff changeset
    82
                                                CSmlDmAdapter(aEcomArguments )
hgs
parents:
diff changeset
    83
	{
hgs
parents:
diff changeset
    84
	_DBG_FILE( "CNSmlDMSettingsAdapter::CNSmlDMSettingsAdapter(): begin" );
hgs
parents:
diff changeset
    85
	_DBG_FILE( "CNSmlDMSettingsAdapter::CNSmlDMSettingsAdapter(): end" );
hgs
parents:
diff changeset
    86
	}
hgs
parents:
diff changeset
    87
hgs
parents:
diff changeset
    88
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    89
//  CNSmlDMSettingsAdapter::~CNSmlDMSettingsAdapter()
hgs
parents:
diff changeset
    90
//  Destructor.
hgs
parents:
diff changeset
    91
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    92
CNSmlDMSettingsAdapter::~CNSmlDMSettingsAdapter()
hgs
parents:
diff changeset
    93
	{
hgs
parents:
diff changeset
    94
	_DBG_FILE( "CNSmlDMSettingsAdapter::~CNSmlDMSettingsAdapter(): begin" );
hgs
parents:
diff changeset
    95
hgs
parents:
diff changeset
    96
    delete iField;
hgs
parents:
diff changeset
    97
hgs
parents:
diff changeset
    98
    // Client API Session & Profile
hgs
parents:
diff changeset
    99
    iProfile.Close();
hgs
parents:
diff changeset
   100
	iSyncSession.Close();
hgs
parents:
diff changeset
   101
    iSyncSessionOpen = EFalse;
hgs
parents:
diff changeset
   102
    
hgs
parents:
diff changeset
   103
	// In Case the Buffer isnt cleared
hgs
parents:
diff changeset
   104
	if ( iBuffer)
hgs
parents:
diff changeset
   105
		{
hgs
parents:
diff changeset
   106
		for (TInt val =0; val<iBuffer->Count ();val++)
hgs
parents:
diff changeset
   107
			{
hgs
parents:
diff changeset
   108
			delete iBuffer->At(val).iMappingName;
hgs
parents:
diff changeset
   109
hgs
parents:
diff changeset
   110
			ClearBuffer ( iBuffer->At(val).iLeafBuf);
hgs
parents:
diff changeset
   111
			delete iBuffer->At(val).iLeafBuf;
hgs
parents:
diff changeset
   112
			}
hgs
parents:
diff changeset
   113
hgs
parents:
diff changeset
   114
		iBuffer->Reset ();
hgs
parents:
diff changeset
   115
		delete iBuffer;
hgs
parents:
diff changeset
   116
		}
hgs
parents:
diff changeset
   117
    delete iPortNbr;
hgs
parents:
diff changeset
   118
    iPortBuffer.Reset();
hgs
parents:
diff changeset
   119
    iPortBuffer.Close();    
hgs
parents:
diff changeset
   120
    iPrivateApi.Close();
hgs
parents:
diff changeset
   121
    
hgs
parents:
diff changeset
   122
    iCallBack = 0; 
hgs
parents:
diff changeset
   123
           
hgs
parents:
diff changeset
   124
	_DBG_FILE( "CNSmlDMSettingsAdapter::~CNSmlDMSettingsAdapter(): end" );
hgs
parents:
diff changeset
   125
	}
hgs
parents:
diff changeset
   126
hgs
parents:
diff changeset
   127
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   128
//		CNSmlDMSettingsAdapter::ConstructL()
hgs
parents:
diff changeset
   129
//		Second phase constructor.
hgs
parents:
diff changeset
   130
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   131
void CNSmlDMSettingsAdapter::ConstructL()
hgs
parents:
diff changeset
   132
	{
hgs
parents:
diff changeset
   133
	iField = HBufC8::NewL( KNSmlMaxURLLength );
hgs
parents:
diff changeset
   134
    iSyncSessionOpen = EFalse;
hgs
parents:
diff changeset
   135
	// variables used for Buffering
hgs
parents:
diff changeset
   136
	iBufOn = EFalse;
hgs
parents:
diff changeset
   137
	iComplete = EFalse;
hgs
parents:
diff changeset
   138
	iExecutionIndex = -1;
hgs
parents:
diff changeset
   139
	// initialising iBuffer
hgs
parents:
diff changeset
   140
	iBuffer = new (ELeave) CArrayFixFlat <TNSmlDMBufferElement> (KNSmlDMGranularity);
hgs
parents:
diff changeset
   141
    }
hgs
parents:
diff changeset
   142
hgs
parents:
diff changeset
   143
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   144
//  CNSmlDMSettingsAdapter::DDFVersionL()
hgs
parents:
diff changeset
   145
//  Returns the DDF version number.
hgs
parents:
diff changeset
   146
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   147
void CNSmlDMSettingsAdapter::DDFVersionL( CBufBase& aVersion )
hgs
parents:
diff changeset
   148
	{
hgs
parents:
diff changeset
   149
	_DBG_FILE(
hgs
parents:
diff changeset
   150
            "CNSmlDMSettingsAdapter::DDFVersionL(CBufBase& aDDFVersion): begin" );
hgs
parents:
diff changeset
   151
	aVersion.InsertL( 0, KVersion );
hgs
parents:
diff changeset
   152
	_DBG_FILE(
hgs
parents:
diff changeset
   153
            "CNSmlDMSettingsAdapter::DDFVersionL(CBufBase& aDDFVersion): end" );
hgs
parents:
diff changeset
   154
	}
hgs
parents:
diff changeset
   155
hgs
parents:
diff changeset
   156
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   157
//  CNSmlDMSettingsAdapter::DDFStructureL()
hgs
parents:
diff changeset
   158
//  Fills the DDF structure of the adapter.
hgs
parents:
diff changeset
   159
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   160
void CNSmlDMSettingsAdapter::DDFStructureL( MSmlDmDDFObject& aDDF )
hgs
parents:
diff changeset
   161
	{
hgs
parents:
diff changeset
   162
	_DBG_FILE( "CNSmlDMSettingsAdapter::DDFStructureL(): begin" );
hgs
parents:
diff changeset
   163
      
hgs
parents:
diff changeset
   164
	MSmlDmDDFObject* ddfRoot = &aDDF;
hgs
parents:
diff changeset
   165
	MSmlDmDDFObject& ddf = ddfRoot->AddChildObjectL( KSyncMLText );
hgs
parents:
diff changeset
   166
hgs
parents:
diff changeset
   167
	TSmlDmAccessTypes *aclTypes = new ( ELeave ) TSmlDmAccessTypes();
hgs
parents:
diff changeset
   168
	CleanupStack::PushL( aclTypes );
hgs
parents:
diff changeset
   169
    
hgs
parents:
diff changeset
   170
    // Set Get as acceptable operations
hgs
parents:
diff changeset
   171
    aclTypes->SetGet();
hgs
parents:
diff changeset
   172
	
hgs
parents:
diff changeset
   173
	ddf.SetDFTitleL( KNSmlDMadapterTitle );
hgs
parents:
diff changeset
   174
    FillNodeInfoL( ddf, *aclTypes, MSmlDmDDFObject::EOne, 
hgs
parents:
diff changeset
   175
                    MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode, 
hgs
parents:
diff changeset
   176
                    KNSmlDMadapterDesc, KNullDesC8, KNullDesC8 );
hgs
parents:
diff changeset
   177
hgs
parents:
diff changeset
   178
hgs
parents:
diff changeset
   179
	MSmlDmDDFObject& nDmDDF = ddf.AddChildObjectL( KNSmlDefDMAcc );
hgs
parents:
diff changeset
   180
    FillNodeInfoL( nDmDDF, *aclTypes, MSmlDmDDFObject::EOne, 
hgs
parents:
diff changeset
   181
                    MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode, 
hgs
parents:
diff changeset
   182
                    KNullDesC8, KNullDesC8, KNullDesC8 );
hgs
parents:
diff changeset
   183
    
hgs
parents:
diff changeset
   184
	aclTypes->SetAdd();
hgs
parents:
diff changeset
   185
	// Set rest acceptable operations for data itself
hgs
parents:
diff changeset
   186
	aclTypes->SetReplace();
hgs
parents:
diff changeset
   187
	aclTypes->SetDelete();
hgs
parents:
diff changeset
   188
hgs
parents:
diff changeset
   189
	TSmlDmAccessTypes aclTypesNoGet;
hgs
parents:
diff changeset
   190
	aclTypesNoGet.SetReplace();
hgs
parents:
diff changeset
   191
	aclTypesNoGet.SetAdd();
hgs
parents:
diff changeset
   192
	aclTypesNoGet.SetDelete();
hgs
parents:
diff changeset
   193
hgs
parents:
diff changeset
   194
	TSmlDmAccessTypes aclTypesAR;
hgs
parents:
diff changeset
   195
	aclTypesAR.SetReplace();
hgs
parents:
diff changeset
   196
	aclTypesAR.SetAdd();
hgs
parents:
diff changeset
   197
hgs
parents:
diff changeset
   198
    TSmlDmAccessTypes aclTypesARG;
hgs
parents:
diff changeset
   199
	aclTypesARG.SetReplace();
hgs
parents:
diff changeset
   200
	aclTypesARG.SetAdd();
hgs
parents:
diff changeset
   201
    aclTypesARG.SetGet();
hgs
parents:
diff changeset
   202
    
hgs
parents:
diff changeset
   203
    TSmlDmAccessTypes aclTypesAG;
hgs
parents:
diff changeset
   204
	aclTypesAG.SetGet();
hgs
parents:
diff changeset
   205
	aclTypesAG.SetAdd();
hgs
parents:
diff changeset
   206
hgs
parents:
diff changeset
   207
	MSmlDmDDFObject& nProDDF = nDmDDF.AddChildObjectGroupL();
hgs
parents:
diff changeset
   208
    FillNodeInfoL( nProDDF, *aclTypes, MSmlDmDDFObject::EZeroOrMore, 
hgs
parents:
diff changeset
   209
                    MSmlDmDDFObject::EDynamic, MSmlDmDDFObject::ENode, 
hgs
parents:
diff changeset
   210
                    KNullDesC8, KNullDesC8, KMimeType );
hgs
parents:
diff changeset
   211
hgs
parents:
diff changeset
   212
	MSmlDmDDFObject& nAddrDDF = nProDDF.AddChildObjectL( KNSmlDdfAddr );			// Addr
hgs
parents:
diff changeset
   213
    FillNodeInfoL( nAddrDDF, *aclTypes, MSmlDmDDFObject::EOne, 
hgs
parents:
diff changeset
   214
                    MSmlDmDDFObject::EDynamic, MSmlDmDDFObject::EChr, 
hgs
parents:
diff changeset
   215
                    KNSmlDdfAddrDescription, KNullDesC8, KMimeType );
hgs
parents:
diff changeset
   216
hgs
parents:
diff changeset
   217
	MSmlDmDDFObject& nAddrTypeDDF = nProDDF.AddChildObjectL( KNSmlDdfAddrType );	// AddrType
hgs
parents:
diff changeset
   218
    FillNodeInfoL( nAddrTypeDDF, *aclTypes, MSmlDmDDFObject::EOne, 
hgs
parents:
diff changeset
   219
                    MSmlDmDDFObject::EDynamic, MSmlDmDDFObject::EChr, 
hgs
parents:
diff changeset
   220
                    KNSmlDdfAddrTypeDescription, KNullDesC8, KMimeType );
hgs
parents:
diff changeset
   221
hgs
parents:
diff changeset
   222
	MSmlDmDDFObject& nPortNbrDDF = nProDDF.AddChildObjectL( KNSmlDdfPortNbr );	// PortNbr
hgs
parents:
diff changeset
   223
    FillNodeInfoL( nPortNbrDDF, *aclTypes, MSmlDmDDFObject::EZeroOrOne, 
hgs
parents:
diff changeset
   224
                    MSmlDmDDFObject::EDynamic, MSmlDmDDFObject::EInt, 
hgs
parents:
diff changeset
   225
                    KNSmlDdfPortNbrDescription, KNullDesC8, KMimeType );
hgs
parents:
diff changeset
   226
hgs
parents:
diff changeset
   227
	MSmlDmDDFObject& nAuthSchemeDDF = nProDDF.AddChildObjectL( KNSmlDdfAuthScheme );	// AuthPref
hgs
parents:
diff changeset
   228
    FillNodeInfoL( nAuthSchemeDDF, *aclTypes, MSmlDmDDFObject::EOne, 
hgs
parents:
diff changeset
   229
                    MSmlDmDDFObject::EDynamic, MSmlDmDDFObject::EChr, 
hgs
parents:
diff changeset
   230
                    KNSmlDdfAuthSchemeDescription, KNullDesC8, KMimeType );
hgs
parents:
diff changeset
   231
hgs
parents:
diff changeset
   232
	MSmlDmDDFObject& nServerIdDDF = nProDDF.AddChildObjectL( KNSmlDdfServerId );	// ServerId
hgs
parents:
diff changeset
   233
    FillNodeInfoL( nServerIdDDF, aclTypesAG, MSmlDmDDFObject::EOne, 
hgs
parents:
diff changeset
   234
                    MSmlDmDDFObject::EDynamic, MSmlDmDDFObject::EChr, 
hgs
parents:
diff changeset
   235
                    KNSmlDdfServerIdDescription, KNullDesC8, KMimeType );
hgs
parents:
diff changeset
   236
hgs
parents:
diff changeset
   237
	MSmlDmDDFObject& nServerPWDDF = nProDDF.AddChildObjectL( KNSmlDdfServerPW );	// ServerPW
hgs
parents:
diff changeset
   238
    FillNodeInfoL( nServerPWDDF, aclTypesNoGet, MSmlDmDDFObject::EOne, 
hgs
parents:
diff changeset
   239
                    MSmlDmDDFObject::EDynamic, MSmlDmDDFObject::EChr, 
hgs
parents:
diff changeset
   240
                    KNSmlDdfServerPWDescription, KNullDesC8, KMimeType );
hgs
parents:
diff changeset
   241
hgs
parents:
diff changeset
   242
	MSmlDmDDFObject& nServerNonceDDF = nProDDF.AddChildObjectL( KNSmlDdfServerNonce );// ServerNonce
hgs
parents:
diff changeset
   243
    FillNodeInfoL( nServerNonceDDF, aclTypesNoGet, MSmlDmDDFObject::EOne, 
hgs
parents:
diff changeset
   244
                    MSmlDmDDFObject::EDynamic, MSmlDmDDFObject::EChr, 
hgs
parents:
diff changeset
   245
                    KNSmlDdfServerNonceDescription, KNullDesC8, KMimeType );
hgs
parents:
diff changeset
   246
hgs
parents:
diff changeset
   247
	MSmlDmDDFObject& nClientUserNameDDF = nProDDF.AddChildObjectL( KNSmlDdfClientUserName ); // ClientUserName
hgs
parents:
diff changeset
   248
    FillNodeInfoL( nClientUserNameDDF, *aclTypes, MSmlDmDDFObject::EOne, 
hgs
parents:
diff changeset
   249
                    MSmlDmDDFObject::EDynamic, MSmlDmDDFObject::EChr, 
hgs
parents:
diff changeset
   250
                    KNSmlDdfClientUserNameDescription, KNullDesC8, KMimeType );
hgs
parents:
diff changeset
   251
hgs
parents:
diff changeset
   252
	MSmlDmDDFObject& nClientPWDDF = nProDDF.AddChildObjectL( KNSmlDdfClientPW );	// ClientPW
hgs
parents:
diff changeset
   253
    FillNodeInfoL( nClientPWDDF, aclTypesNoGet, MSmlDmDDFObject::EOne, 
hgs
parents:
diff changeset
   254
                    MSmlDmDDFObject::EDynamic, MSmlDmDDFObject::EChr, 
hgs
parents:
diff changeset
   255
                    KNSmlDdfClientPWDescription, KNullDesC8, KMimeType );
hgs
parents:
diff changeset
   256
hgs
parents:
diff changeset
   257
	MSmlDmDDFObject& nClientNonceDDF = nProDDF.AddChildObjectL( KNSmlDdfClientNonce );	// ClientNonce
hgs
parents:
diff changeset
   258
    FillNodeInfoL( nClientNonceDDF, aclTypesNoGet, MSmlDmDDFObject::EOne, 
hgs
parents:
diff changeset
   259
                    MSmlDmDDFObject::EDynamic, MSmlDmDDFObject::EChr, 
hgs
parents:
diff changeset
   260
                    KNSmlDdfClientNonceDescription, KNullDesC8, KMimeType );
hgs
parents:
diff changeset
   261
hgs
parents:
diff changeset
   262
	MSmlDmDDFObject& nNameDDF = nProDDF.AddChildObjectL( KNSmlDdfName );	// Name
hgs
parents:
diff changeset
   263
    FillNodeInfoL( nNameDDF, *aclTypes, MSmlDmDDFObject::EZeroOrOne, 
hgs
parents:
diff changeset
   264
                    MSmlDmDDFObject::EDynamic, MSmlDmDDFObject::EChr, 
hgs
parents:
diff changeset
   265
                    KNSmlDdfNameDescription, KNullDesC8, KMimeType );
hgs
parents:
diff changeset
   266
hgs
parents:
diff changeset
   267
	MSmlDmDDFObject& nConRefDDF = nProDDF.AddChildObjectL( KNSmlDdfConRef );	// ConRef
hgs
parents:
diff changeset
   268
    FillNodeInfoL( nConRefDDF, aclTypesARG, MSmlDmDDFObject::EOne, 
hgs
parents:
diff changeset
   269
                    MSmlDmDDFObject::EDynamic, MSmlDmDDFObject::EChr, 
hgs
parents:
diff changeset
   270
                    KNSmlDdfConRefDescription, KNullDesC8, KMimeType );
hgs
parents:
diff changeset
   271
hgs
parents:
diff changeset
   272
	CleanupStack::PopAndDestroy(); //aclTypes
hgs
parents:
diff changeset
   273
	
hgs
parents:
diff changeset
   274
	_DBG_FILE("CNSmlDMSettingsAdapter::DDFStructureL(): end");
hgs
parents:
diff changeset
   275
	}
hgs
parents:
diff changeset
   276
hgs
parents:
diff changeset
   277
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   278
//  CNSmlDMSettingsAdapter::UpdateLeafObjectL
hgs
parents:
diff changeset
   279
//  Updates profile leaf object data based on URI.
hgs
parents:
diff changeset
   280
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   281
void CNSmlDMSettingsAdapter::UpdateLeafObjectL( const TDesC8& aURI,
hgs
parents:
diff changeset
   282
                                                const TDesC8& aLUID, 
hgs
parents:
diff changeset
   283
                                                const TDesC8& aObject, 
hgs
parents:
diff changeset
   284
                                                const TDesC8& /*aType*/, 
hgs
parents:
diff changeset
   285
                                                const TInt aStatusRef )
hgs
parents:
diff changeset
   286
	{
hgs
parents:
diff changeset
   287
	_DBG_FILE("CNSmlDMSettingsAdapter::UpdateLeafObjectL(): begin");
hgs
parents:
diff changeset
   288
	TInt index = -1;
hgs
parents:
diff changeset
   289
	if ( !iBufOn)
hgs
parents:
diff changeset
   290
		{
hgs
parents:
diff changeset
   291
		for (TInt val = 0; val<iBuffer->Count (); val++)
hgs
parents:
diff changeset
   292
			{
hgs
parents:
diff changeset
   293
			TPtrC8 firstUri = ParentURI (aURI);
hgs
parents:
diff changeset
   294
			if ( iBuffer->At(val).iMappingName->Compare (firstUri)== 0)
hgs
parents:
diff changeset
   295
				{
hgs
parents:
diff changeset
   296
				index = iExecutionIndex = val;
hgs
parents:
diff changeset
   297
				break;
hgs
parents:
diff changeset
   298
				}
hgs
parents:
diff changeset
   299
			}
hgs
parents:
diff changeset
   300
		}
hgs
parents:
diff changeset
   301
	if ( index >= 0)
hgs
parents:
diff changeset
   302
		AddLeafBufferL (aURI, aObject, aStatusRef);
hgs
parents:
diff changeset
   303
	else
hgs
parents:
diff changeset
   304
		{
hgs
parents:
diff changeset
   305
	if( aLUID.Length() == 0 )
hgs
parents:
diff changeset
   306
		{
hgs
parents:
diff changeset
   307
		_DBG_FILE( "CNSmlDMSettingsAdapter::UpdateLeafObjectL( ): ENotFound end" );
hgs
parents:
diff changeset
   308
		iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound );
hgs
parents:
diff changeset
   309
		return;
hgs
parents:
diff changeset
   310
		}
hgs
parents:
diff changeset
   311
	TInt parentLUID = GetIntObject( aLUID ); 
hgs
parents:
diff changeset
   312
	if( parentLUID != iParentLUID )
hgs
parents:
diff changeset
   313
		{
hgs
parents:
diff changeset
   314
		if( FindProfileIdL( parentLUID ) != EFalse )
hgs
parents:
diff changeset
   315
			{
hgs
parents:
diff changeset
   316
			iParentLUID = parentLUID;
hgs
parents:
diff changeset
   317
			}
hgs
parents:
diff changeset
   318
		else
hgs
parents:
diff changeset
   319
			{
hgs
parents:
diff changeset
   320
			iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound );
hgs
parents:
diff changeset
   321
			return;
hgs
parents:
diff changeset
   322
			}
hgs
parents:
diff changeset
   323
		}
hgs
parents:
diff changeset
   324
	SetField( aURI );
hgs
parents:
diff changeset
   325
	if( !AcceptDMField() )
hgs
parents:
diff changeset
   326
		{
hgs
parents:
diff changeset
   327
		_DBG_FILE( "CNSmlDMSettingsAdapter::AddLeafObjectL(): KErr field end" );
hgs
parents:
diff changeset
   328
		iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EInvalidObject );
hgs
parents:
diff changeset
   329
		return;
hgs
parents:
diff changeset
   330
		}
hgs
parents:
diff changeset
   331
hgs
parents:
diff changeset
   332
    //	Get Database field type 
hgs
parents:
diff changeset
   333
	TNSmlDMFieldType fType = GetDMFieldType();
hgs
parents:
diff changeset
   334
	if ( fType == EWrong )
hgs
parents:
diff changeset
   335
		{
hgs
parents:
diff changeset
   336
		_DBG_FILE( "CNSmlDMSettingsAdapter::AddLeafObjectL(): EError end" );
hgs
parents:
diff changeset
   337
		iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EError );
hgs
parents:
diff changeset
   338
		return;
hgs
parents:
diff changeset
   339
		}
hgs
parents:
diff changeset
   340
    TNSmlDMProfileData fData = GetDMField();
hgs
parents:
diff changeset
   341
    if( fData == ESyncAccepted )
hgs
parents:
diff changeset
   342
        {
hgs
parents:
diff changeset
   343
        _DBG_FILE( "CNSmlDMSettingsAdapter::AddLeafObjectL(): EError end" );
hgs
parents:
diff changeset
   344
		iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EError );
hgs
parents:
diff changeset
   345
		return;
hgs
parents:
diff changeset
   346
        }
hgs
parents:
diff changeset
   347
    if( NotValidStrLenght( fData, aObject ) )
hgs
parents:
diff changeset
   348
	    {
hgs
parents:
diff changeset
   349
		_DBG_FILE( "CNSmlDMSettingsAdapter::AddLeafObjectL(): KErr length end" );
hgs
parents:
diff changeset
   350
		iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ETooLargeObject );
hgs
parents:
diff changeset
   351
		return;
hgs
parents:
diff changeset
   352
		}
hgs
parents:
diff changeset
   353
    //Authentication data leafs to be handled
hgs
parents:
diff changeset
   354
    if ( fData == EAuthenticationRequired || fData == EClientNonce 
hgs
parents:
diff changeset
   355
        || fData == EServerNonce )
hgs
parents:
diff changeset
   356
        {
hgs
parents:
diff changeset
   357
        //Check if replace command and replace data as defined
hgs
parents:
diff changeset
   358
        
hgs
parents:
diff changeset
   359
        TInt replaceStatus = KErrGeneral; 
hgs
parents:
diff changeset
   360
        SetAuthInfoL( iParentLUID + KMaxDataSyncID, fData, aObject, replaceStatus );
hgs
parents:
diff changeset
   361
        if ( replaceStatus == KErrNone )
hgs
parents:
diff changeset
   362
            {
hgs
parents:
diff changeset
   363
            iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EOk );
hgs
parents:
diff changeset
   364
            }
hgs
parents:
diff changeset
   365
        else if ( replaceStatus == KErrNotFound )
hgs
parents:
diff changeset
   366
            {
hgs
parents:
diff changeset
   367
            iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound );
hgs
parents:
diff changeset
   368
            }
hgs
parents:
diff changeset
   369
        else
hgs
parents:
diff changeset
   370
            {
hgs
parents:
diff changeset
   371
            iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EError );
hgs
parents:
diff changeset
   372
            }
hgs
parents:
diff changeset
   373
       
hgs
parents:
diff changeset
   374
        _DBG_FILE( "CNSmlDMSettingsAdapter::UpdateLeafObjectL():end" );
hgs
parents:
diff changeset
   375
        return;
hgs
parents:
diff changeset
   376
        }
hgs
parents:
diff changeset
   377
        
hgs
parents:
diff changeset
   378
    TInt rValue = SetDMFieldDataL( iParentLUID, aObject, fData );
hgs
parents:
diff changeset
   379
    if ( fData == EProfilePort )
hgs
parents:
diff changeset
   380
        {
hgs
parents:
diff changeset
   381
        // in case port is updated, save status ref to be used in 
hgs
parents:
diff changeset
   382
        // CompleteOutstandingCmdsL
hgs
parents:
diff changeset
   383
        if(rValue==KErrNone)
hgs
parents:
diff changeset
   384
            {
hgs
parents:
diff changeset
   385
            iPortBuffer[iPortBuffer.Count()-1].iPortBufStatusRef = aStatusRef; 
hgs
parents:
diff changeset
   386
            }
hgs
parents:
diff changeset
   387
        else if( rValue == KErrOverflow)
hgs
parents:
diff changeset
   388
        {
hgs
parents:
diff changeset
   389
        	iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ETooLargeObject );
hgs
parents:
diff changeset
   390
        }
hgs
parents:
diff changeset
   391
        else
hgs
parents:
diff changeset
   392
        {
hgs
parents:
diff changeset
   393
        	iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EError );
hgs
parents:
diff changeset
   394
            }
hgs
parents:
diff changeset
   395
        }
hgs
parents:
diff changeset
   396
    else
hgs
parents:
diff changeset
   397
        {
hgs
parents:
diff changeset
   398
        if( rValue != KErrNone )
hgs
parents:
diff changeset
   399
            {
hgs
parents:
diff changeset
   400
            if( rValue == KErrNotFound )
hgs
parents:
diff changeset
   401
                {
hgs
parents:
diff changeset
   402
                iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound );
hgs
parents:
diff changeset
   403
                }
hgs
parents:
diff changeset
   404
            else if( rValue == KErrInUse )
hgs
parents:
diff changeset
   405
                {
hgs
parents:
diff changeset
   406
                iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EObjectInUse );
hgs
parents:
diff changeset
   407
                }
hgs
parents:
diff changeset
   408
            else if( rValue == KErrNoMemory )
hgs
parents:
diff changeset
   409
                {
hgs
parents:
diff changeset
   410
                iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENoMemory );
hgs
parents:
diff changeset
   411
                }
hgs
parents:
diff changeset
   412
            else
hgs
parents:
diff changeset
   413
                {
hgs
parents:
diff changeset
   414
                iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EError );
hgs
parents:
diff changeset
   415
                }
hgs
parents:
diff changeset
   416
            }
hgs
parents:
diff changeset
   417
        else
hgs
parents:
diff changeset
   418
            {
hgs
parents:
diff changeset
   419
            iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EOk );
hgs
parents:
diff changeset
   420
            }
hgs
parents:
diff changeset
   421
        }
hgs
parents:
diff changeset
   422
		}
hgs
parents:
diff changeset
   423
        
hgs
parents:
diff changeset
   424
	_DBG_FILE( "CNSmlDMSettingsAdapter::UpdateLeafObjectL():end" );
hgs
parents:
diff changeset
   425
        return;
hgs
parents:
diff changeset
   426
	}
hgs
parents:
diff changeset
   427
hgs
parents:
diff changeset
   428
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   429
//  CNSmlDMSettingsAdapter::DeleteObjectL
hgs
parents:
diff changeset
   430
//  Deletes whole profile or leaf object data acording to aURI.
hgs
parents:
diff changeset
   431
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   432
void CNSmlDMSettingsAdapter::DeleteObjectL( const TDesC8& aURI, 
hgs
parents:
diff changeset
   433
                                            const TDesC8& aLUID, 
hgs
parents:
diff changeset
   434
                                            const TInt aStatusRef )
hgs
parents:
diff changeset
   435
	{
hgs
parents:
diff changeset
   436
	_DBG_FILE( "CNSmlDMSettingsAdapter::DeleteObjectL( ): begin" );
hgs
parents:
diff changeset
   437
hgs
parents:
diff changeset
   438
	if( aURI.Find( KNSmlDdfConRef ) != KErrNotFound )
hgs
parents:
diff changeset
   439
		{	
hgs
parents:
diff changeset
   440
		_DBG_FILE( "CNSmlDMSettingsAdapter::DeleteObjectL(): NOT ALLOWED end" );
hgs
parents:
diff changeset
   441
		iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EError );
hgs
parents:
diff changeset
   442
		return;
hgs
parents:
diff changeset
   443
		}
hgs
parents:
diff changeset
   444
hgs
parents:
diff changeset
   445
    //	Check which field going to be handled
hgs
parents:
diff changeset
   446
	SetField( aURI );
hgs
parents:
diff changeset
   447
hgs
parents:
diff changeset
   448
    //	Check if valid field
hgs
parents:
diff changeset
   449
	if( !AcceptDMField() )
hgs
parents:
diff changeset
   450
		{
hgs
parents:
diff changeset
   451
hgs
parents:
diff changeset
   452
        // Delete whole profile if aURI called for node
hgs
parents:
diff changeset
   453
		TInt last = aURI.LocateReverse( '/' );
hgs
parents:
diff changeset
   454
		TInt pos  = aURI.Find( KNSmlDefDMAcc );
hgs
parents:
diff changeset
   455
		if( last - 5 == pos )
hgs
parents:
diff changeset
   456
			{
hgs
parents:
diff changeset
   457
hgs
parents:
diff changeset
   458
            //	If called for node means that profile will deleted from database
hgs
parents:
diff changeset
   459
			iLUID = IntLUID( aLUID );
hgs
parents:
diff changeset
   460
			DBG_ARGS8( _S8("DeleteObjectL: URI %S LUID = %d"), &aURI, iLUID );
hgs
parents:
diff changeset
   461
hgs
parents:
diff changeset
   462
			if( FindProfileIdL( iLUID ) == EFalse )
hgs
parents:
diff changeset
   463
				{
hgs
parents:
diff changeset
   464
				_DBG_FILE(
hgs
parents:
diff changeset
   465
                    "CNSmlDMSettingsAdapter::DeleteObjectL( ): notfound end");
hgs
parents:
diff changeset
   466
				
hgs
parents:
diff changeset
   467
                iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound );
hgs
parents:
diff changeset
   468
				return;
hgs
parents:
diff changeset
   469
				}
hgs
parents:
diff changeset
   470
			else
hgs
parents:
diff changeset
   471
				{
hgs
parents:
diff changeset
   472
				TInt sRet = DeleteProfileL( iLUID + KMaxDataSyncID );
hgs
parents:
diff changeset
   473
				if ( sRet != KErrNone )
hgs
parents:
diff changeset
   474
					{
hgs
parents:
diff changeset
   475
                    if( sRet == KErrNotFound )
hgs
parents:
diff changeset
   476
                        {
hgs
parents:
diff changeset
   477
                        iCallBack->SetStatusL( aStatusRef,
hgs
parents:
diff changeset
   478
                                                CSmlDmAdapter::ENotFound );
hgs
parents:
diff changeset
   479
                        }
hgs
parents:
diff changeset
   480
                    else if( sRet == KErrInUse )
hgs
parents:
diff changeset
   481
                        {
hgs
parents:
diff changeset
   482
                        iCallBack->SetStatusL( aStatusRef,
hgs
parents:
diff changeset
   483
                                                CSmlDmAdapter::EObjectInUse );
hgs
parents:
diff changeset
   484
                        }
hgs
parents:
diff changeset
   485
                    else
hgs
parents:
diff changeset
   486
                        {
hgs
parents:
diff changeset
   487
                        iCallBack->SetStatusL( aStatusRef, 
hgs
parents:
diff changeset
   488
                                                CSmlDmAdapter::EError );
hgs
parents:
diff changeset
   489
					    }
hgs
parents:
diff changeset
   490
					return;
hgs
parents:
diff changeset
   491
					}
hgs
parents:
diff changeset
   492
				else
hgs
parents:
diff changeset
   493
					{
hgs
parents:
diff changeset
   494
					_DBG_FILE( "CNSmlDMSettingsAdapter::DeleteObjectL( ): EOk end" );
hgs
parents:
diff changeset
   495
					iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EOk );
hgs
parents:
diff changeset
   496
					return;
hgs
parents:
diff changeset
   497
					}
hgs
parents:
diff changeset
   498
				}
hgs
parents:
diff changeset
   499
			}
hgs
parents:
diff changeset
   500
		else
hgs
parents:
diff changeset
   501
			{
hgs
parents:
diff changeset
   502
			_DBG_FILE(
hgs
parents:
diff changeset
   503
                "CNSmlDMSettingsAdapter::DeleteObjectL( ): EInvalidObject end" );
hgs
parents:
diff changeset
   504
			iCallBack->SetStatusL( aStatusRef,CSmlDmAdapter::EInvalidObject );
hgs
parents:
diff changeset
   505
			return;
hgs
parents:
diff changeset
   506
			}
hgs
parents:
diff changeset
   507
		}//Delete whole Profile
hgs
parents:
diff changeset
   508
hgs
parents:
diff changeset
   509
	iLUID = IntLUID( aLUID );
hgs
parents:
diff changeset
   510
	if ( iLUID != iParentLUID )
hgs
parents:
diff changeset
   511
		{
hgs
parents:
diff changeset
   512
		if( FindProfileIdL( iLUID ) == EFalse )
hgs
parents:
diff changeset
   513
			{
hgs
parents:
diff changeset
   514
			_DBG_FILE( "CNSmlDMSettingsAdapter::DeleteObjectL( ): end" );
hgs
parents:
diff changeset
   515
			iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound );
hgs
parents:
diff changeset
   516
			return;
hgs
parents:
diff changeset
   517
			}
hgs
parents:
diff changeset
   518
		iParentLUID = iLUID;
hgs
parents:
diff changeset
   519
		}
hgs
parents:
diff changeset
   520
	
hgs
parents:
diff changeset
   521
	if ( iField->Compare( KNSmlDdfAuthScheme ) == 0 )
hgs
parents:
diff changeset
   522
    	{
hgs
parents:
diff changeset
   523
		DeleteDMAuthInfoL( iLUID, EAuthenticationRequired );
hgs
parents:
diff changeset
   524
        iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EOk );
hgs
parents:
diff changeset
   525
        return;
hgs
parents:
diff changeset
   526
		}
hgs
parents:
diff changeset
   527
    else if( iField->Compare( KNSmlDdfClientNonce ) == 0 )
hgs
parents:
diff changeset
   528
    	{
hgs
parents:
diff changeset
   529
		DeleteDMAuthInfoL( iLUID, EClientNonce );
hgs
parents:
diff changeset
   530
        iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EOk );
hgs
parents:
diff changeset
   531
        return;
hgs
parents:
diff changeset
   532
		}
hgs
parents:
diff changeset
   533
    else if( iField->Compare(KNSmlDdfServerNonce) == 0 )
hgs
parents:
diff changeset
   534
		{
hgs
parents:
diff changeset
   535
		DeleteDMAuthInfoL( iLUID, EServerNonce );
hgs
parents:
diff changeset
   536
        iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EOk );
hgs
parents:
diff changeset
   537
        return;
hgs
parents:
diff changeset
   538
		}
hgs
parents:
diff changeset
   539
hgs
parents:
diff changeset
   540
    // Sets default value if not null field
hgs
parents:
diff changeset
   541
	HBufC8* dataObject = HBufC8::NewLC( 15 );
hgs
parents:
diff changeset
   542
	dataObject->Des().Format( KNullDesC8 );
hgs
parents:
diff changeset
   543
hgs
parents:
diff changeset
   544
	_LIT8(aType,		"text/plain");
hgs
parents:
diff changeset
   545
	iLeafType = EDMDelete;
hgs
parents:
diff changeset
   546
	UpdateLeafObjectL( aURI, aLUID, *dataObject, aType, aStatusRef );
hgs
parents:
diff changeset
   547
    CleanupStack::PopAndDestroy(); //dataObject
hgs
parents:
diff changeset
   548
	iLeafType = EDMUnset;
hgs
parents:
diff changeset
   549
hgs
parents:
diff changeset
   550
	_DBG_FILE( "CNSmlDMSettingsAdapter::DeleteObjectL( ): end" );
hgs
parents:
diff changeset
   551
	return;
hgs
parents:
diff changeset
   552
	}
hgs
parents:
diff changeset
   553
hgs
parents:
diff changeset
   554
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   555
//  CNSmlDMSettingsAdapter::FetchLeafObjectL
hgs
parents:
diff changeset
   556
//  Fetches profile leaf object data acordint to aURI.
hgs
parents:
diff changeset
   557
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   558
void CNSmlDMSettingsAdapter::FetchLeafObjectL( const TDesC8& aURI, 
hgs
parents:
diff changeset
   559
                                                const TDesC8& aLUID, 
hgs
parents:
diff changeset
   560
                                                const TDesC8& aType, 
hgs
parents:
diff changeset
   561
                                                const TInt aResultsRef, 
hgs
parents:
diff changeset
   562
                                                const TInt aStatusRef )
hgs
parents:
diff changeset
   563
	{
hgs
parents:
diff changeset
   564
hgs
parents:
diff changeset
   565
	_DBG_FILE( "CNSmlDMSettingsAdapter::FetchLeafObjectL(): begin" );
hgs
parents:
diff changeset
   566
	DBG_ARGS(_S16( "DM:Fetch aURI    - %S - %S"), &aURI, &aLUID );
hgs
parents:
diff changeset
   567
		
hgs
parents:
diff changeset
   568
	iLUID = IntLUID( aLUID );
hgs
parents:
diff changeset
   569
	if ( iLUID >= 0 )
hgs
parents:
diff changeset
   570
		{
hgs
parents:
diff changeset
   571
		if( FindProfileIdL( iLUID ) == EFalse )
hgs
parents:
diff changeset
   572
			{
hgs
parents:
diff changeset
   573
			_DBG_FILE( "CNSmlDMSettingsAdapter::FetchLeafObjectL(): ENotFound end" );
hgs
parents:
diff changeset
   574
			iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound );
hgs
parents:
diff changeset
   575
			return;
hgs
parents:
diff changeset
   576
			}
hgs
parents:
diff changeset
   577
		}
hgs
parents:
diff changeset
   578
	else
hgs
parents:
diff changeset
   579
		{
hgs
parents:
diff changeset
   580
		_DBG_FILE( "CNSmlDMSettingsAdapter::FetchLeafObjectL(): ENotFound end" );
hgs
parents:
diff changeset
   581
		iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound );
hgs
parents:
diff changeset
   582
		return;
hgs
parents:
diff changeset
   583
		}
hgs
parents:
diff changeset
   584
hgs
parents:
diff changeset
   585
    //	Check which field going to be handled
hgs
parents:
diff changeset
   586
	SetField(aURI);
hgs
parents:
diff changeset
   587
hgs
parents:
diff changeset
   588
    //	Check if valid field
hgs
parents:
diff changeset
   589
	if( !AcceptDMField() )
hgs
parents:
diff changeset
   590
		{
hgs
parents:
diff changeset
   591
		_DBG_FILE( "CNSmlDMSettingsAdapter::FetchLeafObjectL(): EInvalidObject end" );
hgs
parents:
diff changeset
   592
		iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EInvalidObject );
hgs
parents:
diff changeset
   593
		return;
hgs
parents:
diff changeset
   594
		}
hgs
parents:
diff changeset
   595
hgs
parents:
diff changeset
   596
    //	Get Database field type 
hgs
parents:
diff changeset
   597
	TInt fType = GetDMFieldType();
hgs
parents:
diff changeset
   598
	if ( fType == EWrong )
hgs
parents:
diff changeset
   599
		{
hgs
parents:
diff changeset
   600
		_DBG_FILE( "CNSmlDMSettingsAdapter::FetchLeafObjectL(): EError end" );
hgs
parents:
diff changeset
   601
		iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EError );
hgs
parents:
diff changeset
   602
		return;
hgs
parents:
diff changeset
   603
		}
hgs
parents:
diff changeset
   604
hgs
parents:
diff changeset
   605
    TNSmlDMProfileData fieldId = GetDMField();
hgs
parents:
diff changeset
   606
    if( fieldId == ESyncAccepted )
hgs
parents:
diff changeset
   607
        {
hgs
parents:
diff changeset
   608
        _DBG_FILE( "CNSmlDMSettingsAdapter::AddLeafObjectL(): EError end" );
hgs
parents:
diff changeset
   609
		iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EError );
hgs
parents:
diff changeset
   610
		return;
hgs
parents:
diff changeset
   611
        }
hgs
parents:
diff changeset
   612
    CBufBase *lObject = CBufFlat::NewL( 128 );
hgs
parents:
diff changeset
   613
    CleanupStack::PushL( lObject );
hgs
parents:
diff changeset
   614
    lObject->Reset();
hgs
parents:
diff changeset
   615
    
hgs
parents:
diff changeset
   616
    CSmlDmAdapter::TError status;
hgs
parents:
diff changeset
   617
hgs
parents:
diff changeset
   618
    if ( fType == EStr || fType == EInt || fType == EBin )
hgs
parents:
diff changeset
   619
		{ 
hgs
parents:
diff changeset
   620
        TInt rValue = GetObjectL( iLUID, fieldId, *lObject );
hgs
parents:
diff changeset
   621
		if( rValue != KErrNone )
hgs
parents:
diff changeset
   622
		    {
hgs
parents:
diff changeset
   623
            if( rValue == KErrNotFound )
hgs
parents:
diff changeset
   624
                {
hgs
parents:
diff changeset
   625
                status = CSmlDmAdapter::ENotFound;
hgs
parents:
diff changeset
   626
                }
hgs
parents:
diff changeset
   627
            else if( rValue == KErrInUse )
hgs
parents:
diff changeset
   628
                {
hgs
parents:
diff changeset
   629
                status = CSmlDmAdapter::EObjectInUse;
hgs
parents:
diff changeset
   630
                }
hgs
parents:
diff changeset
   631
            else if( rValue == KErrNoMemory )
hgs
parents:
diff changeset
   632
                {
hgs
parents:
diff changeset
   633
                status = CSmlDmAdapter::ENoMemory;
hgs
parents:
diff changeset
   634
                }
hgs
parents:
diff changeset
   635
            else
hgs
parents:
diff changeset
   636
                {
hgs
parents:
diff changeset
   637
                status = CSmlDmAdapter::EError;
hgs
parents:
diff changeset
   638
                }
hgs
parents:
diff changeset
   639
		    }
hgs
parents:
diff changeset
   640
        else
hgs
parents:
diff changeset
   641
            {
hgs
parents:
diff changeset
   642
            status = CSmlDmAdapter::EOk;
hgs
parents:
diff changeset
   643
            }
hgs
parents:
diff changeset
   644
		}
hgs
parents:
diff changeset
   645
	else 
hgs
parents:
diff changeset
   646
		{
hgs
parents:
diff changeset
   647
		CleanupStack::PopAndDestroy(); //lObject 
hgs
parents:
diff changeset
   648
        _DBG_FILE( "CNSmlDMSettingsAdapter::FetchLeafObjectL(): ENotFound end" );
hgs
parents:
diff changeset
   649
		iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound );
hgs
parents:
diff changeset
   650
		iProfile.Close();
hgs
parents:
diff changeset
   651
        iSyncSession.Close();
hgs
parents:
diff changeset
   652
        iSyncSessionOpen = EFalse;
hgs
parents:
diff changeset
   653
		return;
hgs
parents:
diff changeset
   654
		}
hgs
parents:
diff changeset
   655
    iCallBack->SetStatusL( aStatusRef, status );
hgs
parents:
diff changeset
   656
    
hgs
parents:
diff changeset
   657
    if(status==CSmlDmAdapter::EOk)
hgs
parents:
diff changeset
   658
    	{
hgs
parents:
diff changeset
   659
		iCallBack->SetResultsL( aResultsRef, *lObject, aType );
hgs
parents:
diff changeset
   660
    	}
hgs
parents:
diff changeset
   661
  	
hgs
parents:
diff changeset
   662
    CleanupStack::PopAndDestroy(); //lObject 
hgs
parents:
diff changeset
   663
	iProfile.Close();
hgs
parents:
diff changeset
   664
    iSyncSession.Close();
hgs
parents:
diff changeset
   665
    iSyncSessionOpen = EFalse;
hgs
parents:
diff changeset
   666
	_DBG_FILE( "CNSmlDMSettingsAdapter::FetchLeafObjectL(): end" );
hgs
parents:
diff changeset
   667
	return;
hgs
parents:
diff changeset
   668
	}
hgs
parents:
diff changeset
   669
hgs
parents:
diff changeset
   670
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   671
//  CSmlDmSettingsAdapter::ChildURIListL
hgs
parents:
diff changeset
   672
//  Function returns the list of profiles or leafs of the profile 
hgs
parents:
diff changeset
   673
//  acording to aURI.
hgs
parents:
diff changeset
   674
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   675
void CNSmlDMSettingsAdapter::ChildURIListL( const TDesC8& aURI, 
hgs
parents:
diff changeset
   676
                                            const TDesC8& aLUID, 
hgs
parents:
diff changeset
   677
                                            const CArrayFix<TSmlDmMappingInfo>& aPreviousURISegmentList, 
hgs
parents:
diff changeset
   678
                                            const TInt aResultsRef, 
hgs
parents:
diff changeset
   679
                                            const TInt aStatusRef  )
hgs
parents:
diff changeset
   680
	{
hgs
parents:
diff changeset
   681
	_DBG_FILE( "CNSmlDMSettingsAdapter::ChildURIListL(): begin" );
hgs
parents:
diff changeset
   682
	CBufBase *currentURISegmentList = CBufFlat::NewL( 128 );
hgs
parents:
diff changeset
   683
	CleanupStack::PushL( currentURISegmentList );
hgs
parents:
diff changeset
   684
 
hgs
parents:
diff changeset
   685
	if( aURI.Match( KDmAccMatch ) != KErrNotFound )
hgs
parents:
diff changeset
   686
		{
hgs
parents:
diff changeset
   687
		//	Check if Profile exists
hgs
parents:
diff changeset
   688
        TInt checkLUID = GetIntObject( aLUID );
hgs
parents:
diff changeset
   689
        if( FindProfileIdL( checkLUID ) )
hgs
parents:
diff changeset
   690
        	{
hgs
parents:
diff changeset
   691
            currentURISegmentList->InsertL( currentURISegmentList->Size(), KSegmDMAcc );
hgs
parents:
diff changeset
   692
			iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EOk );
hgs
parents:
diff changeset
   693
		    iCallBack->SetResultsL( aResultsRef, *currentURISegmentList, KNullDesC8 );
hgs
parents:
diff changeset
   694
        	}
hgs
parents:
diff changeset
   695
        else
hgs
parents:
diff changeset
   696
        	{
hgs
parents:
diff changeset
   697
			iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound );
hgs
parents:
diff changeset
   698
        	}
hgs
parents:
diff changeset
   699
hgs
parents:
diff changeset
   700
        CleanupStack::PopAndDestroy(  ); // currentURISegmentList
hgs
parents:
diff changeset
   701
        _DBG_FILE( "CNSmlDMSettingsAdapter::ChildURIListL(): end" );
hgs
parents:
diff changeset
   702
		return;
hgs
parents:
diff changeset
   703
		}
hgs
parents:
diff changeset
   704
    else if( aURI.Match( KDmAccMatch2 ) != KErrNotFound )
hgs
parents:
diff changeset
   705
        {
hgs
parents:
diff changeset
   706
        if( iSyncSessionOpen == EFalse )
hgs
parents:
diff changeset
   707
            {
hgs
parents:
diff changeset
   708
            iSyncSession.OpenL();
hgs
parents:
diff changeset
   709
            iSyncSessionOpen = ETrue;
hgs
parents:
diff changeset
   710
            }
hgs
parents:
diff changeset
   711
        RArray<TSmlProfileId> profileIdArray;
hgs
parents:
diff changeset
   712
        CleanupClosePushL( profileIdArray );
hgs
parents:
diff changeset
   713
        TSmlUsageType usageType = ESmlDevMan;
hgs
parents:
diff changeset
   714
        iSyncSession.ListProfilesL( profileIdArray, usageType );
hgs
parents:
diff changeset
   715
	    
hgs
parents:
diff changeset
   716
        for( TInt p = 0; p < profileIdArray.Count(); p++ )
hgs
parents:
diff changeset
   717
		    {
hgs
parents:
diff changeset
   718
		    TBool notInList = ETrue;
hgs
parents:
diff changeset
   719
		    TInt newline = 0;
hgs
parents:
diff changeset
   720
            TInt ddId = profileIdArray[p] - KMaxDataSyncID;
hgs
parents:
diff changeset
   721
            
hgs
parents:
diff changeset
   722
		    while( notInList && newline < aPreviousURISegmentList.Count() )
hgs
parents:
diff changeset
   723
			    {
hgs
parents:
diff changeset
   724
				TInt ppId = GetIntObject( aPreviousURISegmentList.At(newline).iURISegLUID );
hgs
parents:
diff changeset
   725
				if( ppId == ddId ) 
hgs
parents:
diff changeset
   726
				    {
hgs
parents:
diff changeset
   727
					notInList = EFalse;
hgs
parents:
diff changeset
   728
					break;
hgs
parents:
diff changeset
   729
					}
hgs
parents:
diff changeset
   730
				newline++;
hgs
parents:
diff changeset
   731
			    }
hgs
parents:
diff changeset
   732
		    if( notInList )
hgs
parents:
diff changeset
   733
			    {
hgs
parents:
diff changeset
   734
			    _LIT8( Kprev, "DMId" );
hgs
parents:
diff changeset
   735
			    TBuf8<7> addNAME(Kprev); // DMIdnnn , nnn = profileid
hgs
parents:
diff changeset
   736
                TInt fixedProfId = profileIdArray[p] - KMaxDataSyncID; //fit to 3 decimal
hgs
parents:
diff changeset
   737
			    addNAME.AppendNumFixedWidth( fixedProfId, EDecimal, 3 ); 
hgs
parents:
diff changeset
   738
hgs
parents:
diff changeset
   739
    			currentURISegmentList->InsertL( currentURISegmentList->Size(), addNAME );
hgs
parents:
diff changeset
   740
	    		currentURISegmentList->InsertL( currentURISegmentList->Size(), KSmlDmSlash );
hgs
parents:
diff changeset
   741
		    	DBG_ARGS8( _S8("notInList: Id = %d Name %S"), p, &addNAME );
hgs
parents:
diff changeset
   742
hgs
parents:
diff changeset
   743
			    // KNSmlDMStart includes start text for URISeg
hgs
parents:
diff changeset
   744
			    TBuf8<20> addURI; // SyncML/DMAcc/DMIdnnn , nnn = profileid
hgs
parents:
diff changeset
   745
			    addURI.Append( KNSmlDMStart );
hgs
parents:
diff changeset
   746
			    addURI.AppendNumFixedWidth( fixedProfId, EDecimal, 3 ); 
hgs
parents:
diff changeset
   747
hgs
parents:
diff changeset
   748
    			TBuf8<3> addLUID;
hgs
parents:
diff changeset
   749
	    		addLUID.Num( fixedProfId );
hgs
parents:
diff changeset
   750
hgs
parents:
diff changeset
   751
		    	// Also added to mapping
hgs
parents:
diff changeset
   752
			    iCallBack->SetMappingL( addURI, addLUID );
hgs
parents:
diff changeset
   753
    			}
hgs
parents:
diff changeset
   754
	    	else
hgs
parents:
diff changeset
   755
		    	{ // Add those in PreviousList which are on database
hgs
parents:
diff changeset
   756
			    currentURISegmentList->InsertL( currentURISegmentList->Size(),
hgs
parents:
diff changeset
   757
                                                aPreviousURISegmentList.At(newline).iURISeg );
hgs
parents:
diff changeset
   758
    			currentURISegmentList->InsertL( currentURISegmentList->Size(), KSmlDmSlash );
hgs
parents:
diff changeset
   759
//	    		DBG_ARGS8( _S8("InList: Id = %d Name %S"), newline, 
hgs
parents:
diff changeset
   760
//                          aPreviousURISegmentList.At(newline).iURISeg );
hgs
parents:
diff changeset
   761
		    	}
hgs
parents:
diff changeset
   762
		    }
hgs
parents:
diff changeset
   763
        CleanupStack::PopAndDestroy( 1 );//profileIdArray
hgs
parents:
diff changeset
   764
        }
hgs
parents:
diff changeset
   765
    else
hgs
parents:
diff changeset
   766
        {
hgs
parents:
diff changeset
   767
        iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EInvalidObject );
hgs
parents:
diff changeset
   768
        CleanupStack::PopAndDestroy( 1 ); // currentURISegmentList
hgs
parents:
diff changeset
   769
        return;
hgs
parents:
diff changeset
   770
        }
hgs
parents:
diff changeset
   771
hgs
parents:
diff changeset
   772
	iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EOk );
hgs
parents:
diff changeset
   773
	iCallBack->SetResultsL( aResultsRef, *currentURISegmentList, KNullDesC8 );
hgs
parents:
diff changeset
   774
	CleanupStack::PopAndDestroy(); // currentURISegmentList
hgs
parents:
diff changeset
   775
	_DBG_FILE( "CNSmlDMSettingsAdapter::ChildURIListL(): end" );
hgs
parents:
diff changeset
   776
	return;
hgs
parents:
diff changeset
   777
	}
hgs
parents:
diff changeset
   778
hgs
parents:
diff changeset
   779
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   780
//  CNSmlDMSettingsAdapter::AddNodeObjectL
hgs
parents:
diff changeset
   781
//  Adds new DM-settings profile to database
hgs
parents:
diff changeset
   782
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   783
void CNSmlDMSettingsAdapter::AddNodeObjectL( const TDesC8& aURI, 
hgs
parents:
diff changeset
   784
                                            const TDesC8& aParentLUID, 
hgs
parents:
diff changeset
   785
                                            const TInt aStatusRef )
hgs
parents:
diff changeset
   786
	{
hgs
parents:
diff changeset
   787
	_DBG_FILE( "CNSmlDMSettingsAdapter::AddNodeObjectL(): begin" );
hgs
parents:
diff changeset
   788
hgs
parents:
diff changeset
   789
	if( aParentLUID.Length() > 0 )
hgs
parents:
diff changeset
   790
		{
hgs
parents:
diff changeset
   791
		iParentLUID = GetIntObject( aParentLUID );
hgs
parents:
diff changeset
   792
        if( FindProfileIdL( iParentLUID ) != EFalse )// iProfile != NULL)
hgs
parents:
diff changeset
   793
		    {
hgs
parents:
diff changeset
   794
		    _DBG_FILE( "CNSmlDMSettingsAdapter::AddNodeObjectL(): EAlreadyExists end" );
hgs
parents:
diff changeset
   795
		    iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EAlreadyExists );
hgs
parents:
diff changeset
   796
		    return;
hgs
parents:
diff changeset
   797
		    }
hgs
parents:
diff changeset
   798
		}
hgs
parents:
diff changeset
   799
	AddNodeBufferL (aURI, aStatusRef);
hgs
parents:
diff changeset
   800
	_DBG_FILE( "CNSmlDMSettingsAdapter::AddNodeObjectL(): end" );
hgs
parents:
diff changeset
   801
	return;
hgs
parents:
diff changeset
   802
	}
hgs
parents:
diff changeset
   803
hgs
parents:
diff changeset
   804
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   805
//  CNSmlDMSettingsAdapter::UpdateLeafObjectL()
hgs
parents:
diff changeset
   806
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   807
void CNSmlDMSettingsAdapter::UpdateLeafObjectL( const TDesC8&, const TDesC8&, 
hgs
parents:
diff changeset
   808
                                                RWriteStream*&, const TDesC8&, 
hgs
parents:
diff changeset
   809
                                                const TInt )
hgs
parents:
diff changeset
   810
	{
hgs
parents:
diff changeset
   811
	//Not supported because data streaming is not supported by this adapter.
hgs
parents:
diff changeset
   812
	}
hgs
parents:
diff changeset
   813
	
hgs
parents:
diff changeset
   814
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   815
//  CNSmlDMSettingsAdapter::FetchLeafObjectSizeL
hgs
parents:
diff changeset
   816
//  This function fetches leaf object and returns its size.
hgs
parents:
diff changeset
   817
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   818
void CNSmlDMSettingsAdapter::FetchLeafObjectSizeL( const TDesC8& aURI, 
hgs
parents:
diff changeset
   819
                                                    const TDesC8& aLUID, 
hgs
parents:
diff changeset
   820
                                                    const TDesC8& aType, 
hgs
parents:
diff changeset
   821
                                                    const TInt aResultsRef, 
hgs
parents:
diff changeset
   822
                                                    const TInt aStatusRef )
hgs
parents:
diff changeset
   823
	{
hgs
parents:
diff changeset
   824
	_DBG_FILE( "CNSmlDMSettingsAdapter::FetchLeafObjectSizeL() : begin" );
hgs
parents:
diff changeset
   825
    DBG_ARGS( _S16("DM:Fetch aURI    - %S - %S"), &aURI, &aLUID );
hgs
parents:
diff changeset
   826
	
hgs
parents:
diff changeset
   827
	iLUID = IntLUID( aLUID );
hgs
parents:
diff changeset
   828
	if ( iLUID >= 0 )
hgs
parents:
diff changeset
   829
		{
hgs
parents:
diff changeset
   830
		if( FindProfileIdL( iLUID ) == EFalse )
hgs
parents:
diff changeset
   831
			{
hgs
parents:
diff changeset
   832
			_DBG_FILE( "CNSmlDMSettingsAdapter::FetchLeafObjectL(): ENotFound end" );
hgs
parents:
diff changeset
   833
			iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound );
hgs
parents:
diff changeset
   834
			return;
hgs
parents:
diff changeset
   835
			}
hgs
parents:
diff changeset
   836
		}
hgs
parents:
diff changeset
   837
	else
hgs
parents:
diff changeset
   838
		{
hgs
parents:
diff changeset
   839
		_DBG_FILE( "CNSmlDMSettingsAdapter::FetchLeafObjectL(): ENotFound end" );
hgs
parents:
diff changeset
   840
		iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound );
hgs
parents:
diff changeset
   841
		return;
hgs
parents:
diff changeset
   842
		}
hgs
parents:
diff changeset
   843
hgs
parents:
diff changeset
   844
    //	Check which field going to be handled
hgs
parents:
diff changeset
   845
	SetField( aURI );
hgs
parents:
diff changeset
   846
hgs
parents:
diff changeset
   847
    //	Check if valid field
hgs
parents:
diff changeset
   848
	if( !AcceptDMField() )
hgs
parents:
diff changeset
   849
		{
hgs
parents:
diff changeset
   850
		_DBG_FILE( "CNSmlDMSettingsAdapter::FetchLeafObjectL(): EInvalidObject end" );
hgs
parents:
diff changeset
   851
		iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EInvalidObject );
hgs
parents:
diff changeset
   852
		return;
hgs
parents:
diff changeset
   853
		}
hgs
parents:
diff changeset
   854
hgs
parents:
diff changeset
   855
    //	Get Database field type 
hgs
parents:
diff changeset
   856
	TInt fType = GetDMFieldType();
hgs
parents:
diff changeset
   857
	if ( fType == EWrong )
hgs
parents:
diff changeset
   858
		{
hgs
parents:
diff changeset
   859
		_DBG_FILE( "CNSmlDMSettingsAdapter::FetchLeafObjectL(): EError end" );
hgs
parents:
diff changeset
   860
		iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EError );
hgs
parents:
diff changeset
   861
		return;
hgs
parents:
diff changeset
   862
		}
hgs
parents:
diff changeset
   863
hgs
parents:
diff changeset
   864
    CBufBase *lObject = CBufFlat::NewL( 128 );
hgs
parents:
diff changeset
   865
	CleanupStack::PushL( lObject );
hgs
parents:
diff changeset
   866
    lObject->Reset();
hgs
parents:
diff changeset
   867
hgs
parents:
diff changeset
   868
	if ( fType == EStr || fType == EInt || fType == EBin )
hgs
parents:
diff changeset
   869
		{ 
hgs
parents:
diff changeset
   870
        TInt rValue = GetObjectL( iLUID, GetDMField(), *lObject );
hgs
parents:
diff changeset
   871
		if( lObject->Size() == 0 || rValue != KErrNone )
hgs
parents:
diff changeset
   872
		    {
hgs
parents:
diff changeset
   873
            if( rValue == KErrNotFound )
hgs
parents:
diff changeset
   874
                {
hgs
parents:
diff changeset
   875
                iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound );
hgs
parents:
diff changeset
   876
                }
hgs
parents:
diff changeset
   877
            else if( rValue == KErrInUse )
hgs
parents:
diff changeset
   878
                {
hgs
parents:
diff changeset
   879
                iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EObjectInUse );
hgs
parents:
diff changeset
   880
                }
hgs
parents:
diff changeset
   881
            else if( rValue == KErrNoMemory )
hgs
parents:
diff changeset
   882
                {
hgs
parents:
diff changeset
   883
                iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENoMemory );
hgs
parents:
diff changeset
   884
                }
hgs
parents:
diff changeset
   885
            else
hgs
parents:
diff changeset
   886
                {
hgs
parents:
diff changeset
   887
                iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EError );
hgs
parents:
diff changeset
   888
                }
hgs
parents:
diff changeset
   889
		    }
hgs
parents:
diff changeset
   890
		}
hgs
parents:
diff changeset
   891
	else 
hgs
parents:
diff changeset
   892
		{
hgs
parents:
diff changeset
   893
		CleanupStack::PopAndDestroy();//lObject 
hgs
parents:
diff changeset
   894
		_DBG_FILE( "CNSmlDMSettingsAdapter::FetchLeafObjectL(): ENotFound end" );
hgs
parents:
diff changeset
   895
		iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound );
hgs
parents:
diff changeset
   896
		return;
hgs
parents:
diff changeset
   897
		}
hgs
parents:
diff changeset
   898
    TInt objSizeInBytes = lObject->Size();
hgs
parents:
diff changeset
   899
	TBuf8<16> stringObjSizeInBytes;
hgs
parents:
diff changeset
   900
	stringObjSizeInBytes.Num( objSizeInBytes );
hgs
parents:
diff changeset
   901
hgs
parents:
diff changeset
   902
	lObject->Reset();
hgs
parents:
diff changeset
   903
	lObject->InsertL( 0, stringObjSizeInBytes );
hgs
parents:
diff changeset
   904
    iCallBack->SetResultsL( aResultsRef, *lObject, aType );
hgs
parents:
diff changeset
   905
	iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EOk);
hgs
parents:
diff changeset
   906
hgs
parents:
diff changeset
   907
	CleanupStack::PopAndDestroy( 1 ); //lObject
hgs
parents:
diff changeset
   908
	_DBG_FILE( "CNSmlDMSettingsAdapter::FetchLeafObjectSizeL(): end" );
hgs
parents:
diff changeset
   909
	return;
hgs
parents:
diff changeset
   910
    }
hgs
parents:
diff changeset
   911
hgs
parents:
diff changeset
   912
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   913
// CNSmlDMSettingsAdapter::ExecuteCommandL()
hgs
parents:
diff changeset
   914
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   915
void CNSmlDMSettingsAdapter::ExecuteCommandL( const TDesC8&, const TDesC8&,
hgs
parents:
diff changeset
   916
                                                const TDesC8&, const TDesC8&, 
hgs
parents:
diff changeset
   917
                                                const TInt )
hgs
parents:
diff changeset
   918
	{
hgs
parents:
diff changeset
   919
	//Not supported. Command execution via DM settings adapter not possible.	
hgs
parents:
diff changeset
   920
	}
hgs
parents:
diff changeset
   921
hgs
parents:
diff changeset
   922
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   923
// CNSmlDMSettingsAdapter::ExecuteCommandL()
hgs
parents:
diff changeset
   924
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   925
void CNSmlDMSettingsAdapter::ExecuteCommandL( const TDesC8&, const TDesC8&, 
hgs
parents:
diff changeset
   926
                                                RWriteStream*&, const TDesC8&, 
hgs
parents:
diff changeset
   927
                                                const TInt )
hgs
parents:
diff changeset
   928
	{
hgs
parents:
diff changeset
   929
	//Not supported. Command execution via DM settings adapter not possible.
hgs
parents:
diff changeset
   930
	}
hgs
parents:
diff changeset
   931
hgs
parents:
diff changeset
   932
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   933
// CNSmlDMSettingsAdapter::CopyCommandL()
hgs
parents:
diff changeset
   934
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   935
void CNSmlDMSettingsAdapter::CopyCommandL( const TDesC8&, const TDesC8&, 
hgs
parents:
diff changeset
   936
                                            const TDesC8&, const TDesC8&, 
hgs
parents:
diff changeset
   937
                                            const TDesC8&, TInt )
hgs
parents:
diff changeset
   938
	{
hgs
parents:
diff changeset
   939
	//Not supported.
hgs
parents:
diff changeset
   940
	}
hgs
parents:
diff changeset
   941
hgs
parents:
diff changeset
   942
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   943
// CNSmlDMSettingsAdapter::StartAtomicL()
hgs
parents:
diff changeset
   944
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   945
void CNSmlDMSettingsAdapter::StartAtomicL()
hgs
parents:
diff changeset
   946
	{
hgs
parents:
diff changeset
   947
	//Not supported. Handling Atomic command cycles not supported by the adapter.
hgs
parents:
diff changeset
   948
	}
hgs
parents:
diff changeset
   949
hgs
parents:
diff changeset
   950
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   951
// CNSmlDMSettingsAdapter::CommitAtomicL()
hgs
parents:
diff changeset
   952
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   953
void CNSmlDMSettingsAdapter::CommitAtomicL()
hgs
parents:
diff changeset
   954
	{
hgs
parents:
diff changeset
   955
	//Not supported. Handling Atomic command cycles not supported by the adapter.
hgs
parents:
diff changeset
   956
	}
hgs
parents:
diff changeset
   957
hgs
parents:
diff changeset
   958
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   959
// CNSmlDMSettingsAdapter::RollbackAtomicL()
hgs
parents:
diff changeset
   960
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   961
void CNSmlDMSettingsAdapter::RollbackAtomicL()
hgs
parents:
diff changeset
   962
	{
hgs
parents:
diff changeset
   963
	//Not supported. Handling Atomic command cycles not supported by the adapter.
hgs
parents:
diff changeset
   964
	}
hgs
parents:
diff changeset
   965
hgs
parents:
diff changeset
   966
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   967
//  CNSmlDMSettingsAdapter::StreamingSupport()
hgs
parents:
diff changeset
   968
//  Indicates if streaming is supported.
hgs
parents:
diff changeset
   969
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   970
TBool CNSmlDMSettingsAdapter::StreamingSupport( TInt& /*aItemSize*/ )
hgs
parents:
diff changeset
   971
	{
hgs
parents:
diff changeset
   972
	return EFalse;
hgs
parents:
diff changeset
   973
	}
hgs
parents:
diff changeset
   974
hgs
parents:
diff changeset
   975
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   976
// CNSmlDMSettingsAdapter::StreamCommittedL()
hgs
parents:
diff changeset
   977
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   978
void CNSmlDMSettingsAdapter::StreamCommittedL()
hgs
parents:
diff changeset
   979
	{
hgs
parents:
diff changeset
   980
	//Not supported. Streaming not supported by the DM settings adapter.
hgs
parents:
diff changeset
   981
	}
hgs
parents:
diff changeset
   982
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   983
// CNSmlDMSettingsAdapter::CompleteOutstandingCmdsL()
hgs
parents:
diff changeset
   984
// If buffering used, commands must be executed before returning this function.
hgs
parents:
diff changeset
   985
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   986
void CNSmlDMSettingsAdapter::CompleteOutstandingCmdsL()
hgs
parents:
diff changeset
   987
	{
hgs
parents:
diff changeset
   988
	// Check if Buffered
hgs
parents:
diff changeset
   989
	for (int val=0; val<iBuffer->Count ();val++)
hgs
parents:
diff changeset
   990
		{
hgs
parents:
diff changeset
   991
		if ( !iBuffer->At(val).iExecuted)
hgs
parents:
diff changeset
   992
			{
hgs
parents:
diff changeset
   993
			TInt count = iBuffer->At(val).iLeafBuf->Count ()-1;
hgs
parents:
diff changeset
   994
			iExecutionIndex = val;
hgs
parents:
diff changeset
   995
			iComplete = ETrue;
hgs
parents:
diff changeset
   996
			ExecuteBufferL ();
hgs
parents:
diff changeset
   997
			}
hgs
parents:
diff changeset
   998
		}
hgs
parents:
diff changeset
   999
	// if port was updated, set it
hgs
parents:
diff changeset
  1000
	for (TInt i = 0;i<iPortBuffer.Count(); i++)
hgs
parents:
diff changeset
  1001
	    {
hgs
parents:
diff changeset
  1002
        TInt err = SetProfileConnectionPortNrL( iPortBuffer[i].iPortBufLUID, iPortBuffer[i].iPortBuf );
hgs
parents:
diff changeset
  1003
        
hgs
parents:
diff changeset
  1004
        // set status
hgs
parents:
diff changeset
  1005
        if ( err != KErrNone )
hgs
parents:
diff changeset
  1006
            {
hgs
parents:
diff changeset
  1007
            iCallBack->SetStatusL( iPortBuffer[i].iPortBufStatusRef, CSmlDmAdapter::EError );
hgs
parents:
diff changeset
  1008
            }
hgs
parents:
diff changeset
  1009
        else
hgs
parents:
diff changeset
  1010
            {
hgs
parents:
diff changeset
  1011
            iCallBack->SetStatusL( iPortBuffer[i].iPortBufStatusRef, CSmlDmAdapter::EOk );
hgs
parents:
diff changeset
  1012
            }
hgs
parents:
diff changeset
  1013
	    
hgs
parents:
diff changeset
  1014
	    }
hgs
parents:
diff changeset
  1015
    iPortBuffer.Reset();	
hgs
parents:
diff changeset
  1016
	iComplete = EFalse;
hgs
parents:
diff changeset
  1017
	}
hgs
parents:
diff changeset
  1018
hgs
parents:
diff changeset
  1019
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1020
//  CNSmlDMSettingsAdapter::AcceptDMField
hgs
parents:
diff changeset
  1021
//  This function checks if field to be handled is valid.
hgs
parents:
diff changeset
  1022
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1023
TBool CNSmlDMSettingsAdapter::AcceptDMField()
hgs
parents:
diff changeset
  1024
	{
hgs
parents:
diff changeset
  1025
	_DBG_FILE("CNSmlDMSettingsAdapter::AcceptDMField(): begin");
hgs
parents:
diff changeset
  1026
hgs
parents:
diff changeset
  1027
	if ( iField->Compare( KNSmlDdfAddrType ) == 0 )
hgs
parents:
diff changeset
  1028
		{
hgs
parents:
diff changeset
  1029
		return ETrue;
hgs
parents:
diff changeset
  1030
		}
hgs
parents:
diff changeset
  1031
	else if ( iField->Compare( KNSmlDdfAddr ) == 0 )
hgs
parents:
diff changeset
  1032
		{
hgs
parents:
diff changeset
  1033
		return ETrue;
hgs
parents:
diff changeset
  1034
		}
hgs
parents:
diff changeset
  1035
	else if ( iField->Compare( KNSmlDdfPortNbr ) == 0 )
hgs
parents:
diff changeset
  1036
		{
hgs
parents:
diff changeset
  1037
		return ETrue;
hgs
parents:
diff changeset
  1038
		}
hgs
parents:
diff changeset
  1039
	else if ( iField->Compare( KNSmlDdfAuthScheme ) == 0 )
hgs
parents:
diff changeset
  1040
		{
hgs
parents:
diff changeset
  1041
		return ETrue;
hgs
parents:
diff changeset
  1042
		}
hgs
parents:
diff changeset
  1043
	else if ( iField->Compare( KNSmlDdfServerId ) == 0 )
hgs
parents:
diff changeset
  1044
		{
hgs
parents:
diff changeset
  1045
		return ETrue;
hgs
parents:
diff changeset
  1046
		}
hgs
parents:
diff changeset
  1047
	else if ( iField->Compare( KNSmlDdfServerPW ) == 0 )
hgs
parents:
diff changeset
  1048
		{
hgs
parents:
diff changeset
  1049
		return ETrue;
hgs
parents:
diff changeset
  1050
		}
hgs
parents:
diff changeset
  1051
	else if ( iField->Compare( KNSmlDdfServerNonce ) == 0 )
hgs
parents:
diff changeset
  1052
		{
hgs
parents:
diff changeset
  1053
		return ETrue;
hgs
parents:
diff changeset
  1054
		}
hgs
parents:
diff changeset
  1055
	else if ( iField->Compare( KNSmlDdfClientUserName ) == 0 )
hgs
parents:
diff changeset
  1056
		{
hgs
parents:
diff changeset
  1057
		return ETrue;
hgs
parents:
diff changeset
  1058
		}
hgs
parents:
diff changeset
  1059
	else if ( iField->Compare( KNSmlDdfClientPW ) == 0 )
hgs
parents:
diff changeset
  1060
		{
hgs
parents:
diff changeset
  1061
		return ETrue;
hgs
parents:
diff changeset
  1062
		}
hgs
parents:
diff changeset
  1063
	else if ( iField->Compare( KNSmlDdfClientNonce ) == 0 )
hgs
parents:
diff changeset
  1064
		{
hgs
parents:
diff changeset
  1065
		return ETrue;
hgs
parents:
diff changeset
  1066
		}
hgs
parents:
diff changeset
  1067
	else if ( iField->Compare( KNSmlDdfName ) == 0 )
hgs
parents:
diff changeset
  1068
		{
hgs
parents:
diff changeset
  1069
		return ETrue;
hgs
parents:
diff changeset
  1070
		}
hgs
parents:
diff changeset
  1071
	else if ( iField->Compare( KNSmlDdfConRef ) == 0 )
hgs
parents:
diff changeset
  1072
		{
hgs
parents:
diff changeset
  1073
		return ETrue;
hgs
parents:
diff changeset
  1074
		}
hgs
parents:
diff changeset
  1075
	else if ( iField->Compare( KNSmlDdfId ) == 0 )
hgs
parents:
diff changeset
  1076
		{
hgs
parents:
diff changeset
  1077
		return ETrue;
hgs
parents:
diff changeset
  1078
		}
hgs
parents:
diff changeset
  1079
hgs
parents:
diff changeset
  1080
	_DBG_FILE( "CNSmlDMSettingsAdapter::AcceptDMField(): end" );
hgs
parents:
diff changeset
  1081
	return EFalse; // Not a valid Type
hgs
parents:
diff changeset
  1082
	}
hgs
parents:
diff changeset
  1083
hgs
parents:
diff changeset
  1084
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1085
//  CNSmlDMSettingsAdapter::GetDMField
hgs
parents:
diff changeset
  1086
//	Matches URI fieldname to DM-database. 
hgs
parents:
diff changeset
  1087
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1088
TNSmlDMProfileData CNSmlDMSettingsAdapter::GetDMField() const
hgs
parents:
diff changeset
  1089
	{
hgs
parents:
diff changeset
  1090
hgs
parents:
diff changeset
  1091
	if ( iField->Compare( KNSmlDdfAddrType ) == 0 )
hgs
parents:
diff changeset
  1092
		{
hgs
parents:
diff changeset
  1093
		return EProfileMediumType;
hgs
parents:
diff changeset
  1094
		}
hgs
parents:
diff changeset
  1095
	else if ( iField->Compare( KNSmlDdfAddr ) == 0 )
hgs
parents:
diff changeset
  1096
		{
hgs
parents:
diff changeset
  1097
		return EProfileURL;
hgs
parents:
diff changeset
  1098
		}
hgs
parents:
diff changeset
  1099
	else if ( iField->Compare( KNSmlDdfPortNbr ) == 0 )
hgs
parents:
diff changeset
  1100
		{
hgs
parents:
diff changeset
  1101
		return EProfilePort;
hgs
parents:
diff changeset
  1102
		}
hgs
parents:
diff changeset
  1103
	else if ( iField->Compare( KNSmlDdfAuthScheme ) == 0 )
hgs
parents:
diff changeset
  1104
		{
hgs
parents:
diff changeset
  1105
		return EAuthenticationRequired;
hgs
parents:
diff changeset
  1106
		}
hgs
parents:
diff changeset
  1107
	else if ( iField->Compare( KNSmlDdfServerId ) == 0 )
hgs
parents:
diff changeset
  1108
		{
hgs
parents:
diff changeset
  1109
		return EServerId;
hgs
parents:
diff changeset
  1110
		}
hgs
parents:
diff changeset
  1111
	else if ( iField->Compare( KNSmlDdfServerPW ) == 0 )
hgs
parents:
diff changeset
  1112
		{
hgs
parents:
diff changeset
  1113
		return ESharedSecret;
hgs
parents:
diff changeset
  1114
		}
hgs
parents:
diff changeset
  1115
	else if ( iField->Compare( KNSmlDdfServerNonce ) == 0 )
hgs
parents:
diff changeset
  1116
		{
hgs
parents:
diff changeset
  1117
		return EServerNonce;
hgs
parents:
diff changeset
  1118
		}
hgs
parents:
diff changeset
  1119
	else if ( iField->Compare( KNSmlDdfClientUserName ) == 0 )
hgs
parents:
diff changeset
  1120
		{
hgs
parents:
diff changeset
  1121
		return EProfileDMServerUsername;
hgs
parents:
diff changeset
  1122
		}
hgs
parents:
diff changeset
  1123
	else if ( iField->Compare( KNSmlDdfClientPW ) == 0 )
hgs
parents:
diff changeset
  1124
		{
hgs
parents:
diff changeset
  1125
		return EProfileDMServerPassword;
hgs
parents:
diff changeset
  1126
		}
hgs
parents:
diff changeset
  1127
	else if ( iField->Compare( KNSmlDdfClientNonce ) == 0 )
hgs
parents:
diff changeset
  1128
		{
hgs
parents:
diff changeset
  1129
		return EClientNonce;
hgs
parents:
diff changeset
  1130
		}
hgs
parents:
diff changeset
  1131
	else if ( iField->Compare( KNSmlDdfName ) == 0 )
hgs
parents:
diff changeset
  1132
		{
hgs
parents:
diff changeset
  1133
		return EProfileName;
hgs
parents:
diff changeset
  1134
		}
hgs
parents:
diff changeset
  1135
	else if ( iField->Compare( KNSmlDdfId ) == 0 )
hgs
parents:
diff changeset
  1136
		{
hgs
parents:
diff changeset
  1137
		return EProfileId;
hgs
parents:
diff changeset
  1138
		}
hgs
parents:
diff changeset
  1139
	else if ( iField->Compare( KNSmlDdfConRef ) == 0 )
hgs
parents:
diff changeset
  1140
		{
hgs
parents:
diff changeset
  1141
		return EProfileIAPId;
hgs
parents:
diff changeset
  1142
		}
hgs
parents:
diff changeset
  1143
	
hgs
parents:
diff changeset
  1144
	_DBG_FILE( "CNSmlDMSettingsAdapter::GetDMField(): Error" );
hgs
parents:
diff changeset
  1145
	return ESyncAccepted;
hgs
parents:
diff changeset
  1146
	}
hgs
parents:
diff changeset
  1147
hgs
parents:
diff changeset
  1148
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1149
//  CNSmlDMSettingsAdapter::GetDMFieldType
hgs
parents:
diff changeset
  1150
//	Gets field data type. 
hgs
parents:
diff changeset
  1151
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1152
TNSmlDMFieldType CNSmlDMSettingsAdapter::GetDMFieldType() const
hgs
parents:
diff changeset
  1153
	{
hgs
parents:
diff changeset
  1154
	if ( iField->Compare( KNSmlDdfAddrType ) == 0 )
hgs
parents:
diff changeset
  1155
		{
hgs
parents:
diff changeset
  1156
		return EInt;
hgs
parents:
diff changeset
  1157
		}
hgs
parents:
diff changeset
  1158
	else if ( iField->Compare( KNSmlDdfAddr ) == 0 )
hgs
parents:
diff changeset
  1159
		{
hgs
parents:
diff changeset
  1160
		return EStr;
hgs
parents:
diff changeset
  1161
		}
hgs
parents:
diff changeset
  1162
	else if ( iField->Compare( KNSmlDdfPortNbr ) == 0 )
hgs
parents:
diff changeset
  1163
		{
hgs
parents:
diff changeset
  1164
		return EInt;
hgs
parents:
diff changeset
  1165
		}
hgs
parents:
diff changeset
  1166
	else if ( iField->Compare( KNSmlDdfAuthScheme ) == 0 )
hgs
parents:
diff changeset
  1167
		{
hgs
parents:
diff changeset
  1168
		return EInt;
hgs
parents:
diff changeset
  1169
		}
hgs
parents:
diff changeset
  1170
	else if ( iField->Compare( KNSmlDdfServerId ) == 0 )
hgs
parents:
diff changeset
  1171
		{
hgs
parents:
diff changeset
  1172
		return EStr;
hgs
parents:
diff changeset
  1173
		}
hgs
parents:
diff changeset
  1174
	else if ( iField->Compare( KNSmlDdfServerPW ) == 0 )
hgs
parents:
diff changeset
  1175
		{
hgs
parents:
diff changeset
  1176
		return EStr;
hgs
parents:
diff changeset
  1177
		}
hgs
parents:
diff changeset
  1178
	else if ( iField->Compare( KNSmlDdfServerNonce ) == 0 )
hgs
parents:
diff changeset
  1179
		{
hgs
parents:
diff changeset
  1180
		return EBin;
hgs
parents:
diff changeset
  1181
		}
hgs
parents:
diff changeset
  1182
	else if ( iField->Compare( KNSmlDdfClientUserName ) == 0 )
hgs
parents:
diff changeset
  1183
		{
hgs
parents:
diff changeset
  1184
		return EStr;
hgs
parents:
diff changeset
  1185
		}
hgs
parents:
diff changeset
  1186
	else if ( iField->Compare( KNSmlDdfClientPW ) == 0 )
hgs
parents:
diff changeset
  1187
		{
hgs
parents:
diff changeset
  1188
		return EStr;
hgs
parents:
diff changeset
  1189
		}
hgs
parents:
diff changeset
  1190
	else if (iField->Compare(KNSmlDdfClientNonce) == 0)
hgs
parents:
diff changeset
  1191
		{
hgs
parents:
diff changeset
  1192
		return EBin;
hgs
parents:
diff changeset
  1193
		}
hgs
parents:
diff changeset
  1194
	else if ( iField->Compare( KNSmlDdfName ) == 0 )
hgs
parents:
diff changeset
  1195
		{
hgs
parents:
diff changeset
  1196
		return EStr;
hgs
parents:
diff changeset
  1197
		}
hgs
parents:
diff changeset
  1198
	else if ( iField->Compare( KNSmlDdfConRef ) == 0 )
hgs
parents:
diff changeset
  1199
		{
hgs
parents:
diff changeset
  1200
		return EInt;
hgs
parents:
diff changeset
  1201
		}
hgs
parents:
diff changeset
  1202
	else if ( iField->Compare( KNSmlDdfId ) == 0 )
hgs
parents:
diff changeset
  1203
		{
hgs
parents:
diff changeset
  1204
		return EInt;
hgs
parents:
diff changeset
  1205
		}
hgs
parents:
diff changeset
  1206
hgs
parents:
diff changeset
  1207
	_DBG_FILE( "CNSmlDMSettingsAdapter::GetDMFieldType(): Error" );
hgs
parents:
diff changeset
  1208
	return EWrong;
hgs
parents:
diff changeset
  1209
	}
hgs
parents:
diff changeset
  1210
hgs
parents:
diff changeset
  1211
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1212
//  CNSmlDMSettingsAdapter::IntLUID
hgs
parents:
diff changeset
  1213
//	Returns integer value for a profile LUID.
hgs
parents:
diff changeset
  1214
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1215
TInt CNSmlDMSettingsAdapter::IntLUID( const TDesC8& aLUID )
hgs
parents:
diff changeset
  1216
	{
hgs
parents:
diff changeset
  1217
	TLex8 lLex( aLUID );
hgs
parents:
diff changeset
  1218
hgs
parents:
diff changeset
  1219
	if( lLex.Val( iLUID ) == KErrNone )
hgs
parents:
diff changeset
  1220
	    {
hgs
parents:
diff changeset
  1221
	    return iLUID;
hgs
parents:
diff changeset
  1222
	    }
hgs
parents:
diff changeset
  1223
	else
hgs
parents:
diff changeset
  1224
        {
hgs
parents:
diff changeset
  1225
        return -1;
hgs
parents:
diff changeset
  1226
        }
hgs
parents:
diff changeset
  1227
	}
hgs
parents:
diff changeset
  1228
hgs
parents:
diff changeset
  1229
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1230
//  CNSmlDMSettingsAdapter::GetIntObject
hgs
parents:
diff changeset
  1231
//	Returns integer value for a aObject.
hgs
parents:
diff changeset
  1232
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1233
TInt CNSmlDMSettingsAdapter::GetIntObject( const TDesC8& aObject )
hgs
parents:
diff changeset
  1234
	{
hgs
parents:
diff changeset
  1235
	TLex8 lLex( aObject );
hgs
parents:
diff changeset
  1236
hgs
parents:
diff changeset
  1237
	TInt value = 0;
hgs
parents:
diff changeset
  1238
hgs
parents:
diff changeset
  1239
	if( lLex.Val( value ) != KErrNone )
hgs
parents:
diff changeset
  1240
	    {
hgs
parents:
diff changeset
  1241
	    return KErrNotFound;
hgs
parents:
diff changeset
  1242
	    }
hgs
parents:
diff changeset
  1243
	else
hgs
parents:
diff changeset
  1244
        {
hgs
parents:
diff changeset
  1245
        return value;
hgs
parents:
diff changeset
  1246
        }
hgs
parents:
diff changeset
  1247
	}
hgs
parents:
diff changeset
  1248
hgs
parents:
diff changeset
  1249
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1250
//	CNSmlDMSettingsAdapter::GetIntObject16()
hgs
parents:
diff changeset
  1251
//	Returns Integer Value for a 16 bit data object.
hgs
parents:
diff changeset
  1252
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1253
TInt CNSmlDMSettingsAdapter::GetIntObject16( const TDesC& aObject )
hgs
parents:
diff changeset
  1254
	{
hgs
parents:
diff changeset
  1255
	TLex16 lLex( aObject );
hgs
parents:
diff changeset
  1256
hgs
parents:
diff changeset
  1257
	TInt value = 0;
hgs
parents:
diff changeset
  1258
hgs
parents:
diff changeset
  1259
	if( lLex.Val( value ) == KErrNone )
hgs
parents:
diff changeset
  1260
	    {
hgs
parents:
diff changeset
  1261
	    return value;
hgs
parents:
diff changeset
  1262
	    }
hgs
parents:
diff changeset
  1263
	else
hgs
parents:
diff changeset
  1264
        {
hgs
parents:
diff changeset
  1265
        return value;
hgs
parents:
diff changeset
  1266
        }
hgs
parents:
diff changeset
  1267
	}
hgs
parents:
diff changeset
  1268
hgs
parents:
diff changeset
  1269
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1270
//  CNSmlDMSettingsAdapter::SetIntObjectLC
hgs
parents:
diff changeset
  1271
//	Converts integer to HBufC8 type buffer and returns reference to it.
hgs
parents:
diff changeset
  1272
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1273
TDesC8& CNSmlDMSettingsAdapter::SetIntObjectLC( const TInt& aObject )
hgs
parents:
diff changeset
  1274
	{
hgs
parents:
diff changeset
  1275
	HBufC8* buf = HBufC8::NewLC( 8 );
hgs
parents:
diff changeset
  1276
	TPtr8 ptrBuf = buf->Des();
hgs
parents:
diff changeset
  1277
hgs
parents:
diff changeset
  1278
	ptrBuf.Num( aObject );
hgs
parents:
diff changeset
  1279
    return *buf;
hgs
parents:
diff changeset
  1280
	}
hgs
parents:
diff changeset
  1281
hgs
parents:
diff changeset
  1282
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1283
//	CNSmlDMSettingsAdapter::NotValidStrLenght
hgs
parents:
diff changeset
  1284
//	Checks if data length is valid.
hgs
parents:
diff changeset
  1285
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1286
TBool CNSmlDMSettingsAdapter::NotValidStrLenght( const TNSmlDMProfileData& aProfileItem, 
hgs
parents:
diff changeset
  1287
                                                const TDesC8& aSource )
hgs
parents:
diff changeset
  1288
	{
hgs
parents:
diff changeset
  1289
	TInt lLen = aSource.Length();
hgs
parents:
diff changeset
  1290
	TBool lBool = EFalse;
hgs
parents:
diff changeset
  1291
hgs
parents:
diff changeset
  1292
	switch ( aProfileItem )
hgs
parents:
diff changeset
  1293
		{
hgs
parents:
diff changeset
  1294
		case ( EProfileName ) :
hgs
parents:
diff changeset
  1295
			{
hgs
parents:
diff changeset
  1296
			if( lLen > KNSmlMaxProfileNameLength )
hgs
parents:
diff changeset
  1297
			    {
hgs
parents:
diff changeset
  1298
			    lBool = ETrue;	
hgs
parents:
diff changeset
  1299
			    }
hgs
parents:
diff changeset
  1300
			}
hgs
parents:
diff changeset
  1301
		break;
hgs
parents:
diff changeset
  1302
		
hgs
parents:
diff changeset
  1303
		case ( EProfileDMServerUsername ) :
hgs
parents:
diff changeset
  1304
			{
hgs
parents:
diff changeset
  1305
			if( lLen > KNSmlMaxUsernameLength )
hgs
parents:
diff changeset
  1306
			    {
hgs
parents:
diff changeset
  1307
			    lBool = ETrue;
hgs
parents:
diff changeset
  1308
			    }
hgs
parents:
diff changeset
  1309
			}
hgs
parents:
diff changeset
  1310
		break;
hgs
parents:
diff changeset
  1311
hgs
parents:
diff changeset
  1312
		case ( EProfileDMServerPassword ) :
hgs
parents:
diff changeset
  1313
			{
hgs
parents:
diff changeset
  1314
			if( lLen > KNSmlMaxPasswordLength )
hgs
parents:
diff changeset
  1315
			    {
hgs
parents:
diff changeset
  1316
			    lBool = ETrue;	
hgs
parents:
diff changeset
  1317
			    }
hgs
parents:
diff changeset
  1318
			}
hgs
parents:
diff changeset
  1319
		break;
hgs
parents:
diff changeset
  1320
hgs
parents:
diff changeset
  1321
		case ( ESharedSecret ) :
hgs
parents:
diff changeset
  1322
			{
hgs
parents:
diff changeset
  1323
			if( lLen > KNSmlDmSharedSecretMaxLength )
hgs
parents:
diff changeset
  1324
			    {
hgs
parents:
diff changeset
  1325
			    lBool = ETrue;	
hgs
parents:
diff changeset
  1326
			    }
hgs
parents:
diff changeset
  1327
			}
hgs
parents:
diff changeset
  1328
		break;
hgs
parents:
diff changeset
  1329
hgs
parents:
diff changeset
  1330
		case ( EProfileURL ) :
hgs
parents:
diff changeset
  1331
			{
hgs
parents:
diff changeset
  1332
			if( lLen > KNSmlMaxURLLength )
hgs
parents:
diff changeset
  1333
			    {
hgs
parents:
diff changeset
  1334
			    lBool = ETrue;	
hgs
parents:
diff changeset
  1335
			    }
hgs
parents:
diff changeset
  1336
			}
hgs
parents:
diff changeset
  1337
		break;
hgs
parents:
diff changeset
  1338
hgs
parents:
diff changeset
  1339
		case ( EServerId ) :
hgs
parents:
diff changeset
  1340
			{
hgs
parents:
diff changeset
  1341
			if( lLen > KNSmlDmServerIdMaxLength )
hgs
parents:
diff changeset
  1342
			    {
hgs
parents:
diff changeset
  1343
			    lBool = ETrue;	
hgs
parents:
diff changeset
  1344
			    }
hgs
parents:
diff changeset
  1345
			}
hgs
parents:
diff changeset
  1346
		break;
hgs
parents:
diff changeset
  1347
hgs
parents:
diff changeset
  1348
		case ( EProfileIAPId ) :
hgs
parents:
diff changeset
  1349
			{
hgs
parents:
diff changeset
  1350
			if( lLen > KNSmlMaxURLLength )
hgs
parents:
diff changeset
  1351
			    {
hgs
parents:
diff changeset
  1352
			    lBool = ETrue;	
hgs
parents:
diff changeset
  1353
			    }
hgs
parents:
diff changeset
  1354
			}
hgs
parents:
diff changeset
  1355
		break;
hgs
parents:
diff changeset
  1356
hgs
parents:
diff changeset
  1357
		case ( EAuthenticationRequired ) :
hgs
parents:
diff changeset
  1358
			{
hgs
parents:
diff changeset
  1359
			if( lLen > 20 ) 
hgs
parents:
diff changeset
  1360
			    {
hgs
parents:
diff changeset
  1361
			    lBool = ETrue;	
hgs
parents:
diff changeset
  1362
			    }
hgs
parents:
diff changeset
  1363
			}
hgs
parents:
diff changeset
  1364
		break;
hgs
parents:
diff changeset
  1365
hgs
parents:
diff changeset
  1366
		case ( EProfileId ) :
hgs
parents:
diff changeset
  1367
		case ( EProfilePort ) :
hgs
parents:
diff changeset
  1368
		case ( EProfileMediumType ) :
hgs
parents:
diff changeset
  1369
			{
hgs
parents:
diff changeset
  1370
			if( lLen > 8 )
hgs
parents:
diff changeset
  1371
			    {
hgs
parents:
diff changeset
  1372
			    lBool = ETrue;	
hgs
parents:
diff changeset
  1373
			    }
hgs
parents:
diff changeset
  1374
			}
hgs
parents:
diff changeset
  1375
		break;
hgs
parents:
diff changeset
  1376
		
hgs
parents:
diff changeset
  1377
        case ( EServerNonce ) :
hgs
parents:
diff changeset
  1378
	    case ( EClientNonce ) :
hgs
parents:
diff changeset
  1379
	        {
hgs
parents:
diff changeset
  1380
            lBool = EFalse;
hgs
parents:
diff changeset
  1381
	        }
hgs
parents:
diff changeset
  1382
        break;
hgs
parents:
diff changeset
  1383
hgs
parents:
diff changeset
  1384
		default:
hgs
parents:
diff changeset
  1385
			{
hgs
parents:
diff changeset
  1386
			lBool = ETrue;
hgs
parents:
diff changeset
  1387
			}
hgs
parents:
diff changeset
  1388
		}
hgs
parents:
diff changeset
  1389
hgs
parents:
diff changeset
  1390
	return lBool;
hgs
parents:
diff changeset
  1391
	}
hgs
parents:
diff changeset
  1392
hgs
parents:
diff changeset
  1393
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1394
//	CNSmlDMSettingsAdapter::SetField
hgs
parents:
diff changeset
  1395
//	Last element of the URI (after last '/') is returned.
hgs
parents:
diff changeset
  1396
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1397
TInt CNSmlDMSettingsAdapter::SetField( const TDesC8& aSource )
hgs
parents:
diff changeset
  1398
	{
hgs
parents:
diff changeset
  1399
	if ( aSource.LocateReverse( KNSmlDMUriSeparator ) == KErrNotFound )
hgs
parents:
diff changeset
  1400
	    {
hgs
parents:
diff changeset
  1401
	    iField->Des().Format( aSource );
hgs
parents:
diff changeset
  1402
	    }
hgs
parents:
diff changeset
  1403
	else
hgs
parents:
diff changeset
  1404
        {
hgs
parents:
diff changeset
  1405
        iField->Des().Format( aSource.Mid( aSource.LocateReverse( KNSmlDMUriSeparator ) + 1 ) );
hgs
parents:
diff changeset
  1406
        }
hgs
parents:
diff changeset
  1407
hgs
parents:
diff changeset
  1408
    return KErrNone;
hgs
parents:
diff changeset
  1409
	}
hgs
parents:
diff changeset
  1410
hgs
parents:
diff changeset
  1411
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1412
//  CNSmlDMSettingsAdapter::ConvertTo8LC
hgs
parents:
diff changeset
  1413
//	Converts string value to 8-bit and returns reference.
hgs
parents:
diff changeset
  1414
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1415
TDesC8& CNSmlDMSettingsAdapter::ConvertTo8LC( const TDesC& aSource )
hgs
parents:
diff changeset
  1416
	{
hgs
parents:
diff changeset
  1417
	HBufC8* buf = HBufC8::NewLC( aSource.Length() * 2 );
hgs
parents:
diff changeset
  1418
	TPtr8 bufPtr = buf->Des();
hgs
parents:
diff changeset
  1419
	CnvUtfConverter::ConvertFromUnicodeToUtf8( bufPtr, aSource );
hgs
parents:
diff changeset
  1420
hgs
parents:
diff changeset
  1421
    return *buf;
hgs
parents:
diff changeset
  1422
	}
hgs
parents:
diff changeset
  1423
hgs
parents:
diff changeset
  1424
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1425
//	CNSmlDMSettingsAdapter::ConvertTo16LC
hgs
parents:
diff changeset
  1426
//	Converts string value to 16-bit and returns reference.
hgs
parents:
diff changeset
  1427
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1428
TDesC16& CNSmlDMSettingsAdapter::ConvertTo16LC( const TDesC8& aSource)
hgs
parents:
diff changeset
  1429
	{
hgs
parents:
diff changeset
  1430
	HBufC16* buf16 = HBufC16::NewLC( aSource.Length() );
hgs
parents:
diff changeset
  1431
	TPtr16 bufPtr16 = buf16->Des();
hgs
parents:
diff changeset
  1432
hgs
parents:
diff changeset
  1433
	CnvUtfConverter::ConvertToUnicodeFromUtf8( bufPtr16, aSource );
hgs
parents:
diff changeset
  1434
hgs
parents:
diff changeset
  1435
    return *buf16; 
hgs
parents:
diff changeset
  1436
	}
hgs
parents:
diff changeset
  1437
hgs
parents:
diff changeset
  1438
// -------------------------------------------------------------------------------------
hgs
parents:
diff changeset
  1439
//  CNSmlDMSettingsAdapter::GetConRefL
hgs
parents:
diff changeset
  1440
//	Gets the URI for given aObject (IAP ID).
hgs
parents:
diff changeset
  1441
// -------------------------------------------------------------------------------------
hgs
parents:
diff changeset
  1442
TInt CNSmlDMSettingsAdapter::GetConRefL( CBufBase& aObject )
hgs
parents:
diff changeset
  1443
	{
hgs
parents:
diff changeset
  1444
	_DBG_FILE( "CNSmlDMSettingsAdapter::GetConRefL() : begin" );
hgs
parents:
diff changeset
  1445
	TInt profIAPid = -1;
hgs
parents:
diff changeset
  1446
    TInt apIdResponse = GetProfileIAPIdL( profIAPid );
hgs
parents:
diff changeset
  1447
    if( profIAPid < 0 )
hgs
parents:
diff changeset
  1448
    {
hgs
parents:
diff changeset
  1449
    	return KErrNone;
hgs
parents:
diff changeset
  1450
    }
hgs
parents:
diff changeset
  1451
    if( apIdResponse != KErrNone )
hgs
parents:
diff changeset
  1452
    {
hgs
parents:
diff changeset
  1453
    	return KErrNotFound;
hgs
parents:
diff changeset
  1454
    }
hgs
parents:
diff changeset
  1455
    CNSmlDMIAPMatcher* apmatch = CNSmlDMIAPMatcher::NewL( iCallBack );
hgs
parents:
diff changeset
  1456
    CleanupStack::PushL( apmatch );
hgs
parents:
diff changeset
  1457
    HBufC8* uri8 = apmatch->URIFromIAPIdL( profIAPid );
hgs
parents:
diff changeset
  1458
    if( uri8 )
hgs
parents:
diff changeset
  1459
        {
hgs
parents:
diff changeset
  1460
        CleanupStack::PushL( uri8 );
hgs
parents:
diff changeset
  1461
        aObject.InsertL( aObject.Size(), uri8->Des() );
hgs
parents:
diff changeset
  1462
        CleanupStack::PopAndDestroy(); // uri8
hgs
parents:
diff changeset
  1463
        }
hgs
parents:
diff changeset
  1464
    else
hgs
parents:
diff changeset
  1465
        {
hgs
parents:
diff changeset
  1466
        CleanupStack::PopAndDestroy(); // apMatch
hgs
parents:
diff changeset
  1467
        return KErrGeneral;    
hgs
parents:
diff changeset
  1468
        }
hgs
parents:
diff changeset
  1469
    CleanupStack::PopAndDestroy(); // iapMatch
hgs
parents:
diff changeset
  1470
	_DBG_FILE( "CNSmlDSSettingsAdapter::GetToNAPIDL() : end" );
hgs
parents:
diff changeset
  1471
	return KErrNone;
hgs
parents:
diff changeset
  1472
	}
hgs
parents:
diff changeset
  1473
hgs
parents:
diff changeset
  1474
// -------------------------------------------------------------------------------------
hgs
parents:
diff changeset
  1475
//  CNSmlDMSettingsAdapter::SetConRefL()
hgs
parents:
diff changeset
  1476
//	Set the profile IAP Id value according to given URI.
hgs
parents:
diff changeset
  1477
// -------------------------------------------------------------------------------------
hgs
parents:
diff changeset
  1478
TInt CNSmlDMSettingsAdapter::SetConRefL( const TInt aLUID, const TDesC8& aObject )
hgs
parents:
diff changeset
  1479
	{
hgs
parents:
diff changeset
  1480
    _DBG_FILE( "CNSmlDMSettingsAdapter::SetConRefL() : begin" );
hgs
parents:
diff changeset
  1481
    CNSmlDMIAPMatcher* apmatch = CNSmlDMIAPMatcher::NewL( iCallBack );
hgs
parents:
diff changeset
  1482
    CleanupStack::PushL( apmatch );
hgs
parents:
diff changeset
  1483
    TInt lIAPid = apmatch->IAPIdFromURIL( aObject ); 
hgs
parents:
diff changeset
  1484
    CleanupStack::PopAndDestroy(); // iapmatch
hgs
parents:
diff changeset
  1485
    if(aObject.Length() >0 && lIAPid == KErrNotFound) 
hgs
parents:
diff changeset
  1486
    {
hgs
parents:
diff changeset
  1487
    	return KErrGeneral;
hgs
parents:
diff changeset
  1488
    }
hgs
parents:
diff changeset
  1489
    TInt apIdResponse = SetProfileConnectionPropertyL( aLUID, lIAPid );    
hgs
parents:
diff changeset
  1490
    _DBG_FILE( "CNSmlDMSettingsAdapter::SetConRefL() : end" );
hgs
parents:
diff changeset
  1491
	return apIdResponse;
hgs
parents:
diff changeset
  1492
	}
hgs
parents:
diff changeset
  1493
hgs
parents:
diff changeset
  1494
// ------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
  1495
//  CNSmlDMSettingsAdapter::ParseUri
hgs
parents:
diff changeset
  1496
//  Resolves portnbr (separated with ':') as integer from Uri. 
hgs
parents:
diff changeset
  1497
// ------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
  1498
TInt CNSmlDMSettingsAdapter::ParseUri( const TDesC8& aRealURI, TInt& aPort )
hgs
parents:
diff changeset
  1499
	{
hgs
parents:
diff changeset
  1500
	TInt offset=0;
hgs
parents:
diff changeset
  1501
    //http:
hgs
parents:
diff changeset
  1502
	if( aRealURI.Find( KNSmlDMSettingsHTTP )==0 )//http:
hgs
parents:
diff changeset
  1503
		{
hgs
parents:
diff changeset
  1504
		offset = KNSmlDMSettingsHTTP().Length();
hgs
parents:
diff changeset
  1505
		}
hgs
parents:
diff changeset
  1506
	else if( aRealURI.Find( KNSmlDMSettingsHTTPS )==0 )//https:
hgs
parents:
diff changeset
  1507
		{
hgs
parents:
diff changeset
  1508
		offset = KNSmlDMSettingsHTTPS().Length();
hgs
parents:
diff changeset
  1509
		}
hgs
parents:
diff changeset
  1510
hgs
parents:
diff changeset
  1511
	TBool portFound=EFalse;
hgs
parents:
diff changeset
  1512
    ////123.234.345.456:80/syncml
hgs
parents:
diff changeset
  1513
	for( TInt i = offset; i < aRealURI.Length(); i++ )
hgs
parents:
diff changeset
  1514
		{
hgs
parents:
diff changeset
  1515
		if( aRealURI[i] == KNSmlDMColon )// ':'
hgs
parents:
diff changeset
  1516
			{
hgs
parents:
diff changeset
  1517
			portFound = ETrue;
hgs
parents:
diff changeset
  1518
			offset=i;
hgs
parents:
diff changeset
  1519
			}
hgs
parents:
diff changeset
  1520
		if( portFound && aRealURI[i] == KNSmlDMUriSeparator ) // '/'
hgs
parents:
diff changeset
  1521
			{
hgs
parents:
diff changeset
  1522
			aPort = GetIntObject( aRealURI.Mid( (offset + 1), (i - offset-1) ) );
hgs
parents:
diff changeset
  1523
			}
hgs
parents:
diff changeset
  1524
		else if ( portFound && i == aRealURI.Length() - 1 ) // last char
hgs
parents:
diff changeset
  1525
		    {
hgs
parents:
diff changeset
  1526
		    // port is from offset to the end
hgs
parents:
diff changeset
  1527
		    aPort = GetIntObject( aRealURI.Right( aRealURI.Length() - offset - 1 ) );
hgs
parents:
diff changeset
  1528
		    }
hgs
parents:
diff changeset
  1529
		}
hgs
parents:
diff changeset
  1530
	
hgs
parents:
diff changeset
  1531
	if( aPort != 0 )
hgs
parents:
diff changeset
  1532
		{
hgs
parents:
diff changeset
  1533
		return KErrNone;
hgs
parents:
diff changeset
  1534
		}
hgs
parents:
diff changeset
  1535
	else
hgs
parents:
diff changeset
  1536
		{
hgs
parents:
diff changeset
  1537
		return KErrNotFound;
hgs
parents:
diff changeset
  1538
		}
hgs
parents:
diff changeset
  1539
	}
hgs
parents:
diff changeset
  1540
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1541
//  CNSmlDMSettingsAdapter::OpenSyncSessionAndDSProfileL
hgs
parents:
diff changeset
  1542
//  The function opens the server session and DM profile.
hgs
parents:
diff changeset
  1543
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1544
TInt CNSmlDMSettingsAdapter::OpenSyncSessionAndProfileL( const TInt aIntLUID, 
hgs
parents:
diff changeset
  1545
                                                        TSmlOpenMode aMode )
hgs
parents:
diff changeset
  1546
    {
hgs
parents:
diff changeset
  1547
    _DBG_FILE( "CNSmlDMSettingsAdapter::OpenSyncSessionAndProfileL(): begin" );
hgs
parents:
diff changeset
  1548
    if( iSyncSessionOpen == EFalse )
hgs
parents:
diff changeset
  1549
        {
hgs
parents:
diff changeset
  1550
        iSyncSession.OpenL();
hgs
parents:
diff changeset
  1551
        iSyncSessionOpen = ETrue;
hgs
parents:
diff changeset
  1552
        }
hgs
parents:
diff changeset
  1553
    TInt trueLuid = aIntLUID + KMaxDataSyncID;
hgs
parents:
diff changeset
  1554
    TInt rValue(KErrNone);
hgs
parents:
diff changeset
  1555
    
hgs
parents:
diff changeset
  1556
    if(trueLuid!=iCurrentProfile)
hgs
parents:
diff changeset
  1557
	    {
hgs
parents:
diff changeset
  1558
	    RArray<TSmlProfileId> profileIdArray;
hgs
parents:
diff changeset
  1559
	    CleanupClosePushL( profileIdArray );
hgs
parents:
diff changeset
  1560
	    TSmlUsageType usageType = ESmlDevMan;
hgs
parents:
diff changeset
  1561
	    iSyncSession.ListProfilesL( profileIdArray, usageType );
hgs
parents:
diff changeset
  1562
	    TInt index = profileIdArray.Find( trueLuid );
hgs
parents:
diff changeset
  1563
	    CleanupStack::PopAndDestroy(); //profileIdArray
hgs
parents:
diff changeset
  1564
	    if( index == KErrNotFound )
hgs
parents:
diff changeset
  1565
	        {
hgs
parents:
diff changeset
  1566
	        return KErrNotFound;
hgs
parents:
diff changeset
  1567
	        }
hgs
parents:
diff changeset
  1568
	    TRAP( rValue, iProfile.OpenL( iSyncSession, trueLuid, aMode ) );
hgs
parents:
diff changeset
  1569
	    iCurrentProfile = trueLuid;
hgs
parents:
diff changeset
  1570
	    if( rValue != KErrNone )
hgs
parents:
diff changeset
  1571
	        {
hgs
parents:
diff changeset
  1572
	        iCurrentProfile = 0;
hgs
parents:
diff changeset
  1573
	        iProfile.Close();
hgs
parents:
diff changeset
  1574
			iSyncSession.Close();
hgs
parents:
diff changeset
  1575
	        iSyncSessionOpen = EFalse;
hgs
parents:
diff changeset
  1576
	        }
hgs
parents:
diff changeset
  1577
    	}
hgs
parents:
diff changeset
  1578
    _DBG_FILE( "CNSmlDMSettingsAdapter::OpenSyncSessionAndProfileL(): end" );
hgs
parents:
diff changeset
  1579
    return rValue;
hgs
parents:
diff changeset
  1580
    }
hgs
parents:
diff changeset
  1581
hgs
parents:
diff changeset
  1582
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1583
//  CNSmlDMSettingsAdapter::FindProfileId
hgs
parents:
diff changeset
  1584
//  Function checks if profile can be found.
hgs
parents:
diff changeset
  1585
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1586
TBool CNSmlDMSettingsAdapter::FindProfileIdL( const TInt aIntLUID )
hgs
parents:
diff changeset
  1587
	{
hgs
parents:
diff changeset
  1588
    _DBG_FILE( "CNSmlDMSettingsAdapter::FindProfileIdL(): begin" );
hgs
parents:
diff changeset
  1589
	if( iSyncSessionOpen == EFalse )
hgs
parents:
diff changeset
  1590
	    {
hgs
parents:
diff changeset
  1591
        iSyncSession.OpenL();
hgs
parents:
diff changeset
  1592
        iSyncSessionOpen = ETrue;
hgs
parents:
diff changeset
  1593
	    }
hgs
parents:
diff changeset
  1594
    
hgs
parents:
diff changeset
  1595
	RArray <TSmlProfileId> profileList;
hgs
parents:
diff changeset
  1596
    CleanupClosePushL( profileList );
hgs
parents:
diff changeset
  1597
	TSmlUsageType usageType = ESmlDevMan;		
hgs
parents:
diff changeset
  1598
	iSyncSession.ListProfilesL( profileList, usageType );
hgs
parents:
diff changeset
  1599
	if( profileList.Count() == 0 ) 
hgs
parents:
diff changeset
  1600
	    {
hgs
parents:
diff changeset
  1601
        CleanupStack::PopAndDestroy(); //profileList
hgs
parents:
diff changeset
  1602
        return EFalse;
hgs
parents:
diff changeset
  1603
	    }		
hgs
parents:
diff changeset
  1604
    TInt item = profileList.Find( aIntLUID + KMaxDataSyncID );
hgs
parents:
diff changeset
  1605
    CleanupStack::PopAndDestroy(); //profileList
hgs
parents:
diff changeset
  1606
    if( item != KErrNotFound )
hgs
parents:
diff changeset
  1607
		{
hgs
parents:
diff changeset
  1608
		_DBG_FILE( "CNSmlDMSettingsAdapter::FindProfileIdL(): end" );
hgs
parents:
diff changeset
  1609
        return ETrue;
hgs
parents:
diff changeset
  1610
		}
hgs
parents:
diff changeset
  1611
    _DBG_FILE( "CNSmlDMSettingsAdapter::FindProfileIdL(): end" );
hgs
parents:
diff changeset
  1612
	return EFalse;
hgs
parents:
diff changeset
  1613
	}
hgs
parents:
diff changeset
  1614
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1615
//  CNSmlDMSettingsAdapter::CreateNewProfileL
hgs
parents:
diff changeset
  1616
//  The function creates new DM profile via client API.
hgs
parents:
diff changeset
  1617
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1618
TInt CNSmlDMSettingsAdapter::CreateNewProfileL( TInt& aPID )
hgs
parents:
diff changeset
  1619
	{
hgs
parents:
diff changeset
  1620
    _DBG_FILE("CNSmlDMSettingsAdapter::CreateNewProfileL(): begin");
hgs
parents:
diff changeset
  1621
	if( iSyncSessionOpen == EFalse )
hgs
parents:
diff changeset
  1622
	    {
hgs
parents:
diff changeset
  1623
        iSyncSession.OpenL();
hgs
parents:
diff changeset
  1624
        iSyncSessionOpen = ETrue;
hgs
parents:
diff changeset
  1625
	    }
hgs
parents:
diff changeset
  1626
    TRAPD( value1, iProfile.CreateL( iSyncSession ) );
hgs
parents:
diff changeset
  1627
    if( value1 != KErrNone )
hgs
parents:
diff changeset
  1628
        {
hgs
parents:
diff changeset
  1629
   	    iCurrentProfile = 0;
hgs
parents:
diff changeset
  1630
        iProfile.Close();
hgs
parents:
diff changeset
  1631
        iSyncSession.Close();
hgs
parents:
diff changeset
  1632
        iSyncSessionOpen = EFalse;
hgs
parents:
diff changeset
  1633
        return value1;
hgs
parents:
diff changeset
  1634
        }
hgs
parents:
diff changeset
  1635
    
hgs
parents:
diff changeset
  1636
    TRAPD( value2, iProfile.UpdateL() );
hgs
parents:
diff changeset
  1637
    if( value2 != KErrNone )
hgs
parents:
diff changeset
  1638
        {
hgs
parents:
diff changeset
  1639
   	    iCurrentProfile = 0;
hgs
parents:
diff changeset
  1640
        iProfile.Close();
hgs
parents:
diff changeset
  1641
        iSyncSession.Close();
hgs
parents:
diff changeset
  1642
        iSyncSessionOpen = EFalse;
hgs
parents:
diff changeset
  1643
        return value2;
hgs
parents:
diff changeset
  1644
        }
hgs
parents:
diff changeset
  1645
    
hgs
parents:
diff changeset
  1646
    aPID = iProfile.Identifier();
hgs
parents:
diff changeset
  1647
    iCurrentProfile = 0;
hgs
parents:
diff changeset
  1648
    iProfile.Close();
hgs
parents:
diff changeset
  1649
    _DBG_FILE( "CNSmlDMSettingsAdapter::CreateNewProfileL(): end" );
hgs
parents:
diff changeset
  1650
    return KErrNone;
hgs
parents:
diff changeset
  1651
	}
hgs
parents:
diff changeset
  1652
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1653
//  CNSmlDMSettingsAdapter::SetProfileServerURIL()
hgs
parents:
diff changeset
  1654
//  The function sets the server URL for a profile.
hgs
parents:
diff changeset
  1655
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1656
TInt CNSmlDMSettingsAdapter::SetProfileServerURIL( const TInt aPID, 
hgs
parents:
diff changeset
  1657
                                                    const TDesC8& aObj )
hgs
parents:
diff changeset
  1658
	{
hgs
parents:
diff changeset
  1659
    _DBG_FILE( "CNSmlDMSettingsAdapter::SetProfileServerURIL(): begin" );
hgs
parents:
diff changeset
  1660
	TInt retVal = KErrNone;
hgs
parents:
diff changeset
  1661
    retVal = OpenSyncSessionAndProfileL( aPID, ESmlOpenReadWrite );
hgs
parents:
diff changeset
  1662
    if( retVal != KErrNone )
hgs
parents:
diff changeset
  1663
		{
hgs
parents:
diff changeset
  1664
	    iCurrentProfile = 0;
hgs
parents:
diff changeset
  1665
	    iProfile.Close();
hgs
parents:
diff changeset
  1666
        return retVal;	
hgs
parents:
diff changeset
  1667
		}
hgs
parents:
diff changeset
  1668
	RArray<TSmlTransportId> transportIdArray;
hgs
parents:
diff changeset
  1669
    CleanupClosePushL( transportIdArray );
hgs
parents:
diff changeset
  1670
	iProfile.ListConnectionsL( transportIdArray );
hgs
parents:
diff changeset
  1671
    if( transportIdArray.Count() == 0 )
hgs
parents:
diff changeset
  1672
	    {
hgs
parents:
diff changeset
  1673
        CleanupStack::PopAndDestroy();//transportIdArray
hgs
parents:
diff changeset
  1674
	    iCurrentProfile = 0;
hgs
parents:
diff changeset
  1675
        iProfile.Close();
hgs
parents:
diff changeset
  1676
        return KErrGeneral;
hgs
parents:
diff changeset
  1677
	    }
hgs
parents:
diff changeset
  1678
	    
hgs
parents:
diff changeset
  1679
	TInt newPort(0);
hgs
parents:
diff changeset
  1680
    
hgs
parents:
diff changeset
  1681
    RSyncMLConnection conn;
hgs
parents:
diff changeset
  1682
    CleanupClosePushL( conn );
hgs
parents:
diff changeset
  1683
    conn.OpenL( iProfile, transportIdArray[0] );
hgs
parents:
diff changeset
  1684
hgs
parents:
diff changeset
  1685
    if(ParseUri(aObj,newPort)==KErrNotFound)
hgs
parents:
diff changeset
  1686
        {
hgs
parents:
diff changeset
  1687
        TInt port = 0;
hgs
parents:
diff changeset
  1688
        ParseUri(conn.ServerURI(),port);
hgs
parents:
diff changeset
  1689
        if(port==0)
hgs
parents:
diff changeset
  1690
        	{
hgs
parents:
diff changeset
  1691
        	port = 80;
hgs
parents:
diff changeset
  1692
        	}
hgs
parents:
diff changeset
  1693
           	
hgs
parents:
diff changeset
  1694
       	TBuf8<5> buf;
hgs
parents:
diff changeset
  1695
    	buf.Num( port );
hgs
parents:
diff changeset
  1696
        	
hgs
parents:
diff changeset
  1697
        TInt totalSize = aObj.Length() + buf.Length() + 1;
hgs
parents:
diff changeset
  1698
        HBufC8* newServerURI = HBufC8::NewLC( totalSize );
hgs
parents:
diff changeset
  1699
        SetPortNrToAddrStr( aObj, newServerURI, buf );
hgs
parents:
diff changeset
  1700
        conn.SetServerURIL( *newServerURI );
hgs
parents:
diff changeset
  1701
        conn.UpdateL();
hgs
parents:
diff changeset
  1702
    	CleanupStack::PopAndDestroy( newServerURI ); 
hgs
parents:
diff changeset
  1703
        }
hgs
parents:
diff changeset
  1704
    else
hgs
parents:
diff changeset
  1705
        {
hgs
parents:
diff changeset
  1706
        conn.SetServerURIL( aObj );
hgs
parents:
diff changeset
  1707
        conn.UpdateL();
hgs
parents:
diff changeset
  1708
        }
hgs
parents:
diff changeset
  1709
	
hgs
parents:
diff changeset
  1710
hgs
parents:
diff changeset
  1711
	iProfile.UpdateL();
hgs
parents:
diff changeset
  1712
	
hgs
parents:
diff changeset
  1713
	CleanupStack::PopAndDestroy( 2 ); //transportIdArray, conn
hgs
parents:
diff changeset
  1714
    iCurrentProfile = 0;
hgs
parents:
diff changeset
  1715
	iProfile.Close();
hgs
parents:
diff changeset
  1716
    _DBG_FILE( "CNSmlDMSettingsAdapter::SetProfileServerURIL(): end" );
hgs
parents:
diff changeset
  1717
	return KErrNone;
hgs
parents:
diff changeset
  1718
	}
hgs
parents:
diff changeset
  1719
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1720
//  CNSmlDMSettingsAdapter::SetProfileDisplayNameL()
hgs
parents:
diff changeset
  1721
//  The function sets the display name for a profile.
hgs
parents:
diff changeset
  1722
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1723
TInt CNSmlDMSettingsAdapter::SetProfileDisplayNameL( const TInt aPID, 
hgs
parents:
diff changeset
  1724
                                                        const TDesC8& aObj )
hgs
parents:
diff changeset
  1725
	{
hgs
parents:
diff changeset
  1726
    _DBG_FILE( "CNSmlDMSettingsAdapter::SetProfileDisplayNameL(): begin" );
hgs
parents:
diff changeset
  1727
	TInt retVal = KErrNone;
hgs
parents:
diff changeset
  1728
    retVal = OpenSyncSessionAndProfileL( aPID, ESmlOpenReadWrite );
hgs
parents:
diff changeset
  1729
    if( retVal != KErrNone )
hgs
parents:
diff changeset
  1730
		{
hgs
parents:
diff changeset
  1731
	    iCurrentProfile = 0;
hgs
parents:
diff changeset
  1732
		iProfile.Close();
hgs
parents:
diff changeset
  1733
        return retVal;	
hgs
parents:
diff changeset
  1734
		}
hgs
parents:
diff changeset
  1735
    iProfile.SetDisplayNameL( ConvertTo16LC( aObj ) );
hgs
parents:
diff changeset
  1736
    iProfile.UpdateL();
hgs
parents:
diff changeset
  1737
	CleanupStack::PopAndDestroy(); //ConvertTo16LC
hgs
parents:
diff changeset
  1738
    iCurrentProfile = 0;
hgs
parents:
diff changeset
  1739
    iProfile.Close();
hgs
parents:
diff changeset
  1740
    _DBG_FILE( "CNSmlDMSettingsAdapter::SetProfileDisplayNameL(): end" );
hgs
parents:
diff changeset
  1741
	return KErrNone;
hgs
parents:
diff changeset
  1742
	}
hgs
parents:
diff changeset
  1743
hgs
parents:
diff changeset
  1744
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1745
//  CNSmlDMSettingsAdapter::SetProfileUserNameL
hgs
parents:
diff changeset
  1746
//  The function sets the profile user name.
hgs
parents:
diff changeset
  1747
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1748
TInt CNSmlDMSettingsAdapter::SetProfileUserNameL( const TInt aPID, 
hgs
parents:
diff changeset
  1749
                                                    const TDesC8& aObj )
hgs
parents:
diff changeset
  1750
	{
hgs
parents:
diff changeset
  1751
    _DBG_FILE( "CNSmlDMSettingsAdapter::SetProfileUserNameL(): begin" );
hgs
parents:
diff changeset
  1752
	TInt retVal = OpenSyncSessionAndProfileL( aPID, ESmlOpenReadWrite );
hgs
parents:
diff changeset
  1753
    if( retVal != KErrNone )
hgs
parents:
diff changeset
  1754
		{
hgs
parents:
diff changeset
  1755
	    iCurrentProfile = 0;
hgs
parents:
diff changeset
  1756
		iProfile.Close();
hgs
parents:
diff changeset
  1757
        return KErrGeneral;	
hgs
parents:
diff changeset
  1758
		}
hgs
parents:
diff changeset
  1759
    iProfile.SetUserNameL( aObj );
hgs
parents:
diff changeset
  1760
    iProfile.UpdateL();
hgs
parents:
diff changeset
  1761
    iCurrentProfile = 0;
hgs
parents:
diff changeset
  1762
    iProfile.Close();
hgs
parents:
diff changeset
  1763
    _DBG_FILE( "CNSmlDMSettingsAdapter::SetProfileUserNameL(): end" );
hgs
parents:
diff changeset
  1764
	return KErrNone;
hgs
parents:
diff changeset
  1765
	}
hgs
parents:
diff changeset
  1766
hgs
parents:
diff changeset
  1767
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1768
//  CNSmlDMSettingsAdapter::SetProfileProtocolVersionL
hgs
parents:
diff changeset
  1769
//  The function sets the protocol version to be supported.
hgs
parents:
diff changeset
  1770
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1771
TInt CNSmlDMSettingsAdapter::SetProfileProtocolVersionL( const TInt aPID, 
hgs
parents:
diff changeset
  1772
                                                            const TDesC8& )
hgs
parents:
diff changeset
  1773
	{
hgs
parents:
diff changeset
  1774
    _DBG_FILE( "CNSmlDMSettingsAdapter::SetProfileProtocolVersionL(): begin" );
hgs
parents:
diff changeset
  1775
	TInt retVal = KErrNone;
hgs
parents:
diff changeset
  1776
    retVal = OpenSyncSessionAndProfileL( aPID, ESmlOpenReadWrite );
hgs
parents:
diff changeset
  1777
    if( retVal != KErrNone )
hgs
parents:
diff changeset
  1778
		{
hgs
parents:
diff changeset
  1779
	    iCurrentProfile = 0;
hgs
parents:
diff changeset
  1780
		iProfile.Close();
hgs
parents:
diff changeset
  1781
        return retVal;	
hgs
parents:
diff changeset
  1782
		}
hgs
parents:
diff changeset
  1783
	//The syncSession to Sync server is open.
hgs
parents:
diff changeset
  1784
    TSmlProtocolVersion protocol = ESmlVersion1_2;
hgs
parents:
diff changeset
  1785
    iProfile.SetProtocolVersionL( protocol );
hgs
parents:
diff changeset
  1786
	TRAPD( iError, iProfile.UpdateL() );
hgs
parents:
diff changeset
  1787
    iCurrentProfile = 0;
hgs
parents:
diff changeset
  1788
    iProfile.Close();
hgs
parents:
diff changeset
  1789
    _DBG_FILE( "CNSmlDMSettingsAdapter::SetProfileProtocolVersionL(): begin" );
hgs
parents:
diff changeset
  1790
	return iError;
hgs
parents:
diff changeset
  1791
	}
hgs
parents:
diff changeset
  1792
hgs
parents:
diff changeset
  1793
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1794
//  CNSmlDMSettingsAdapter::SetProfileServerIdL
hgs
parents:
diff changeset
  1795
//  The function sets the profile ServerId value.
hgs
parents:
diff changeset
  1796
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1797
TInt CNSmlDMSettingsAdapter::SetProfileServerIdL( const TInt aPID, 
hgs
parents:
diff changeset
  1798
                                                    const TDesC8& aObj )
hgs
parents:
diff changeset
  1799
	{
hgs
parents:
diff changeset
  1800
    _DBG_FILE("CNSmlDMSettingsAdapter::SetProfileServerIdL(): begin");
hgs
parents:
diff changeset
  1801
	TInt retVal = OpenSyncSessionAndProfileL( aPID, ESmlOpenReadWrite );
hgs
parents:
diff changeset
  1802
    if( retVal != KErrNone )
hgs
parents:
diff changeset
  1803
		{
hgs
parents:
diff changeset
  1804
	    iCurrentProfile = 0;
hgs
parents:
diff changeset
  1805
		iProfile.Close();
hgs
parents:
diff changeset
  1806
        return KErrGeneral;	
hgs
parents:
diff changeset
  1807
		}
hgs
parents:
diff changeset
  1808
	iProfile.SetServerIdL( aObj );
hgs
parents:
diff changeset
  1809
    TRAP(retVal,iProfile.UpdateL() );
hgs
parents:
diff changeset
  1810
    iCurrentProfile = 0;
hgs
parents:
diff changeset
  1811
    iProfile.Close();
hgs
parents:
diff changeset
  1812
    _DBG_FILE( "CNSmlDMSettingsAdapter::SetProfileServerIdL(): end" );
hgs
parents:
diff changeset
  1813
	return retVal;
hgs
parents:
diff changeset
  1814
	}
hgs
parents:
diff changeset
  1815
hgs
parents:
diff changeset
  1816
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1817
//  CNSmlDMSettingsAdapter::SetProfileServerPasswordL
hgs
parents:
diff changeset
  1818
//  The function sets the profile server password.
hgs
parents:
diff changeset
  1819
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1820
TInt CNSmlDMSettingsAdapter::SetProfileServerPasswordL( const TInt aPID, 
hgs
parents:
diff changeset
  1821
                                                        const TDesC8& aObj )
hgs
parents:
diff changeset
  1822
	{
hgs
parents:
diff changeset
  1823
    _DBG_FILE( "CNSmlDMSettingsAdapter::SetProfileServerPasswordL(): begin" );
hgs
parents:
diff changeset
  1824
	TInt retVal = OpenSyncSessionAndProfileL( aPID, ESmlOpenReadWrite );
hgs
parents:
diff changeset
  1825
    if( retVal != KErrNone )
hgs
parents:
diff changeset
  1826
		{
hgs
parents:
diff changeset
  1827
	    iCurrentProfile = 0;
hgs
parents:
diff changeset
  1828
		iProfile.Close();
hgs
parents:
diff changeset
  1829
        return KErrGeneral;
hgs
parents:
diff changeset
  1830
		}
hgs
parents:
diff changeset
  1831
	iProfile.SetServerPasswordL( aObj );
hgs
parents:
diff changeset
  1832
    iProfile.UpdateL();
hgs
parents:
diff changeset
  1833
    iCurrentProfile = 0;
hgs
parents:
diff changeset
  1834
    iProfile.Close();
hgs
parents:
diff changeset
  1835
    _DBG_FILE( "CNSmlDMSettingsAdapter::SetProfileServerPasswordL(): end" );
hgs
parents:
diff changeset
  1836
	return KErrNone;
hgs
parents:
diff changeset
  1837
	}
hgs
parents:
diff changeset
  1838
hgs
parents:
diff changeset
  1839
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1840
//  CNSmlDMSettingsAdapter::SetProfilePasswordL
hgs
parents:
diff changeset
  1841
//  The function sets the profile password.
hgs
parents:
diff changeset
  1842
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1843
TInt CNSmlDMSettingsAdapter::SetProfilePasswordL( const TInt aPID, 
hgs
parents:
diff changeset
  1844
                                                    const TDesC8& aObj )
hgs
parents:
diff changeset
  1845
	{
hgs
parents:
diff changeset
  1846
    _DBG_FILE( "CNSmlDMSettingsAdapter::SetProfilePasswordL(): begin" );
hgs
parents:
diff changeset
  1847
	TInt retVal = KErrNone;
hgs
parents:
diff changeset
  1848
    retVal = OpenSyncSessionAndProfileL( aPID, ESmlOpenReadWrite );
hgs
parents:
diff changeset
  1849
    if( retVal != KErrNone )
hgs
parents:
diff changeset
  1850
		{
hgs
parents:
diff changeset
  1851
	    iCurrentProfile = 0;
hgs
parents:
diff changeset
  1852
		iProfile.Close();
hgs
parents:
diff changeset
  1853
        return retVal;	
hgs
parents:
diff changeset
  1854
		}
hgs
parents:
diff changeset
  1855
	iProfile.SetPasswordL( aObj );
hgs
parents:
diff changeset
  1856
    iProfile.UpdateL();
hgs
parents:
diff changeset
  1857
    iCurrentProfile = 0;
hgs
parents:
diff changeset
  1858
    iProfile.Close();
hgs
parents:
diff changeset
  1859
    _DBG_FILE( "CNSmlDMSettingsAdapter::SetProfilePasswordL(): begin" );
hgs
parents:
diff changeset
  1860
	return KErrNone;
hgs
parents:
diff changeset
  1861
	}
hgs
parents:
diff changeset
  1862
hgs
parents:
diff changeset
  1863
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1864
//  CNSmlDMSettingsAdapter::SetProfileConnectionPropertyL
hgs
parents:
diff changeset
  1865
//  This function sets the profile IAP id.
hgs
parents:
diff changeset
  1866
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1867
TInt CNSmlDMSettingsAdapter::SetProfileConnectionPropertyL( const TInt aLUID, 
hgs
parents:
diff changeset
  1868
                                                            const TInt aIAPid )
hgs
parents:
diff changeset
  1869
	{
hgs
parents:
diff changeset
  1870
    TInt retVal = OpenSyncSessionAndProfileL( aLUID, ESmlOpenReadWrite );
hgs
parents:
diff changeset
  1871
    if( retVal != KErrNone )
hgs
parents:
diff changeset
  1872
		{
hgs
parents:
diff changeset
  1873
	    iCurrentProfile = 0;
hgs
parents:
diff changeset
  1874
		iProfile.Close();
hgs
parents:
diff changeset
  1875
        return retVal;	
hgs
parents:
diff changeset
  1876
		}
hgs
parents:
diff changeset
  1877
    RArray<TSmlTransportId> connIdArray;
hgs
parents:
diff changeset
  1878
    CleanupClosePushL( connIdArray );
hgs
parents:
diff changeset
  1879
    iProfile.ListConnectionsL( connIdArray );
hgs
parents:
diff changeset
  1880
    if( connIdArray.Count() == 1 )
hgs
parents:
diff changeset
  1881
        {
hgs
parents:
diff changeset
  1882
        RSyncMLTransport transport;
hgs
parents:
diff changeset
  1883
        CleanupClosePushL( transport );
hgs
parents:
diff changeset
  1884
	    transport.OpenL( iSyncSession, connIdArray[0] );
hgs
parents:
diff changeset
  1885
	    const CSyncMLTransportPropertiesArray& props = transport.Properties();
hgs
parents:
diff changeset
  1886
	    TInt index = props.Find( KNSmlIAPId );
hgs
parents:
diff changeset
  1887
        if( index > 0 )
hgs
parents:
diff changeset
  1888
            {
hgs
parents:
diff changeset
  1889
            RSyncMLConnection conn;
hgs
parents:
diff changeset
  1890
            CleanupClosePushL( conn );
hgs
parents:
diff changeset
  1891
	        conn.OpenL( iProfile, connIdArray[0] );
hgs
parents:
diff changeset
  1892
            HBufC8* apIdBuffer = HBufC8::NewLC( 4 );
hgs
parents:
diff changeset
  1893
	        TPtr8 ptrIapIdBuf = apIdBuffer->Des();
hgs
parents:
diff changeset
  1894
        	ptrIapIdBuf.Num( aIAPid );
hgs
parents:
diff changeset
  1895
            conn.SetPropertyL( KNSmlIAPId, ptrIapIdBuf );
hgs
parents:
diff changeset
  1896
            conn.UpdateL();
hgs
parents:
diff changeset
  1897
            CleanupStack::PopAndDestroy( 2 ); //conn, apIdBuffer
hgs
parents:
diff changeset
  1898
            retVal = KErrNone;
hgs
parents:
diff changeset
  1899
            }
hgs
parents:
diff changeset
  1900
        else
hgs
parents:
diff changeset
  1901
            {
hgs
parents:
diff changeset
  1902
            retVal = KErrNotFound;
hgs
parents:
diff changeset
  1903
            }
hgs
parents:
diff changeset
  1904
        CleanupStack::PopAndDestroy( 1 ); //transport
hgs
parents:
diff changeset
  1905
        }
hgs
parents:
diff changeset
  1906
    else
hgs
parents:
diff changeset
  1907
        {
hgs
parents:
diff changeset
  1908
        retVal = KErrNotFound;
hgs
parents:
diff changeset
  1909
        }
hgs
parents:
diff changeset
  1910
    iCurrentProfile = 0;
hgs
parents:
diff changeset
  1911
    iProfile.Close();
hgs
parents:
diff changeset
  1912
    CleanupStack::PopAndDestroy(); //connIdArray
hgs
parents:
diff changeset
  1913
    return retVal;
hgs
parents:
diff changeset
  1914
	}
hgs
parents:
diff changeset
  1915
hgs
parents:
diff changeset
  1916
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1917
//  CNSmlDMSettingsAdapter::DeleteProfileL
hgs
parents:
diff changeset
  1918
//  The function deleted the profile from DM database.
hgs
parents:
diff changeset
  1919
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1920
TInt CNSmlDMSettingsAdapter::DeleteProfileL( const TInt aPID )
hgs
parents:
diff changeset
  1921
	{
hgs
parents:
diff changeset
  1922
    _DBG_FILE( "CNSmlDMSettingsAdapter::DeleteProfileL(): begin" );
hgs
parents:
diff changeset
  1923
	if( iSyncSessionOpen == EFalse )
hgs
parents:
diff changeset
  1924
	    {
hgs
parents:
diff changeset
  1925
        iSyncSession.OpenL();
hgs
parents:
diff changeset
  1926
        iSyncSessionOpen = ETrue;
hgs
parents:
diff changeset
  1927
	    }
hgs
parents:
diff changeset
  1928
    
hgs
parents:
diff changeset
  1929
	RArray<TSmlProfileId> profileIdArray;
hgs
parents:
diff changeset
  1930
    CleanupClosePushL( profileIdArray );
hgs
parents:
diff changeset
  1931
	TSmlUsageType usageType = ESmlDevMan;
hgs
parents:
diff changeset
  1932
	iSyncSession.ListProfilesL( profileIdArray, usageType );
hgs
parents:
diff changeset
  1933
	TInt index = profileIdArray.Find( aPID );
hgs
parents:
diff changeset
  1934
	if ( index == KErrNotFound )
hgs
parents:
diff changeset
  1935
		{
hgs
parents:
diff changeset
  1936
        //No match
hgs
parents:
diff changeset
  1937
        CleanupStack::PopAndDestroy();//profileIdArray
hgs
parents:
diff changeset
  1938
		return KErrNotFound;		
hgs
parents:
diff changeset
  1939
		}
hgs
parents:
diff changeset
  1940
    iSyncSession.DeleteProfileL( aPID );
hgs
parents:
diff changeset
  1941
    iSyncSession.Close();
hgs
parents:
diff changeset
  1942
    iSyncSessionOpen = EFalse;
hgs
parents:
diff changeset
  1943
    CleanupStack::PopAndDestroy();//profileIdArray
hgs
parents:
diff changeset
  1944
    _DBG_FILE( "CNSmlDMSettingsAdapter::DeleteProfileL(): end" );
hgs
parents:
diff changeset
  1945
	return KErrNone;
hgs
parents:
diff changeset
  1946
	}
hgs
parents:
diff changeset
  1947
hgs
parents:
diff changeset
  1948
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1949
//  CNSmlDMSettingsAdapter::GetObjectL
hgs
parents:
diff changeset
  1950
//  The function checks which leaf data to be fetched.
hgs
parents:
diff changeset
  1951
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1952
TInt CNSmlDMSettingsAdapter::GetObjectL( TInt aLUID, TNSmlDMProfileData aDMField, 
hgs
parents:
diff changeset
  1953
                                            CBufBase& aObject )
hgs
parents:
diff changeset
  1954
    {
hgs
parents:
diff changeset
  1955
    TInt retVal = OpenSyncSessionAndProfileL( aLUID, ESmlOpenRead );
hgs
parents:
diff changeset
  1956
    if( retVal != KErrNone )
hgs
parents:
diff changeset
  1957
		{
hgs
parents:
diff changeset
  1958
	    iCurrentProfile = 0;
hgs
parents:
diff changeset
  1959
		iProfile.Close();
hgs
parents:
diff changeset
  1960
        return retVal;	
hgs
parents:
diff changeset
  1961
		}
hgs
parents:
diff changeset
  1962
    switch ( aDMField )
hgs
parents:
diff changeset
  1963
		{
hgs
parents:
diff changeset
  1964
		case ( EProfileName ) :
hgs
parents:
diff changeset
  1965
			{
hgs
parents:
diff changeset
  1966
            GetProfileNameL( aObject );
hgs
parents:
diff changeset
  1967
            }
hgs
parents:
diff changeset
  1968
		break;
hgs
parents:
diff changeset
  1969
		
hgs
parents:
diff changeset
  1970
		case ( EProfileDMServerUsername ) :
hgs
parents:
diff changeset
  1971
			{
hgs
parents:
diff changeset
  1972
			GetProfileUserNameL( aObject );
hgs
parents:
diff changeset
  1973
            }
hgs
parents:
diff changeset
  1974
		break;
hgs
parents:
diff changeset
  1975
hgs
parents:
diff changeset
  1976
		case ( EProfileURL ) :
hgs
parents:
diff changeset
  1977
			{
hgs
parents:
diff changeset
  1978
			GetProfileServerURLL( aObject );
hgs
parents:
diff changeset
  1979
			TInt port(0);
hgs
parents:
diff changeset
  1980
			if(ParseUri(aObject.Ptr(0),port)==KErrNone)
hgs
parents:
diff changeset
  1981
			    {
hgs
parents:
diff changeset
  1982
			    HBufC8* addr = aObject.Ptr(0).AllocLC();
hgs
parents:
diff changeset
  1983
			    aObject.Reset();
hgs
parents:
diff changeset
  1984
			    TInt portStart = addr->LocateReverse(KNSmlDMColon);
hgs
parents:
diff changeset
  1985
			    aObject.InsertL(aObject.Size(),addr->Left(portStart));
hgs
parents:
diff changeset
  1986
			    
hgs
parents:
diff changeset
  1987
			    TInt portLen=addr->Mid(portStart).Locate(KNSmlDMUriSeparator);
hgs
parents:
diff changeset
  1988
			    if(portLen!=KErrNotFound)
hgs
parents:
diff changeset
  1989
			        {
hgs
parents:
diff changeset
  1990
			        aObject.InsertL(aObject.Size(),addr->Mid(portStart+portLen));
hgs
parents:
diff changeset
  1991
			        }
hgs
parents:
diff changeset
  1992
			    	    			    
hgs
parents:
diff changeset
  1993
			    CleanupStack::PopAndDestroy(); //addr
hgs
parents:
diff changeset
  1994
			    }
hgs
parents:
diff changeset
  1995
            }
hgs
parents:
diff changeset
  1996
		break;
hgs
parents:
diff changeset
  1997
hgs
parents:
diff changeset
  1998
		case ( EServerId ) :
hgs
parents:
diff changeset
  1999
			{
hgs
parents:
diff changeset
  2000
            GetServerIdL( aObject );
hgs
parents:
diff changeset
  2001
            }
hgs
parents:
diff changeset
  2002
		break;
hgs
parents:
diff changeset
  2003
hgs
parents:
diff changeset
  2004
		case ( EProfileIAPId ) :
hgs
parents:
diff changeset
  2005
			{
hgs
parents:
diff changeset
  2006
		    retVal = GetConRefL( aObject );
hgs
parents:
diff changeset
  2007
            }
hgs
parents:
diff changeset
  2008
		break;
hgs
parents:
diff changeset
  2009
hgs
parents:
diff changeset
  2010
		case ( EProfilePort ) :
hgs
parents:
diff changeset
  2011
            {
hgs
parents:
diff changeset
  2012
            GetProfileServerURLL( aObject );
hgs
parents:
diff changeset
  2013
            if ( aObject.Size() == 0 )
hgs
parents:
diff changeset
  2014
                {
hgs
parents:
diff changeset
  2015
                retVal = KErrNone;
hgs
parents:
diff changeset
  2016
                break;
hgs
parents:
diff changeset
  2017
                }
hgs
parents:
diff changeset
  2018
            GetProfilePortNumberL ( aObject );
hgs
parents:
diff changeset
  2019
            }
hgs
parents:
diff changeset
  2020
        break;
hgs
parents:
diff changeset
  2021
        
hgs
parents:
diff changeset
  2022
   		case ( EProfileDMServerPassword ) :
hgs
parents:
diff changeset
  2023
			{
hgs
parents:
diff changeset
  2024
			retVal = EInvalidObject;
hgs
parents:
diff changeset
  2025
            }
hgs
parents:
diff changeset
  2026
		break;
hgs
parents:
diff changeset
  2027
hgs
parents:
diff changeset
  2028
		case ( ESharedSecret ) :
hgs
parents:
diff changeset
  2029
            {//ServerPW
hgs
parents:
diff changeset
  2030
            retVal = EInvalidObject;
hgs
parents:
diff changeset
  2031
            }
hgs
parents:
diff changeset
  2032
        break;
hgs
parents:
diff changeset
  2033
        case ( EProfileId ) :
hgs
parents:
diff changeset
  2034
        break;
hgs
parents:
diff changeset
  2035
		case ( EProfileMediumType ) :
hgs
parents:
diff changeset
  2036
            {
hgs
parents:
diff changeset
  2037
            retVal = GetProfileConnectiontypeL( aObject );
hgs
parents:
diff changeset
  2038
            }
hgs
parents:
diff changeset
  2039
        break;
hgs
parents:
diff changeset
  2040
hgs
parents:
diff changeset
  2041
        case ( EAuthenticationRequired ) :
hgs
parents:
diff changeset
  2042
        case ( EServerNonce ) :
hgs
parents:
diff changeset
  2043
        case ( EClientNonce ) :
hgs
parents:
diff changeset
  2044
            {
hgs
parents:
diff changeset
  2045
            retVal = GetDMAuthInfoL( aLUID, aDMField, aObject );
hgs
parents:
diff changeset
  2046
            }
hgs
parents:
diff changeset
  2047
        break;
hgs
parents:
diff changeset
  2048
		
hgs
parents:
diff changeset
  2049
		default:
hgs
parents:
diff changeset
  2050
			{
hgs
parents:
diff changeset
  2051
			User::Panic( KNSmlIndexOutOfBoundStr, KNSmlPanicIndexOutOfBound );
hgs
parents:
diff changeset
  2052
			}
hgs
parents:
diff changeset
  2053
		}
hgs
parents:
diff changeset
  2054
    iCurrentProfile = 0;
hgs
parents:
diff changeset
  2055
    iProfile.Close();
hgs
parents:
diff changeset
  2056
    return retVal;
hgs
parents:
diff changeset
  2057
    }
hgs
parents:
diff changeset
  2058
hgs
parents:
diff changeset
  2059
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2060
//  CNSmlDMSettingsAdapter::SetProfileConnectionPortNrL()
hgs
parents:
diff changeset
  2061
//  The function sets the profile port number.
hgs
parents:
diff changeset
  2062
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2063
TInt CNSmlDMSettingsAdapter::SetProfileConnectionPortNrL( const TInt aLUID, 
hgs
parents:
diff changeset
  2064
                                                            const TDesC8& aPort )
hgs
parents:
diff changeset
  2065
    {
hgs
parents:
diff changeset
  2066
    _DBG_FILE( "CNSmlDMSettingsAdapter::SetProfileConnectionPortNrL(): begin" );
hgs
parents:
diff changeset
  2067
    TInt retVal = KErrNone;
hgs
parents:
diff changeset
  2068
    
hgs
parents:
diff changeset
  2069
    if( iPortNbr )
hgs
parents:
diff changeset
  2070
        {
hgs
parents:
diff changeset
  2071
        delete iPortNbr;
hgs
parents:
diff changeset
  2072
        iPortNbr = NULL;
hgs
parents:
diff changeset
  2073
        }
hgs
parents:
diff changeset
  2074
    iPortNbr = HBufC8::NewL( aPort.Length() );
hgs
parents:
diff changeset
  2075
    TPtr8 newPortNbr = iPortNbr->Des();
hgs
parents:
diff changeset
  2076
    newPortNbr.Append( aPort );
hgs
parents:
diff changeset
  2077
        
hgs
parents:
diff changeset
  2078
    retVal = OpenSyncSessionAndProfileL( aLUID, ESmlOpenReadWrite );
hgs
parents:
diff changeset
  2079
    if( retVal != KErrNone )
hgs
parents:
diff changeset
  2080
		{
hgs
parents:
diff changeset
  2081
	    iCurrentProfile = 0;
hgs
parents:
diff changeset
  2082
		iProfile.Close();
hgs
parents:
diff changeset
  2083
        _DBG_FILE( "CNSmlDMSettingsAdapter::SetProfileConnectionPortNrL(): end" );
hgs
parents:
diff changeset
  2084
        return retVal;	
hgs
parents:
diff changeset
  2085
		}
hgs
parents:
diff changeset
  2086
    
hgs
parents:
diff changeset
  2087
    RArray<TSmlTransportId> transportIdArray;
hgs
parents:
diff changeset
  2088
    CleanupClosePushL( transportIdArray );
hgs
parents:
diff changeset
  2089
    iProfile.ListConnectionsL( transportIdArray );
hgs
parents:
diff changeset
  2090
    
hgs
parents:
diff changeset
  2091
    RSyncMLConnection conn;
hgs
parents:
diff changeset
  2092
    CleanupClosePushL( conn );
hgs
parents:
diff changeset
  2093
    conn.OpenL( iProfile, transportIdArray[0] );
hgs
parents:
diff changeset
  2094
        
hgs
parents:
diff changeset
  2095
    HBufC8* serverURI = conn.ServerURI().AllocLC();
hgs
parents:
diff changeset
  2096
    if( serverURI->Length() == 0 )
hgs
parents:
diff changeset
  2097
        {
hgs
parents:
diff changeset
  2098
	    iCurrentProfile = 0;
hgs
parents:
diff changeset
  2099
        iProfile.Close();
hgs
parents:
diff changeset
  2100
        CleanupStack::PopAndDestroy( 3 ); //transportIdArray, conn, serverURI
hgs
parents:
diff changeset
  2101
        _DBG_FILE( "CNSmlDMSettingsAdapter::SetProfileConnectionPortNrL(): end" );
hgs
parents:
diff changeset
  2102
        return retVal;
hgs
parents:
diff changeset
  2103
	    }
hgs
parents:
diff changeset
  2104
    TInt totalSize = serverURI->Size() + newPortNbr.Size() + 1;
hgs
parents:
diff changeset
  2105
    HBufC8* newServerURI = HBufC8::NewL( totalSize );
hgs
parents:
diff changeset
  2106
    CleanupStack::PushL( newServerURI );
hgs
parents:
diff changeset
  2107
    SetPortNrToAddrStr( *serverURI, newServerURI, newPortNbr );
hgs
parents:
diff changeset
  2108
    
hgs
parents:
diff changeset
  2109
    conn.SetServerURIL( *newServerURI );
hgs
parents:
diff changeset
  2110
    conn.UpdateL();
hgs
parents:
diff changeset
  2111
    
hgs
parents:
diff changeset
  2112
    CleanupStack::PopAndDestroy( 4 ); //transportIdArray, conn, serverURI, newServerURI
hgs
parents:
diff changeset
  2113
    iCurrentProfile = 0;
hgs
parents:
diff changeset
  2114
	iProfile.Close();
hgs
parents:
diff changeset
  2115
    _DBG_FILE( "CNSmlDMSettingsAdapter::SetProfileConnectionPortNrL(): end" );
hgs
parents:
diff changeset
  2116
    return retVal;	
hgs
parents:
diff changeset
  2117
    }
hgs
parents:
diff changeset
  2118
hgs
parents:
diff changeset
  2119
// ------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
  2120
//  CNSmlDMSettingsAdapter::SetPortNrToAddrStr
hgs
parents:
diff changeset
  2121
//  Sets a portnbr (separated with ':') to profile server URI. 
hgs
parents:
diff changeset
  2122
// ------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
  2123
void CNSmlDMSettingsAdapter::SetPortNrToAddrStr( const TDesC8& aSrvURI, HBufC8* aNewURI, 
hgs
parents:
diff changeset
  2124
                                                    const TDesC8& aPort )
hgs
parents:
diff changeset
  2125
	{
hgs
parents:
diff changeset
  2126
	TInt offset=0;
hgs
parents:
diff changeset
  2127
    if( aSrvURI.Find( KNSmlDMSettingsHTTP ) == 0 )//http://
hgs
parents:
diff changeset
  2128
		{
hgs
parents:
diff changeset
  2129
		offset = KNSmlDMSettingsHTTP().Length();
hgs
parents:
diff changeset
  2130
		}
hgs
parents:
diff changeset
  2131
	else if( aSrvURI.Find( KNSmlDMSettingsHTTPS ) == 0 )//https://
hgs
parents:
diff changeset
  2132
		{
hgs
parents:
diff changeset
  2133
		offset = KNSmlDMSettingsHTTPS().Length();
hgs
parents:
diff changeset
  2134
		}
hgs
parents:
diff changeset
  2135
	TInt portStart = -1;
hgs
parents:
diff changeset
  2136
    TInt separatorPos = aSrvURI.Length();
hgs
parents:
diff changeset
  2137
    TInt i = 0;
hgs
parents:
diff changeset
  2138
    for( i = offset; i < aSrvURI.Length(); i++ )
hgs
parents:
diff changeset
  2139
		{
hgs
parents:
diff changeset
  2140
		if( aSrvURI[i] == KNSmlDMColon )// ':'
hgs
parents:
diff changeset
  2141
			{
hgs
parents:
diff changeset
  2142
			portStart = i;
hgs
parents:
diff changeset
  2143
			}
hgs
parents:
diff changeset
  2144
		if( aSrvURI[i] == KNSmlDMUriSeparator )// '/'
hgs
parents:
diff changeset
  2145
			{
hgs
parents:
diff changeset
  2146
            separatorPos = i;
hgs
parents:
diff changeset
  2147
			break;
hgs
parents:
diff changeset
  2148
			}
hgs
parents:
diff changeset
  2149
		}
hgs
parents:
diff changeset
  2150
	
hgs
parents:
diff changeset
  2151
    TPtr8 ptrNewSrvURI = aNewURI->Des();
hgs
parents:
diff changeset
  2152
    if( portStart < 0 && separatorPos > 0 && iLeafType != EDMDelete )
hgs
parents:
diff changeset
  2153
        {
hgs
parents:
diff changeset
  2154
        ptrNewSrvURI.Append( aSrvURI.Left( separatorPos ) );//http://123.234.345.456
hgs
parents:
diff changeset
  2155
        ptrNewSrvURI.Append( KNSmlDMColon );
hgs
parents:
diff changeset
  2156
        ptrNewSrvURI.Append( aPort );
hgs
parents:
diff changeset
  2157
        ptrNewSrvURI.Append( aSrvURI.Right( aSrvURI.Length() - separatorPos ) );
hgs
parents:
diff changeset
  2158
        }
hgs
parents:
diff changeset
  2159
    else if ( portStart > 0 && separatorPos > 0 && iLeafType != EDMDelete )
hgs
parents:
diff changeset
  2160
        {
hgs
parents:
diff changeset
  2161
        ptrNewSrvURI.Append( aSrvURI.Left( portStart + 1 ) );//123.234.345.456:
hgs
parents:
diff changeset
  2162
        ptrNewSrvURI.Append( aPort );//123.234.345.456:xx(x)
hgs
parents:
diff changeset
  2163
        ptrNewSrvURI.Append( aSrvURI.Right( aSrvURI.Length() - separatorPos ) );
hgs
parents:
diff changeset
  2164
        }
hgs
parents:
diff changeset
  2165
    else if ( portStart > 0 &&  iLeafType == EDMDelete ) //delete port number from uri
hgs
parents:
diff changeset
  2166
        {
hgs
parents:
diff changeset
  2167
        ptrNewSrvURI.Append( aSrvURI.Left( portStart ) );//123.234.345.456
hgs
parents:
diff changeset
  2168
        ptrNewSrvURI.Append( aSrvURI.Right( aSrvURI.Length() - separatorPos ) );
hgs
parents:
diff changeset
  2169
        }
hgs
parents:
diff changeset
  2170
    else
hgs
parents:
diff changeset
  2171
        {
hgs
parents:
diff changeset
  2172
        ptrNewSrvURI.Append( aSrvURI );
hgs
parents:
diff changeset
  2173
        }
hgs
parents:
diff changeset
  2174
    return;
hgs
parents:
diff changeset
  2175
	}
hgs
parents:
diff changeset
  2176
hgs
parents:
diff changeset
  2177
// ------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
  2178
//  CNSmlDMSettingsAdapter::SetDMFieldDataL
hgs
parents:
diff changeset
  2179
//  Selects and Sets value to a field based on field id got from URI.
hgs
parents:
diff changeset
  2180
// ------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
  2181
TInt CNSmlDMSettingsAdapter::SetDMFieldDataL( const TInt aLUID, const TDesC8& aObject, 
hgs
parents:
diff changeset
  2182
                                                const TNSmlDMProfileData aField )
hgs
parents:
diff changeset
  2183
    {
hgs
parents:
diff changeset
  2184
    TInt rValue = KErrGeneral;
hgs
parents:
diff changeset
  2185
    switch ( aField )
hgs
parents:
diff changeset
  2186
		{
hgs
parents:
diff changeset
  2187
		case ( EProfileURL ) :
hgs
parents:
diff changeset
  2188
			{
hgs
parents:
diff changeset
  2189
		    rValue = SetProfileServerURIL( aLUID, aObject );    
hgs
parents:
diff changeset
  2190
			}
hgs
parents:
diff changeset
  2191
		break;
hgs
parents:
diff changeset
  2192
		case ( EServerId ) :
hgs
parents:
diff changeset
  2193
			{
hgs
parents:
diff changeset
  2194
		    rValue = SetProfileServerIdL( aLUID, aObject );
hgs
parents:
diff changeset
  2195
			}
hgs
parents:
diff changeset
  2196
		break;
hgs
parents:
diff changeset
  2197
        case ( ESharedSecret ) :
hgs
parents:
diff changeset
  2198
			{
hgs
parents:
diff changeset
  2199
		    rValue = SetProfileServerPasswordL( aLUID, aObject );
hgs
parents:
diff changeset
  2200
			}
hgs
parents:
diff changeset
  2201
		break;
hgs
parents:
diff changeset
  2202
        case ( EProfileDMServerUsername ) :
hgs
parents:
diff changeset
  2203
			{
hgs
parents:
diff changeset
  2204
		    rValue = SetProfileUserNameL( aLUID, aObject );
hgs
parents:
diff changeset
  2205
			}
hgs
parents:
diff changeset
  2206
		break;
hgs
parents:
diff changeset
  2207
        case ( EProfileDMServerPassword ) :
hgs
parents:
diff changeset
  2208
			{
hgs
parents:
diff changeset
  2209
		    rValue = SetProfilePasswordL( aLUID, aObject );
hgs
parents:
diff changeset
  2210
			}
hgs
parents:
diff changeset
  2211
		break;
hgs
parents:
diff changeset
  2212
        case ( EProfileName ) :
hgs
parents:
diff changeset
  2213
			{
hgs
parents:
diff changeset
  2214
		    rValue = SetProfileDisplayNameL( aLUID, aObject );
hgs
parents:
diff changeset
  2215
			}
hgs
parents:
diff changeset
  2216
		break;
hgs
parents:
diff changeset
  2217
        case ( EProfileIAPId ) :
hgs
parents:
diff changeset
  2218
			{
hgs
parents:
diff changeset
  2219
            rValue = SetConRefL( aLUID, aObject );
hgs
parents:
diff changeset
  2220
		    }
hgs
parents:
diff changeset
  2221
		break;
hgs
parents:
diff changeset
  2222
        case ( EProfileId ) :
hgs
parents:
diff changeset
  2223
			{
hgs
parents:
diff changeset
  2224
		    }
hgs
parents:
diff changeset
  2225
		break;
hgs
parents:
diff changeset
  2226
        case ( EProfilePort ) :
hgs
parents:
diff changeset
  2227
			{
hgs
parents:
diff changeset
  2228
            if(aObject.Size()<=5)
hgs
parents:
diff changeset
  2229
                {
hgs
parents:
diff changeset
  2230
			TInt port = GetIntObject(aObject);
hgs
parents:
diff changeset
  2231
	        if( port > KPortMinSize && port < KPortMaxSize )
hgs
parents:
diff changeset
  2232
		         {
hgs
parents:
diff changeset
  2233
	    			TPortBuffer element;
hgs
parents:
diff changeset
  2234
	    			element.iPortBuf=aObject;
hgs
parents:
diff changeset
  2235
	    			element.iPortBufLUID = aLUID;
hgs
parents:
diff changeset
  2236
	    			iPortBuffer.Append(element);
hgs
parents:
diff changeset
  2237
	    			rValue=KErrNone;
hgs
parents:
diff changeset
  2238
                 }
hgs
parents:
diff changeset
  2239
                else
hgs
parents:
diff changeset
  2240
                {
hgs
parents:
diff changeset
  2241
				if (port <= KPortMinSize )
hgs
parents:
diff changeset
  2242
				   rValue = KErrUnderflow;
hgs
parents:
diff changeset
  2243
                	else
hgs
parents:
diff changeset
  2244
                   rValue=KErrOverflow;
hgs
parents:
diff changeset
  2245
                }
hgs
parents:
diff changeset
  2246
			}
hgs
parents:
diff changeset
  2247
			else
hgs
parents:
diff changeset
  2248
			{
hgs
parents:
diff changeset
  2249
					rValue=KErrOverflow;
hgs
parents:
diff changeset
  2250
			}
hgs
parents:
diff changeset
  2251
			// save information of the port
hgs
parents:
diff changeset
  2252
		    }
hgs
parents:
diff changeset
  2253
		break;
hgs
parents:
diff changeset
  2254
        case ( EProfileMediumType ) :
hgs
parents:
diff changeset
  2255
			{
hgs
parents:
diff changeset
  2256
            if ( iLeafType == EDMDelete )
hgs
parents:
diff changeset
  2257
			    {
hgs
parents:
diff changeset
  2258
                return KErrNone;
hgs
parents:
diff changeset
  2259
			    }
hgs
parents:
diff changeset
  2260
            iObject = GetIntObject( aObject );
hgs
parents:
diff changeset
  2261
            if(iObject<0)
hgs
parents:
diff changeset
  2262
                {
hgs
parents:
diff changeset
  2263
                iObject = EHttp;
hgs
parents:
diff changeset
  2264
                }
hgs
parents:
diff changeset
  2265
            rValue = SetProfileAddrTypeL( aLUID, iObject );
hgs
parents:
diff changeset
  2266
		    }
hgs
parents:
diff changeset
  2267
		break;
hgs
parents:
diff changeset
  2268
        case ( EAuthenticationRequired ) :
hgs
parents:
diff changeset
  2269
        case ( EClientNonce ) :
hgs
parents:
diff changeset
  2270
        case ( EServerNonce ) :
hgs
parents:
diff changeset
  2271
		break;
hgs
parents:
diff changeset
  2272
        
hgs
parents:
diff changeset
  2273
        default:
hgs
parents:
diff changeset
  2274
            rValue = KErrNotSupported;
hgs
parents:
diff changeset
  2275
        }
hgs
parents:
diff changeset
  2276
    return rValue;
hgs
parents:
diff changeset
  2277
    }
hgs
parents:
diff changeset
  2278
hgs
parents:
diff changeset
  2279
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2280
//  CNSmlDMSettingsAdapter::FillNodeInfoL
hgs
parents:
diff changeset
  2281
//  The function fills the node or leaf information.
hgs
parents:
diff changeset
  2282
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2283
void CNSmlDMSettingsAdapter::FillNodeInfoL( MSmlDmDDFObject& aNode, 
hgs
parents:
diff changeset
  2284
                                            TSmlDmAccessTypes aAccTypes, 
hgs
parents:
diff changeset
  2285
                                            MSmlDmDDFObject::TOccurence aOccurrence, 
hgs
parents:
diff changeset
  2286
                                            MSmlDmDDFObject::TScope aScope, 
hgs
parents:
diff changeset
  2287
                                            MSmlDmDDFObject::TDFFormat aFormat, 
hgs
parents:
diff changeset
  2288
                                            const TDesC8& aDescription, 
hgs
parents:
diff changeset
  2289
                                            const TDesC8& aDefaultValue, 
hgs
parents:
diff changeset
  2290
                                            const TDesC8& aMimeType )
hgs
parents:
diff changeset
  2291
    {
hgs
parents:
diff changeset
  2292
    aNode.AddDFTypeMimeTypeL( aMimeType );
hgs
parents:
diff changeset
  2293
    aNode.SetAccessTypesL( aAccTypes );
hgs
parents:
diff changeset
  2294
	aNode.SetDescriptionL( aDescription );
hgs
parents:
diff changeset
  2295
	aNode.SetOccurenceL( aOccurrence );
hgs
parents:
diff changeset
  2296
	aNode.SetDefaultValueL( aDefaultValue );
hgs
parents:
diff changeset
  2297
	aNode.SetScopeL( aScope );
hgs
parents:
diff changeset
  2298
	aNode.SetDFFormatL( aFormat );
hgs
parents:
diff changeset
  2299
    return;
hgs
parents:
diff changeset
  2300
    }
hgs
parents:
diff changeset
  2301
hgs
parents:
diff changeset
  2302
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2303
//  CNSmlDMSettingsAdapter::GetDMAuthInfoL
hgs
parents:
diff changeset
  2304
//  This function gets authentication data from private API.
hgs
parents:
diff changeset
  2305
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2306
TInt CNSmlDMSettingsAdapter::GetDMAuthInfoL( const TInt aLUID, 
hgs
parents:
diff changeset
  2307
                                                const TNSmlDMProfileData aField, 
hgs
parents:
diff changeset
  2308
                                                CBufBase& aObject )
hgs
parents:
diff changeset
  2309
    {
hgs
parents:
diff changeset
  2310
    _DBG_FILE( "CNSmlDMSettingsAdapter::GetDMAuthInfoL(): begin" );
hgs
parents:
diff changeset
  2311
   
hgs
parents:
diff changeset
  2312
    CNSmlDMAuthInfo* authInfo = new (ELeave) CNSmlDMAuthInfo;
hgs
parents:
diff changeset
  2313
    CleanupStack::PushL( authInfo );
hgs
parents:
diff changeset
  2314
    
hgs
parents:
diff changeset
  2315
    authInfo->iProfileId = aLUID + KMaxDataSyncID;
hgs
parents:
diff changeset
  2316
    iPrivateApi.OpenL();
hgs
parents:
diff changeset
  2317
    TInt ret = KErrNone;
hgs
parents:
diff changeset
  2318
    
hgs
parents:
diff changeset
  2319
    TRAPD(err,iPrivateApi.GetDMAuthInfoL( *authInfo ));
hgs
parents:
diff changeset
  2320
hgs
parents:
diff changeset
  2321
    if(err==KErrNone)
hgs
parents:
diff changeset
  2322
    	{
hgs
parents:
diff changeset
  2323
	    if ( aField == EServerNonce )
hgs
parents:
diff changeset
  2324
	        {
hgs
parents:
diff changeset
  2325
	        aObject.InsertL( aObject.Size(), *authInfo->iServerNonce );
hgs
parents:
diff changeset
  2326
	        }
hgs
parents:
diff changeset
  2327
	    else if ( aField == EClientNonce )
hgs
parents:
diff changeset
  2328
	        {
hgs
parents:
diff changeset
  2329
	        aObject.InsertL( aObject.Size(), *authInfo->iClientNonce );
hgs
parents:
diff changeset
  2330
	        }
hgs
parents:
diff changeset
  2331
	    else if ( aField == EAuthenticationRequired )
hgs
parents:
diff changeset
  2332
	        {
hgs
parents:
diff changeset
  2333
	        TUint authPref = authInfo->iAuthPref;
hgs
parents:
diff changeset
  2334
	        if( authPref == ENoAuth )
hgs
parents:
diff changeset
  2335
	            {
hgs
parents:
diff changeset
  2336
	            aObject.InsertL( aObject.Size(), KNSmlDMAuthPrefNoAuth ); 
hgs
parents:
diff changeset
  2337
	            }
hgs
parents:
diff changeset
  2338
	        else if( authPref == EBasic )
hgs
parents:
diff changeset
  2339
	            {
hgs
parents:
diff changeset
  2340
	            aObject.InsertL( aObject.Size(), KNSmlDMAuthPrefBasic );
hgs
parents:
diff changeset
  2341
	            }
hgs
parents:
diff changeset
  2342
	        else if( authPref == EMD5 )
hgs
parents:
diff changeset
  2343
	            {
hgs
parents:
diff changeset
  2344
	            aObject.InsertL( aObject.Size(), KNSmlDMAuthPrefMD5 );
hgs
parents:
diff changeset
  2345
	            }
hgs
parents:
diff changeset
  2346
	        else
hgs
parents:
diff changeset
  2347
	            {
hgs
parents:
diff changeset
  2348
	            aObject.InsertL( aObject.Size(), KNullDesC8 );
hgs
parents:
diff changeset
  2349
	            ret = KErrGeneral;
hgs
parents:
diff changeset
  2350
	            }
hgs
parents:
diff changeset
  2351
	        }
hgs
parents:
diff changeset
  2352
    	}
hgs
parents:
diff changeset
  2353
    iPrivateApi.Close();
hgs
parents:
diff changeset
  2354
    CleanupStack::PopAndDestroy(authInfo);
hgs
parents:
diff changeset
  2355
    _DBG_FILE( "CNSmlDMSettingsAdapter::GetDMAuthInfoL(): end" );
hgs
parents:
diff changeset
  2356
    return ret;
hgs
parents:
diff changeset
  2357
    }
hgs
parents:
diff changeset
  2358
hgs
parents:
diff changeset
  2359
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2360
//  CNSmlDMSettingsAdapter::DeleteDMAuthInfoL
hgs
parents:
diff changeset
  2361
//  This function resets the authentication data.
hgs
parents:
diff changeset
  2362
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2363
TInt CNSmlDMSettingsAdapter::DeleteDMAuthInfoL( const TInt aLUID, 
hgs
parents:
diff changeset
  2364
                                                const TNSmlDMProfileData aField )
hgs
parents:
diff changeset
  2365
    {
hgs
parents:
diff changeset
  2366
    _DBG_FILE( "CNSmlDMSettingsAdapter::DeleteDMAuthInfoL(): begin" );
hgs
parents:
diff changeset
  2367
    CNSmlDMAuthInfo* authInfo = new (ELeave) CNSmlDMAuthInfo;;
hgs
parents:
diff changeset
  2368
    CleanupStack::PushL( authInfo );
hgs
parents:
diff changeset
  2369
    authInfo->iProfileId = aLUID;
hgs
parents:
diff changeset
  2370
    iPrivateApi.OpenL();
hgs
parents:
diff changeset
  2371
    iPrivateApi.GetDMAuthInfoL( *authInfo );
hgs
parents:
diff changeset
  2372
    if( aField == EServerNonce )
hgs
parents:
diff changeset
  2373
        {
hgs
parents:
diff changeset
  2374
        authInfo->iServerNonce->Des().Delete( 0, authInfo->iServerNonce->Des().Size() );
hgs
parents:
diff changeset
  2375
        authInfo->iServerNonce->Des().Insert( 0, KNullDesC8 );
hgs
parents:
diff changeset
  2376
        }
hgs
parents:
diff changeset
  2377
    else if( aField == EClientNonce )
hgs
parents:
diff changeset
  2378
        {
hgs
parents:
diff changeset
  2379
        authInfo->iClientNonce->Des().Delete( 0, authInfo->iClientNonce->Des().Size() );
hgs
parents:
diff changeset
  2380
        authInfo->iClientNonce->Des().Insert( 0, KNullDesC8 );
hgs
parents:
diff changeset
  2381
        }
hgs
parents:
diff changeset
  2382
    else if( aField == EAuthenticationRequired )
hgs
parents:
diff changeset
  2383
        {
hgs
parents:
diff changeset
  2384
        authInfo->iAuthPref = 0;
hgs
parents:
diff changeset
  2385
        }
hgs
parents:
diff changeset
  2386
    iPrivateApi.SetDMAuthInfoL( *authInfo );
hgs
parents:
diff changeset
  2387
    iPrivateApi.Close();
hgs
parents:
diff changeset
  2388
    CleanupStack::PopAndDestroy(authInfo);
hgs
parents:
diff changeset
  2389
	_DBG_FILE( "CNSmlDMSettingsAdapter::DeleteDMAuthInfoL(): end" );
hgs
parents:
diff changeset
  2390
    return KErrNone;
hgs
parents:
diff changeset
  2391
    }
hgs
parents:
diff changeset
  2392
hgs
parents:
diff changeset
  2393
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2394
// CNSmlDMSettingsAdapter::SetProfileAddrTypeL
hgs
parents:
diff changeset
  2395
// This function sets the AddrType value.    
hgs
parents:
diff changeset
  2396
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2397
TInt CNSmlDMSettingsAdapter::SetProfileAddrTypeL( const TInt aLUID, 
hgs
parents:
diff changeset
  2398
                                                    const TInt aIntObj )
hgs
parents:
diff changeset
  2399
    {
hgs
parents:
diff changeset
  2400
    _DBG_FILE( "CNSmlDMSettingsAdapter::SetProfileAddrTypeL(): begin" );
hgs
parents:
diff changeset
  2401
    TInt retVal = OpenSyncSessionAndProfileL( aLUID, ESmlOpenReadWrite );
hgs
parents:
diff changeset
  2402
    if( retVal != KErrNone )
hgs
parents:
diff changeset
  2403
		{
hgs
parents:
diff changeset
  2404
	    iCurrentProfile = 0;
hgs
parents:
diff changeset
  2405
		iProfile.Close();
hgs
parents:
diff changeset
  2406
        _DBG_FILE( "CNSmlDMSettingsAdapter::SetProfileAddrTypeL(): end" );
hgs
parents:
diff changeset
  2407
        return retVal;	
hgs
parents:
diff changeset
  2408
		}
hgs
parents:
diff changeset
  2409
    TInt mediumType = ENone;
hgs
parents:
diff changeset
  2410
    GetMediumTypeL( aIntObj, mediumType );
hgs
parents:
diff changeset
  2411
    if( mediumType == ENone )
hgs
parents:
diff changeset
  2412
        {
hgs
parents:
diff changeset
  2413
	    iCurrentProfile = 0;
hgs
parents:
diff changeset
  2414
        iProfile.Close();    
hgs
parents:
diff changeset
  2415
        return KErrGeneral;
hgs
parents:
diff changeset
  2416
        }
hgs
parents:
diff changeset
  2417
    RArray<TSmlTransportId> transportIdArray;
hgs
parents:
diff changeset
  2418
    CleanupClosePushL( transportIdArray );
hgs
parents:
diff changeset
  2419
    iProfile.ListConnectionsL( transportIdArray );
hgs
parents:
diff changeset
  2420
    RSyncMLConnection conn;
hgs
parents:
diff changeset
  2421
    CleanupClosePushL( conn );
hgs
parents:
diff changeset
  2422
    conn.OpenL( iProfile, transportIdArray[0] );
hgs
parents:
diff changeset
  2423
    if(mediumType!=transportIdArray[0])
hgs
parents:
diff changeset
  2424
        {
hgs
parents:
diff changeset
  2425
        if ( !FeatureManager::FeatureSupported( KFeatureIdSyncMlDmObex  ) )
hgs
parents:
diff changeset
  2426
            {
hgs
parents:
diff changeset
  2427
            CleanupStack::PopAndDestroy( 2 );//transportIdArray, conn
hgs
parents:
diff changeset
  2428
            return EInvalidObject;
hgs
parents:
diff changeset
  2429
            }
hgs
parents:
diff changeset
  2430
        else
hgs
parents:
diff changeset
  2431
            {
hgs
parents:
diff changeset
  2432
            conn.CreateL(iProfile,mediumType);
hgs
parents:
diff changeset
  2433
            }
hgs
parents:
diff changeset
  2434
        }
hgs
parents:
diff changeset
  2435
    HBufC8* sURI = conn.ServerURI().AllocLC();
hgs
parents:
diff changeset
  2436
    conn.SetServerURIL( *sURI );
hgs
parents:
diff changeset
  2437
    conn.UpdateL(); 	                    
hgs
parents:
diff changeset
  2438
    CleanupStack::PopAndDestroy( 3 );//transportIdArray, conn, sURI
hgs
parents:
diff changeset
  2439
    iCurrentProfile = 0;
hgs
parents:
diff changeset
  2440
    iProfile.Close();
hgs
parents:
diff changeset
  2441
    _DBG_FILE( "CNSmlDMSettingsAdapter::SetProfileAddrTypeL(): end" );
hgs
parents:
diff changeset
  2442
    return KErrNone;
hgs
parents:
diff changeset
  2443
    }
hgs
parents:
diff changeset
  2444
hgs
parents:
diff changeset
  2445
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2446
//  CNSmlDMSettingsAdapter::GetProfileConnectiontypeL
hgs
parents:
diff changeset
  2447
//  The function gets the profile medium type.
hgs
parents:
diff changeset
  2448
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2449
TInt CNSmlDMSettingsAdapter::GetProfileConnectiontypeL( CBufBase& aObject )
hgs
parents:
diff changeset
  2450
	{
hgs
parents:
diff changeset
  2451
    _DBG_FILE( "CNSmlDMSettingsAdapter::GetProfileConnectiontypeL(): begin" );
hgs
parents:
diff changeset
  2452
	RArray<TSmlTransportId> transportIdArray;
hgs
parents:
diff changeset
  2453
    CleanupClosePushL( transportIdArray );
hgs
parents:
diff changeset
  2454
	iProfile.ListConnectionsL( transportIdArray );
hgs
parents:
diff changeset
  2455
	TInt transportItems = transportIdArray.Count();
hgs
parents:
diff changeset
  2456
    if( transportItems == 0 )
hgs
parents:
diff changeset
  2457
		{
hgs
parents:
diff changeset
  2458
		//No matching items
hgs
parents:
diff changeset
  2459
        CleanupStack::PopAndDestroy(); //transportIdArray	
hgs
parents:
diff changeset
  2460
		return KErrGeneral;
hgs
parents:
diff changeset
  2461
		}
hgs
parents:
diff changeset
  2462
	else if( transportItems > 1 )
hgs
parents:
diff changeset
  2463
		{
hgs
parents:
diff changeset
  2464
		//Error case : against specification
hgs
parents:
diff changeset
  2465
        CleanupStack::PopAndDestroy(); //transportIdArray	
hgs
parents:
diff changeset
  2466
		return KErrGeneral;
hgs
parents:
diff changeset
  2467
		}
hgs
parents:
diff changeset
  2468
	TInt mediumType = ENone;
hgs
parents:
diff changeset
  2469
    if ( transportIdArray[0] == KUidNSmlMediumTypeInternet.iUid )
hgs
parents:
diff changeset
  2470
        {
hgs
parents:
diff changeset
  2471
        mediumType = EHttp;
hgs
parents:
diff changeset
  2472
        }
hgs
parents:
diff changeset
  2473
    else if ( transportIdArray[0] == KUidNSmlMediumTypeBluetooth.iUid ||
hgs
parents:
diff changeset
  2474
              transportIdArray[0] == KUidNSmlMediumTypeUSB.iUid ||   
hgs
parents:
diff changeset
  2475
              transportIdArray[0] == KUidNSmlMediumTypeIrDA.iUid  )
hgs
parents:
diff changeset
  2476
        {
hgs
parents:
diff changeset
  2477
        mediumType = EObex;
hgs
parents:
diff changeset
  2478
        }
hgs
parents:
diff changeset
  2479
    aObject.InsertL( aObject.Size(), SetIntObjectLC( mediumType ) );
hgs
parents:
diff changeset
  2480
    CleanupStack::PopAndDestroy( 2 ); //transportIdArray, SetIntObjectLC
hgs
parents:
diff changeset
  2481
	return KErrNone;
hgs
parents:
diff changeset
  2482
	}
hgs
parents:
diff changeset
  2483
hgs
parents:
diff changeset
  2484
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2485
//  CNSmlDMSettingsAdapter::GetProfileIAPIdL
hgs
parents:
diff changeset
  2486
//  The function gets the profile IAP Id.
hgs
parents:
diff changeset
  2487
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2488
TInt CNSmlDMSettingsAdapter::GetProfileIAPIdL( TInt& aIAPid )
hgs
parents:
diff changeset
  2489
	{
hgs
parents:
diff changeset
  2490
    _DBG_FILE( "CNSmlDMSettingsAdapter::GetProfileIAPIdL(): begin" );
hgs
parents:
diff changeset
  2491
    TInt retVal = KErrGeneral;
hgs
parents:
diff changeset
  2492
    aIAPid = -1;
hgs
parents:
diff changeset
  2493
    RArray<TSmlTransportId> connIdArray;
hgs
parents:
diff changeset
  2494
    CleanupClosePushL( connIdArray );
hgs
parents:
diff changeset
  2495
    iProfile.ListConnectionsL( connIdArray );
hgs
parents:
diff changeset
  2496
    if( connIdArray.Count() == 1 )
hgs
parents:
diff changeset
  2497
        {
hgs
parents:
diff changeset
  2498
        RSyncMLTransport transport;
hgs
parents:
diff changeset
  2499
        CleanupClosePushL( transport );
hgs
parents:
diff changeset
  2500
	    transport.OpenL( iSyncSession, connIdArray[0] );
hgs
parents:
diff changeset
  2501
	    const CSyncMLTransportPropertiesArray& props = transport.Properties();
hgs
parents:
diff changeset
  2502
	    TInt index = props.Find( KNSmlIAPId );
hgs
parents:
diff changeset
  2503
        if( index > 0 )
hgs
parents:
diff changeset
  2504
            {
hgs
parents:
diff changeset
  2505
            RSyncMLConnection conn;
hgs
parents:
diff changeset
  2506
            CleanupClosePushL( conn );
hgs
parents:
diff changeset
  2507
	        conn.OpenL( iProfile, connIdArray[0] );
hgs
parents:
diff changeset
  2508
            HBufC8* apId = conn.GetPropertyL( KNSmlIAPId ).AllocLC();
hgs
parents:
diff changeset
  2509
            aIAPid = GetIntObject( *apId );
hgs
parents:
diff changeset
  2510
            CleanupStack::PopAndDestroy( 2 ); //conn, apId
hgs
parents:
diff changeset
  2511
            retVal = KErrNone;
hgs
parents:
diff changeset
  2512
            }
hgs
parents:
diff changeset
  2513
        else
hgs
parents:
diff changeset
  2514
            {
hgs
parents:
diff changeset
  2515
            retVal = KErrNotFound;
hgs
parents:
diff changeset
  2516
            }
hgs
parents:
diff changeset
  2517
        CleanupStack::PopAndDestroy( 1 ); //transport
hgs
parents:
diff changeset
  2518
	    iCurrentProfile = 0;
hgs
parents:
diff changeset
  2519
        iProfile.Close();
hgs
parents:
diff changeset
  2520
        }
hgs
parents:
diff changeset
  2521
    else
hgs
parents:
diff changeset
  2522
        {
hgs
parents:
diff changeset
  2523
        retVal = KErrNotFound;
hgs
parents:
diff changeset
  2524
        }
hgs
parents:
diff changeset
  2525
    CleanupStack::PopAndDestroy(); //connIdArray
hgs
parents:
diff changeset
  2526
    _DBG_FILE( "CNSmlDMSettingsAdapter::GetProfileIAPIdL(): end" );
hgs
parents:
diff changeset
  2527
    return retVal;
hgs
parents:
diff changeset
  2528
    }
hgs
parents:
diff changeset
  2529
hgs
parents:
diff changeset
  2530
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2531
//  CNSmlDMSettingsAdapter::GetProfileServerURLL
hgs
parents:
diff changeset
  2532
//  The function gets the profile Server URI.
hgs
parents:
diff changeset
  2533
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2534
void CNSmlDMSettingsAdapter::GetProfileServerURLL( CBufBase& aURL )
hgs
parents:
diff changeset
  2535
	{
hgs
parents:
diff changeset
  2536
    _DBG_FILE( "CNSmlDMSettingsAdapter::GetProfileServerURLL(): begin" );
hgs
parents:
diff changeset
  2537
    RArray<TSmlTransportId> transportIdArray;
hgs
parents:
diff changeset
  2538
    CleanupClosePushL( transportIdArray );
hgs
parents:
diff changeset
  2539
	iProfile.ListConnectionsL( transportIdArray );
hgs
parents:
diff changeset
  2540
    if( transportIdArray.Count() > 0 )
hgs
parents:
diff changeset
  2541
        {
hgs
parents:
diff changeset
  2542
        RSyncMLConnection profConn;
hgs
parents:
diff changeset
  2543
        CleanupClosePushL( profConn );
hgs
parents:
diff changeset
  2544
	    profConn.OpenL( iProfile, transportIdArray[0] );
hgs
parents:
diff changeset
  2545
	    HBufC8* sURI = profConn.ServerURI().AllocL();
hgs
parents:
diff changeset
  2546
        CleanupStack::PushL( sURI );
hgs
parents:
diff changeset
  2547
        TPtr8 uriPtr = sURI->Des();
hgs
parents:
diff changeset
  2548
        if( uriPtr.Length() > 0 )
hgs
parents:
diff changeset
  2549
            {
hgs
parents:
diff changeset
  2550
            aURL.InsertL( aURL.Size(),uriPtr );
hgs
parents:
diff changeset
  2551
            }
hgs
parents:
diff changeset
  2552
        else
hgs
parents:
diff changeset
  2553
            {
hgs
parents:
diff changeset
  2554
            aURL.InsertL( aURL.Size(), KNullDesC8 );
hgs
parents:
diff changeset
  2555
            }
hgs
parents:
diff changeset
  2556
        CleanupStack::PopAndDestroy( 2 );//profConn, sURI
hgs
parents:
diff changeset
  2557
        }
hgs
parents:
diff changeset
  2558
    CleanupStack::PopAndDestroy(); //transportIdArray
hgs
parents:
diff changeset
  2559
    _DBG_FILE( "CNSmlDMSettingsAdapter::GetProfileServerURLL(): end" );
hgs
parents:
diff changeset
  2560
    return;
hgs
parents:
diff changeset
  2561
	}
hgs
parents:
diff changeset
  2562
hgs
parents:
diff changeset
  2563
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2564
//	CNSmlDMSettingsAdapter::GetMediumTypeL
hgs
parents:
diff changeset
  2565
//	Checks the requested medium type.
hgs
parents:
diff changeset
  2566
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2567
void CNSmlDMSettingsAdapter::GetMediumTypeL( const TInt aIntObj, 
hgs
parents:
diff changeset
  2568
                                            TInt& aMediumType )
hgs
parents:
diff changeset
  2569
    {
hgs
parents:
diff changeset
  2570
    _DBG_FILE( "CNSmlDMSettingsAdapter::GetMediumTypeL(): begin" );
hgs
parents:
diff changeset
  2571
    if( aIntObj == EHttp || aIntObj == EWsp )
hgs
parents:
diff changeset
  2572
        {
hgs
parents:
diff changeset
  2573
        aMediumType = KUidNSmlMediumTypeInternet.iUid;
hgs
parents:
diff changeset
  2574
        return;
hgs
parents:
diff changeset
  2575
        }
hgs
parents:
diff changeset
  2576
    RArray<TSmlTransportId> transportIdArray;
hgs
parents:
diff changeset
  2577
    CleanupClosePushL( transportIdArray );
hgs
parents:
diff changeset
  2578
    iSyncSession.ListTransportsL( transportIdArray );
hgs
parents:
diff changeset
  2579
    
hgs
parents:
diff changeset
  2580
    if ( transportIdArray.Find( KUidNSmlMediumTypeBluetooth.iUid ) != KErrNotFound )
hgs
parents:
diff changeset
  2581
        {
hgs
parents:
diff changeset
  2582
        aMediumType = KUidNSmlMediumTypeBluetooth.iUid;
hgs
parents:
diff changeset
  2583
        }
hgs
parents:
diff changeset
  2584
    else if ( transportIdArray.Find( KUidNSmlMediumTypeUSB.iUid ) != KErrNotFound )
hgs
parents:
diff changeset
  2585
        {
hgs
parents:
diff changeset
  2586
        aMediumType = KUidNSmlMediumTypeUSB.iUid;
hgs
parents:
diff changeset
  2587
        }
hgs
parents:
diff changeset
  2588
    else if ( transportIdArray.Find( KUidNSmlMediumTypeIrDA.iUid ) != KErrNotFound )
hgs
parents:
diff changeset
  2589
        {
hgs
parents:
diff changeset
  2590
        aMediumType = KUidNSmlMediumTypeIrDA.iUid;
hgs
parents:
diff changeset
  2591
        }
hgs
parents:
diff changeset
  2592
    CleanupStack::PopAndDestroy(); //transportIdArray
hgs
parents:
diff changeset
  2593
    _DBG_FILE( "CNSmlDMSettingsAdapter::GetMediumTypeL(): end" );
hgs
parents:
diff changeset
  2594
    return;    
hgs
parents:
diff changeset
  2595
    }
hgs
parents:
diff changeset
  2596
hgs
parents:
diff changeset
  2597
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2598
//	CNSmlDMSettingsAdapter::GetServerIdL
hgs
parents:
diff changeset
  2599
//	Gets the server id value.
hgs
parents:
diff changeset
  2600
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2601
void CNSmlDMSettingsAdapter::GetServerIdL( CBufBase& aObject )
hgs
parents:
diff changeset
  2602
    {
hgs
parents:
diff changeset
  2603
    _DBG_FILE( "CNSmlDMSettingsAdapter::GetServerIdL(): begin" );
hgs
parents:
diff changeset
  2604
    HBufC8* serverId = iProfile.ServerId().AllocL();
hgs
parents:
diff changeset
  2605
    CleanupStack::PushL( serverId );
hgs
parents:
diff changeset
  2606
    aObject.InsertL( aObject.Size(), *serverId );
hgs
parents:
diff changeset
  2607
    CleanupStack::PopAndDestroy( 1 ); //serverId
hgs
parents:
diff changeset
  2608
    _DBG_FILE( "CNSmlDMSettingsAdapter::GetServerIdL(): end" );
hgs
parents:
diff changeset
  2609
    return;
hgs
parents:
diff changeset
  2610
    }
hgs
parents:
diff changeset
  2611
hgs
parents:
diff changeset
  2612
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2613
//	CNSmlDMSettingsAdapter::GetProfileNameL
hgs
parents:
diff changeset
  2614
//	Gets the display name value.
hgs
parents:
diff changeset
  2615
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2616
void CNSmlDMSettingsAdapter::GetProfileNameL( CBufBase& aObject )
hgs
parents:
diff changeset
  2617
    {
hgs
parents:
diff changeset
  2618
    _DBG_FILE( "CNSmlDMSettingsAdapter::GetProfileNameL(): begin" );
hgs
parents:
diff changeset
  2619
    HBufC16* dataBuf = iProfile.DisplayName().AllocL();
hgs
parents:
diff changeset
  2620
    CleanupStack::PushL( dataBuf );
hgs
parents:
diff changeset
  2621
    TPtr16 ptrDisplayName = dataBuf->Des();
hgs
parents:
diff changeset
  2622
    HBufC8* dataBuf8 = HBufC8::NewL( ptrDisplayName.Length() * 2 );
hgs
parents:
diff changeset
  2623
    CleanupStack::PushL( dataBuf8 );
hgs
parents:
diff changeset
  2624
hgs
parents:
diff changeset
  2625
    TPtr8 ptrDisplayName8 = dataBuf8->Des();
hgs
parents:
diff changeset
  2626
    ptrDisplayName8 = ConvertTo8LC( ptrDisplayName );
hgs
parents:
diff changeset
  2627
    aObject.InsertL( aObject.Size(), ptrDisplayName8 );
hgs
parents:
diff changeset
  2628
    CleanupStack::PopAndDestroy( 3 );//dataBuf, ConvertTo8LC
hgs
parents:
diff changeset
  2629
    _DBG_FILE("CNSmlDMSettingsAdapter::GetProfileNameL(): end");
hgs
parents:
diff changeset
  2630
    return;
hgs
parents:
diff changeset
  2631
    }
hgs
parents:
diff changeset
  2632
hgs
parents:
diff changeset
  2633
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2634
//	CNSmlDMSettingsAdapter::GetProfileUserNameL
hgs
parents:
diff changeset
  2635
//	Gets the profile user name value.
hgs
parents:
diff changeset
  2636
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2637
void CNSmlDMSettingsAdapter::GetProfileUserNameL( CBufBase& aObject )
hgs
parents:
diff changeset
  2638
    {
hgs
parents:
diff changeset
  2639
    _DBG_FILE( "CNSmlDMSettingsAdapter::GetProfileUserNameL(): begin" );
hgs
parents:
diff changeset
  2640
    HBufC8* dataBuf = iProfile.UserName().AllocL();
hgs
parents:
diff changeset
  2641
    CleanupStack::PushL( dataBuf );
hgs
parents:
diff changeset
  2642
    TPtr8 ptrUserName = dataBuf->Des();
hgs
parents:
diff changeset
  2643
    aObject.InsertL( aObject.Size(), ptrUserName );
hgs
parents:
diff changeset
  2644
    CleanupStack::PopAndDestroy();//dataBuf
hgs
parents:
diff changeset
  2645
    _DBG_FILE( "CNSmlDMSettingsAdapter::GetProfileUserNameL(): end" );
hgs
parents:
diff changeset
  2646
    return;
hgs
parents:
diff changeset
  2647
    }
hgs
parents:
diff changeset
  2648
hgs
parents:
diff changeset
  2649
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2650
//	CNSmlDMSettingsAdapter::GetProfilePortNumberL
hgs
parents:
diff changeset
  2651
//	Gets the port number value.
hgs
parents:
diff changeset
  2652
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2653
void CNSmlDMSettingsAdapter::GetProfilePortNumberL( CBufBase& aObject )
hgs
parents:
diff changeset
  2654
    {
hgs
parents:
diff changeset
  2655
    _DBG_FILE( "CNSmlDMSettingsAdapter::GetProfilePortNumberL(): begin" );
hgs
parents:
diff changeset
  2656
    TInt bSize = aObject.Size();
hgs
parents:
diff changeset
  2657
    TInt portNum = 0;
hgs
parents:
diff changeset
  2658
    HBufC8* bufStorage = HBufC8::NewLC( bSize );
hgs
parents:
diff changeset
  2659
	TPtr8 bufStoragePtr = bufStorage->Des();
hgs
parents:
diff changeset
  2660
	aObject.Read( 0, bufStoragePtr, aObject.Size() );
hgs
parents:
diff changeset
  2661
	aObject.Reset();
hgs
parents:
diff changeset
  2662
	
hgs
parents:
diff changeset
  2663
    //find out the port number
hgs
parents:
diff changeset
  2664
    ParseUri( *bufStorage, portNum );
hgs
parents:
diff changeset
  2665
	aObject.InsertL( aObject.Size(), SetIntObjectLC( portNum ) );
hgs
parents:
diff changeset
  2666
hgs
parents:
diff changeset
  2667
    CleanupStack::PopAndDestroy( 2 ); //bufStorage, SetIntObjectLC()
hgs
parents:
diff changeset
  2668
    _DBG_FILE( "CNSmlDMSettingsAdapter::GetProfilePortNumberL(): end" );
hgs
parents:
diff changeset
  2669
    return;
hgs
parents:
diff changeset
  2670
    }
hgs
parents:
diff changeset
  2671
hgs
parents:
diff changeset
  2672
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2673
//  CNSmlDMSettingsAdapter::SetAuthInfoL
hgs
parents:
diff changeset
  2674
//  The function checks if authinfo already exits. If exits command is replace.
hgs
parents:
diff changeset
  2675
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2676
void CNSmlDMSettingsAdapter::SetAuthInfoL( const TInt aLUID, 
hgs
parents:
diff changeset
  2677
                                            const TNSmlDMProfileData aField, 
hgs
parents:
diff changeset
  2678
                                            const TDesC8& aObject, TInt& aStatus )
hgs
parents:
diff changeset
  2679
    {
hgs
parents:
diff changeset
  2680
    _DBG_FILE( "CNSmlDMSettingsAdapter::SetAuthInfoL(): begin" );
hgs
parents:
diff changeset
  2681
    
hgs
parents:
diff changeset
  2682
    CNSmlDMAuthInfo* authInfo = new (ELeave) CNSmlDMAuthInfo();
hgs
parents:
diff changeset
  2683
    CleanupStack::PushL( authInfo );
hgs
parents:
diff changeset
  2684
    authInfo->iProfileId = aLUID;
hgs
parents:
diff changeset
  2685
    
hgs
parents:
diff changeset
  2686
    iPrivateApi.OpenL();
hgs
parents:
diff changeset
  2687
    TRAPD( err, iPrivateApi.GetDMAuthInfoL( *authInfo ) );
hgs
parents:
diff changeset
  2688
    
hgs
parents:
diff changeset
  2689
    if ( err )
hgs
parents:
diff changeset
  2690
        {
hgs
parents:
diff changeset
  2691
        CleanupStack::PopAndDestroy( authInfo );
hgs
parents:
diff changeset
  2692
        iPrivateApi.Close();
hgs
parents:
diff changeset
  2693
        aStatus = err;
hgs
parents:
diff changeset
  2694
        return;
hgs
parents:
diff changeset
  2695
        }
hgs
parents:
diff changeset
  2696
    
hgs
parents:
diff changeset
  2697
    CNSmlDMAuthInfo* newAuthInfo = new (ELeave) CNSmlDMAuthInfo();
hgs
parents:
diff changeset
  2698
    CleanupStack::PushL( newAuthInfo );
hgs
parents:
diff changeset
  2699
    newAuthInfo->iProfileId = aLUID;
hgs
parents:
diff changeset
  2700
hgs
parents:
diff changeset
  2701
    if ( aField == EServerNonce )
hgs
parents:
diff changeset
  2702
        {
hgs
parents:
diff changeset
  2703
        newAuthInfo->iServerNonce = aObject.Alloc();
hgs
parents:
diff changeset
  2704
        newAuthInfo->iClientNonce = authInfo->iClientNonce->Des().Alloc();
hgs
parents:
diff changeset
  2705
        newAuthInfo->iAuthPref = authInfo->iAuthPref;
hgs
parents:
diff changeset
  2706
        
hgs
parents:
diff changeset
  2707
        iPrivateApi.SetDMAuthInfoL( *newAuthInfo );
hgs
parents:
diff changeset
  2708
        }
hgs
parents:
diff changeset
  2709
    else if ( aField == EClientNonce )
hgs
parents:
diff changeset
  2710
        {
hgs
parents:
diff changeset
  2711
        newAuthInfo->iServerNonce = authInfo->iServerNonce->Des().Alloc();
hgs
parents:
diff changeset
  2712
        newAuthInfo->iClientNonce = aObject.Alloc();
hgs
parents:
diff changeset
  2713
        newAuthInfo->iAuthPref = authInfo->iAuthPref;
hgs
parents:
diff changeset
  2714
        
hgs
parents:
diff changeset
  2715
        iPrivateApi.SetDMAuthInfoL( *newAuthInfo );
hgs
parents:
diff changeset
  2716
        }
hgs
parents:
diff changeset
  2717
    else if ( aField == EAuthenticationRequired )
hgs
parents:
diff changeset
  2718
        {
hgs
parents:
diff changeset
  2719
        if ( aObject.Match( KNSmlDMAuthPrefNoAuth ) !=  KErrNotFound )
hgs
parents:
diff changeset
  2720
            {
hgs
parents:
diff changeset
  2721
            newAuthInfo->iAuthPref = ENoAuth;
hgs
parents:
diff changeset
  2722
            }
hgs
parents:
diff changeset
  2723
        else if ( aObject.Match( KNSmlDMAuthPrefBasic ) !=  KErrNotFound )
hgs
parents:
diff changeset
  2724
            {
hgs
parents:
diff changeset
  2725
            newAuthInfo->iAuthPref = EBasic;
hgs
parents:
diff changeset
  2726
            }
hgs
parents:
diff changeset
  2727
        else if ( aObject.Match( KNSmlDMAuthPrefMD5 ) !=  KErrNotFound )
hgs
parents:
diff changeset
  2728
            {
hgs
parents:
diff changeset
  2729
            newAuthInfo->iAuthPref = EMD5;
hgs
parents:
diff changeset
  2730
            }
hgs
parents:
diff changeset
  2731
        newAuthInfo->iServerNonce = authInfo->iServerNonce->Des().Alloc();
hgs
parents:
diff changeset
  2732
        newAuthInfo->iClientNonce = authInfo->iClientNonce->Des().Alloc();
hgs
parents:
diff changeset
  2733
        
hgs
parents:
diff changeset
  2734
        iPrivateApi.SetDMAuthInfoL( *newAuthInfo );
hgs
parents:
diff changeset
  2735
        }
hgs
parents:
diff changeset
  2736
    
hgs
parents:
diff changeset
  2737
    CleanupStack::PopAndDestroy( newAuthInfo );
hgs
parents:
diff changeset
  2738
    CleanupStack::PopAndDestroy( authInfo );
hgs
parents:
diff changeset
  2739
    
hgs
parents:
diff changeset
  2740
    iPrivateApi.Close();
hgs
parents:
diff changeset
  2741
    aStatus = KErrNone;
hgs
parents:
diff changeset
  2742
    _DBG_FILE( "CNSmlDMSettingsAdapter::SetAuthInfoL(): end" );
hgs
parents:
diff changeset
  2743
    return;
hgs
parents:
diff changeset
  2744
    }
hgs
parents:
diff changeset
  2745
//------------------------------------------------------------------------------
hgs
parents:
diff changeset
  2746
// CNSmlDMSettingsAdapter::AddNodeBufferL()
hgs
parents:
diff changeset
  2747
// Buffers Node Object
hgs
parents:
diff changeset
  2748
//------------------------------------------------------------------------------
hgs
parents:
diff changeset
  2749
void CNSmlDMSettingsAdapter::AddNodeBufferL( const TDesC8& aURI,
hgs
parents:
diff changeset
  2750
		const TInt aStatusRef)
hgs
parents:
diff changeset
  2751
	{
hgs
parents:
diff changeset
  2752
	_DBG_FILE( "CNSmlDMSettingsAdapter::AddNodeBufferL(): begin" );
hgs
parents:
diff changeset
  2753
	TInt index = -1;
hgs
parents:
diff changeset
  2754
hgs
parents:
diff changeset
  2755
	for (TInt i = 0; i<iBuffer->Count (); i++)
hgs
parents:
diff changeset
  2756
		{
hgs
parents:
diff changeset
  2757
		if ( iBuffer->At(i).iMappingName->Compare (aURI)== 0)
hgs
parents:
diff changeset
  2758
			{
hgs
parents:
diff changeset
  2759
			index = i;
hgs
parents:
diff changeset
  2760
			//CallBack for duplicate
hgs
parents:
diff changeset
  2761
			_DBG_FILE( "CNSmlDMSettingsAdapter::AddNodeBufferL(): EAlreadyExists end" );
hgs
parents:
diff changeset
  2762
			iCallBack->SetStatusL ( aStatusRef, CSmlDmAdapter::EAlreadyExists);
hgs
parents:
diff changeset
  2763
			break;
hgs
parents:
diff changeset
  2764
			}
hgs
parents:
diff changeset
  2765
		}
hgs
parents:
diff changeset
  2766
hgs
parents:
diff changeset
  2767
	if ( index<0)
hgs
parents:
diff changeset
  2768
		{
hgs
parents:
diff changeset
  2769
		TNSmlDMBufferElement newNode;
hgs
parents:
diff changeset
  2770
		newNode.iMappingName = aURI.AllocLC ();
hgs
parents:
diff changeset
  2771
		newNode.iLeafBuf = new (ELeave) CArrayFixFlat <TNSmlDMLeafElement> (4);
hgs
parents:
diff changeset
  2772
		newNode.iExecuted = EFalse;
hgs
parents:
diff changeset
  2773
		newNode.iDMBuffStatusref = aStatusRef;
hgs
parents:
diff changeset
  2774
		newNode.iAddr = EFalse;
hgs
parents:
diff changeset
  2775
		newNode.iServerId = EFalse;
hgs
parents:
diff changeset
  2776
		newNode.iUName = EFalse;
hgs
parents:
diff changeset
  2777
		newNode.iServerName = EFalse;
hgs
parents:
diff changeset
  2778
hgs
parents:
diff changeset
  2779
		iBuffer->AppendL (newNode);
hgs
parents:
diff changeset
  2780
		//newNode.iMappingName
hgs
parents:
diff changeset
  2781
		CleanupStack::Pop ();
hgs
parents:
diff changeset
  2782
		}
hgs
parents:
diff changeset
  2783
	_DBG_FILE( "CNSmlDMSettingsAdapter::AddNodeBufferL(): end" );
hgs
parents:
diff changeset
  2784
	}
hgs
parents:
diff changeset
  2785
//------------------------------------------------------------------------------
hgs
parents:
diff changeset
  2786
// CNSmlDMSettingsAdapter::AddLeafBufferL()
hgs
parents:
diff changeset
  2787
// Buffers Leaf Obj & checks for Mandatory fields
hgs
parents:
diff changeset
  2788
//------------------------------------------------------------------------------
hgs
parents:
diff changeset
  2789
void CNSmlDMSettingsAdapter::AddLeafBufferL( const TDesC8& aURI,
hgs
parents:
diff changeset
  2790
		const TDesC8& aObject, const TInt aStatusRef)
hgs
parents:
diff changeset
  2791
	{
hgs
parents:
diff changeset
  2792
	_DBG_FILE( "CNSmlDMSettingsAdapter::AddLeafBufferL(): begin" );
hgs
parents:
diff changeset
  2793
	TNSmlDMLeafElement newCommand;
hgs
parents:
diff changeset
  2794
hgs
parents:
diff changeset
  2795
	newCommand.iUri = aURI.AllocLC ();
hgs
parents:
diff changeset
  2796
	newCommand.iData = aObject.AllocLC ();
hgs
parents:
diff changeset
  2797
	newCommand.iLuid = HBufC8::NewLC (8); //Allocate Mem. for iLUID
hgs
parents:
diff changeset
  2798
	newCommand.iStatusRef = aStatusRef;
hgs
parents:
diff changeset
  2799
	//Add Leaf to the index updated by UpdateLeafObj
hgs
parents:
diff changeset
  2800
	iBuffer->At(iExecutionIndex).iLeafBuf->AppendL (newCommand);
hgs
parents:
diff changeset
  2801
	// iUri, iData, ILuid
hgs
parents:
diff changeset
  2802
	CleanupStack::Pop (3);
hgs
parents:
diff changeset
  2803
	SetField ( aURI);
hgs
parents:
diff changeset
  2804
hgs
parents:
diff changeset
  2805
	if ( iField->Compare (KNSmlDdfAddr)== 0)
hgs
parents:
diff changeset
  2806
		{
hgs
parents:
diff changeset
  2807
		iBuffer->At(iExecutionIndex).iAddr = ETrue;
hgs
parents:
diff changeset
  2808
		}
hgs
parents:
diff changeset
  2809
	else
hgs
parents:
diff changeset
  2810
		if ( iField->Compare (KNSmlDdfServerId)== 0)
hgs
parents:
diff changeset
  2811
			{
hgs
parents:
diff changeset
  2812
			iBuffer->At(iExecutionIndex).iServerId = ETrue;
hgs
parents:
diff changeset
  2813
			}
hgs
parents:
diff changeset
  2814
		else
hgs
parents:
diff changeset
  2815
			if ( iField->Compare (KNSmlDdfClientUserName)== 0)
hgs
parents:
diff changeset
  2816
				{
hgs
parents:
diff changeset
  2817
				iBuffer->At(iExecutionIndex).iUName = ETrue;
hgs
parents:
diff changeset
  2818
				}
hgs
parents:
diff changeset
  2819
			else
hgs
parents:
diff changeset
  2820
				if ( iField->Compare (KNSmlDdfName)== 0)
hgs
parents:
diff changeset
  2821
					{
hgs
parents:
diff changeset
  2822
					iBuffer->At(iExecutionIndex).iServerName = ETrue;
hgs
parents:
diff changeset
  2823
					}
hgs
parents:
diff changeset
  2824
hgs
parents:
diff changeset
  2825
	//  If Address,ServerId,ServerName,UserName then Add
hgs
parents:
diff changeset
  2826
hgs
parents:
diff changeset
  2827
	if ( iBuffer->At(iExecutionIndex).iAddr && iBuffer->At(iExecutionIndex).iServerId &&iBuffer->At(iExecutionIndex).iUName && iBuffer->At(iExecutionIndex).iServerName)
hgs
parents:
diff changeset
  2828
		{
hgs
parents:
diff changeset
  2829
		ExecuteBufferL ();
hgs
parents:
diff changeset
  2830
		iExecutionIndex = -1;
hgs
parents:
diff changeset
  2831
		}
hgs
parents:
diff changeset
  2832
	_DBG_FILE( "CNSmlDMSettingsAdapter::AddLeafBufferL(): end" );
hgs
parents:
diff changeset
  2833
	return;
hgs
parents:
diff changeset
  2834
	}
hgs
parents:
diff changeset
  2835
hgs
parents:
diff changeset
  2836
//------------------------------------------------------------------------------
hgs
parents:
diff changeset
  2837
// CNSmlDMSettingsAdapter::ExecuteBufferL()
hgs
parents:
diff changeset
  2838
// Adds the Node/Leaf obj to the db
hgs
parents:
diff changeset
  2839
//------------------------------------------------------------------------------
hgs
parents:
diff changeset
  2840
void CNSmlDMSettingsAdapter::ExecuteBufferL()
hgs
parents:
diff changeset
  2841
	{
hgs
parents:
diff changeset
  2842
	_DBG_FILE( "CNSmlDMSettingsAdapter::ExecuteBufferL(): begin" );
hgs
parents:
diff changeset
  2843
	TBuf8<8> newLUID;
hgs
parents:
diff changeset
  2844
	TInt rValue;
hgs
parents:
diff changeset
  2845
	//Buffer is being Executed
hgs
parents:
diff changeset
  2846
	iBufOn = ETrue;
hgs
parents:
diff changeset
  2847
hgs
parents:
diff changeset
  2848
	// Robustness check
hgs
parents:
diff changeset
  2849
	if ( iExecutionIndex<0)
hgs
parents:
diff changeset
  2850
		{
hgs
parents:
diff changeset
  2851
		return;
hgs
parents:
diff changeset
  2852
		}
hgs
parents:
diff changeset
  2853
hgs
parents:
diff changeset
  2854
	//Execute BufferL is called from CompleteOutstandingCmdsL only when
hgs
parents:
diff changeset
  2855
	//Mandatory fields are not set. Dont update Node/Leaf to the db, return a failure
hgs
parents:
diff changeset
  2856
hgs
parents:
diff changeset
  2857
	if ( !iComplete)
hgs
parents:
diff changeset
  2858
		rValue = CreateNewProfileL (iLUID);
hgs
parents:
diff changeset
  2859
	else
hgs
parents:
diff changeset
  2860
		rValue = CSmlDmAdapter::EError;
hgs
parents:
diff changeset
  2861
hgs
parents:
diff changeset
  2862
	iBuffer->At(iExecutionIndex).iExecuted = ETrue;
hgs
parents:
diff changeset
  2863
hgs
parents:
diff changeset
  2864
	if ( rValue != KErrNone)
hgs
parents:
diff changeset
  2865
		{
hgs
parents:
diff changeset
  2866
		if ( rValue == KErrNoMemory)
hgs
parents:
diff changeset
  2867
			{
hgs
parents:
diff changeset
  2868
			iCallBack->SetStatusL ( iBuffer->At(iExecutionIndex).iDMBuffStatusref, CSmlDmAdapter::ENoMemory);
hgs
parents:
diff changeset
  2869
			}
hgs
parents:
diff changeset
  2870
		else
hgs
parents:
diff changeset
  2871
			if ( rValue == KErrNotSupported)
hgs
parents:
diff changeset
  2872
				{
hgs
parents:
diff changeset
  2873
				iCallBack->SetStatusL ( iBuffer->At(iExecutionIndex).iDMBuffStatusref,
hgs
parents:
diff changeset
  2874
						CSmlDmAdapter::EInvalidObject);
hgs
parents:
diff changeset
  2875
				}
hgs
parents:
diff changeset
  2876
			else
hgs
parents:
diff changeset
  2877
				if ( rValue == KErrInUse)
hgs
parents:
diff changeset
  2878
					{
hgs
parents:
diff changeset
  2879
					iCallBack->SetStatusL ( iBuffer->At(iExecutionIndex).iDMBuffStatusref,
hgs
parents:
diff changeset
  2880
							CSmlDmAdapter::EObjectInUse);
hgs
parents:
diff changeset
  2881
					}
hgs
parents:
diff changeset
  2882
				else
hgs
parents:
diff changeset
  2883
					if ( rValue == KErrDiskFull)
hgs
parents:
diff changeset
  2884
						{
hgs
parents:
diff changeset
  2885
						iCallBack->SetStatusL ( iBuffer->At(iExecutionIndex).iDMBuffStatusref,
hgs
parents:
diff changeset
  2886
								CSmlDmAdapter::EDiskFull);
hgs
parents:
diff changeset
  2887
						}
hgs
parents:
diff changeset
  2888
					else
hgs
parents:
diff changeset
  2889
						{
hgs
parents:
diff changeset
  2890
						iCallBack->SetStatusL ( iBuffer->At(iExecutionIndex).iDMBuffStatusref,
hgs
parents:
diff changeset
  2891
								CSmlDmAdapter::EError);
hgs
parents:
diff changeset
  2892
						}
hgs
parents:
diff changeset
  2893
		// dont return, UpdateLeafObjectL will update the callback status for leaf Nodes 
hgs
parents:
diff changeset
  2894
		}
hgs
parents:
diff changeset
  2895
	else
hgs
parents:
diff changeset
  2896
		{
hgs
parents:
diff changeset
  2897
		if ( iLUID >= KMaxDataSyncID)
hgs
parents:
diff changeset
  2898
			{
hgs
parents:
diff changeset
  2899
			newLUID.Num ( iLUID - KMaxDataSyncID);
hgs
parents:
diff changeset
  2900
			}
hgs
parents:
diff changeset
  2901
		else
hgs
parents:
diff changeset
  2902
			{
hgs
parents:
diff changeset
  2903
			newLUID.Num ( iLUID);
hgs
parents:
diff changeset
  2904
			}
hgs
parents:
diff changeset
  2905
hgs
parents:
diff changeset
  2906
		iCallBack->SetMappingL ( *iBuffer->At(iExecutionIndex).iMappingName, newLUID);
hgs
parents:
diff changeset
  2907
hgs
parents:
diff changeset
  2908
		iCallBack->SetStatusL (iBuffer->At(iExecutionIndex).iDMBuffStatusref, CSmlDmAdapter::EOk);
hgs
parents:
diff changeset
  2909
		}
hgs
parents:
diff changeset
  2910
hgs
parents:
diff changeset
  2911
	for (TInt val= 0; val < iBuffer->At(iExecutionIndex).iLeafBuf->Count ();val++)
hgs
parents:
diff changeset
  2912
		{
hgs
parents:
diff changeset
  2913
		//Update the LUID data in the Leaf structure with the Profile LUID before calling UpdateLeafObj
hgs
parents:
diff changeset
  2914
		TPtr8 tempLUID(iBuffer->At(iExecutionIndex).iLeafBuf->At(val).iLuid->Des ());
hgs
parents:
diff changeset
  2915
		tempLUID.Append (newLUID);
hgs
parents:
diff changeset
  2916
		UpdateLeafObjectL (*iBuffer->At(iExecutionIndex).iLeafBuf->At(val).iUri, *iBuffer->At(iExecutionIndex).iLeafBuf->At(val).iLuid, *iBuffer->At(iExecutionIndex).iLeafBuf->At(val).iData, *iBuffer->At(iExecutionIndex).iMappingName, iBuffer->At(iExecutionIndex).iLeafBuf->At(val).iStatusRef);
hgs
parents:
diff changeset
  2917
		}
hgs
parents:
diff changeset
  2918
hgs
parents:
diff changeset
  2919
	// Delete the dynamically allocated buffers (Node/Leaf obj)
hgs
parents:
diff changeset
  2920
hgs
parents:
diff changeset
  2921
	ClearBuffer ( iBuffer->At(iExecutionIndex).iLeafBuf);
hgs
parents:
diff changeset
  2922
hgs
parents:
diff changeset
  2923
	delete iBuffer->At(iExecutionIndex).iLeafBuf;
hgs
parents:
diff changeset
  2924
hgs
parents:
diff changeset
  2925
	if ( iBuffer->At(iExecutionIndex).iMappingName)
hgs
parents:
diff changeset
  2926
		{
hgs
parents:
diff changeset
  2927
		delete iBuffer->At(iExecutionIndex).iMappingName;
hgs
parents:
diff changeset
  2928
		iBuffer->At(iExecutionIndex).iMappingName = NULL;
hgs
parents:
diff changeset
  2929
		}
hgs
parents:
diff changeset
  2930
hgs
parents:
diff changeset
  2931
	iBuffer->Delete (iExecutionIndex);
hgs
parents:
diff changeset
  2932
	iBuffer->Compress ();
hgs
parents:
diff changeset
  2933
hgs
parents:
diff changeset
  2934
	iBufOn = EFalse;
hgs
parents:
diff changeset
  2935
	_DBG_FILE( "CNSmlDMSettingsAdapter::ExecuteBufferL(): end" );
hgs
parents:
diff changeset
  2936
	}
hgs
parents:
diff changeset
  2937
hgs
parents:
diff changeset
  2938
//------------------------------------------------------------------------------
hgs
parents:
diff changeset
  2939
// TPtrC8 CNSmlDMSettingsAdapter::ParentURI(const TDesC8& aURI)
hgs
parents:
diff changeset
  2940
// returns parent uri, i.e. removes last uri segment
hgs
parents:
diff changeset
  2941
// Searches till the third "/" is reached
hgs
parents:
diff changeset
  2942
//------------------------------------------------------------------------------
hgs
parents:
diff changeset
  2943
TPtrC8 CNSmlDMSettingsAdapter::ParentURI(const TDesC8& aURI)
hgs
parents:
diff changeset
  2944
	{
hgs
parents:
diff changeset
  2945
	_DBG_FILE( "CNSmlDMSettingsAdapter::ParentURI(): begin" );
hgs
parents:
diff changeset
  2946
	TInt count;
hgs
parents:
diff changeset
  2947
	TInt flag = 0;
hgs
parents:
diff changeset
  2948
	for (count=0; count<=aURI.Length ()-1;count++)
hgs
parents:
diff changeset
  2949
		{
hgs
parents:
diff changeset
  2950
hgs
parents:
diff changeset
  2951
		if ( aURI[count]=='/')
hgs
parents:
diff changeset
  2952
			{
hgs
parents:
diff changeset
  2953
			flag++;
hgs
parents:
diff changeset
  2954
			if ( flag == KDynNodePosn) //KDynNodePosn =3 --> SyncML/DMAcc/DMIDxx
hgs
parents:
diff changeset
  2955
				break;
hgs
parents:
diff changeset
  2956
			}
hgs
parents:
diff changeset
  2957
		}
hgs
parents:
diff changeset
  2958
hgs
parents:
diff changeset
  2959
	_DBG_FILE( "CNSmlDMSettingsAdapter::ParentURI(): end" );
hgs
parents:
diff changeset
  2960
	return aURI.Left (count);
hgs
parents:
diff changeset
  2961
	}
hgs
parents:
diff changeset
  2962
hgs
parents:
diff changeset
  2963
//-----------------------------------------------------------------------------------------    
hgs
parents:
diff changeset
  2964
// Clears the elements of the passed in LeafElement Structure
hgs
parents:
diff changeset
  2965
//----------------------------------------------------------------------------------------
hgs
parents:
diff changeset
  2966
void CNSmlDMSettingsAdapter::ClearBuffer(
hgs
parents:
diff changeset
  2967
		CArrayFixFlat<TNSmlDMLeafElement>* aBuffer)
hgs
parents:
diff changeset
  2968
	{
hgs
parents:
diff changeset
  2969
	_DBG_FILE( "CNSmlDMSettingsAdapter::ClearBuffer(): begin" );
hgs
parents:
diff changeset
  2970
	for (TInt i = 0; i < aBuffer->Count (); i++)
hgs
parents:
diff changeset
  2971
		{
hgs
parents:
diff changeset
  2972
		delete aBuffer->At(i).iUri;
hgs
parents:
diff changeset
  2973
		aBuffer->At(i).iUri = NULL;
hgs
parents:
diff changeset
  2974
hgs
parents:
diff changeset
  2975
		delete aBuffer->At(i).iData;
hgs
parents:
diff changeset
  2976
		aBuffer->At(i).iData = NULL;
hgs
parents:
diff changeset
  2977
hgs
parents:
diff changeset
  2978
		delete aBuffer->At(i).iLuid;
hgs
parents:
diff changeset
  2979
		aBuffer->At(i).iLuid = NULL;
hgs
parents:
diff changeset
  2980
		}
hgs
parents:
diff changeset
  2981
hgs
parents:
diff changeset
  2982
	aBuffer->Reset ();
hgs
parents:
diff changeset
  2983
	_DBG_FILE( "CNSmlDMSettingsAdapter::ClearBuffer(): end" );
hgs
parents:
diff changeset
  2984
	}
hgs
parents:
diff changeset
  2985
// ========================== OTHER EXPORTED FUNCTIONS =========================
hgs
parents:
diff changeset
  2986
hgs
parents:
diff changeset
  2987
#ifndef IMPLEMENTATION_PROXY_ENTRY
hgs
parents:
diff changeset
  2988
#define IMPLEMENTATION_PROXY_ENTRY(aUid, aFuncPtr)	{{aUid},(aFuncPtr)}
hgs
parents:
diff changeset
  2989
#endif
hgs
parents:
diff changeset
  2990
hgs
parents:
diff changeset
  2991
const TImplementationProxy ImplementationTable[] = 
hgs
parents:
diff changeset
  2992
    {
hgs
parents:
diff changeset
  2993
		IMPLEMENTATION_PROXY_ENTRY( KNSmlDMSettingsAdapterImplUid, CNSmlDMSettingsAdapter::NewL )
hgs
parents:
diff changeset
  2994
    };
hgs
parents:
diff changeset
  2995
hgs
parents:
diff changeset
  2996
hgs
parents:
diff changeset
  2997
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2998
// TImplementationProxy* ImplementationGroupProxy()
hgs
parents:
diff changeset
  2999
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  3000
EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount )
hgs
parents:
diff changeset
  3001
    {
hgs
parents:
diff changeset
  3002
	_DBG_FILE( "ImplementationGroupProxy() for CNSmlDMSettingsAdapter: begin" );
hgs
parents:
diff changeset
  3003
hgs
parents:
diff changeset
  3004
    aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
hgs
parents:
diff changeset
  3005
hgs
parents:
diff changeset
  3006
	_DBG_FILE( "ImplementationGroupProxy() for CNSmlDMSettingsAdapter: end" );
hgs
parents:
diff changeset
  3007
    return ImplementationTable;
hgs
parents:
diff changeset
  3008
	}
hgs
parents:
diff changeset
  3009
hgs
parents:
diff changeset
  3010
// End of File
hgs
parents:
diff changeset
  3011