diff -r 75a71fdb4c92 -r 7d11f9a6646f customization/DMUtils/src/nsmldmiapmatcher.cpp --- a/customization/DMUtils/src/nsmldmiapmatcher.cpp Tue Feb 02 00:03:17 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,235 +0,0 @@ -/* -* Copyright (c) 2005 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 Tree module -* -*/ - - -// ------------------------------------------------------------------------------------------------ -// Includes -// ------------------------------------------------------------------------------------------------ - -#include -#include "nsmldmiapmatcher.h" -#include -#include - -// ------------------------------------------------------------------------------------------------ -// CNSmlDMIAPMatcher* CNSmlDMIAPMatcher::NewL( MSmlDmCallback* aDmCallback ) -// ------------------------------------------------------------------------------------------------ -NSMLDMURI_EXPORT_C CNSmlDMIAPMatcher* CNSmlDMIAPMatcher::NewL( - MSmlDmCallback* aDmCallback ) - { - CNSmlDMIAPMatcher* self = CNSmlDMIAPMatcher::NewLC( aDmCallback ); - CleanupStack::Pop(); - return self; - } - -// ------------------------------------------------------------------------------------------------ -// CNSmlDMIAPMatcher* CNSmlDMIAPMatcher::NewLC( MSmlDmCallback* aDmCallback ) -// ------------------------------------------------------------------------------------------------ -NSMLDMURI_EXPORT_C CNSmlDMIAPMatcher* CNSmlDMIAPMatcher::NewLC( - MSmlDmCallback* aDmCallback ) - { - CNSmlDMIAPMatcher* self = new( ELeave ) CNSmlDMIAPMatcher; - CleanupStack::PushL( self ); - self->ConstructL( aDmCallback ); - return self; - } - -// ------------------------------------------------------------------------------------------------ -// void CNSmlDMIAPMatcher::ConstructL( MSmlDmCallback* aDmCallback ) -// ------------------------------------------------------------------------------------------------ -void CNSmlDMIAPMatcher::ConstructL( MSmlDmCallback* aDmCallback ) - { - iCallback = aDmCallback; - FeatureManager::InitializeLibL(); - iFeatMgrInitialized = ETrue; - } - -// ------------------------------------------------------------------------------------------------ -// CNSmlDMIAPMatcher::~CNSmlDMIAPMatcher() -// ------------------------------------------------------------------------------------------------ -CNSmlDMIAPMatcher::~CNSmlDMIAPMatcher() - { - if(iFeatMgrInitialized) - { - FeatureManager::UnInitializeLib(); - } - } - -// ------------------------------------------------------------------------------------------------ -// TInt CNSmlDMIAPMatcher::IAPIdFromURIL( const TDesC8& aURI ) -// ------------------------------------------------------------------------------------------------ -NSMLDMURI_EXPORT_C TInt CNSmlDMIAPMatcher::IAPIdFromURIL( const TDesC8& aURI ) - { - TInt iapId(KErrNotFound); - - MSmlDmAdapter::TError status; - CBufBase* allIAPs = CBufFlat::NewL(16); - CleanupStack::PushL(allIAPs); - iCallback->FetchLinkL( GetConRef(), *allIAPs, status ); - TPtrC8 uri = RemoveDotSlash(aURI); - - if( status == MSmlDmAdapter::EOk && - uri.Find(GetConRef()) == 0 && - allIAPs->Ptr(0).Find(LastURISeg(uri))>=0) - { - HBufC8* luid = iCallback->GetLuidAllocL( uri ); - - if ( luid->Length() ) - { - iapId = DesToInt(*luid); - } - delete luid; - } - - CleanupStack::PopAndDestroy(allIAPs); - - return iapId; - } - -// ------------------------------------------------------------------------------------------------ -// HBufC8* CNSmlDMIAPMatcher::URIFromIAPIdL( TInt aIAPId ) -// ------------------------------------------------------------------------------------------------ -NSMLDMURI_EXPORT_C HBufC8* CNSmlDMIAPMatcher::URIFromIAPIdL( TInt aIAPId ) - { - CBufBase *allIAPs = CBufFlat::NewL(16); - CleanupStack::PushL(allIAPs); - MSmlDmAdapter::TError status; - - iCallback->FetchLinkL( GetConRef(), *allIAPs, status ); - - if ( status == MSmlDmAdapter::EOk ) - { - TInt index(0); - TInt segStart(0); - - while ( index != KErrNotFound) - { - TPtrC8 allIAPsptr = allIAPs->Ptr(segStart).Mid(0); - index = allIAPsptr.Locate('/'); - HBufC8* uriSeg = 0; - - if ( index == KErrNotFound ) - { - TPtrC8 uriSeg8Ptr = allIAPs->Ptr(segStart); - uriSeg = uriSeg8Ptr.AllocLC(); - } - else - { - TPtrC8 uriSeg8Ptr = allIAPs->Ptr(segStart).Mid( 0, index ); - uriSeg = uriSeg8Ptr.AllocLC(); - } - - HBufC8* uri = HBufC8::NewLC( GetConRef().Length() + 1 + - uriSeg->Length() ); - - TPtr8 uriPtr = uri->Des(); - uriPtr.Format( GetConRef()); - uriPtr.Append( KNSmlDMSeparator8 ); - uriPtr.Append( *uriSeg ); - HBufC8* luid = iCallback->GetLuidAllocL( uriPtr ); - CleanupStack::PushL(luid); - - if ( luid->Length() > 0 ) - { - TInt iapId = DesToInt(luid->Des()); - if ( iapId == aIAPId ) - { - CleanupStack::PopAndDestroy(); //luid - CleanupStack::Pop(); //uri - CleanupStack::PopAndDestroy(2); //uriSeg, allIAPs - return uri; - } - } - CleanupStack::PopAndDestroy(3); // luid, uri, uriSeg - - segStart += index + 1; - } - } - - CleanupStack::PopAndDestroy(); // allIAPs - - return 0; - } - -// ------------------------------------------------------------------------------------------------ -// TInt CNSmlDMIAPMatcher::DesToInt(const TDesC& aLuid) -// ------------------------------------------------------------------------------------------------ -TInt CNSmlDMIAPMatcher::DesToInt(const TDesC8& aLuid) const - { - TLex8 lex(aLuid); - TInt value = 0; - lex.Val(value); - return value; - } - -// ------------------------------------------------------------------------------------------------ -// TPtrC8 CNSmlDMIAPMatcher::RemoveDotSlash(const TDesC8& aURI) const -// ------------------------------------------------------------------------------------------------ -TPtrC8 CNSmlDMIAPMatcher::RemoveDotSlash(const TDesC8& aURI) const - { - if(aURI.Find(KNSmlDMIAPUriDotSlash)==0) - { - return aURI.Right( aURI.Length()-KNSmlDMIAPUriDotSlash().Length() ); - } - else - { - return aURI; - } - } - -// ------------------------------------------------------------------------------------------------ -// CNSmlDMIAPMatcher::TPtrC8 LastURISeg(const TDesC8& aURI) -// Returns only the last uri segemnt -// ------------------------------------------------------------------------------------------------ -TPtrC8 CNSmlDMIAPMatcher::LastURISeg(const TDesC8& aURI) const - { - TInt i; - for(i=aURI.Length()-1;i>=0;i--) - { - if(aURI[i]==KNSmlDMSlash) - { - break; - } - } - if(i==0) - { - return aURI; - } - else - { - return aURI.Mid(i+1); - } - } - -// ------------------------------------------------------------------------------------------------ -// CNSmlDMIAPMatcher::const TDesC8& GetConRef() -// Returns the connection reference -// ------------------------------------------------------------------------------------------------ -const TDesC8& CNSmlDMIAPMatcher::GetConRef() - { - if(FeatureManager::FeatureSupported(KFeatureIdFfDmConnmoAdapter)) - { - return KNSmlDMConnMOIAPUri(); - } - else - { - return KNSmlDMIAPUri(); - } - } - - -