diff -r 000000000000 -r 3ce708148e4d omadm/omadmextensions/adapters/browseradapter/src/nsmlbrowseradapter.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omadm/omadmextensions/adapters/browseradapter/src/nsmlbrowseradapter.cpp Thu Dec 17 08:40:12 2009 +0200 @@ -0,0 +1,650 @@ +/* +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: DM browser Adapter +* +*/ + + + + + +//INCLUDE FILES +#include // For TImplementationProxy definition +#include "nsmldmimpluids.h" + + +#include "nsmldebug.h" +#include "nsmlconstants.h" +#include "nsmldmconst.h" +#include "nsmlbrowseradapter.h" +#include "nsmldmiapmatcher.h" + +#include +#include +#include +#include // CommsDB columname defs +#include + +#ifndef __WINS__ + // This lowers the unnecessary compiler warning (armv5) to remark. + // "Warning: #174-D: expression has no effect..." is caused by + // DBG_ARGS8 macro in no-debug builds. +#pragma diag_remark 174 +#endif +const TInt KUserDefined = 0; + + +const TUint KNSmlDMBrowserAdapterImplUid = 0x1028335F; + + +// ----------------------------------------------------------------------------- +// CNSmlDmBrowserAdapter* CNSmlDmBrowserAdapter::NewL( ) +// ----------------------------------------------------------------------------- +CNSmlDmBrowserAdapter* CNSmlDmBrowserAdapter::NewL(MSmlDmCallback* aDmCallback ) + { + _DBG_FILE("CNSmlDmBrowserAdapter::NewL(): begin"); + CNSmlDmBrowserAdapter* self = NewLC( aDmCallback ); + CleanupStack::Pop(); + _DBG_FILE("CNSmlDmBrowserAdapter::NewL(): end"); + return self; + } + +// ----------------------------------------------------------------------------- +// CNSmlDmBrowserAdapter* CNSmlDmBrowserAdapter::NewLC( ) +// ----------------------------------------------------------------------------- +CNSmlDmBrowserAdapter* CNSmlDmBrowserAdapter::NewLC(MSmlDmCallback* aDmCallback ) + { + _DBG_FILE("CNSmlDmBrowserAdapter::NewLC(): begin"); + CNSmlDmBrowserAdapter* self = new (ELeave) CNSmlDmBrowserAdapter(aDmCallback); + CleanupStack::PushL(self); + self->iDmCallback = aDmCallback; + _DBG_FILE("CNSmlDmBrowserAdapter::NewLC(): end"); + return self; + } + + + +// ----------------------------------------------------------------------------- +// CNSmlDmBrowserAdapter::~CNSmlDmBrowserAdapter() +// ----------------------------------------------------------------------------- +CNSmlDmBrowserAdapter::~CNSmlDmBrowserAdapter() + { + _DBG_FILE("CNSmlDmBrowserAdapter::~CNSmlDmBrowserAdapter(): begin"); + _DBG_FILE("CNSmlDmBrowserAdapter::~CNSmlDmBrowserAdapter(): end"); + } + +// ----------------------------------------------------------------------------- +// CNSmlDmBrowserAdapter::CNSmlDmBrowserAdapter() +// ----------------------------------------------------------------------------- + +CNSmlDmBrowserAdapter::CNSmlDmBrowserAdapter(TAny* aEcomArguments):CSmlDmAdapter(aEcomArguments) + { + _DBG_FILE("CNSmlDmBrowserAdapter::CNSmlDmBrowserAdapter(aEcomArguments): begin"); + _DBG_FILE("CNSmlDmBrowserAdapter::CNSmlDmBrowserAdapter(aEcomArguments): end"); + } + +// ----------------------------------------------------------------------------- +// CNSmlDmBrowserAdapter::SetLeafPropertiesL() +// ----------------------------------------------------------------------------- +void CNSmlDmBrowserAdapter::SetLeafPropertiesL( MSmlDmDDFObject& aObject, + const TSmlDmAccessTypes& aAccessTypes, + const TDesC8& aDescription ) const + { + aObject.SetAccessTypesL( aAccessTypes ); + aObject.SetScopeL( MSmlDmDDFObject::EPermanent ); + aObject.SetDFFormatL( MSmlDmDDFObject::EChr ); + aObject.AddDFTypeMimeTypeL( KNSmlDMBrowserAdapterTextPlain ); + aObject.SetDescriptionL( aDescription ); + } + + +// ----------------------------------------------------------------------------- +// CNSmlDmBrowserAdapter::DDFVersionL() +// ----------------------------------------------------------------------------- +void CNSmlDmBrowserAdapter::DDFVersionL(CBufBase& aDDFVersion) + { + _DBG_FILE("CNSmlDmBrowserAdapter::DDFVersionL(TDes& aDDFVersion): begin"); + aDDFVersion.InsertL(0,KNSmlDMBrowserAdapterDDFVersion); + _DBG_FILE("CNSmlDmBrowserAdapter::DDFVersionL(TDes& aDDFVersion): end"); + } + + +// ----------------------------------------------------------------------------- +// CNSmlDmBrowserAdapter::DDFStructureL() +// +// ----------------------------------------------------------------------------- +void CNSmlDmBrowserAdapter::DDFStructureL( MSmlDmDDFObject& aDDF ) + { + _DBG_FILE("CNSmlDmBrowserAdapter::DDFStructureL(): begin"); + + TSmlDmAccessTypes accessTypes; + accessTypes.SetGet(); + + TSmlDmAccessTypes accessSetTypes; + accessSetTypes.SetGet(); + accessSetTypes.SetAdd(); + accessSetTypes.SetReplace(); + + MSmlDmDDFObject& dmBrowserAdap = aDDF.AddChildObjectL( KNSmlDMBrowserAdapterNodeName ); + dmBrowserAdap.SetAccessTypesL( accessTypes ); + dmBrowserAdap.SetScopeL( MSmlDmDDFObject::EPermanent ); + dmBrowserAdap.SetDescriptionL( KNSmlDMBrowserAdapterDescription ); + + MSmlDmDDFObject& toNapID = dmBrowserAdap.AddChildObjectL(KNSmlDMBrowserAdapterAPNode); + toNapID.SetAccessTypesL( accessSetTypes ); + toNapID.SetScopeL( MSmlDmDDFObject::EDynamic ); + toNapID.SetDFFormatL( MSmlDmDDFObject::EChr ); + toNapID.AddDFTypeMimeTypeL( KNSmlDMBrowserAdapterTextPlain ); + toNapID.SetDescriptionL( KNSmlDMBrowserAdapterAPNodeDescription ); + + MSmlDmDDFObject& startpageURL = dmBrowserAdap.AddChildObjectL(KNSmlDMBrowserAdapterStartpageURL); + startpageURL.SetAccessTypesL( accessSetTypes ); + startpageURL.SetScopeL( MSmlDmDDFObject::EPermanent ); + startpageURL.SetDFFormatL( MSmlDmDDFObject::EChr ); + startpageURL.AddDFTypeMimeTypeL( KNSmlDMBrowserAdapterTextPlain ); + startpageURL.SetDescriptionL( KNSmlDMBrowserStartpageURLDescription ); + _DBG_FILE("CNSmlDmBrowserAdapter::DDFStructureL(): end"); + } + +// ----------------------------------------------------------------------------- +// CNSmlDmBrowserAdapter::UpdateLeafObjectL() +// ----------------------------------------------------------------------------- +void CNSmlDmBrowserAdapter::UpdateLeafObjectL( const TDesC8& aURI, + const TDesC8& aLUID, + const TDesC8& aObject, + const TDesC8& aType, + const TInt aStatusRef ) + { + _DBG_FILE("CNSmlDmBrowserAdapter::UpdateLeafObjectL(): begin"); + + CSmlDmAdapter::TError retValue = CSmlDmAdapter::EOk; + TInt ret = aURI.LocateReverse(KNSmlURISeparator()[0]); + if ( ret == KErrNotFound ) + { + retValue = CSmlDmAdapter::EError; + iDmCallback->SetStatusL( aStatusRef, retValue ); + } + else + { + iDmCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EOk ); + TInt len = aURI.Length() - (ret + 1); + TPtrC8 segment = aURI.Right( len ); + + DBG_ARGS8(_S8(" Value being set URI - <%S> <%S> "), &aURI, &aObject ); + + if (segment == KNSmlDMBrowserAdapterAPNode ) + { + // Get IAP ID and then set the browser setting + TInt err = KErrNone; + CNSmlDMIAPMatcher* iapmatch = CNSmlDMIAPMatcher::NewL( &Callback() ); + CleanupStack::PushL(iapmatch); + + TInt iap = iapmatch->IAPIdFromURIL( aObject ); + + CleanupStack::PopAndDestroy(); // iapmatch + + if ( iap != KErrNotFound ) + { + CCommsDatabase* commDb = CCommsDatabase::NewL(); + CleanupStack::PushL(commDb); + CApUtils* aputils = CApUtils::NewLC(*commDb); + TRAP(err, iap = aputils->WapIdFromIapIdL( iap ) ); + DBG_ARGS(_S("IAP = %d"), iap); + + CleanupStack::PopAndDestroy(2); //commdb,aputils + + if( err == KErrNone) + { + CRepository* repository = CRepository::NewLC( KCRUidBrowser ); + + // Force the browser to use the User Defined AP selection mode. + User::LeaveIfError( repository->Set( KBrowserAccessPointSelectionMode, + KUserDefined ) ); + // This sets the accesspoint default for browser. + User::LeaveIfError( repository->Set( KBrowserDefaultAccessPoint, + iap ) ); + CleanupStack::PopAndDestroy(); // repository + + } + else + { + _DBG_FILE("CNSmlDmMMSAdapter::UpdateDataL(): \ + err!=KErrNone"); + iDmCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EInvalidObject ); + + } + } + else + { + _DBG_FILE("CNSmlDmMMSAdapter::UpdateDataL(): status = \ + CSmlDmAdapter::EInvalidObject"); + iDmCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EInvalidObject ); + } + } + else if(segment == KNSmlDMBrowserAdapterStartpageURL ) + { + // To Get the Browser Start page URL + TBuf aBuf; + TInt aErr; + aBuf.Zero(); + aBuf.Copy(aObject); + + if(aBuf.Length() == 0 || aBuf.Length() > KMaxLengthStartpageName) + { + _DBG_FILE("CNSmlDmBrowserAdapter::UpdateLeafObjectL(): Error Zero Length String"); + iDmCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EInvalidObject); + return; + } + + + CRepository* repository = CRepository::NewLC( KCRUidBrowser ); + + if(repository) + { + _DBG_FILE("CNSmlDmBrowserAdapter::UpdateLeafObjectL(): Before Set for StartPage"); + User::LeaveIfError( aErr = repository->Set( KBrowserNGStartpageURL,aBuf)); + if(aErr != KErrNone) + { + _DBG_FILE("CNSmlDmBrowserAdapter::UpdateLeafObjectL(): Error in Cenrep Set"); + iDmCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EError); + return; + } + _DBG_FILE("CNSmlDmBrowserAdapter::UpdateLeafObjectL(): Before Set for StartPageType"); + User::LeaveIfError( aErr = repository->Set( KBrowserNGHomepageType,KBrowserHomePageUDefined)); + if(aErr != KErrNone) + { + _DBG_FILE("CNSmlDmBrowserAdapter::UpdateLeafObjectL(): Error in Cenrep Set"); + iDmCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EError); + return; + } + + } + _DBG_FILE("CNSmlDmBrowserAdapter::UpdateLeafObjectL(): Before Setting status to OK"); + CleanupStack::PopAndDestroy(); // repository + iDmCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EOk ); + + } + else + { + iDmCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EOk ); + } + } + + _DBG_FILE("CNSmlDmBrowserAdapter::UpdateLeafObjectL(): end"); + } + + +// ----------------------------------------------------------------------------- +// CNSmlDmBrowserAdapter::DeleteObjectL() +// ----------------------------------------------------------------------------- +void CNSmlDmBrowserAdapter::DeleteObjectL( const TDesC8& /*aURI*/, + const TDesC8& /*aLUID*/, + const TInt aStatusRef ) + { + _DBG_FILE("CNSmlDmBrowserAdapter::DeleteLeafObjectL( ): begin"); + _DBG_FILE("CNSmlDmBrowserAdapter::DeleteLeafObjectL( ): end"); + iDmCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EError ); + } + + +// ----------------------------------------------------------------------------- +// CNSmlDmBrowserAdapter::FetchLeafObjectL( const TDesC8& aURI, const TDesC8& aLUID, +// const TDesC8& aType, const TInt aResultsRef, const TInt aStatusRef ) +// ----------------------------------------------------------------------------- +void CNSmlDmBrowserAdapter::FetchLeafObjectL( const TDesC8& aURI, + const TDesC8& /*aLUID*/, + const TDesC8& aType, + const TInt aResultsRef, + const TInt aStatusRef ) + { + _DBG_FILE("CNSmlDmBrowserAdapter::FetchLeafObjectL(): begin"); + + CBufBase *object = CBufFlat::NewL( 1 ); + CleanupStack::PushL( object ); + + CSmlDmAdapter::TError retValue = FetchLeafObjectL( aURI, *object ); + + iDmCallback->SetStatusL( aStatusRef, retValue ); + iDmCallback->SetResultsL( aResultsRef, *object, aType ); + CleanupStack::PopAndDestroy(); //object + _DBG_FILE("CNSmlDmDevInfoAdapt+er::FetchLeafObjectL(): end"); + } + + +// ----------------------------------------------------------------------------- +// CNSmlDmBrowserAdapter::ChildURIListL( const TDesC& aURI, +// const TDesC& aParentLUID, const CArrayFix& aPreviousURISegmentList, +// const TInt aResultsRef, const TInt aStatusRef ) +// ----------------------------------------------------------------------------- +void CNSmlDmBrowserAdapter::ChildURIListL( const TDesC8& aURI, + const TDesC8& /*aParentLUID*/, + const CArrayFix& /*aPreviousURISegmentList*/, + const TInt aResultsRef, + const TInt aStatusRef ) + { + _DBG_FILE("CNSmlDmBrowserAdapter::ChildURIListL(): begin"); + CSmlDmAdapter::TError retValue = CSmlDmAdapter::EOk; + CBufBase* currentURISegmentList = CBufFlat::NewL( 1 ); + CleanupStack::PushL( currentURISegmentList ); + TInt ret = aURI.LocateReverse(KNSmlURISeparator()[0]); + if ( ret == KErrNotFound ) + { + ret = -1; + } + TInt len = aURI.Length() - ( ret + 1 ); + TPtrC8 segment = aURI.Right( len ); + + if ( segment == KNSmlDMBrowserAdapterNodeName ) + { + currentURISegmentList->InsertL( currentURISegmentList->Size(), KNSmlDMBrowserAdapterBrowserNodes() ); + } + + else + { + retValue = CSmlDmAdapter::EError; + } + iDmCallback->SetStatusL( aStatusRef, retValue ); + iDmCallback->SetResultsL( aResultsRef, *currentURISegmentList, KNullDesC8 ); + CleanupStack::PopAndDestroy(); //currentURISegmentList + _DBG_FILE("CNSmlDmBrowserAdapter::ChildURIListL(): end"); + } + + +// ----------------------------------------------------------------------------- +// CNSmlDmBrowserAdapter::AddNodeObjectL( const TDesC8& aURI, +// const TDesC8& aParentLUID, const TInt aStatusRef ) +// ----------------------------------------------------------------------------- +void CNSmlDmBrowserAdapter::AddNodeObjectL( const TDesC8& /*aURI*/, + const TDesC8& /*aParentLUID*/, + const TInt aStatusRef ) + { + _DBG_FILE("CNSmlDmBrowserAdapter::AddNodeObjectL(): begin"); + iDmCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EError ); + _DBG_FILE("CNSmlDmBrowserAdapter::AddNodeObjectL(): end"); + } + +// ----------------------------------------------------------------------------- +// CNSmlDmBrowserAdapter::UpdateLeafObjectL() +// ----------------------------------------------------------------------------- +void CNSmlDmBrowserAdapter::UpdateLeafObjectL( const TDesC8& /*aURI*/, + const TDesC8& /*aLUID*/, + RWriteStream*& /*aStream*/, + const TDesC8& /*aType*/, + const TInt aStatusRef ) + { + _DBG_FILE("CNSmlDmBrowserAdapter::UpdateLeafObjectL(): stream: begin"); + iDmCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EError ); + _DBG_FILE("CNSmlDmBrowserAdapter::UpdateLeafObjectL(): stream: end"); + } + + +// ----------------------------------------------------------------------------- +// CNSmlDmBrowserAdapter::FetchLeafObjectSizeL( const TDesC8& aURI, +// const TDesC8& aLUID, const TDesC8& aType, TInt aResultsRef, TInt aStatusRef ) +// ----------------------------------------------------------------------------- +void CNSmlDmBrowserAdapter::FetchLeafObjectSizeL( const TDesC8& aURI, + const TDesC8& /*aLUID*/, + const TDesC8& aType, + const TInt aResultsRef, + const TInt aStatusRef ) + { + + _DBG_FILE("CNSmlDmBrowserAdapter::FetchLeafObjectSizeL(): begin"); + + CBufBase *object = CBufFlat::NewL( 1 ); + CleanupStack::PushL( object ); + CSmlDmAdapter::TError retValue = FetchLeafObjectL( aURI, *object ); + + TInt objSizeInBytes = object->Size(); + TBuf8<2> stringObjSizeInBytes; + stringObjSizeInBytes.Num( objSizeInBytes ); + object->Reset(); + object->InsertL( 0, stringObjSizeInBytes ); + + iDmCallback->SetStatusL( aStatusRef, retValue ); + iDmCallback->SetResultsL( aResultsRef, *object, aType ); + CleanupStack::PopAndDestroy(); //object + _DBG_FILE("CNSmlDmBrowserAdapter::FetchLeafObjectSizeL(): end"); + } + + +// ----------------------------------------------------------------------------- +// CNSmlDmBrowserAdapter::ExecuteCommandL( const TDesC8& aURI, +// const TDesC8& aParentLUID, TDesC8& aArgument, const TDesC8& aType, TInt aStatusRef ) +// ----------------------------------------------------------------------------- +void CNSmlDmBrowserAdapter::ExecuteCommandL( const TDesC8& aURI, const TDesC8& aLUID, const TDesC8& aArgument, const TDesC8& aType, const TInt aStatusRef ) + { + _DBG_FILE("CNSmlDmBrowserAdapter::ExecuteCommandL(): begin"); + iDmCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EError ); + _DBG_FILE("CNSmlDmBrowserAdapter::ExecuteCommandL(): end"); + } + +// ----------------------------------------------------------------------------- +// CNSmlDmBrowserAdapter::ExecuteCommandL( const TDesC8& aURI, +// const TDesC8& aParentLUID, RWriteStream*& aStream, const TDesC8& aType, +// TInt aStatusRef ) +// ----------------------------------------------------------------------------- +void CNSmlDmBrowserAdapter::ExecuteCommandL( const TDesC8& /*aURI*/, + const TDesC8& /*aParentLUID*/, + RWriteStream*& /*aStream*/, + const TDesC8& /*aType*/, + const TInt aStatusRef ) + { + _DBG_FILE("CNSmlDmBrowserAdapter::ExecuteCommandL(): stream: begin"); + iDmCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EError ); + _DBG_FILE("CNSmlDmBrowserAdapter::ExecuteCommandL(): stream: end"); + } + +// ----------------------------------------------------------------------------- +// CNSmlDmBrowserAdapter::CopyCommandL( const TDesC8& aTargetURI, const TDesC8& +// aSourceURI, const TDesC8& aSourceLUID, const TDesC8& /*aType*/, TInt aStatusRef ) +// ----------------------------------------------------------------------------- +void CNSmlDmBrowserAdapter::CopyCommandL( const TDesC8& /*aTargetURI*/, const TDesC8& + /*aTargetLUID*/, const TDesC8& /*aSourceURI*/, + const TDesC8& /*aSourceLUID*/, + const TDesC8& /*aType*/, TInt aStatusRef ) + { + _DBG_FILE("CNSmlDmBrowserAdapter::CopyCommandL(): begin"); + iDmCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EError ); + _DBG_FILE("CNSmlDmBrowserAdapter::CopyCommandL(): end"); + } + +// -------------------------------------- +// CNSmlDmBrowserAdapter::StartAtomicL() +// -------------------------------------- +void CNSmlDmBrowserAdapter::StartAtomicL() + { + _DBG_FILE("CNSmlDmBrowserAdapter::StartAtomicL(): begin"); + _DBG_FILE("CNSmlDmBrowserAdapter::StartAtomicL(): end"); + } + +// --------------------------------------- +// CNSmlDmBrowserAdapter::CommitAtomicL() +// --------------------------------------- +void CNSmlDmBrowserAdapter::CommitAtomicL() + { + _DBG_FILE("CNSmlDmBrowserAdapter::CommitAtomicL(): begin"); + _DBG_FILE("CNSmlDmBrowserAdapter::CommitAtomicL(): end"); + } + +// ----------------------------------------- +// CNSmlDmBrowserAdapter::RollbackAtomicL() +// ----------------------------------------- +void CNSmlDmBrowserAdapter::RollbackAtomicL() + { + _DBG_FILE("CNSmlDmBrowserAdapter::RollbackAtomicL(): begin"); + _DBG_FILE("CNSmlDmBrowserAdapter::RollbackAtomicL(): end"); + } + +// ----------------------------------------------------------- +// CNSmlDmBrowserAdapter::StreamingSupport( TInt& aItemSize ) +// ----------------------------------------------------------- +TBool CNSmlDmBrowserAdapter::StreamingSupport( TInt& /*aItemSize*/ ) + { + _DBG_FILE("CNSmlDmBrowserAdapter::StreamingSupport(): begin"); + _DBG_FILE("CNSmlDmBrowserAdapter::StreamingSupport(): end"); + return EFalse; + } + +// ------------------------------------------ +// CNSmlDmBrowserAdapter::StreamCommittedL() +// ------------------------------------------ +void CNSmlDmBrowserAdapter::StreamCommittedL() + { + _DBG_FILE("CNSmlDmBrowserAdapter::StreamCommittedL(): begin"); + _DBG_FILE("CNSmlDmBrowserAdapter::StreamCommittedL(): end"); + } + +// -------------------------------------------------- +// CNSmlDmBrowserAdapter::CompleteOutstandingCmdsL() +// -------------------------------------------------- +void CNSmlDmBrowserAdapter::CompleteOutstandingCmdsL() + { + _DBG_FILE("CNSmlDmBrowserAdapter::CompleteOutstandingCmdsL(): begin"); + _DBG_FILE("CNSmlDmBrowserAdapter::CompleteOutstandingCmdsL(): end"); + } + +// ----------------------------------------------------------------------------- +// CNSmlDmDevDetailAdapter::FetchLeafObjectL() +// ----------------------------------------------------------------------------- +CSmlDmAdapter::TError CNSmlDmBrowserAdapter::FetchLeafObjectL( const TDesC8& aURI, + CBufBase& aObject ) + { + _DBG_FILE("CNSmlDmInfoAdapter::FetchLeafObjectL(): begin"); + CSmlDmAdapter::TError retValue = CSmlDmAdapter::EOk; + TInt ret = aURI.LocateReverse(KNSmlURISeparator()[0]); + TInt err = KErrNone; + if ( ret == KErrNotFound ) + { + retValue = CSmlDmAdapter::EError; + } + else + { + TInt len = aURI.Length() - (ret + 1); + TPtrC8 segment = aURI.Right( len ); + + if(segment == KNSmlDMBrowserAdapterAPNode) + { + TInt iap ; + CRepository* repository = CRepository::NewLC( KCRUidBrowser ); + + // Force the browser to use the User Defined AP selection mode. + TInt selectionMode; + User::LeaveIfError( repository->Get( KBrowserAccessPointSelectionMode, + selectionMode ) ); + if (selectionMode != KUserDefined) + { + retValue= CSmlDmAdapter::ENotFound; + + CleanupStack::PopAndDestroy(); // repository + } + else + { + // This sets the accesspoint default for browser. + User::LeaveIfError( repository->Get( KBrowserDefaultAccessPoint, + iap ) ); + CleanupStack::PopAndDestroy(); // repository + + CCommsDatabase* commDb = CCommsDatabase::NewL(); + CleanupStack::PushL(commDb); + CApUtils* aputils = CApUtils::NewLC(*commDb); + TRAP(err, iap = aputils->IapIdFromWapIdL( iap ) ); + DBG_ARGS(_S("IAP = %d"), iap); + + + if( iap != -1 && err == KErrNone ) + { + CNSmlDMIAPMatcher* iapmatch = CNSmlDMIAPMatcher::NewL( &Callback() ); + CleanupStack::PushL(iapmatch); + + HBufC8* uri8 = iapmatch->URIFromIAPIdL( iap ); + + if( uri8 ) + { + CleanupStack::PushL(uri8); + aObject.InsertL(0,uri8->Des()); + retValue= CSmlDmAdapter::EOk; + + CleanupStack::PopAndDestroy(); // uri8 + } + else + { + retValue= CSmlDmAdapter::ENotFound; + + } + CleanupStack::PopAndDestroy(); // iapMatch + + } + else + { + retValue= CSmlDmAdapter::ENotFound; + } + CleanupStack::PopAndDestroy(); // apUrils + CleanupStack::PopAndDestroy(); // commDb + } + } + else if(segment == KNSmlDMBrowserAdapterStartpageURL) + { + // To Set the Browser Start page URL + TBuf8 aName; + CRepository* centrep( NULL); + aName.Zero(); + centrep = CRepository::NewLC(KCRUidBrowser); + + if ( centrep ) + { + TFullName temp; + + if (centrep->Get( KBrowserNGStartpageURL, temp )==KErrNone && temp.Length() ) + { + _DBG_FILE("CNSmlDmBrowserAdapter::FetchLeafObjectL(): Got the value for start page"); + temp.Trim(); + aName.Copy(temp); + } + CleanupStack::PopAndDestroy(centrep); + } + aObject.InsertL(0,aName); + retValue= CSmlDmAdapter::EOk; + } + + } + _DBG_FILE("CNSmlDmInfoAdapter::FetchLeafObjectL(): end"); + return retValue; + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +#ifndef IMPLEMENTATION_PROXY_ENTRY +#define IMPLEMENTATION_PROXY_ENTRY(aUid, aFuncPtr) {{aUid},(aFuncPtr)} +#endif + +const TImplementationProxy ImplementationTable[] = + { + IMPLEMENTATION_PROXY_ENTRY(KNSmlDMBrowserAdapterImplUid, CNSmlDmBrowserAdapter::NewL) + }; + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount ) + { + _DBG_FILE("ImplementationGroupProxy() for CNSmlDmBrowserAdapter: begin"); + aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy); + _DBG_FILE("ImplementationGroupProxy() for CNSmlDmBrowserAdapter: end"); + return ImplementationTable; + } + +// End of file +