--- /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 <implementationproxy.h> // For TImplementationProxy definition
+#include "nsmldmimpluids.h"
+
+
+#include "nsmldebug.h"
+#include "nsmlconstants.h"
+#include "nsmldmconst.h"
+#include "nsmlbrowseradapter.h"
+#include "nsmldmiapmatcher.h"
+
+#include <centralrepository.h>
+#include <BrowserUiSDKCRKeys.h>
+#include <commdb.h>
+#include <cdbcols.h> // CommsDB columname defs
+#include <ApUtils.h>
+
+#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<KMaxLengthStartpageName> 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<TSmlDmMappingInfo>& aPreviousURISegmentList,
+// const TInt aResultsRef, const TInt aStatusRef )
+// -----------------------------------------------------------------------------
+void CNSmlDmBrowserAdapter::ChildURIListL( const TDesC8& aURI,
+ const TDesC8& /*aParentLUID*/,
+ const CArrayFix<TSmlDmMappingInfo>& /*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<KMaxLengthStartpageName> 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
+