customization/isadapter/src/isadapter.cpp
changeset 0 3ce708148e4d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/customization/isadapter/src/isadapter.cpp	Thu Dec 17 08:40:12 2009 +0200
@@ -0,0 +1,2537 @@
+/*
+* Copyright (c) 2002 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 Idle SoftKey  Adapter
+*
+*/
+
+
+#include "isadapter.h"
+
+#include "IsAdapterDefines.h"
+#include "IsAdapterLiterals.h"
+#include "IdleSoftkeysAppTargetManager.h"
+#include "UiSettingsUtil.h"
+
+// symbian
+#include <implementationproxy.h>
+#include <centralrepository.h>
+#include <imcvcodc.h>
+// s60
+#include <FavouritesItemList.h>
+
+// tarm
+//#ifdef __SAP_POLICY_MANAGEMENT
+#include <SettingEnforcementInfo.h>
+#include <PolicyEngineXACML.h>
+#include <DMCert.h>
+//#endif
+
+//#include "UISettingsSrvConstants.h"
+#include "IsAdapterConstants.h"
+#include "nsmldmiapmatcher.h"
+#include "nsmldmuri.h"
+#include "TPtrC8I.h"
+#include "TARMCharConv.h"
+#include "FileCoderB64.h"
+#include "debug.h"
+#include <featmgr.h>
+// ------------------------------------------------------------------------------------------------
+// CIsAdapter* CIsAdapter::NewL( )
+// ------------------------------------------------------------------------------------------------
+CIsAdapter* CIsAdapter::NewL(MSmlDmCallback* aDmCallback )
+    {
+    RDEBUG( "CIsAdapter::NewL() >" );
+    CIsAdapter* self = NewLC( aDmCallback );
+    CleanupStack::Pop();
+    RDEBUG( "CIsAdapter::NewL() <" );
+    return self;
+    }
+
+// ------------------------------------------------------------------------------------------------
+// CIsAdapter* CIsAdapter::NewLC( )
+// ------------------------------------------------------------------------------------------------
+CIsAdapter* CIsAdapter::NewLC(MSmlDmCallback* aDmCallback )
+    {
+    RDEBUG( "CIsAdapter::NewLC() >" );
+    CIsAdapter* self = new (ELeave) CIsAdapter(aDmCallback);
+    CleanupStack::PushL(self);
+    self->ConstructL(aDmCallback);
+    RDEBUG( "CIsAdapter::NewLC() <" );
+    return self;
+    }
+
+// ------------------------------------------------------------------------------------------------
+// CIsAdapter::CIsAdapter()
+// ------------------------------------------------------------------------------------------------
+CIsAdapter::CIsAdapter(TAny* aEcomArguments)
+: CTARMDmStreamAdapter((MSmlDmCallback*)aEcomArguments)
+, iFavList(0)
+, iWebTargetManager(0)
+, iAppTargetManager(0)
+, iUiSettings(0)
+    {
+    RDEBUG( "CIsAdapter::CIsAdapter()" );
+    iUiSettingsNotInitialized = ETrue;
+    }
+
+// ------------------------------------------------------------------------------------------------
+// CIsAdapter::~CIsAdapter()
+// ------------------------------------------------------------------------------------------------
+CIsAdapter::~CIsAdapter()
+    {
+    RDEBUG( "CIsAdapter::~CIsAdapter() >" );
+	FeatureManager::UnInitializeLib();
+    delete iWebTargetManager;
+    delete iAppTargetManager;
+    delete iUiSettings;
+
+    iFavDb.Close();
+    iFavSession.Close();
+
+    if( iFavList != 0 )
+        {
+        delete iFavList;
+        iFavList = 0;
+        }
+
+    if( iTemporaryImageFile.Length() > 0 )
+        {
+        RDEBUG( "CIsAdapter::~CIsAdapter() Deleting temporary file" );
+        RFs fs;
+        TInt err = fs.Connect();
+        if( err == KErrNone )
+        	{
+        	fs.Delete( iTemporaryImageFile );
+        	fs.Close();
+        	iTemporaryImageFile.Zero();
+        	}
+        }    
+
+    RDEBUG( "CIsAdapter::~CIsAdapter() <" );
+    }
+
+
+
+// ------------------------------------------------------------------------------------------------
+//  CIsAdapter::DDFVersionL()
+// ------------------------------------------------------------------------------------------------
+void CIsAdapter::DDFVersionL(CBufBase& aDDFVersion)
+    {
+    RDEBUG( "CIsAdapter::DDFVersionL() >" );
+
+    aDDFVersion.InsertL(0,KNSmlISDDFVersion);
+
+    RDEBUG( "CIsAdapter::DDFVersionL() <" );
+    }
+
+// ------------------------------------------------------------------------------------------------
+//  CIsAdapter::DDFStructureL()
+// ------------------------------------------------------------------------------------------------
+void CIsAdapter::DDFStructureL( MSmlDmDDFObject& aDDF )
+    {
+    RDEBUG( "CIsAdapter::DDFStructureL() >" );
+
+    TSmlDmAccessTypes accessTypesGet;
+    accessTypesGet.SetGet();
+
+    TSmlDmAccessTypes accessTypesAddGet;
+    accessTypesAddGet.SetAdd();
+    accessTypesAddGet.SetGet();
+
+    TSmlDmAccessTypes accessTypesGetReplace;
+    accessTypesGetReplace.SetGet();
+    accessTypesGetReplace.SetReplace();
+
+    TSmlDmAccessTypes accessTypesADGR;
+    accessTypesADGR.SetAdd();
+    accessTypesADGR.SetDelete();
+    accessTypesADGR.SetGet();
+    accessTypesADGR.SetReplace();
+
+    /*
+    Node: ./Customzation
+    This interior node is the common parent to all customization..
+    Status: Required
+    Occurs: One
+    Format: Node
+    Access Types: Get
+    Values: N/A
+    */
+    MSmlDmDDFObject& apps = aDDF.AddChildObjectL(KNSmlCustomizationNodeName);
+    FillNodeInfoL(apps,accessTypesGet,MSmlDmDDFObject::EOne,MSmlDmDDFObject::EPermanent,MSmlDmDDFObject::ENode,
+        KNSmlISDescription,KNullDesC8());
+
+    /*
+    Node: ./Customization/IdleSoftKey
+    This interior node acts as a placeholder for one or more update packages within a same content provider group.
+    Status: Required
+    Occurs: One
+    Format: Node
+    Access Types: Get
+    Values: N/A
+    */
+    MSmlDmDDFObject& groupNode = apps.AddChildObjectL(KNSmlIS_IdleSoftKeyNodeName);
+    FillNodeInfoL(groupNode,accessTypesGet,MSmlDmDDFObject::EOne,MSmlDmDDFObject::EPermanent,
+        MSmlDmDDFObject::ENode,KNSmlISIdleSoftKeyNodeDescription,KNullDesC8());
+
+    // IdleSoftkeys/*
+    MSmlDmDDFObject& groupNodeSoftkeys = groupNode.AddChildObjectL(KNSmlIS_SoftKeysNodeName);
+    FillNodeInfoL(groupNodeSoftkeys,accessTypesGet,MSmlDmDDFObject::EOne,MSmlDmDDFObject::EPermanent,
+        MSmlDmDDFObject::ENode,KNSmlISSoftkeysNodeDescription,KNullDesC8());
+
+    MSmlDmDDFObject& groupNodeTargets = groupNode.AddChildObjectL(KNSmlIS_TargetsNodeName);
+    FillNodeInfoL(groupNodeTargets,accessTypesGet,MSmlDmDDFObject::EOne,MSmlDmDDFObject::EPermanent,
+        MSmlDmDDFObject::ENode,KNSmlISTargetsNodeDescription,KNullDesC8());
+
+    MSmlDmDDFObject& groupNodeWebTargets = groupNode.AddChildObjectL(KNSmlIS_WebTargetsNodeName);
+    FillNodeInfoL(groupNodeWebTargets,accessTypesAddGet,MSmlDmDDFObject::EOne,MSmlDmDDFObject::EPermanent,
+        MSmlDmDDFObject::ENode,KNSmlISWebTargetsNodeDescription,KNullDesC8());
+
+    // Dynamic node lists, IdleSoftkeys/*/X
+    MSmlDmDDFObject& groupNodeSoftkeysX = groupNodeSoftkeys.AddChildObjectGroupL();
+    FillNodeInfoL(groupNodeSoftkeysX,accessTypesGet,MSmlDmDDFObject::EOneOrMore,MSmlDmDDFObject::EDynamic,
+        MSmlDmDDFObject::ENode,KNSmlISSoftkeysXNodeDescription,KNullDesC8());
+
+    MSmlDmDDFObject& groupNodeTargetsX = groupNodeTargets.AddChildObjectGroupL();
+    FillNodeInfoL(groupNodeTargetsX,accessTypesGet,MSmlDmDDFObject::EZeroOrMore,MSmlDmDDFObject::EDynamic,
+        MSmlDmDDFObject::ENode,KNSmlISTargetsXNodeDescription,KNullDesC8());
+
+    MSmlDmDDFObject& groupNodeWebTargetsX = groupNodeWebTargets.AddChildObjectGroupL();
+    FillNodeInfoL(groupNodeWebTargetsX,accessTypesADGR,MSmlDmDDFObject::EZeroOrMore,MSmlDmDDFObject::EDynamic,
+        MSmlDmDDFObject::ENode,KNSmlISWebTargetsXNodeDescription,KNullDesC8());
+
+    // Softkeys/X/*
+    MSmlDmDDFObject& sId = groupNodeSoftkeysX.AddChildObjectL(KNSmlIS_SoftkeysIDNodeName);
+    FillNodeInfoL(sId,accessTypesGet,MSmlDmDDFObject::EOne,MSmlDmDDFObject::EPermanent,
+        MSmlDmDDFObject::EChr,KNSmlIS_SoftkeysIDDescription,KNSmlISTextPlain());
+    MSmlDmDDFObject& sRef = groupNodeSoftkeysX.AddChildObjectL(KNSmlIS_SoftkeysTargetRefNodeName);
+    FillNodeInfoL(sRef,accessTypesGetReplace,MSmlDmDDFObject::EOne,MSmlDmDDFObject::EPermanent,
+        MSmlDmDDFObject::EChr,KNSmlIS_SoftkeysTargetRefDescription,KNSmlISTextPlain());
+#ifdef IDLESOFTKEY_ADAPTER_SOFTKEY_IMAGES
+    MSmlDmDDFObject& sImage = groupNodeSoftkeysX.AddChildObjectL(KNSmlIS_SoftkeysImageNoneName);
+    FillNodeInfoL(sImage,accessTypesGetReplace,MSmlDmDDFObject::EOne,MSmlDmDDFObject::EPermanent,
+        MSmlDmDDFObject::EBin,KNSmlIS_SoftkeysImageDescription,KMimeTypeImageMbm());
+#ifdef IDLESOFTKEY_ADAPTER_IMAGEMASK
+    MSmlDmDDFObject& sImageMask = groupNodeSoftkeysX.AddChildObjectL(KNSmlIS_SoftkeysMaskNodeName);
+    FillNodeInfoL(sImageMask,accessTypesGetReplace,MSmlDmDDFObject::EOne,MSmlDmDDFObject::EPermanent,
+        MSmlDmDDFObject::EBin,KNSmlIS_SoftkeysMaskDescription,KMimeTypeImageMbm());
+#endif
+#endif
+    // Targets/X/*
+    MSmlDmDDFObject& tId = groupNodeTargetsX.AddChildObjectL(KNSmlIS_TargetsIDNodeName);
+    FillNodeInfoL(tId,accessTypesGet,MSmlDmDDFObject::EOne,MSmlDmDDFObject::EPermanent,
+        MSmlDmDDFObject::EChr,KNSmlIS_TargetsIDDescription,KNSmlISTextPlain());
+
+    MSmlDmDDFObject& tDesc = groupNodeTargetsX.AddChildObjectL(KNSmlIS_TargetsDescriptionNodeName);
+    FillNodeInfoL(tDesc,accessTypesGet,MSmlDmDDFObject::EOne,MSmlDmDDFObject::EPermanent,
+        MSmlDmDDFObject::EChr,KNSmlIS_TargetsDescriptionDescription,KNSmlISTextPlain());
+
+    MSmlDmDDFObject& tCaption = groupNodeTargetsX.AddChildObjectL(KNSmlIS_TargetsCaptionName);
+    FillNodeInfoL(tCaption,accessTypesGetReplace,MSmlDmDDFObject::EOne,MSmlDmDDFObject::EPermanent,
+        MSmlDmDDFObject::EChr,KNSmlIS_TargetsCaptionDescription,KNSmlISTextPlain());
+
+#ifndef IDLESOFTKEY_ADAPTER_SOFTKEY_IMAGES
+    MSmlDmDDFObject& tImage = groupNodeTargetsX.AddChildObjectL(KNSmlIS_TargetsImageNodeName);
+    FillNodeInfoL(tImage,accessTypesGetReplace,MSmlDmDDFObject::EOne,MSmlDmDDFObject::EPermanent,
+        MSmlDmDDFObject::EBin,KNSmlIS_TargetsImageDescription,KMimeTypeImageMbm());
+
+#ifdef IDLESOFTKEY_ADAPTER_IMAGEMASK
+    MSmlDmDDFObject& tImageMask = groupNodeTargetsX.AddChildObjectL(KNSmlIS_TargetsMaskNodeName);
+    FillNodeInfoL(tImageMask,accessTypesGetReplace,MSmlDmDDFObject::EOne,MSmlDmDDFObject::EPermanent,
+        MSmlDmDDFObject::EBin,KNSmlIS_TargetsMaskDescription,KMimeTypeImageMbm());
+#endif
+#endif
+
+    // WebTargets/X/*
+    MSmlDmDDFObject& wId = groupNodeWebTargetsX.AddChildObjectL(KNSmlIS_WebTargetsIDNodeName);
+    FillNodeInfoL(wId,accessTypesGet,MSmlDmDDFObject::EOne,MSmlDmDDFObject::EPermanent,
+        MSmlDmDDFObject::EChr,KNSmlIS_WebTargetsIDDescription,KNSmlISTextPlain());
+
+    MSmlDmDDFObject& wDesc = groupNodeWebTargetsX.AddChildObjectL(KNSmlIS_WebTargetsDescriptionNodeName);
+    FillNodeInfoL(wDesc,accessTypesGetReplace,MSmlDmDDFObject::EOne,MSmlDmDDFObject::EPermanent,
+        MSmlDmDDFObject::EChr,KNSmlIS_WebTargetsDescriptionDescription,KNSmlISTextPlain());
+
+    MSmlDmDDFObject& wURL = groupNodeWebTargetsX.AddChildObjectL(KNSmlIS_WebTargetsURLNodeName);
+    FillNodeInfoL(wURL,accessTypesGetReplace,MSmlDmDDFObject::EOne,MSmlDmDDFObject::EPermanent,
+        MSmlDmDDFObject::EChr,KNSmlIS_WebTargetsURLDescription,KNSmlISTextPlain());
+
+    MSmlDmDDFObject& wUserName = groupNodeWebTargetsX.AddChildObjectL(KNSmlIS_WebTargetsUserNameNodeName);
+    FillNodeInfoL(wUserName,accessTypesGetReplace,MSmlDmDDFObject::EOne,MSmlDmDDFObject::EPermanent,
+        MSmlDmDDFObject::EChr,KNSmlIS_WebTargetsUserNameDescription,KNSmlISTextPlain());
+
+    MSmlDmDDFObject& wPassword = groupNodeWebTargetsX.AddChildObjectL(KNSmlIS_WebTargetsPasswordNodeName);
+    FillNodeInfoL(wPassword,accessTypesGetReplace,MSmlDmDDFObject::EOne,MSmlDmDDFObject::EPermanent,
+        MSmlDmDDFObject::EChr,KNSmlIS_WebTargetsPasswordDescription,KNSmlISTextPlain());
+
+    MSmlDmDDFObject& wConRef = groupNodeWebTargetsX.AddChildObjectL(KNSmlIS_WebTargetsConRefNodeName);
+    FillNodeInfoL(wConRef,accessTypesGetReplace,MSmlDmDDFObject::EOne,MSmlDmDDFObject::EPermanent,
+        MSmlDmDDFObject::EChr,KNSmlIS_WebTargetsConRefDescription,KNSmlISTextPlain());
+        
+    MSmlDmDDFObject& wCaption = groupNodeWebTargetsX.AddChildObjectL(KNSmlIS_WebTargetsCaptionNodeName);
+    FillNodeInfoL(wCaption,accessTypesGetReplace,MSmlDmDDFObject::EOne,MSmlDmDDFObject::EPermanent,
+        MSmlDmDDFObject::EChr,KNSmlIS_WebTargetsCaptionDescription,KNSmlISTextPlain());
+
+#ifndef IDLESOFTKEY_ADAPTER_SOFTKEY_IMAGES
+    MSmlDmDDFObject& wImage = groupNodeWebTargetsX.AddChildObjectL(KNSmlIS_WebTargetsImageNodeName);
+    FillNodeInfoL(wImage,accessTypesGetReplace,MSmlDmDDFObject::EOne,MSmlDmDDFObject::EPermanent,
+        MSmlDmDDFObject::EBin,KNSmlIS_WebTargetsImageDescription,KMimeTypeImageMbm());
+
+#ifdef IDLESOFTKEY_ADAPTER_IMAGEMASK
+    MSmlDmDDFObject& wImageMask = groupNodeWebTargetsX.AddChildObjectL(KNSmlIS_WebTargetsMaskNodeName);
+    FillNodeInfoL(wImageMask,accessTypesGetReplace,MSmlDmDDFObject::EOne,MSmlDmDDFObject::EPermanent,
+        MSmlDmDDFObject::EBin,KNSmlIS_WebTargetsMaskDescription,KMimeTypeImageMbm());
+#endif
+#endif
+
+    RDEBUG( "CIsAdapter::DDFStructureL() <" );
+    }
+
+// ------------------------------------------------------------------------------------------------
+//  CIsAdapter::UpdateLeafObjectL()
+// ------------------------------------------------------------------------------------------------
+void CIsAdapter::UpdateLeafObjectL( CSmlDmAdapter::TError &aStatus,
+                                    const TDesC8& aURI, const TDesC8& aLUID,
+                                    const TDesC8& aObject, const TDesC8& aType)
+    {
+    RDEBUG( "CIsAdapter::UpdateLeafObjectL() >" );
+#ifdef __TARM_SYMBIAN_CONVERGENCY
+	TPtrC8 uriPtrc = NSmlDmURI::RemoveDotSlash( aURI );
+	CIsAdapter::TIsNodeIdentifier identifier = GetNodeIdentifier( uriPtrc );
+#else
+	CIsAdapter::TIsNodeIdentifier identifier = GetNodeIdentifier( aURI );
+#endif
+
+    HBufC16* strBuf;
+    TInt value;
+    CFavouritesItem *favItem = CFavouritesItem::NewLC();
+    RDEBUG_2( "CIsAdapter::UpdateLeafObjectL() CFavouritesItem ALLOC %x", favItem );
+    TPtrC8 ptr8(0, 0);
+
+    switch( identifier )
+        {
+
+#ifdef IDLESOFTKEY_ADAPTER_SOFTKEY_IMAGES
+            case EIsNodeSoftKeysXImage:
+	#ifdef __TARM_SYMBIAN_CONVERGENCY            
+            SetSoftkeyImageL( uriPtrc, aObject, aType );
+	#else
+			SetSoftkeyImageL( aURI, aObject, aType );
+	#endif            
+            break;
+
+#ifdef IDLESOFTKEY_ADAPTER_IMAGEMASK
+            case EIsNodeSoftKeysXMask:
+	#ifdef __TARM_SYMBIAN_CONVERGENCY            
+            SetSoftkeyImageL( uriPtrc, aObject, aType );
+	#else
+			SetSoftkeyImageL( aURI, aObject, aType );
+	#endif     
+            break;
+#endif
+#endif
+
+            case EIsNodeSoftKeysXTargetRef:
+#ifdef __TARM_SYMBIAN_CONVERGENCY            
+            ptr8.Set( NSmlDmURI::URISeg( uriPtrc, 3 ) );
+#else
+			ptr8.Set( NSmlDmURI::URISeg( aURI, 3 ) );
+#endif                 
+            value = GetSoftkeyUidFromNodeNameL( ptr8 );
+            SetShortcutTargetL( aObject, value );
+            break;
+
+            case EIsNodeTargetsXCaption:
+#ifdef __TARM_SYMBIAN_CONVERGENCY            
+            iAppTargetManager->SetCaptionL( uriPtrc, aObject );
+#else
+			iAppTargetManager->SetCaptionL( aURI, aObject );
+#endif            
+            break;
+
+#ifndef IDLESOFTKEY_ADAPTER_SOFTKEY_IMAGES
+            case EIsNodeTargetsXImage:
+	#ifdef __TARM_SYMBIAN_CONVERGENCY            
+            SetShortcutTargetImageL( uriPtrc, aObject, aType );
+	#else
+			SetShortcutTargetImageL( aURI, aObject, aType );
+	#endif               
+            
+            break;
+
+#ifdef IDLESOFTKEY_ADAPTER_IMAGEMASK
+            case EIsNodeTargetsXImageMask:
+	#ifdef __TARM_SYMBIAN_CONVERGENCY            
+            SetShortcutTargetImageL( uriPtrc, aObject, aType );
+	#else
+			SetShortcutTargetImageL( aURI, aObject, aType );
+	#endif                          
+            break;
+#endif
+#endif
+
+            case EIsNodeWebTargetsX:
+#ifdef __TARM_SYMBIAN_CONVERGENCY             
+            if( KErrNone != iWebTargetManager->RenameL( uriPtrc, aLUID, aObject ) )
+#else
+			if( KErrNone != iWebTargetManager->RenameL( aURI, aLUID, aObject ) )
+#endif            
+                {
+                aStatus = CSmlDmAdapter::EError;
+                }
+            break;
+
+            case EIsNodeWebTargetsXDescription:
+            case EIsNodeWebTargetsXURL:
+            case EIsNodeWebTargetsXUserName:
+            case EIsNodeWebTargetsXPassword:
+            case EIsNodeWebTargetsXConRef:
+                {
+#ifdef __TARM_SYMBIAN_CONVERGENCY                   
+                iWebTargetManager->PrepareItemL( uriPtrc, *favItem, value );
+#else
+				iWebTargetManager->PrepareItemL( aURI, *favItem, value );
+#endif                
+                strBuf = CTARMCharConv::ConvertFromUtf8LC( aObject );
+
+                switch( identifier )
+                {
+                    case EIsNodeWebTargetsXDescription:
+                        favItem->SetNameL( *strBuf );
+                    break;
+
+                    case EIsNodeWebTargetsXURL:
+                        favItem->SetUrlL( *strBuf );
+                        if( favItem->Url().Compare( *strBuf ) != 0 )
+                            {
+                            RDEBUG( "CIsAdapter::UpdateLeafObjectL() Bookmark URL setting failed with FavouritesEngine!" );
+                            aStatus = CSmlDmAdapter::EError;
+                            }
+                    break;
+
+                    case EIsNodeWebTargetsXUserName:
+                        favItem->SetUserNameL( *strBuf );
+                    break;
+
+                    case EIsNodeWebTargetsXPassword:
+                        favItem->SetPasswordL( *strBuf );
+                    break;
+
+                    case EIsNodeWebTargetsXConRef:
+                        TFavouritesWapAp wapAp;
+                        if( aObject.Length() == 0 )
+                            {
+                            wapAp.SetDefault();
+                            }
+                        else
+                            {
+                            iWebTargetManager->FindWapApL( aObject, value );
+                            wapAp.SetApId( value );
+                            }
+                        favItem->SetWapAp( wapAp );
+                    break;
+                }
+
+                CleanupStack::PopAndDestroy( strBuf );
+                iWebTargetManager->ReleaseItemL( *favItem );
+                }
+                break;
+
+            case EIsNodeWebTargetsXCaption:
+#ifdef __TARM_SYMBIAN_CONVERGENCY              
+            iWebTargetManager->SetCaptionL( uriPtrc, aObject );
+#else
+			iWebTargetManager->SetCaptionL( aURI, aObject );
+#endif            
+            break;
+
+#ifndef IDLESOFTKEY_ADAPTER_SOFTKEY_IMAGES
+            case EIsNodeWebTargetsXImage:
+	#ifdef __TARM_SYMBIAN_CONVERGENCY             
+            SetShortcutTargetImageL( uriPtrc, aObject, aType );
+	#else
+			SetShortcutTargetImageL( aURI, aObject, aType );
+	#endif            
+            break;
+
+#ifdef IDLESOFTKEY_ADAPTER_IMAGEMASK
+            case EIsNodeWebTargetsXImageMask:
+	#ifdef __TARM_SYMBIAN_CONVERGENCY              
+            SetShortcutTargetImageL( uriPtrc, aObject, aType );
+	#else
+			SetShortcutTargetImageL( aURI, aObject, aType );
+	#endif            
+            break;
+#endif
+#endif
+
+            default:
+                aStatus = CSmlDmAdapter::EError;
+            break;
+        };
+
+    CleanupStack::PopAndDestroy( favItem );
+
+    RDEBUG( "CIsAdapter::UpdateLeafObjectL() <" );
+    }
+
+// ------------------------------------------------------------------------------------------------
+//  CIsAdapter::_UpdateLeafObjectL()
+// ------------------------------------------------------------------------------------------------
+void CIsAdapter::_UpdateLeafObjectL( const TDesC8& aURI, const TDesC8& aLUID,
+                                    const TDesC8& aObject, const TDesC8& aType,
+                                    TInt aStatusRef )
+    {
+    RDEBUG( "CIsAdapter::_UpdateLeafObjectL() >" );
+
+    TBuf8<KISTBufMaxLength> mimeType;
+    CopyAndTrimMimeType(mimeType, aType);
+
+    CSmlDmAdapter::TError status = CSmlDmAdapter::EOk;
+
+#ifdef __TARM_SYMBIAN_CONVERGENCY
+	TPtrC8 uriPtrc = NSmlDmURI::RemoveDotSlash( aURI );
+	TRAPD( reason, 
+           UpdateLeafObjectL( status, uriPtrc, aLUID, aObject, aType ) );
+#else
+	TRAPD( reason, 
+           UpdateLeafObjectL( status, aURI, aLUID, aObject, aType ) );
+#endif
+
+    if( KErrNone != reason )
+        {
+        RDEBUG_2( "CIsAdapter::_UpdateLeafObjectL: Error code %d", reason );
+        status = CSmlDmAdapter::EError;
+        }
+
+    iCallBack->SetStatusL(aStatusRef, status);
+
+    RDEBUG( "CIsAdapter::_UpdateLeafObjectL() <" );
+    }
+
+// ------------------------------------------------------------------------------------------------
+//  CIsAdapter::_UpdateLeafObjectL()
+// ------------------------------------------------------------------------------------------------
+void CIsAdapter::_UpdateLeafObjectL( const TDesC8& /*aURI*/, const TDesC8& /*aLUID*/,
+                                    RWriteStream*& /*aStream*/, const TDesC8& /*aType*/,
+                                    TInt aStatusRef )
+    {
+    RDEBUG( "CIsAdapter::_UpdateLeafObjectL() (stream) >" );
+
+	// SymbianConvergencyNote! Check _UpdateLeafObjectL() <-> removes the "./" !
+
+    CSmlDmAdapter::TError ret = CSmlDmAdapter::EError;
+    iCallBack->SetStatusL(aStatusRef, ret);
+
+    RDEBUG( "CIsAdapter::_UpdateLeafObjectL() (stream) <" );
+    }
+
+// ------------------------------------------------------------------------------------------------
+// CIsAdapter::DeleteObjectL
+// ------------------------------------------------------------------------------------------------
+void CIsAdapter::DeleteObjectL( CSmlDmAdapter::TError &aStatus, const TDesC8& aURI,
+                                const TDesC8& /*aLUID*/)
+    {
+    RDEBUG( "CIsAdapter::DeleteObjectL() >" );
+
+	// NOTE! Look _DeleteObjectL() <-> removes the "./" from the aURI !!
+
+    CIsAdapter::TIsNodeIdentifier identifier = GetNodeIdentifier( aURI );
+    CFavouritesItem *favItem = CFavouritesItem::NewLC();
+    RDEBUG_2( "CIsAdapter::DeleteObjectL() CFavouritesItem ALLOC %x", favItem );
+    TInt index;
+    TInt status = KErrNone;
+
+    switch( identifier )
+        {
+            case EIsNodeWebTargetsX:
+            status = iWebTargetManager->GetTargetFromNodeNameL( aURI, *favItem, index );
+            if( (0 != favItem) && (KErrNone == status) )
+                {
+                User::LeaveIfError( iFavDb.Delete( favItem->Uid() ) );
+                iWebTargetManager->CheckLUIDDatabaseL( ETrue );
+                //iWebTargetManager->iUiSettings->ReadBookmarksL();
+                }
+            else
+                {
+                aStatus = CSmlDmAdapter::EError;
+                }
+            break;
+
+            default:
+                aStatus = CSmlDmAdapter::EError;
+            break;
+        };
+
+    CleanupStack::PopAndDestroy( favItem );    
+
+    RDEBUG( "CIsAdapter::DeleteObjectL() <" );
+    }
+
+// ------------------------------------------------------------------------------------------------
+// CIsAdapter::_DeleteObjectL
+// ------------------------------------------------------------------------------------------------
+void CIsAdapter::_DeleteObjectL( const TDesC8& aURI, const TDesC8& aLUID, TInt aStatusRef )
+    {
+    RDEBUG( "CIsAdapter::_DeleteObjectL() >" );
+
+    CSmlDmAdapter::TError status = CSmlDmAdapter::EOk;
+  
+#ifdef __TARM_SYMBIAN_CONVERGENCY
+	TPtrC8 uriPtrc = NSmlDmURI::RemoveDotSlash( aURI );
+	TRAPD( reason,
+           DeleteObjectL( status, uriPtrc, aLUID ) );
+#else
+	TRAPD( reason,
+           DeleteObjectL( status, aURI, aLUID ) );
+#endif  
+
+    if( KErrNone != reason )
+        {
+        RDEBUG_2( "CIsAdapter::_DeleteObjectL: Error code %d", reason );
+        status = CSmlDmAdapter::EError;
+        }
+
+    iCallBack->SetStatusL(aStatusRef, status);
+
+    RDEBUG( "CIsAdapter::_DeleteObjectL() <" );
+    }
+
+// ------------------------------------------------------------------------------------------------
+//  CIsAdapter::FetchLeafObjectL
+// ------------------------------------------------------------------------------------------------
+CSmlDmAdapter::TError CIsAdapter::FetchLeafObjectL( const TDesC8& aURI, const TDesC8& /*aLUID*/,
+                                                    TDes8& aNewMime, CBufFlat& aObject )
+    {
+    RDEBUG( "CIsAdapter::FetchLeafObjectL() >" );
+
+	// SymbianConvergency NOTE! Check _FetchLeafObjectL() <-> removes the "./" from the aURI
+
+    TBuf8<KISTBufMaxLength> mimeType;
+    CopyAndTrimMimeType(mimeType, aNewMime);
+
+    CSmlDmAdapter::TError status = CSmlDmAdapter::EOk;
+
+    CIsAdapter::TIsNodeIdentifier identifier = GetNodeIdentifier( aURI );
+
+    TInt softkeyUid;
+    HBufC8* strBuf = 0;
+    TBuf8<MAX_NUMBER_OF_DIGITS_IN_10BASE_INT64> numBuf;
+    TBuf <MAX_NUMBER_OF_DIGITS_IN_10BASE_INT64> numBuf16;
+    CFavouritesItem *favItem = CFavouritesItem::NewLC();
+    RDEBUG_2( "CIsAdapter::FetchLeafObjectL() CFavouritesItem ALLOC %x", favItem );
+    TBuf8<ISADAPTER_SHORTCUT_CAPTION_MAXLENGTH> caption;
+    TInt index;
+
+    switch( identifier )
+        {
+            case EIsNodeCustomization:
+            case EIsNodeIdleSoftkeys:
+            case EIsNodeSoftKeys:
+            case EIsNodeTargets:
+            case EIsNodeWebTargets:
+            case EIsNodeSoftKeysX:
+            case EIsNodeTargetsX:
+            case EIsNodeWebTargetsX:
+            // Empty
+            break;
+
+#ifdef IDLESOFTKEY_ADAPTER_SOFTKEY_IMAGES
+            case EIsNodeSoftKeysXImage:
+            status = CSmlDmAdapter::EError;
+            //softkeyUid = GetSoftkeyUidFromNodeNameL( NSmlDmURI::URISeg( aURI, 3 ) );
+            //GetSoftkeyImageL( softkeyUid, aObject );
+            break;
+
+#ifdef IDLESOFTKEY_ADAPTER_IMAGEMASK
+            case EIsNodeSoftKeysXMask:
+            status = CSmlDmAdapter::EError;
+            //softkeyUid = GetSoftkeyUidFromNodeNameL( NSmlDmURI::URISeg( aURI, 3 ) );
+            //GetSoftkeyImageL( softkeyUid, aObject, ETrue );
+            break;
+#endif
+#endif
+
+            case EIsNodeSoftKeysXID:
+            softkeyUid = GetSoftkeyUidFromNodeNameL( NSmlDmURI::URISeg( aURI, 3 ) );
+            numBuf.Num( softkeyUid );
+            aObject.InsertL( aObject.Size(), numBuf );
+            aObject.InsertL( aObject.Size(), KNSmlISSeparator() );
+            AddShortcutNameL( aObject, softkeyUid );
+            break;
+
+            case EIsNodeSoftKeysXTargetRef:
+            status = GetShortcutTargetURIL( aObject, GetSoftkeyUidFromNodeNameL( NSmlDmURI::URISeg( aURI, 3 ) ) );
+            break;
+
+            case EIsNodeTargetsXID:
+            iAppTargetManager->GetTargetFromNodeNameL( NSmlDmURI::URISeg( aURI, 3 ), index, caption );
+            numBuf.Num( index );
+            aObject.InsertL( aObject.Size(), numBuf );
+            break;
+
+            case EIsNodeTargetsXCaption:
+            iAppTargetManager->GetTargetFromNodeNameL( NSmlDmURI::URISeg( aURI, 3 ), index, caption );
+            aObject.InsertL( aObject.Size(), caption );
+            break;
+
+#ifndef IDLESOFTKEY_ADAPTER_SOFTKEY_IMAGES
+            case EIsNodeTargetsXImage:
+            status = CSmlDmAdapter::EError;
+            //iAppTargetManager->GetTargetFromNodeNameL( NSmlDmURI::URISeg( aURI, 3 ), index, caption );
+            //GetApplicationImageL( index, aObject );
+            break;
+
+#ifdef IDLESOFTKEY_ADAPTER_IMAGEMASK
+            case EIsNodeTargetsXImageMask:
+            status = CSmlDmAdapter::EError;
+            //iAppTargetManager->GetTargetFromNodeNameL( NSmlDmURI::URISeg( aURI, 3 ), index, caption );
+            //GetApplicationImageL( index, aObject, ETrue );
+            break;
+#endif
+#endif
+
+            case EIsNodeTargetsXDescription:
+            iAppTargetManager->GetTargetFromNodeNameL( NSmlDmURI::URISeg( aURI, 3 ), index, caption );
+            aObject.InsertL( aObject.Size(), caption );
+            break;
+
+            case EIsNodeWebTargetsXID:
+            case EIsNodeWebTargetsXDescription:
+            case EIsNodeWebTargetsXURL:
+            case EIsNodeWebTargetsXUserName:
+            case EIsNodeWebTargetsXPassword:
+            case EIsNodeWebTargetsXCaption:
+                {
+                    iWebTargetManager->PrepareItemL( aURI, *favItem, index );
+                    switch( identifier )
+                        {
+                        case EIsNodeWebTargetsXID:
+                        numBuf16.Num( favItem->Uid() );
+                        strBuf = CTARMCharConv::ConvertToUtf8LC( numBuf16 );
+                        aObject.InsertL( aObject.Size(), *strBuf );
+                        break;
+
+                        case EIsNodeWebTargetsXDescription:
+                        strBuf = CTARMCharConv::ConvertToUtf8LC( favItem->Name() );
+                        aObject.InsertL( aObject.Size(), *strBuf );
+                        break;
+
+                        case EIsNodeWebTargetsXURL:
+                        strBuf = CTARMCharConv::ConvertToUtf8LC( favItem->Url() );
+                        aObject.InsertL( aObject.Size(), *strBuf );
+                        break;
+
+                        case EIsNodeWebTargetsXUserName:
+                        status = CSmlDmAdapter::EError;
+                        
+                        //strBuf = CTARMCharConv::ConvertToUtf8LC( favItem->UserName() );
+                        //aObject.InsertL( aObject.Size(), *strBuf );
+                        break;
+
+                        case EIsNodeWebTargetsXPassword:
+                        status = CSmlDmAdapter::EError;
+                        
+                        //strBuf = CTARMCharConv::ConvertToUtf8LC( favItem->Password() );
+                        //aObject.InsertL( aObject.Size(), *strBuf );
+                        break;
+
+                        case EIsNodeWebTargetsXCaption:
+                        strBuf = CTARMCharConv::ConvertToUtf8LC( favItem->Name() );
+                        aObject.InsertL( aObject.Size(), *strBuf );
+                        break;
+                        }
+                    if(strBuf!=NULL) 
+                        {
+                        CleanupStack::PopAndDestroy( strBuf );
+                        }
+                    iWebTargetManager->ReleaseItemL( *favItem, EFalse );
+                }
+                break;
+
+            case EIsNodeWebTargetsXConRef:
+                {
+                iWebTargetManager->PrepareItemL( aURI, *favItem, index );
+
+                TFavouritesWapAp wapAp = favItem->WapAp();
+                if( wapAp.IsDefault() )
+                    {
+                    aObject.InsertL( aObject.Size(), KDefaultApName8() );
+                    }
+                else if( wapAp.IsNull() )
+                    {
+                    // Leave empty
+                    }
+                else
+                    {
+                    CNSmlDMIAPMatcher *matcher = CNSmlDMIAPMatcher::NewLC( iCallBack );
+                    TInt id = wapAp.ApId();
+                    HBufC8* buf = matcher->URIFromIAPIdL( id );
+                    if( 0 == buf )
+                        {
+                        User::Leave( KErrNotFound );
+                        }
+                    CleanupStack::PushL( buf );
+                    aObject.InsertL( aObject.Size(), *buf );
+                    CleanupStack::PopAndDestroy( buf );
+                    CleanupStack::PopAndDestroy( matcher );
+                    }
+
+                iWebTargetManager->ReleaseItemL( *favItem, EFalse );
+                }
+            break;
+
+#ifndef IDLESOFTKEY_ADAPTER_SOFTKEY_IMAGES
+            case EIsNodeWebTargetsXImage:
+            status = CSmlDmAdapter::EError;
+            //iWebTargetManager->PrepareItemL( aURI, *favItem, index );
+            //GetBookmarkImageL( index, aObject );
+            //iWebTargetManager->ReleaseItemL( *favItem, EFalse );
+            break;
+
+#ifdef IDLESOFTKEY_ADAPTER_IMAGEMASK
+            case EIsNodeWebTargetsXImageMask:
+            status = CSmlDmAdapter::EError;
+            //iWebTargetManager->PrepareItemL( aURI, *favItem, index );
+            //GetBookmarkImageL( index, aObject, ETrue );
+            //iWebTargetManager->ReleaseItemL( *favItem, EFalse );
+            break;
+#endif
+#endif
+
+            default:
+                status = CSmlDmAdapter::EError;
+            break;
+        };
+
+    CleanupStack::PopAndDestroy( favItem );
+
+    RDEBUG_2( "CIsAdapter::FetchLeafObjectL() < %d", (TInt)status );
+    return status;
+    }
+
+// ------------------------------------------------------------------------------------------------
+//  CIsAdapter::_FetchLeafObjectL
+// ------------------------------------------------------------------------------------------------
+void CIsAdapter::_FetchLeafObjectL( const TDesC8& aURI, const TDesC8& aLUID,
+                                   const TDesC8& aType, TInt aResultsRef,
+                                   TInt aStatusRef )
+    {
+    RDEBUG("CIsAdapter::_FetchLeafObjectL() >");
+
+    TBuf8<KISTBufMaxLength> mimeType;
+    CopyAndTrimMimeType(mimeType, aType);
+
+    CSmlDmAdapter::TError status = CSmlDmAdapter::EOk;
+
+    CBufFlat *object = CBufFlat::NewL(128);
+    CleanupStack::PushL( object );
+
+#ifdef __TARM_SYMBIAN_CONVERGENCY
+	TPtrC8 uriPtrc = NSmlDmURI::RemoveDotSlash( aURI );
+	TRAPD(
+        reason,
+        status = FetchLeafObjectL( uriPtrc, aLUID, mimeType, *object ) );
+#else
+	TRAPD(
+        reason,
+        status = FetchLeafObjectL( aURI, aLUID, mimeType, *object ) );
+#endif
+
+    if( KErrNone != reason )
+        {
+        RDEBUG_2( "CIsAdapter::_FetchLeafObjectL: Error code %d", reason);
+        status = CSmlDmAdapter::EError;
+        }
+
+    iCallBack->SetStatusL(aStatusRef, status);
+
+    if( status == CSmlDmAdapter::EOk)
+        {
+        object->Compress();
+        iCallBack->SetResultsL( aResultsRef, *object, mimeType );
+        }
+
+    CleanupStack::PopAndDestroy( object );    
+
+    RDEBUG("CIsAdapter::_FetchLeafObjectL() <");
+    }
+
+// ------------------------------------------------------------------------------------------------
+//  CIsAdapter::_FetchLeafObjectSizeL
+// ------------------------------------------------------------------------------------------------
+void CIsAdapter::_FetchLeafObjectSizeL( const TDesC8& aURI, const TDesC8& aLUID,
+                                       const TDesC8& aType, TInt aResultsRef,
+                                       TInt aStatusRef )
+    {
+    RDEBUG("CIsAdapter::_FetchLeafObjectSizeL() >");
+
+    TBuf8<KISTBufMaxLength> mimeType;
+    CopyAndTrimMimeType(mimeType, aType);
+
+    CSmlDmAdapter::TError status = CSmlDmAdapter::EOk;
+
+    CBufFlat *object = CBufFlat::NewL(128);
+    CleanupStack::PushL( object );
+
+#ifdef __TARM_SYMBIAN_CONVERGENCY
+	TPtrC8 uriPtrc = NSmlDmURI::RemoveDotSlash( aURI );
+	TRAPD(
+        reason,
+        status = FetchLeafObjectL( uriPtrc, aLUID, mimeType, *object ) );
+#else
+	TRAPD(
+        reason,
+        status = FetchLeafObjectL( aURI, aLUID, mimeType, *object ) );
+#endif
+
+    if( KErrNone != reason )
+        {
+        RDEBUG_2( "CIsAdapter::_FetchLeafObjectSizeL: Error code %d", reason);
+        status = CSmlDmAdapter::EError;
+        }
+
+    iCallBack->SetStatusL(aStatusRef, status);
+
+    if( status == CSmlDmAdapter::EOk)
+        {
+        TBuf8<MAX_NUMBER_OF_DIGITS_IN_10BASE_INT64> numBuf;
+        object->Compress();
+
+        CBufFlat *object2 = CBufFlat::NewL(128);
+        CleanupStack::PushL( object2 );
+
+        numBuf.Num(object->Size());
+        object2->InsertL(0, numBuf);
+        object2->Compress();
+        iCallBack->SetResultsL( aResultsRef, *object2, KNSmlISTextPlain );
+
+        CleanupStack::PopAndDestroy( object2 );
+        }
+
+    CleanupStack::PopAndDestroy( object );    
+
+    RDEBUG("CIsAdapter::_FetchLeafObjectSizeL() <");
+    }
+
+// ------------------------------------------------------------------------------------------------
+//  CIsAdapter::_ChildURIListL
+// ------------------------------------------------------------------------------------------------
+void CIsAdapter::_ChildURIListL( const TDesC8& aURI, const TDesC8& /*aLUID*/,
+                                const CArrayFix<TSmlDmMappingInfo>& /*aPreviousURISegmentList*/,
+                                TInt aResultsRef, TInt aStatusRef )
+    {
+    RDEBUG( "CIsAdapter::_ChildURIListL() >" );
+
+    CSmlDmAdapter::TError ret = CSmlDmAdapter::EOk;
+
+    CBufFlat *currentList = CBufFlat::NewL(128);
+    CleanupStack::PushL(currentList);
+
+#ifdef __TARM_SYMBIAN_CONVERGENCY
+	TPtrC8 uriPtrc = NSmlDmURI::RemoveDotSlash( aURI );
+	CIsAdapter::TIsNodeIdentifier identifier = GetNodeIdentifier( uriPtrc );
+#else
+	CIsAdapter::TIsNodeIdentifier identifier = GetNodeIdentifier( aURI );
+#endif
+
+    switch( identifier )
+        {
+        case EIsNodeCustomization:
+        currentList->InsertL(currentList->Size(),KNSmlIS_IdleSoftKeyNodeName());
+        break;
+        
+        case EIsNodeIdleSoftkeys:
+        currentList->InsertL(currentList->Size(),KNSmlIS_SoftKeysNodeName());
+        currentList->InsertL(currentList->Size(),KNSmlISSeparator());        
+        currentList->InsertL(currentList->Size(),KNSmlIS_TargetsNodeName());
+        currentList->InsertL(currentList->Size(),KNSmlISSeparator());        
+        currentList->InsertL(currentList->Size(),KNSmlIS_WebTargetsNodeName());
+        break;
+
+        case EIsNodeSoftKeys:
+        ListSoftkeysL( *currentList );
+        break;
+
+        case EIsNodeTargets:
+        iAppTargetManager->ListTargetsL( *currentList );
+        break;
+
+        case EIsNodeWebTargets:
+        
+        //User::LeaveIfError( iUiSrv.UpdateShortcutTargetList() );
+        iWebTargetManager->ListWebTargetsL( *currentList );
+        iWebTargetManager->CheckLUIDDatabaseL( ETrue );
+        break;
+
+        case EIsNodeSoftKeysX:
+        currentList->InsertL(currentList->Size(),KNSmlIS_SoftkeysIDNodeName());
+        currentList->InsertL(currentList->Size(),KNSmlISSeparator());
+        currentList->InsertL(currentList->Size(),KNSmlIS_SoftkeysTargetRefNodeName());
+#ifdef IDLESOFTKEY_ADAPTER_SOFTKEY_IMAGES
+        currentList->InsertL(currentList->Size(),KNSmlISSeparator());
+        currentList->InsertL(currentList->Size(),KNSmlIS_SoftkeysImageNoneName());
+#ifdef IDLESOFTKEY_ADAPTER_IMAGEMASK
+        currentList->InsertL(currentList->Size(),KNSmlISSeparator());
+        currentList->InsertL(currentList->Size(),KNSmlIS_SoftkeysMaskNodeName());
+#endif
+#endif
+        break;
+        
+        case EIsNodeTargetsX:
+        currentList->InsertL(currentList->Size(),KNSmlIS_TargetsIDNodeName());
+        currentList->InsertL(currentList->Size(),KNSmlISSeparator());
+        currentList->InsertL(currentList->Size(),KNSmlIS_TargetsDescriptionNodeName());
+        currentList->InsertL(currentList->Size(),KNSmlISSeparator());
+        currentList->InsertL(currentList->Size(),KNSmlIS_TargetsCaptionName());
+#ifndef IDLESOFTKEY_ADAPTER_SOFTKEY_IMAGES
+        currentList->InsertL(currentList->Size(),KNSmlISSeparator());
+        currentList->InsertL(currentList->Size(),KNSmlIS_TargetsImageNodeName());
+#ifdef IDLESOFTKEY_ADAPTER_IMAGEMASK
+        currentList->InsertL(currentList->Size(),KNSmlISSeparator());
+        currentList->InsertL(currentList->Size(),KNSmlIS_TargetsMaskNodeName());
+#endif
+#endif
+        break;
+        
+        case EIsNodeWebTargetsX:
+        currentList->InsertL(currentList->Size(),KNSmlIS_WebTargetsIDNodeName());
+        currentList->InsertL(currentList->Size(),KNSmlISSeparator());
+        currentList->InsertL(currentList->Size(),KNSmlIS_WebTargetsDescriptionNodeName());
+        currentList->InsertL(currentList->Size(),KNSmlISSeparator());
+        currentList->InsertL(currentList->Size(),KNSmlIS_WebTargetsURLNodeName());
+        currentList->InsertL(currentList->Size(),KNSmlISSeparator());
+        currentList->InsertL(currentList->Size(),KNSmlIS_WebTargetsUserNameNodeName());
+        currentList->InsertL(currentList->Size(),KNSmlISSeparator());
+        currentList->InsertL(currentList->Size(),KNSmlIS_WebTargetsPasswordNodeName());
+        currentList->InsertL(currentList->Size(),KNSmlISSeparator());
+        currentList->InsertL(currentList->Size(),KNSmlIS_WebTargetsConRefNodeName());
+        currentList->InsertL(currentList->Size(),KNSmlISSeparator());
+        currentList->InsertL(currentList->Size(),KNSmlIS_WebTargetsCaptionNodeName());
+#ifndef IDLESOFTKEY_ADAPTER_SOFTKEY_IMAGES
+        currentList->InsertL(currentList->Size(),KNSmlISSeparator());
+        currentList->InsertL(currentList->Size(),KNSmlIS_WebTargetsImageNodeName());
+#ifdef IDLESOFTKEY_ADAPTER_IMAGEMASK
+        currentList->InsertL(currentList->Size(),KNSmlISSeparator());
+        currentList->InsertL(currentList->Size(),KNSmlIS_WebTargetsMaskNodeName());
+#endif
+#endif
+        break;
+
+        case EIsNodeSoftKeysXID:
+        case EIsNodeSoftKeysXTargetRef:
+#ifdef IDLESOFTKEY_ADAPTER_SOFTKEY_IMAGES
+        case EIsNodeSoftKeysXImage:
+#ifdef IDLESOFTKEY_ADAPTER_IMAGEMASK
+        case EIsNodeSoftKeysXMask:
+#endif
+#endif
+        // Empty
+        break;
+
+        case EIsNodeTargetsXID:
+        case EIsNodeTargetsXDescription:
+        case EIsNodeTargetsXCaption:
+#ifndef IDLESOFTKEY_ADAPTER_SOFTKEY_IMAGES
+        case EIsNodeTargetsXImage:        
+#ifdef IDLESOFTKEY_ADAPTER_IMAGEMASK
+        case EIsNodeTargetsXImageMask:
+#endif
+#endif
+        // Empty
+        break;
+
+        case EIsNodeWebTargetsXID:
+        case EIsNodeWebTargetsXDescription:
+        case EIsNodeWebTargetsXURL:
+        case EIsNodeWebTargetsXUserName:
+        case EIsNodeWebTargetsXPassword:
+        case EIsNodeWebTargetsXConRef:
+        case EIsNodeWebTargetsXCaption:
+#ifndef IDLESOFTKEY_ADAPTER_SOFTKEY_IMAGES
+        case EIsNodeWebTargetsXImage:        
+#ifdef IDLESOFTKEY_ADAPTER_IMAGEMASK
+        case EIsNodeWebTargetsXImageMask:
+#endif
+#endif
+        // Empty
+        break;
+
+        default:
+#ifdef __TARM_SYMBIAN_CONVERGENCY
+	if( uriPtrc.Length() == 0 )
+#else
+	if( aURI.Length() == 0 )
+#endif        
+            {
+            currentList->InsertL(0,KNSmlCustomizationNodeName());
+            }
+        else
+            {                
+            ret = CSmlDmAdapter::ENotFound;
+            }
+        break;
+        }
+
+    iCallBack->SetStatusL(aStatusRef, ret);
+
+    if( ret == CSmlDmAdapter::EOk )
+        {
+        iCallBack->SetResultsL(aResultsRef, *currentList, KNSmlISTextPlain);
+        }
+
+    CleanupStack::PopAndDestroy( currentList );
+
+    RDEBUG( "CIsAdapter::_ChildURIListL() <" );
+    }
+
+// ------------------------------------------------------------------------------------------------
+// CIsAdapter::AddNodeObjectL
+// ------------------------------------------------------------------------------------------------
+void CIsAdapter::AddNodeObjectL( CSmlDmAdapter::TError &aStatus, const TDesC8& aURI,
+                                 const TDesC8& /*aParentLUID*/ )
+    {
+    RDEBUG( "CIsAdapter::AddNodeObjectL() >" );
+
+	// SymbianConvergency NOTE! See _AddNodeObjectL() <-> it removes the "./" from aURI
+
+    CIsAdapter::TIsNodeIdentifier identifier = GetNodeIdentifier( aURI );
+
+    HBufC8* dataH = HBufC8::NewLC( KRepositoryEntryMaxLength );
+    RDEBUG_2( "CIsAdapter::AddNodeObjectL() HBufC8 dataH ALLOC %x", dataH);
+    TPtr8 data( dataH->Des() );
+    TInt index = -1;
+    TInt ret = KErrNone;
+
+    switch( identifier )
+        {
+            case EIsNodeWebTargetsX:
+                {
+                TRAPD( reason,
+                    ret = 
+                    iWebTargetManager->GetTargetFromNodeNameL( aURI, index ) ); // Ignore index                
+                if( (KErrNone != reason) || (KErrNone != ret) )
+                    {
+                    RDEBUG_2( "CIsAdapter::AddNodeObjectL: New WebTarget (%d)", reason);
+                    CFavouritesItem *favItem = CFavouritesItem::NewLC();
+                    RDEBUG_2( "CIsAdapter::AddNodeObjectL() CFavouritesItem ALLOC %x", favItem);
+
+                    TPtrC8 namePtr( NSmlDmURI::LastURISeg(aURI) );
+                    HBufC* nameBuf = HBufC::NewLC( namePtr.Length() );
+                    RDEBUG_2( "CIsAdapter::AddNodeObjectL() HBufC nameBuf ALLOC %x", nameBuf);
+
+                    nameBuf->Des().Copy( namePtr );
+                    favItem->SetNameL( *nameBuf );
+                    CleanupStack::PopAndDestroy( nameBuf );
+
+                    favItem->SetUrlL(_L("http://"));
+                    favItem->SetParentFolder(KFavouritesRootUid);
+
+                    if( KErrNone == iFavDb.Add( *favItem, ETrue ) )
+                        {
+                        TBuf8<MAX_NUMBER_OF_DIGITS_IN_10BASE_INT64> newUID;
+                        newUID.Num( favItem->Uid() );
+
+                        if( KErrNone == iWebTargetManager->FindLUIDByURIL( aURI, data, index ) )
+                            {
+                            aStatus = CSmlDmAdapter::EAlreadyExists;
+                            }
+                         
+                            /*
+                        else
+                        if( KErrNone == iWebTargetManager->FindURIByLUIDL( data, newUID, index ) )
+                            {
+                            aStatus = CSmlDmAdapter::EAlreadyExists;
+                            }*/
+                        else
+                            {
+                            RDEBUG8_2( "CIsAdapter::AddNodeObjectL: New WebTarget UID=%S", &newUID );
+                            iWebTargetManager->FindURIByLUIDL( data, newUID, index ); // Replace if LUid exists...
+                            iWebTargetManager->UpdateLUIDDatabaseL( aURI, newUID, index );
+                            iCallBack->SetMappingL( aURI, newUID );
+                            }
+                        }
+                    else
+                        {
+                        aStatus = CSmlDmAdapter::EError;
+                        }
+
+                    CleanupStack::PopAndDestroy( favItem );
+                    }
+                else
+                    {
+                    aStatus = CSmlDmAdapter::EAlreadyExists;
+                    }
+                }
+            break;
+
+            default:
+                aStatus = CSmlDmAdapter::EError;
+            break;
+        };
+
+    CleanupStack::PopAndDestroy(dataH);
+
+    RDEBUG( "CIsAdapter::AddNodeObjectL() <" );
+    }
+
+// ------------------------------------------------------------------------------------------------
+// CIsAdapter::_AddNodeObjectL
+// ------------------------------------------------------------------------------------------------
+void CIsAdapter::_AddNodeObjectL( const TDesC8& aURI, const TDesC8& aParentLUID, TInt aStatusRef )
+    {
+    RDEBUG( "CIsAdapter::_AddNodeObjectL() >" );
+
+    CSmlDmAdapter::TError status = CSmlDmAdapter::EOk;
+
+#ifdef __TARM_SYMBIAN_CONVERGENCY
+	TPtrC8 uriPtrc = NSmlDmURI::RemoveDotSlash( aURI );
+	TRAPD(
+        reason,
+        AddNodeObjectL( status, uriPtrc, aParentLUID ) );
+#else
+	TRAPD(
+        reason,
+        AddNodeObjectL( status, aURI, aParentLUID ) );
+#endif
+
+    if( KErrNone != reason )
+        {
+        RDEBUG_2( "CIsAdapter::_AddNodeObjectL: Error code %d", reason);
+        status = CSmlDmAdapter::EError;
+        }
+
+    iCallBack->SetStatusL(aStatusRef, status);
+
+    RDEBUG( "CIsAdapter::_AddNodeObjectL() <" );
+    }
+
+// ------------------------------------------------------------------------------------------------
+// CIsAdapter::_ExecuteCommandL
+// ------------------------------------------------------------------------------------------------
+void CIsAdapter::_ExecuteCommandL( const TDesC8& /*aURI*/, const TDesC8& /*aLUID*/,
+                                  const TDesC8& /*aArgument*/, const TDesC8& /*aType*/,
+                                  TInt aStatusRef )
+    {
+    RDEBUG( "CIsAdapter::_ExecuteCommandL() >" );
+
+    CSmlDmAdapter::TError ret = CSmlDmAdapter::EError;
+    iCallBack->SetStatusL(aStatusRef, ret);    
+
+    RDEBUG( "CIsAdapter::_ExecuteCommandL() <" );
+    }
+
+// ------------------------------------------------------------------------------------------------
+// CIsAdapter::_ExecuteCommandL
+// ------------------------------------------------------------------------------------------------
+void CIsAdapter::_ExecuteCommandL( const TDesC8& /*aURI*/, const TDesC8& /*aLUID*/,
+                                  RWriteStream*& /*aStream*/, const TDesC8& /*aType*/,
+                                  TInt aStatusRef )
+    {
+    RDEBUG( "CIsAdapter::_ExecuteCommandL() (stream) >" );
+
+    CSmlDmAdapter::TError ret = CSmlDmAdapter::EError;
+    iCallBack->SetStatusL(aStatusRef, ret);    
+
+    RDEBUG( "CIsAdapter::_ExecuteCommandL() (stream) <" );
+    }
+
+// ------------------------------------------------------------------------------------------------
+// CIsAdapter::_CopyCommandL
+// ------------------------------------------------------------------------------------------------
+void CIsAdapter::_CopyCommandL( const TDesC8& /*aTargetURI*/, const TDesC8& /*aTargetLUID*/,
+                               const TDesC8& /*aSourceURI*/, const TDesC8& /*aSourceLUID*/,
+                               const TDesC8& /*aType*/, TInt aStatusRef )
+    {
+    RDEBUG( "CIsAdapter::_CopyCommandL() >" );
+
+    CSmlDmAdapter::TError ret = CSmlDmAdapter::EError;
+    iCallBack->SetStatusL(aStatusRef, ret);    
+
+    RDEBUG( "CIsAdapter::_CopyCommandL() <" );
+    }
+
+// ------------------------------------------------------------------------------------------------
+// CIsAdapter::StartAtomicL
+// ------------------------------------------------------------------------------------------------
+void CIsAdapter::StartAtomicL()
+    {
+    RDEBUG( "CIsAdapter::StartAtomicL() ><" );
+    }
+
+// ------------------------------------------------------------------------------------------------
+// CIsAdapter::CommitAtomicL
+// ------------------------------------------------------------------------------------------------
+void CIsAdapter::CommitAtomicL()
+    {
+    RDEBUG( "CIsAdapter::CommitAtomicL() ><" );
+    }
+
+// ------------------------------------------------------------------------------------------------
+// CIsAdapter::RollbackAtomicL
+// ------------------------------------------------------------------------------------------------
+void CIsAdapter::RollbackAtomicL()
+    {
+    RDEBUG( "CIsAdapter::RollbackAtomicL() ><" );
+
+    
+    CSmlDmAdapter::TError status = CSmlDmAdapter::ERollbackFailed;
+    iCallBack->SetStatusL(0, status);    
+    }
+
+// -----------------------------------------------------------------------------
+// CIsAdapter::StreamType
+// 
+// -----------------------------------------------------------------------------
+CTARMDmStreamAdapter::TAdapterStreamType CIsAdapter::StreamType( const TDesC8& /*aURI*/ )
+    {
+	RDEBUG( "CIsAdapter::StreamType()" );
+    return CTARMDmStreamAdapter::EStreamToBuffer;
+    }
+
+// ------------------------------------------------------------------------------------------------
+// CIsAdapter::StreamingSupport
+// ------------------------------------------------------------------------------------------------
+TBool CIsAdapter::StreamingSupport( TInt& aItemSize )
+    {
+	RDEBUG( "CIsAdapter::StreamingSupport()" );
+    aItemSize = 1024; // Large images are streamed 
+    return EFalse;	// don't support stream
+    }
+
+// ------------------------------------------------------------------------------------------------
+// CIsAdapter::CompleteOutstandingCmdsL
+// ------------------------------------------------------------------------------------------------
+void CIsAdapter::CompleteOutstandingCmdsL()
+    {
+    RDEBUG( "CIsAdapter::CompleteOutstandingCmdsL() ><" );
+    }
+
+// ------------------------------------------------------------------------------------------------
+// ImplementationTable
+// ------------------------------------------------------------------------------------------------
+const TImplementationProxy ImplementationTable[] = 
+    {
+    { { KNSmlDMISAdapterImplUidValue }, (TProxyNewLPtr)CIsAdapter::NewL }
+    };
+
+// ------------------------------------------------------------------------------------------------
+// ImplementationGroupProxy
+// ------------------------------------------------------------------------------------------------
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount )
+    {
+    aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
+    return ImplementationTable;
+    }
+
+// ------------------------------------------------------------------------------------------------
+// CIsAdapter::ConstructL
+// ------------------------------------------------------------------------------------------------
+void CIsAdapter::ConstructL(MSmlDmCallback *aDmCallback)
+    {
+    RDEBUG( "CIsAdapter::ConstructL() >" );
+	
+	TRAPD( errf, FeatureManager::InitializeLibL() );
+	if( errf != KErrNone )
+	{
+		User::Leave(errf);
+	}
+	
+	if(FeatureManager::FeatureSupported(KFeatureIdSapIdleSoftkeyAdapter))
+	{
+    iCallBack = aDmCallback;
+	
+    //User::LeaveIfError( iUiSrv.Connect() );
+    //iUiSrv.UpdateShortcutTargetList();
+
+    User::LeaveIfError( iFavSession.Connect() );
+    User::LeaveIfError( iFavDb.Open( iFavSession, KBrowserBookmarks ) );
+
+    TInt count = 0;
+    // Get / create the count
+    //
+    CRepository* rep = CRepository::NewLC( KNSmlDMISAdapterCentRepUid );
+    RDEBUG_2( "CIsAdapter::ConstructL() CRepository ALLOC %x", rep);
+
+    TInt ret = rep->Get((TUint32)KRepositoryIdBookmarkCount, count);
+    if( ret == KErrNotFound )
+        {
+        ret = rep->Create((TUint32)KRepositoryIdBookmarkCount, count);
+        }
+
+    CleanupStack::PopAndDestroy( rep );
+
+    iWebTargetManager = new (ELeave) CIdleSoftkeysWebTargetManager(
+                                                      iCallBack,
+                                                      iFavDb 
+                                                      );
+    iWebTargetManager->CheckLUIDDatabaseL( EFalse );
+
+    iAppTargetManager = new (ELeave) CIdleSoftkeysAppTargetManager(
+                                                      iCallBack 
+    
+                                                      );
+    // just creating a pointer to the class
+    // this needs to be initialized before it is used
+    // to initialize we use ReadBookmarksL and ReadTargetsL function
+    iUiSettings = CUiSettingsUtil::NewL( );
+
+    RDEBUG( "CIsAdapter::ConstructL() <" );
+    }
+    else
+	{
+		FeatureManager::UnInitializeLib();
+   		User::Leave( KErrNotSupported );
+	}
+    
+    }
+
+// -------------------------------------------------------------------------------------
+// CIsAdapter::FillNodeInfoL()
+// Fills the node info in ddf structure
+// -------------------------------------------------------------------------------------
+void CIsAdapter::FillNodeInfoL( MSmlDmDDFObject& aNode,TSmlDmAccessTypes aAccTypes,
+                                        MSmlDmDDFObject::TOccurence aOccurrence, MSmlDmDDFObject::TScope aScope, 
+                                        MSmlDmDDFObject::TDFFormat aFormat,const TDesC8& aDescription,const TDesC8& aMimeType)
+    {
+    RDEBUG( "CIsAdapter::FillNodeInfoL() >" );
+
+    aNode.SetAccessTypesL(aAccTypes);
+    aNode.SetOccurenceL(aOccurrence);
+    aNode.SetScopeL(aScope);
+    aNode.SetDFFormatL(aFormat);
+    aNode.SetDescriptionL(aDescription);
+    if(aMimeType.Length() > 0)
+        {
+        aNode.AddDFTypeMimeTypeL(aMimeType);
+        }
+
+    RDEBUG( "CIsAdapter::FillNodeInfoL() <" );
+    }
+
+// -------------------------------------------------------------------------------------
+// CIsAdapter::GetNodeIdentifier
+// -------------------------------------------------------------------------------------
+CIsAdapter::TIsNodeIdentifier CIsAdapter::GetNodeIdentifier(const TDesC8& aURI)
+    {
+    RDEBUG( "CIsAdapter::GetNodeIdentifier() >" );
+
+	// SymbianConvergency NOTE! Look _DeleteObjectL() <-> removes the "./" from the aURI !!
+
+    TInt numOfSegs = NSmlDmURI::NumOfURISegs( aURI );
+    if(numOfSegs == 0)
+        {
+        return CIsAdapter::EIsNodeNotUsedAndAlwaysLast;
+        }
+    
+    TPtrC8I seg1 = NSmlDmURI::URISeg( aURI, 0 );
+
+    if(seg1 == KNSmlCustomizationNodeName)
+        {
+        if(numOfSegs == 1)
+            {
+            return EIsNodeCustomization;
+            }
+
+        // At least 2 segments
+        TPtrC8I seg2 = NSmlDmURI::URISeg( aURI, 1 );
+        if(seg2 == KNSmlIS_IdleSoftKeyNodeName)
+            {
+            if(numOfSegs == 2)
+                {
+                return CIsAdapter::EIsNodeIdleSoftkeys;
+                }
+
+            // At least 3 segments
+            TPtrC8I seg3 = NSmlDmURI::URISeg( aURI, 2 );
+            if(seg3 == KNSmlIS_SoftKeysNodeName)
+                {
+                if(numOfSegs == 3)
+                    {
+                    return CIsAdapter::EIsNodeSoftKeys;
+                    }
+                    
+                // At least 4 segments  
+                if(numOfSegs == 4)
+                    {
+                    return CIsAdapter::EIsNodeSoftKeysX;
+                    }
+
+                // At least 5 segments
+                TPtrC8I seg5 = NSmlDmURI::URISeg( aURI, 4 );
+                if(seg5 == KNSmlIS_SoftkeysIDNodeName)
+                    {
+                    return CIsAdapter::EIsNodeSoftKeysXID;
+                    }
+                    else
+                if(seg5 == KNSmlIS_SoftkeysTargetRefNodeName)
+                    {
+                    return CIsAdapter::EIsNodeSoftKeysXTargetRef;
+                    }
+#ifdef IDLESOFTKEY_ADAPTER_SOFTKEY_IMAGES
+                    else
+                if(seg5 == KNSmlIS_SoftkeysImageNoneName)
+                    {
+                    return CIsAdapter::EIsNodeSoftKeysXImage;
+                    }
+#ifdef IDLESOFTKEY_ADAPTER_IMAGEMASK
+                    else
+                if(seg5 == KNSmlIS_SoftkeysMaskNodeName)
+                    {
+                    return CIsAdapter::EIsNodeSoftKeysXMask;
+                    }
+#endif
+#endif
+                else
+                    {
+                    return CIsAdapter::EIsNodeNotUsedAndAlwaysLast;
+                    }
+                }
+                else
+            if(seg3 == KNSmlIS_TargetsNodeName)
+                {
+                if(numOfSegs == 3)
+                    {
+                    return CIsAdapter::EIsNodeTargets;
+                    }
+
+                // At least 4 segments  
+                if(numOfSegs == 4)
+                    {
+                    return CIsAdapter::EIsNodeTargetsX;
+                    }
+
+                // At least 5 segments
+                TPtrC8I seg5 = NSmlDmURI::URISeg( aURI, 4 );
+                if(seg5 == KNSmlIS_TargetsIDNodeName)
+                    {
+                    return CIsAdapter::EIsNodeTargetsXID;
+                    }
+                    else
+                if(seg5 == KNSmlIS_TargetsDescriptionNodeName)
+                    {
+                    return CIsAdapter::EIsNodeTargetsXDescription;
+                    }
+                // ...
+                    else
+                if(seg5 == KNSmlIS_TargetsCaptionName)
+                    {
+                    return CIsAdapter::EIsNodeTargetsXCaption;
+                    }
+#ifndef IDLESOFTKEY_ADAPTER_SOFTKEY_IMAGES
+                    else
+                if(seg5 == KNSmlIS_TargetsImageNodeName)
+                    {
+                    return CIsAdapter::EIsNodeTargetsXImage;
+                    }
+#ifdef IDLESOFTKEY_ADAPTER_IMAGEMASK
+                    else
+                if(seg5 == KNSmlIS_TargetsMaskNodeName)
+                    {
+                    return CIsAdapter::EIsNodeTargetsXImageMask;
+                    }
+#endif
+#endif
+                // ...
+                else
+                
+                    {
+                    return CIsAdapter::EIsNodeNotUsedAndAlwaysLast;
+                    }
+                }
+                else
+            if(seg3 == KNSmlIS_WebTargetsNodeName)
+                {
+                if(numOfSegs == 3)
+                    {
+                    return CIsAdapter::EIsNodeWebTargets;
+                    }
+
+                // At least 4 segments  
+                if(numOfSegs == 4)
+                    {
+                    return CIsAdapter::EIsNodeWebTargetsX;
+                    }
+
+                // At least 5 segments
+                TPtrC8I seg5 = NSmlDmURI::URISeg( aURI, 4 );
+                if(seg5 == KNSmlIS_WebTargetsIDNodeName)
+                    {
+                    return CIsAdapter::EIsNodeWebTargetsXID;
+                    }
+                    else
+                if(seg5 == KNSmlIS_WebTargetsDescriptionNodeName)
+                    {
+                    return CIsAdapter::EIsNodeWebTargetsXDescription;
+                    }
+                    else
+                if(seg5 == KNSmlIS_WebTargetsURLNodeName)
+                    {
+                    return CIsAdapter::EIsNodeWebTargetsXURL;
+                    }
+                    else
+                if(seg5 == KNSmlIS_WebTargetsUserNameNodeName)
+                    {
+                    return CIsAdapter::EIsNodeWebTargetsXUserName;
+                    }
+                    else
+                if(seg5 == KNSmlIS_WebTargetsPasswordNodeName)
+                    {
+                    return CIsAdapter::EIsNodeWebTargetsXPassword;
+                    }
+                    else
+                if(seg5 == KNSmlIS_WebTargetsConRefNodeName)
+                    {
+                    return CIsAdapter::EIsNodeWebTargetsXConRef;
+                    }
+                // ...
+                    else
+                if(seg5 == KNSmlIS_WebTargetsCaptionNodeName)
+                    {
+                    return CIsAdapter::EIsNodeWebTargetsXCaption;
+                    }
+#ifndef IDLESOFTKEY_ADAPTER_SOFTKEY_IMAGES
+                    else
+                if(seg5 == KNSmlIS_WebTargetsImageNodeName)
+                    {
+                    return CIsAdapter::EIsNodeWebTargetsXImage;
+                    }
+#ifdef IDLESOFTKEY_ADAPTER_IMAGEMASK
+                    else
+                if(seg5 == KNSmlIS_WebTargetsMaskNodeName)
+                    {
+                    return CIsAdapter::EIsNodeWebTargetsXImageMask;
+                    }
+#endif
+#endif
+                // ...
+                else
+                    {
+                    return CIsAdapter::EIsNodeNotUsedAndAlwaysLast;
+                    }                
+                }
+            else
+                {
+                return CIsAdapter::EIsNodeNotUsedAndAlwaysLast;
+                }
+            }
+        else
+            {
+            return CIsAdapter::EIsNodeNotUsedAndAlwaysLast;
+            }
+        }
+    else
+        {
+        return CIsAdapter::EIsNodeNotUsedAndAlwaysLast;
+        }
+
+    // Note: do not return anything here
+    }
+
+   
+// -------------------------------------------------------------------------------------
+// CIsAdapter::CopyAndTrimMimeType
+// -------------------------------------------------------------------------------------
+void CIsAdapter::CopyAndTrimMimeType(TDes8& aNewMime, const TDesC8& aType)
+    {
+    RDEBUG( "CIsAdapter::CopyAndTrimMimeType() >" );
+
+    if(aNewMime.MaxLength() < aType.Length())
+        {
+        aNewMime.Copy( aType.Left(aNewMime.MaxLength()) );
+        }
+    else
+        {
+        aNewMime.Copy( aType );           
+        }        
+    aNewMime.TrimAll();
+    aNewMime.LowerCase();
+    
+    TInt pos;
+    while(( pos = aNewMime.Locate(' ')  ) != KErrNotFound)
+        {
+            aNewMime.Delete(pos, 1);
+        }
+
+    RDEBUG( "CIsAdapter::CopyAndTrimMimeType() <" );
+    }
+
+// -------------------------------------------------------------------------------------
+// CIsAdapter::ListSoftkeysL
+// -------------------------------------------------------------------------------------
+TInt CIsAdapter::ListSoftkeysL( CBufFlat &aList )
+    {
+    RDEBUG( "CIsAdapter::ListSoftkeysL() >" );
+
+    TInt i;
+    for(i=0; i<NumberOfSoftkeys/*iUiSettings->GetSoftkeyCountL()*/; i++)
+        {
+        if(i>0)
+            {
+            aList.InsertL( aList.Size(), KNSmlISSeparator() );
+            }
+
+        HBufC8* softkeyName = GenerateSoftkeyNodeNameL( i );
+        CleanupStack::PushL( softkeyName );
+        
+        aList.InsertL( aList.Size(), *softkeyName );
+
+        CleanupStack::PopAndDestroy( softkeyName );
+        }
+
+    RDEBUG( "CIsAdapter::ListSoftkeysL() <" );
+    return KErrNone;
+    }
+
+// -------------------------------------------------------------------------------------
+// CIsAdapter::GenerateSoftkeyNodeNameL
+// -------------------------------------------------------------------------------------
+HBufC8* CIsAdapter::GenerateSoftkeyNodeNameL(TInt aIndex )
+    {
+    RDEBUG( "CIsAdapter::GenerateSoftkeyNodeNameL() >" );
+
+    TInt index = aIndex;
+
+    HBufC8* softkeyName = HBufC8::NewL( KPrefixSoftkeyNodeName().Length()
+                                + MAX_NUMBER_OF_DIGITS_IN_10BASE_INT64 );
+
+    TPtr8 ptr( softkeyName->Des() );
+
+    ptr.Format(KFormatSoftkeyNodeName, index+1);
+    
+    RDEBUG8_2( "CIsAdapter::GenerateSoftkeyNodeNameL() < %S", &softkeyName );
+    return softkeyName;
+    }
+
+// -------------------------------------------------------------------------------------
+// CIsAdapter::GetSoftkeyIndexFromUid
+// -------------------------------------------------------------------------------------
+TInt CIsAdapter::GetSoftkeyIndexFromUid( TInt aUid )
+    {
+    RDEBUG( "CIsAdapter::GetSoftkeyIndexFromUid() >" );
+
+    switch( aUid )
+        {
+        case KScActionTypeUidValueSoftkeyLeft:
+        return 0;
+        case KScActionTypeUidValueSoftkeyRight:
+        return 1;
+        case KScActionTypeUidValueScrollkeyLeft:
+        return 2;
+        case KScActionTypeUidValueScrollkeyRight:
+        return 3;
+        case KScActionTypeUidValueScrollkeyUp:
+        return 4;
+        case KScActionTypeUidValueScrollkeyDown:
+        return 5;
+        case KScActionTypeUidValueScrollkeySelect:
+        return 6;
+        case KActiveIdleScUidValueItem1:
+        return 7;
+        case KActiveIdleScUidValueItem2:
+        return 8;
+        case KActiveIdleScUidValueItem3:
+        return 9;
+        case KActiveIdleScUidValueItem4:
+        return 10;
+        case KActiveIdleScUidValueItem5:
+        return 11;
+        default:
+        return -1;
+        }
+        
+    //    return aUid;
+    }
+
+// -------------------------------------------------------------------------------------
+// CIsAdapter::GetSoftkeyUidFromNodeNameL
+// -------------------------------------------------------------------------------------
+TInt CIsAdapter::GetSoftkeyUidFromNodeNameL(const TDesC8& aNodeName)
+    {
+    RDEBUG( "CIsAdapter::GetSoftkeyUidFromNodeNameL() >" );
+
+    TInt index = -1;
+    TInt compareLen = KPrefixSoftkeyNodeName().Length();
+    if(aNodeName.Left(compareLen) == KFormatSoftkeyNodeName().Left(compareLen))
+        {
+        TLex8 lex;
+        lex.Assign( aNodeName );
+        
+        lex.Inc( compareLen );
+        User::LeaveIfError( lex.Val(index) );
+        index--;
+        User::LeaveIfError( index>=0 && index<NumberOfSoftkeys/*iUiSettings->GetSoftkeyCountL()*/ ? KErrNone : KErrGeneral );
+        
+        HBufC8* softkeyName = GenerateSoftkeyNodeNameL( index );
+        CleanupStack::PushL( softkeyName );
+        
+        TPtr8 ptr( softkeyName->Des() );
+        User::LeaveIfError( ptr == aNodeName ? KErrNone : KErrGeneral );
+        
+        CleanupStack::PopAndDestroy( softkeyName );
+        }
+    else
+        {
+        User::Leave( KErrNotFound );
+        }
+
+    RDEBUG_2( "CIsAdapter::GetSoftkeyUidFromNodeNameL() < %d", iSoftkeyList[ index ] );
+    return iSoftkeyList[ index ];
+    }
+
+// -------------------------------------------------------------------------------------
+// CIsAdapter::AddShortcutNameL
+// -------------------------------------------------------------------------------------
+void CIsAdapter::AddShortcutNameL(CBufFlat& aBuffer, TInt aUid)
+    {
+    RDEBUG( "CIsAdapter::AddShortcutNameL() >" );
+
+    switch( aUid )
+        {
+        
+            case KScActionTypeUidValueSoftkeyLeft:
+            aBuffer.InsertL( aBuffer.Size(), KISLeftSoftkeyName() );
+            break;
+            case KScActionTypeUidValueSoftkeyRight:
+            aBuffer.InsertL( aBuffer.Size(), KISRightSoftkeyName() );
+            break;
+            case KScActionTypeUidValueScrollkeyLeft:
+            aBuffer.InsertL( aBuffer.Size(), KISScrollLeftSoftkeyName() );
+            break;
+            case KScActionTypeUidValueScrollkeyRight:
+            aBuffer.InsertL( aBuffer.Size(), KISScrollRightSoftkeyName() );
+            break;
+            case KScActionTypeUidValueScrollkeyUp:
+            aBuffer.InsertL( aBuffer.Size(), KISScrollUpSoftkeyName() );
+            break;
+            case KScActionTypeUidValueScrollkeyDown:
+            aBuffer.InsertL( aBuffer.Size(), KISScrollDownSoftkeyName() );
+            break;
+            case KScActionTypeUidValueScrollkeySelect:
+            aBuffer.InsertL( aBuffer.Size(), KISSelectionSoftkeyName() );
+            break;
+
+            case KActiveIdleScUidValueItem1:
+            aBuffer.InsertL( aBuffer.Size(), KISAISoftkeyName1() );
+            break;
+            case KActiveIdleScUidValueItem2:
+            aBuffer.InsertL( aBuffer.Size(), KISAISoftkeyName2() );
+            break;
+            case KActiveIdleScUidValueItem3:
+            aBuffer.InsertL( aBuffer.Size(), KISAISoftkeyName3() );
+            break;
+            case KActiveIdleScUidValueItem4:
+            aBuffer.InsertL( aBuffer.Size(), KISAISoftkeyName4() );
+            break;
+            case KActiveIdleScUidValueItem5:
+            aBuffer.InsertL( aBuffer.Size(), KISAISoftkeyName5() );
+            break;
+            case KActiveIdleScUidValueItem6:
+            aBuffer.InsertL( aBuffer.Size(), KISAISoftkeyName6() );
+            break;
+            
+            
+            
+        }
+    RDEBUG( "CIsAdapter::AddShortcutNameL() <" );
+    }
+
+#ifdef IDLESOFTKEY_ADAPTER_SOFTKEY_IMAGES
+
+void CIsAdapter::GetSoftkeyImageL(
+                    TInt /*aSoftkeyUid*/,
+                    CBufFlat &aImageBuffer,
+                    TBool /*aGetMask*//*=EFalse*/ )
+    {
+    RDEBUG( "CIsAdapter::GetSoftkeyImageL() >" );
+
+    TFileName  filename;
+    TBuf8<128> mimetype;
+    
+    
+    
+    /*
+
+    if( aGetMask )
+        {
+        User::LeaveIfError( iUiSrv.GetSoftkeyMask(
+                                aSoftkeyUid,
+                                filename,
+                                mimetype
+                            ) );
+        }
+    else
+        {
+        User::LeaveIfError( iUiSrv.GetSoftkeyBitmap(
+                                aSoftkeyUid,
+                                filename,
+                                mimetype
+                            ) );
+        }
+        
+        */
+
+    RFs   fileSession;
+    RFile file;
+
+    User::LeaveIfError( fileSession.Connect() );
+    CleanupClosePushL( fileSession );
+
+    //
+    // Create new temp file
+    //
+    User::LeaveIfError( file.Open( fileSession, filename, EFileRead ) );
+    CleanupClosePushL( file );
+
+    //
+    // Decode data to buffer
+    //
+    TInt size = 0;
+    file.Size( size );
+    HBufC8* buffer = HBufC8::NewLC( size );
+
+    TPtr8 ptr( 0, 0 );
+    ptr.Set( buffer->Des() );
+    User::LeaveIfError( file.Read( ptr ) );
+
+    EncodeImageL( aImageBuffer, ptr );
+
+    CleanupStack::PopAndDestroy( buffer );
+
+    // Close file
+    CleanupStack::PopAndDestroy( &file );
+
+    // Close fileSession
+    CleanupStack::PopAndDestroy( &fileSession );
+
+    RDEBUG( "CIsAdapter::GetSoftkeyImageL() <" );
+    }
+
+#endif
+
+#ifndef IDLESOFTKEY_ADAPTER_SOFTKEY_IMAGES
+
+// -------------------------------------------------------------------------------------
+// CIsAdapter::GetApplicationImageL
+// -------------------------------------------------------------------------------------
+void CIsAdapter::GetApplicationImageL(
+                        TInt aIndex,
+                        CBufFlat &aImageBuffer,
+                        TBool aGetMask/*=EFalse*/ )
+    {
+    RDEBUG( "CIsAdapter::GetApplicationImageL() >" );
+
+    GetShortcutImageL(
+        EUiSrvRtTypeApp,
+        aIndex,
+        aImageBuffer,
+        aGetMask
+        );
+
+    RDEBUG( "CIsAdapter::GetApplicationImageL() <" );
+    }
+
+// -------------------------------------------------------------------------------------
+// CIsAdapter::GetBookmarkImageL
+// -------------------------------------------------------------------------------------
+void CIsAdapter::GetBookmarkImageL(
+                        TInt aIndex,
+                        CBufFlat &aImageBuffer,
+                        TBool aGetMask/*=EFalse*/ )
+    {
+    RDEBUG( "CIsAdapter::GetBookmarkImageL() >" );
+
+    GetShortcutImageL(
+        EUiSrvRtTypeBm,
+        aIndex,
+        aImageBuffer,
+        aGetMask
+        );
+
+    RDEBUG( "CIsAdapter::GetBookmarkImageL() <" );
+    }
+
+#endif
+
+#ifndef IDLESOFTKEY_ADAPTER_SOFTKEY_IMAGES
+
+// -------------------------------------------------------------------------------------
+// CIsAdapter::GetShortcutImageL
+// -------------------------------------------------------------------------------------
+void CIsAdapter::GetShortcutImageL(
+                        TInt aRtMask,
+                        TInt aIndex,
+                        CBufFlat &aImageBuffer,
+                        TBool aGetMask/*=EFalse*/ )
+    {
+    RDEBUG( "CIsAdapter::GetShortcutImageL() >" );
+    TFileName  filename;
+    TBuf8<128> mimetype;
+
+    if( aGetMask )
+        {
+        User::LeaveIfError( iUiSrv.GetShortcutTargetMask(
+                                aRtMask,
+                                aIndex,
+                                filename,
+                                mimetype
+                            ) );
+        }
+    else
+        {
+        User::LeaveIfError( iUiSrv.GetShortcutTargetBitmap(
+                                aRtMask,
+                                aIndex,
+                                filename,
+                                mimetype
+                            ) );
+        }
+
+    RFs   fileSession;
+    RFile file;
+
+    User::LeaveIfError( fileSession.Connect() );
+    CleanupClosePushL( fileSession );
+
+    //
+    // Create new temp file
+    //
+    User::LeaveIfError( file.Open( fileSession, filename, EFileRead ) );
+    CleanupClosePushL( file );
+
+    //
+    // Decode data to buffer
+    //
+    TInt size = 0;
+    file.Size( size );
+    HBufC8* buffer = HBufC8::NewLC( size );
+
+    TPtr8 ptr( 0, 0 );
+    ptr.Set( buffer->Des() );
+    User::LeaveIfError( file.Read( ptr ) );
+
+    EncodeImageL( aImageBuffer, ptr );
+
+    CleanupStack::PopAndDestroy( buffer );
+
+    // Close file
+    CleanupStack::PopAndDestroy( &file );
+
+    // Close fileSession
+    CleanupStack::PopAndDestroy( &fileSession );
+
+    RDEBUG( "CIsAdapter::GetShortcutImageL() <" );
+    }
+#endif
+
+#ifdef IDLESOFTKEY_ADAPTER_SOFTKEY_IMAGES
+void CIsAdapter::SetSoftkeyImageL (
+                            const TDesC8& aURI,
+                            const TDesC8& aObject,
+                            const TDesC8& aType)
+    {
+    RDEBUG( "CIsAdapter::SetSoftkeyImageL() >" );
+
+	// SymbianConvergency NOTE! Functions that call this function will parse off the "./"
+	// from the aURI -> no need to parse "./" here
+
+    if( aType.Length() == 0 )
+        {
+        RDEBUG( "CIsAdapter::SetSoftkeyImageL() WARNING Mime type is empty!" );
+        }
+
+    CIsAdapter::TIsNodeIdentifier identifier = GetNodeIdentifier( aURI );
+    TInt softkeyUid = 0;
+
+    if(
+
+           (EIsNodeSoftKeysXImage    != identifier)
+
+#ifdef IDLESOFTKEY_ADAPTER_IMAGEMASK
+
+        && (EIsNodeSoftKeysXMask     != identifier)
+
+#endif
+
+        )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    //
+    // Get shortcut target index
+    //
+    switch( identifier )
+        {
+
+        // Softkeys/*
+        case EIsNodeSoftKeysXImage:
+#ifdef IDLESOFTKEY_ADAPTER_IMAGEMASK
+        case EIsNodeSoftKeysXMask:
+#endif
+            {
+            softkeyUid = GetSoftkeyUidFromNodeNameL( NSmlDmURI::URISeg( aURI, 3 ) );
+            if(softkeyUid)
+               RDEBUG_2( "CIsAdapter::GetShortcutImageL() < %d", softkeyUid  );
+            }
+        break;
+
+        default:
+            User::Leave( KErrArgument );
+        break;
+
+        }
+	
+    //
+    // Decode image data
+    //
+    DecodeImageToFileL( aObject );
+/*
+    switch( identifier )
+        {
+        case EIsNodeSoftKeysXImage:
+        User::LeaveIfError( iUiSrv.SetSoftkeyBitmap(
+                                        softkeyUid,
+                                        iTemporaryImageFile,
+                                        aType ) );
+        break;
+
+#ifdef IDLESOFTKEY_ADAPTER_IMAGEMASK
+        case EIsNodeSoftKeysXMask:
+        User::LeaveIfError( iUiSrv.SetSoftkeyMask(
+                                        softkeyUid,
+                                        iTemporaryImageFile,
+                                        aType ) );
+        break;
+
+#endif
+        }
+        */
+
+    RDEBUG( "CIsAdapter::SetSoftkeyImageL() <" );   
+    }
+#endif
+
+#ifndef IDLESOFTKEY_ADAPTER_SOFTKEY_IMAGES
+// -------------------------------------------------------------------------------------
+// CIsAdapter::SetShortcutTargetImageL
+// -------------------------------------------------------------------------------------
+void CIsAdapter::SetShortcutTargetImageL(
+                               const TDesC8& aURI,
+                               const TDesC8& aObject,
+                               const TDesC8& aType)
+    {
+    RDEBUG( "CIsAdapter::SetShortcutTargetImageL() >" );
+    
+    // SymbianConvergency NOTE! Functions that call this function will parse off the "./"
+	// from the aURI -> no need to parse "./" here
+    
+    if( aType.Length() == 0 )
+        {
+        RDEBUG( "CIsAdapter::SetShortcutTargetImageL() WARNING Mime type is empty!" );
+        }
+
+    CIsAdapter::TIsNodeIdentifier identifier = GetNodeIdentifier( aURI );
+    TInt targetIndex = 0;
+
+    if(
+           (EIsNodeTargetsXImage    != identifier)
+        && (EIsNodeWebTargetsXImage != identifier)
+
+#ifdef IDLESOFTKEY_ADAPTER_IMAGEMASK
+
+        && (EIsNodeTargetsXImageMask    != identifier)
+        && (EIsNodeWebTargetsXImageMask != identifier)
+
+#endif
+
+        )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    //
+    // Get shortcut target index
+    //
+    switch( identifier )
+        {
+
+        // Targets/*
+        case EIsNodeTargetsXImage:
+#ifdef IDLESOFTKEY_ADAPTER_IMAGEMASK
+        case EIsNodeTargetsXImageMask:
+#endif
+            {
+            TBuf8<ISADAPTER_SHORTCUT_CAPTION_MAXLENGTH> caption;
+            iAppTargetManager->GetTargetFromNodeNameL( NSmlDmURI::URISeg( aURI, 3 ), targetIndex, caption );
+            }
+
+        break;
+
+        // WebTargets/*
+        case EIsNodeWebTargetsXImage:
+#ifdef IDLESOFTKEY_ADAPTER_IMAGEMASK
+        case EIsNodeWebTargetsXImageMask:
+#endif
+            {
+            iWebTargetManager->CheckWebTargetsL();
+            CFavouritesItem *favItem = CFavouritesItem::NewLC();
+            RDEBUG_2( _L("CIsAdapter::SetShortcutTargetImageL() CFavouritesItem ALLOC %x"), favItem);
+            if( KErrNone !=
+                iWebTargetManager->GetTargetFromNodeNameL( NSmlDmURI::URISeg( aURI, 0, 4 ), *favItem, targetIndex ) )
+                {
+                User::Leave( KErrNotFound );
+                }
+            CleanupStack::PopAndDestroy( favItem );        
+            }
+
+        break;
+
+        }
+
+    //
+    // Decode image data
+    //
+    DecodeImageToFileL( aObject );
+
+    switch( identifier )
+        {
+        case EIsNodeTargetsXImage:
+        User::LeaveIfError( iUiSrv.SetShortcutTargetBitmap( EUiSrvRtTypeApp,
+                                        targetIndex,
+                                        iTemporaryImageFile,
+                                        aType ) );
+        break;
+
+        case EIsNodeWebTargetsXImage:
+        User::LeaveIfError( iUiSrv.SetShortcutTargetBitmap( EUiSrvRtTypeBm,
+                                        targetIndex,
+                                        iTemporaryImageFile,
+                                        aType ) );
+        break;
+
+#ifdef IDLESOFTKEY_ADAPTER_IMAGEMASK
+        case EIsNodeTargetsXImageMask:
+        User::LeaveIfError( iUiSrv.SetShortcutTargetMask( EUiSrvRtTypeApp,
+                                        targetIndex,
+                                        iTemporaryImageFile,
+                                        aType ) );
+        break;
+
+        case EIsNodeWebTargetsXImageMask:
+        User::LeaveIfError( iUiSrv.SetShortcutTargetMask( EUiSrvRtTypeBm,
+                                        targetIndex,
+                                        iTemporaryImageFile,
+                                        aType ) );
+        break;
+#endif
+        }
+
+    RDEBUG( "CIsAdapter::SetShortcutTargetImageL() <" );
+    }
+#endif
+
+// -------------------------------------------------------------------------------------
+// CIsAdapter::DecodeImageToFileL
+// -------------------------------------------------------------------------------------
+TInt CIsAdapter::DecodeImageToFileL( const TDesC8& aObject )
+    {
+    RDEBUG( "CIsAdapter::DecodeImageToFileL() >" );
+
+    //
+    // Write file to a temp file
+    //
+    RFs   fileSession;
+    RFile file;
+
+    User::LeaveIfError( fileSession.Connect() );
+    CleanupClosePushL( fileSession );
+
+    //
+    // Delete previous temp file
+    //
+    if( iTemporaryImageFile.Length() > 0 )
+        {
+        fileSession.Delete( iTemporaryImageFile );
+        iTemporaryImageFile.Zero();
+        }
+
+    //
+    // Create new temp file
+    //
+    User::LeaveIfError( file.Temp( fileSession, KTempFilePath, iTemporaryImageFile, EFileWrite ) );
+    CleanupClosePushL( file );
+
+    //
+    // Decode data to buffer
+    //
+    CBufFlat* buffer = CBufFlat::NewL( 128 );
+    CleanupStack::PushL( buffer );
+    DecodeImageL( *buffer, aObject );
+
+    // Write buffer to file and release buffer
+    User::LeaveIfError( file.Write( buffer->Ptr(0) ) );
+    CleanupStack::PopAndDestroy( buffer );
+
+    // Close file
+    CleanupStack::PopAndDestroy( &file );
+
+    // Close fileSession
+    CleanupStack::PopAndDestroy( &fileSession );
+
+    RDEBUG( "CIsAdapter::DecodeImageToFileL() <" );
+    return KErrNone;
+    }
+
+// -------------------------------------------------------------------------------------
+// CIsAdapter::DecodeImageL
+// -------------------------------------------------------------------------------------
+void CIsAdapter::DecodeImageL( CBufFlat& aBuffer, const TDesC8& aObject )
+    {
+    RDEBUG( "CIsAdapter::DecodeImageL() >" );
+
+    //
+    // Decoce from base 64
+    //
+    TImCodecB64 B64Coder;
+    HBufC8 *uncoded = HBufC8::NewLC( ( aObject.Length() * 3 ) / 4 + 16 );
+    RDEBUG_2( "CIsAdapter::DecodeImageL() HBufC8 uncoded ALLOC %x", uncoded);
+    TPtr8 uncodedPtr( uncoded->Des() );
+    
+    TBool uncodeResult = TFileCoderB64::CheckB64Encode( aObject );//
+
+	if( uncodeResult )
+		{
+		// use base64 decode
+		B64Coder.Decode( aObject, uncodedPtr );
+		aBuffer.InsertL( 0, uncodedPtr );
+		}
+	else
+		{
+		// original data
+		aBuffer.InsertL( 0, aObject );
+  		}
+
+    CleanupStack::PopAndDestroy( uncoded );
+
+    RDEBUG( "CIsAdapter::DecodeImageL() <" );
+    }
+
+// -------------------------------------------------------------------------------------
+// CIsAdapter::EncodeImageL
+// -------------------------------------------------------------------------------------
+void CIsAdapter::EncodeImageL( CBufFlat& aBuffer, const TDesC8& aObject )
+    {
+    RDEBUG( "CIsAdapter::EncodeImageL() >" );
+
+    //
+    // Decoce from base 64
+    //
+    TImCodecB64 B64Coder;
+    HBufC8 *encoded = HBufC8::NewLC( ( aObject.Length() * 4 ) / 3 + 16 );
+    RDEBUG_2( "CIsAdapter::EncodeImageL() HBufC8 encoded ALLOC %x", encoded);
+    TPtr8 encodedPtr( encoded->Des() );
+    TBool encodeResult = B64Coder.Encode( aObject, encodedPtr );
+
+    aBuffer.InsertL( 0, encodedPtr );
+
+    CleanupStack::PopAndDestroy( encoded );
+
+    RDEBUG( "CIsAdapter::EncodeImageL() <" );
+    }
+
+// -------------------------------------------------------------------------------------
+// CIsAdapter::GetShortcutTargetURIL
+// -------------------------------------------------------------------------------------
+CSmlDmAdapter::TError CIsAdapter::GetShortcutTargetURIL(CBufFlat& aBuffer, TInt aUid )
+    {
+    RDEBUG( "CIsAdapter::GetShortcutTargetURIL() >" );
+
+    TInt rtType = 0;
+    if(iUiSettingsNotInitialized)
+   	{	
+   		iUiSettings->ReadTargetsL() ;
+   		iUiSettings->ReadBookmarksL() ;
+   		iUiSettingsNotInitialized = EFalse;
+   	}
+    iUiSettings->GetShortcutRtTypeL( aUid, rtType );
+    // TScActionType acType = TUid::Uid( aUid );
+    CSmlDmAdapter::TError retVal = CSmlDmAdapter::EOk;
+
+
+    switch( rtType )
+        {
+            default:
+                {
+                TInt index = -1;
+               	User::LeaveIfError(iUiSettings->GetShortcutTargetIndexL( aUid, index ));
+				
+                if( index == -1 )
+                    {
+                    return CSmlDmAdapter::ENotFound;
+                    }
+                else
+                    {
+                    HBufC8* nodeName = iAppTargetManager->GenerateNodeNameL( index );
+                    CleanupStack::PushL( nodeName );
+                    aBuffer.InsertL( aBuffer.Size(), KNSmlCustomizationNodeName() );
+                    aBuffer.InsertL( aBuffer.Size(), KNSmlISSeparator() );
+                    aBuffer.InsertL( aBuffer.Size(), KNSmlIS_IdleSoftKeyNodeName() );
+                    aBuffer.InsertL( aBuffer.Size(), KNSmlISSeparator() );
+                    aBuffer.InsertL( aBuffer.Size(), KNSmlIS_TargetsNodeName() );
+                    aBuffer.InsertL( aBuffer.Size(), KNSmlISSeparator() );
+                    aBuffer.InsertL( aBuffer.Size(), *nodeName );
+                    CleanupStack::PopAndDestroy( nodeName );
+
+                    return CSmlDmAdapter::EOk;
+                    }
+                }
+            
+
+            case KScRtTypeUidValueBookmark:
+                {
+                TInt bmId = -1, index = -1;
+                User::LeaveIfError(iUiSettings->GetShortcutTargetIndexL( aUid, index ));
+                User::LeaveIfError(iUiSettings->GetWebTargetAppUid( index, bmId ));
+          
+                TBuf8<MAX_NUMBER_OF_DIGITS_IN_10BASE_INT64> numBuf;
+                numBuf.Num( bmId );
+                TInt ind = -1;
+
+                HBufC8* dataH = HBufC8::NewLC( KRepositoryEntryMaxLength );
+                TPtr8 data( dataH->Des() );
+                TBool ret = iWebTargetManager->FindURIByLUIDL( data, numBuf, ind );
+                User::LeaveIfError( ret );
+
+                aBuffer.InsertL( aBuffer.Size(), data );
+
+                CleanupStack::PopAndDestroy( dataH );
+                }
+            break;
+            
+        }
+        
+
+    RDEBUG_2( "CIsAdapter::GetShortcutTargetURIL() < %d", retVal );
+    return retVal;
+    }
+
+// -------------------------------------------------------------------------------------
+// CIsAdapter::SetShortcutTargetL
+// -------------------------------------------------------------------------------------
+void CIsAdapter::SetShortcutTargetL(const TDesC8& aURI, TInt aUid)
+    {
+    RDEBUG8_2( "CIsAdapter::SetShortcutTargetL() > %S ", &aURI );
+
+	// SymbianConvergency NOTE! this should be ok, for the aURI part
+    if(iUiSettingsNotInitialized)
+   	{	
+   		iUiSettings->ReadTargetsL() ;
+   		iUiSettings->ReadBookmarksL() ;
+   		iUiSettingsNotInitialized = EFalse;
+   	}
+    TPtrC8 uri( aURI );
+    if( uri.Left(2).Compare( _L8("./") ) == 0 )
+        {
+        uri.Set( aURI.Right( aURI.Length() - 2 ) );
+        }
+
+    CIsAdapter::TIsNodeIdentifier identifier = GetNodeIdentifier( uri );
+    if( (EIsNodeTargetsX != identifier) &&
+        (EIsNodeWebTargetsX != identifier) )
+            {
+            User::Leave( KErrArgument );
+            }
+
+    HBufC16* buf        = CreateCopy16LC( uri );
+    TPtrC8   targetNode = NSmlDmURI::URISeg( uri, 2 );
+    TPtrC8   segment    = NSmlDmURI::URISeg( uri, 3 );
+    TInt index = -1;
+
+    if( targetNode == KNSmlIS_WebTargetsNodeName() )
+        {
+        iWebTargetManager->CheckWebTargetsL();
+        CFavouritesItem *favItem = CFavouritesItem::NewLC();
+        RDEBUG_2( "CIsAdapter::SetShortcutTargetL() CFavouritesItem ALLOC %x", favItem);
+
+        TInt status = KErrNone;
+        TRAPD( reason,
+               status = iWebTargetManager->GetTargetFromNodeNameL( uri, *favItem, index ) );
+        if( (KErrNone == reason) && (0 != favItem) && (KErrNone == status) && (-1 != index) )
+            {
+                  User::LeaveIfError(iUiSettings->SetShortcutTargetWebIndexL (aUid, index));
+            }
+        else
+            {
+            RDEBUG8_2( "CIsAdapter::SetShortcutTargetL: Error in argument, WebTarget %S", &targetNode);
+            User::Leave( KErrArgument );
+            }
+
+        CleanupStack::PopAndDestroy( favItem );
+        }
+    else
+        {
+        if( targetNode == KNSmlIS_TargetsNodeName() )
+            {
+            // Set new target
+            TBuf8<ISADAPTER_SHORTCUT_CAPTION_MAXLENGTH> caption;
+            iAppTargetManager->GetTargetFromNodeNameL( segment, index, caption );
+     		User::LeaveIfError(iUiSettings->SetShortcutTargetAppIndexL (aUid, index));
+            }
+        else
+            {
+            RDEBUG8_2( "CIsAdapter::SetShortcutTargetL: Error in argument, AppTarget %S", &targetNode);
+            User::Leave( KErrArgument );
+            }
+        }
+
+    CleanupStack::PopAndDestroy( buf );
+
+    RDEBUG( "CIsAdapter::SetShortcutTargetL() <" );
+    }
+
+// -------------------------------------------------------------------------------------
+// CIsAdapter::CreateCopy16LC
+// -------------------------------------------------------------------------------------
+HBufC16* CIsAdapter::CreateCopy16LC( const TDesC8& aText )
+    {
+    RDEBUG( "CIsAdapter::CreateCopy16LC() >" );
+
+    HBufC16* buf = HBufC16::NewLC( aText.Length() );
+    RDEBUG_2( "CIsAdapter::CreateCopy16LC() HBufC16 buf ALLOC %x", buf);
+    buf->Des().Copy( aText );
+
+    RDEBUG( "CIsAdapter::CreateCopy16LC() <" );
+    return buf;
+    }
+
+// -----------------------------------------------------------------------------
+// CIsAdapter::PolicyRequestResourceL
+// -----------------------------------------------------------------------------
+//
+//#ifdef __SAP_POLICY_MANAGEMENT
+TPtrC8 CIsAdapter::PolicyRequestResourceL( const TDesC8& /*aURI*/ )
+{
+	if(! FeatureManager::FeatureSupported(KFeatureIdSapPolicyManagement ))
+	{
+    User::Leave(KErrNotSupported);
+  }  
+  
+    RDEBUG8_2( "CIsAdapter::PolicyRequestResourceL() >< %S",
+                &PolicyEngineXACML::KCustomizationManagement() );
+
+	return PolicyEngineXACML::KCustomizationManagement();
+		
+}
+//#endif	
+