simpledatamodeladapter/src/presenceplugingroup.cpp
branchGCC_SURGE
changeset 28 d9861ae9169c
parent 23 77cb48a03620
parent 26 04ca1926b01c
--- a/simpledatamodeladapter/src/presenceplugingroup.cpp	Thu Jul 01 14:09:06 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,866 +0,0 @@
-/*
-* Copyright (c) 2006-2010 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:  IETF SIMPLE Protocol implementation for XIMP Framework
-*
-*/
-
-
-#include <e32std.h>
-#include <ximpdatasubscriptionstate.h>
-#include <protocolpresentitygroupsdatahost.h>
-#include <protocolpresencedatahost.h>
-#include <ximpobjectfactory.h>
-#include <presenceobjectfactory.h>
-#include <ximpstatus.h>
-#include <ximpidentity.h>
-#include <ximpobjectcollection.h>
-#include <xdmerrors.h>
-#include <presentitygroupinfo.h>
-#include <presentitygroupmemberinfo.h>
-#include <utf.h>
-#include <avabilitytext.h>
-
-#include "mpresencepluginconnectionobs.h"
-#include "presenceplugingroup.h"
-#include "presencepluginxdmutils.h"
-#include "presenceplugincommon.h"
-#include "presencepluginvirtualgroup.h"
-#include "presenceplugindata.h"
-#include "presencepluginwatcher.h"
-#include "presencepluginauthorization.h"
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// CPresencePluginGroups::CPresencePluginGroups
-// ---------------------------------------------------------------------------
-//
-CPresencePluginGroups::CPresencePluginGroups(
-    MPresencePluginConnectionObs& aObs,
-    CPresencePluginVirtualGroup* aSubscribedBuddies,
-    CPresencePluginData* aPresenceData ):
-  	CActive( CActive::EPriorityStandard ),
-  	iConnObs(aObs),
-  	iOperation( ENoOperation),
-  	iState( EPluginIdle ), iCompleted( ETrue ),
-  	iSubscribedBuddies( aSubscribedBuddies ),
-  	iPresenceData( aPresenceData )
-    {
-    CActiveScheduler::Add( this );
-    }
-    
-// ---------------------------------------------------------------------------
-// CPresencePluginGroups::NewL
-// ---------------------------------------------------------------------------
-//
-CPresencePluginGroups* CPresencePluginGroups::NewL(
-    MPresencePluginConnectionObs& aObs,
-    CPresencePluginVirtualGroup* aSubscribedBuddies,
-    CPresencePluginData* aPresenceData )
-    {
-    CPresencePluginGroups* self =
-        CPresencePluginGroups::NewLC( 
-             aObs,
-             aSubscribedBuddies,
-             aPresenceData );    
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginGroups::NewLC
-// ---------------------------------------------------------------------------
-//
-CPresencePluginGroups* CPresencePluginGroups::NewLC(
-    MPresencePluginConnectionObs& aObs,
-    CPresencePluginVirtualGroup* aSubscribedBuddies,
-    CPresencePluginData* aPresenceData )
-    {
-    CPresencePluginGroups* self =
-        new( ELeave ) CPresencePluginGroups( 
-             aObs,
-             aSubscribedBuddies,
-             aPresenceData );
-    CleanupStack::PushL( self );
-    return self;
-    }
-    
-// ---------------------------------------------------------------------------
-// CPresencePluginGroups::~CPresencePluginGroups
-// ---------------------------------------------------------------------------
-//
-CPresencePluginGroups::~CPresencePluginGroups()
-    {
-    DP_SDA("CPresencePluginGroups::~CPresencePluginGroups");
-    Cancel();
-    delete iPresIdentity;
-    delete iDisplayName;
-    DP_SDA("CPresencePluginGroups::~CPresencePluginGroups end");
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginGroups::DoSubscribePresentityGroupListL
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginGroups::DoSubscribePresentityGroupListL(
-    TXIMPRequestId aReqId )
-    {
-    DP_SDA("CPresencePluginGroups::DoSubscribePresentityGroupListL");
-    iCompleted = EFalse;
-    // List of lists under buddylist
-    StartXdmOperationL( aReqId, EGetListOfLists );
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginGroups::DoUnsubscribePresentityGroupListL
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginGroups::DoUnsubscribePresentityGroupListL(
-    TXIMPRequestId /*aReqId*/ )
-    {
-    User::Leave( KErrNotSupported );
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginGroups::DoCreatePresentityGroupL
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginGroups::DoCreatePresentityGroupL(
-    const MXIMPIdentity& /*aGroupId*/,
-    const TDesC16& /*aDisplayName*/,
-    TXIMPRequestId /*aReqId*/ )
-    {
-    User::Leave( KErrNotSupported );
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginGroups::DoDeletePresentityGroupL
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginGroups::DoDeletePresentityGroupL(
-    const MXIMPIdentity& /*aGroupId*/,
-    TXIMPRequestId /*aReqId*/ )
-    {
-    User::Leave( KErrNotSupported );
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginGroups::DoUpdatePresentityGroupDisplayNameL
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginGroups::DoUpdatePresentityGroupDisplayNameL(
-    const MXIMPIdentity& /*aGroupId*/,
-    const TDesC16& /*aDisplayName*/,
-    TXIMPRequestId /*aReqId*/ )
-    {
-    // Notice: later
-    User::Leave( KErrNotSupported );
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginGroups::DoSubscribePresentityGroupContentL
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginGroups::DoSubscribePresentityGroupContentL(
-    const MXIMPIdentity& aGroupId,
-    TXIMPRequestId aReqId )
-    {
-    DP_SDA("CPresencePluginGroups::DoSubscribePresentityGroupContentL");
-    iCompleted = EFalse;
-    // List of lists under buddylist
-    StartXdmOperationL( aGroupId, aReqId, EGetListContent );
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginGroups::DoUnsubscribePresentityGroupContentL
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginGroups::DoUnsubscribePresentityGroupContentL(
-    const MXIMPIdentity& /*aGroupId*/,
-    TXIMPRequestId aReqId )
-    {
-    DP_SDA("CPresencePluginGroups::DoUnsubscribePresentityGroupContentL");
-    
-    iXIMPId = aReqId;
-    iConnObs.WatcherHandlerL()->UnSubscribeAllL();    
-    iCompleted = EFalse;
-    CompleteXIMPReq( KErrNone );
-    DP_SDA("CPresencePluginGroups::DoUnsubscribePresentityGroupContentL out");
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginGroups::DoAddPresentityGroupMemberL
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginGroups::DoAddPresentityGroupMemberL(
-    const MXIMPIdentity& aGroupId,
-    const MXIMPIdentity& aMemberId,
-    const TDesC16& /*aMemberDisplayName*/,
-    TXIMPRequestId aReqId )
-    {
-    DP_SDA("CPresencePluginGroups::DoAddPresentityGroupMemberL");
-    __ASSERT_ALWAYS( !IsActive(), User::Leave( KErrNotReady ) );
-    
-    SetPresIdentityL( aMemberId, ETrue );
-    
-    iCompleted = EFalse;
-    iXIMPId = aReqId;
-        
-    if( !aGroupId.Identity().Compare( KPresenceBuddyList ) )
-        {
-        DP_SDA("CPresencePluginGroups::DoAddPresentityGroupMemberL - buddylist");
-        iOperation = EAddPresentityGroupMember;
-        
-        // write pending to presence cache
-        TBuf<20> buf;
-        buf.Copy( KPendingRequestExtensionValue );
-        
-        iPresenceData->WriteStatusToCacheL( aMemberId.Identity(), 
-            MPresenceBuddyInfo2::ENotAvailable,
-            buf,
-            KNullDesC() ); 
-        
-        iConnObs.WatcherHandlerL()->DoPerformSubscribePresentityPresenceL( 
-            aMemberId, iStatus );
-        SetActive();
-        }
-    else if ( !aGroupId.Identity().Compare( KPresenceBlockedList ) )
-        {
-        DP_SDA("CPresencePluginGroups::DoAddPresentityGroupMemberL - blockedlist");
-        iOperation = EBlockPresentityGroupMember;
-        iConnObs.InternalPresenceAuthorization().
-            DoPerformBlockPresenceForPresentityL( aMemberId, iStatus );
-        SetActive();
-        }
-    else
-        {
-        DP_SDA("CPresencePluginGroups::DoAddPresentityGroupMemberL - unknown, leave");
-        User::Leave( KErrNotSupported );
-        }
-    
-    DP_SDA("CPresencePluginGroups::DoAddPresentityGroupMemberL out");
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginGroups::DoRemovePresentityGroupMemberL
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginGroups::DoRemovePresentityGroupMemberL(
-    const MXIMPIdentity& aGroupId,
-    const MXIMPIdentity& aMemberId,
-    TXIMPRequestId aReqId )
-    {
-    DP_SDA("CPresencePluginGroups::DoRemovePresentityGroupMemberL");
-    __ASSERT_ALWAYS( !IsActive(), User::Leave( KErrNotReady ) );
-
-    SetPresIdentityL( aMemberId, ETrue );
-    
-    iCompleted = EFalse;
-    iXIMPId = aReqId;
-    iOperation = ERemovePresentityGroupMember;
-    
-    if( !aGroupId.Identity().Compare( KPresenceBuddyList ) )
-        {
-        DP_SDA(" DoRemovePresentityGroupMemberL - buddylist");
-        iConnObs.WatcherHandlerL()->DoPerformUnsubscribePresentityPresenceL( 
-            aMemberId, iStatus );
-        SetActive();
-        }
-    else if ( !aGroupId.Identity().Compare( KPresenceBlockedList ) )
-        {
-        DP_SDA(" DoRemovePresentityGroupMemberL - blockedlist");
-        iOperation = EUnblockPresentityGroupMember;
-        iConnObs.InternalPresenceAuthorization().
-            DoPerformCancelPresenceBlockFromPresentityL( aMemberId, iStatus );
-        SetActive();
-        }
-    else
-        {
-        DP_SDA("DoRemovePresentityGroupMemberL - unknown, leave");
-        User::Leave( KErrNotSupported );
-        }
-        
-    DP_SDA("CPresencePluginGroups::DoRemovePresentityGroupMemberL out");    
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginGroups::DoUpdatePresentityGroupMemberDisplayNameL
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginGroups::DoUpdatePresentityGroupMemberDisplayNameL(
-    const MXIMPIdentity& /*aGroupId*/,
-    const MXIMPIdentity& /*aMemberId*/,
-    const TDesC16& /*aMemberDisplayName*/,
-    TXIMPRequestId /*aReqId*/ )
-    {
-    DP_SDA("CPresencePluginGroups::DoUpdatePresentityGroupMemberDisplayNameL");
-    // Notice: Later
-    User::Leave( KErrNotSupported );
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginGroups::DoCancel()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginGroups::DoCancel(  )
-    {
-    if ( iOperation != ENoOperation )
-        {
-        iXdmUtils->Cancel();
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginGroups::RunL()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginGroups::RunL()
-    {
-    DP_SDA("CPresencePluginGroups::RunL");
-    TInt myStatus = iStatus.Int();
-    DP_SDA2("CPresencePluginGroups::RunL myStatus %d", myStatus );
-    
-    if ( !myStatus && !iCompleted )
-        {
-        DP_SDA("CPresencePluginGroups::RunL !myStatus");
-        // OK response
-        CallActualXdmOperationL( myStatus );
-        }
-    else if ( !myStatus && iCompleted )
-        {
-        DP_SDA("CPresencePluginGroups::RunL SEND COMPLETE");
-        CompleteXIMPReq( myStatus );
-        }
-    else
-        {
-        if ( iOperation == EDeletePresentityGroup && iState ==
-        	EPluginCommitRls )
-            {
-            DP_SDA("CPresencePluginGroups::RunL CallActualXdmOperation");
-            CallActualXdmOperationL( myStatus );
-            }
-        else
-            {
-            DP_SDA("CPresencePluginGroups::RunL SEND COMPLETE 2");
-            // Other errors terminated the show
-            CompleteXIMPReq( myStatus );
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginGroups::CallActualXdmOperationL
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginGroups::CallActualXdmOperationL( TInt aCompleteStatus )
-    {
-    DP_SDA("CPresencePluginGroups::CallActualXdmOperationL");
-        
-    DP_SDA2("CallActualXdmOperationL iOperation %d", iOperation);
-    switch ( iOperation )
-        {
-        case EGetListOfLists:
-            {
-            DP_SDA("PluginGroups::CallActualXdmOperationL EGetListOfLists");
-            iOperation = EGetListOfLists;
-            GetListOfListsL();
-            }
-            break;
-        
-        case EGetListContent:
-            {
-            DP_SDA("PluginGroups::CallActualXdmOperationL EGetListContent");
-            iOperation = EGetListContent;
-            GetListContentL();
-            }
-            break;
-            
-        case EAddPresentityGroupMember:
-            {
-            DP_SDA(" CallActualXdmOperationL EAddPresentityGroupMember");
-            
-            iOperation = EGrantPresentityGroupMember;
-            MXIMPIdentity* newIdentity = 
-                iConnObs.ObjectFactory().NewIdentityLC();
-            newIdentity->SetIdentityL( *iPresIdentity );
-            
-            iConnObs.InternalPresenceAuthorization().
-                DoPerformGrantPresenceForPresentityL( *newIdentity, iStatus );
-            CleanupStack::PopAndDestroy(); // >> newIdentity
-            SetActive();
-            }
-            break;
-            
-        case ERemovePresentityGroupMember:
-            {
-            DP_SDA(" CallActualXdmOperationL ERemovePresentityGroupMember");
-            iOperation = EWithdrawGrantFromMember;
-            MXIMPIdentity* newIdentity = iConnObs.ObjectFactory().NewIdentityLC();
-            newIdentity->SetIdentityL( *iPresIdentity );
-            iConnObs.InternalPresenceAuthorization().
-                DoPerformWithdrawPresGrantFromPresentityL( 
-                    *newIdentity, iStatus );
-            CleanupStack::PopAndDestroy(); // >> newIdentity
-            SetActive();
-            }
-            break;
-            
-        case EGrantPresentityGroupMember:
-            {
-            DP_SDA(" CallActualXdmOperationL EGrantPresentityGroupMember");
-            CompleteXIMPReq( aCompleteStatus );
-            }
-            break;
-            
-        case EWithdrawGrantFromMember:
-            {
-            DP_SDA(" CallActualXdmOperationL EWithdrawGrantFromMember");
-            if ( !aCompleteStatus )
-                {
-                DP_SDA(" -> succesfully unblocked, store to cache");
-                DeletePersonCacheL();                
-                DP_SDA(" -> store info to cache done");                
-                }            
-            CompleteXIMPReq( aCompleteStatus );
-            }
-            break;
-            
-        case EBlockPresentityGroupMember:
-            {
-            DP_SDA(" CallActualXdmOperationL EBlockPresentityGroupMember");
-            if ( !aCompleteStatus )
-                {
-                DP_SDA(" -> succesfully blocked, store to cache");
-
-                DP_SDA(" -> strip prefix from uri");
-                HBufC* withoutPrefix = iPresenceData->RemovePrefixLC( 
-                    *iPresIdentity );
-                DP_SDA(" -> store info to cache");
-                
-                TBuf<20> buf;
-                buf.Copy( KBlockedExtensionValue );
-                                
-                iPresenceData->WriteStatusToCacheL( *withoutPrefix, 
-                    MPresenceBuddyInfo2::EUnknownAvailability,
-                    buf,
-                    KNullDesC() );
-                
-                CleanupStack::PopAndDestroy( withoutPrefix );
-                DP_SDA(" -> store info to cache done");
-                }
-            CompleteXIMPReq( aCompleteStatus );
-            }
-            break;
-            
-        case EUnblockPresentityGroupMember:
-            {
-            DP_SDA(" CallActualXdmOperationL EUnblockPresentityGroupMember");
-            if ( !aCompleteStatus )
-                {
-                DP_SDA(" -> succesfully unblocked, store to cache");
-                DeletePersonCacheL();                
-                DP_SDA(" -> store info to cache done");                
-                }            
-            CompleteXIMPReq( aCompleteStatus );
-            }
-            break;
-            
-        default:
-            User::Leave( KErrNotSupported );
-            break;
-        }   
-    DP_SDA("CPresencePluginGroups::CallActualXdmOperationL end");
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginGroups::RunError
-// ---------------------------------------------------------------------------
-//
-TInt CPresencePluginGroups::RunError( TInt aError )
-    {
-    DP_SDA("CPresencePluginGroups::RunError SEND COMPLETE");
-    // complete the open request
-    CompleteXIMPReq( aError );
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginGroups::GetInterface()
-// ---------------------------------------------------------------------------
-//
-TAny* CPresencePluginGroups::GetInterface(
-    TInt32 aInterfaceId,
-    TIfGetOps aOptions )
-    {
-    if ( aInterfaceId == GetInterfaceId() )
-        {
-        // caller wants this interface
-        MProtocolPresentityGroups* myIf = this;
-        return myIf;
-        }
-    if ( aOptions == MXIMPBase::EPanicIfUnknown )
-        {
-        User::Panic( KPluginName, KErrExtensionNotSupported );
-        }
-    return NULL;
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginGroups::GetInterface()
-// ---------------------------------------------------------------------------
-//
-const TAny* CPresencePluginGroups::GetInterface(
-    TInt32 aInterfaceId,
-    TIfGetOps aOptions ) const
-    {
-    if ( aInterfaceId == GetInterfaceId() )
-        {
-        // caller wants this interface
-        const MProtocolPresentityGroups* myIf = this;
-        return myIf;
-        }
-    if ( aOptions == MXIMPBase::EPanicIfUnknown )
-        {
-        User::Panic( KPluginName, KErrExtensionNotSupported );
-        }
-    return NULL;
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginGroups::GetInterfaceId()
-// ---------------------------------------------------------------------------
-//
-TInt32 CPresencePluginGroups::GetInterfaceId() const
-    {
-    return MProtocolPresentityGroups::KInterfaceId;
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginGroups::SetPresIdentityL()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginGroups::SetPresIdentityL(
-     const MXIMPIdentity& aPresentityId,
-     TBool aFormatUri )
-    {
-    DP_SDA2("CPresencePluginGroups::SetPresIdentityL: %S", 
-        &aPresentityId.Identity() ); 
-     
-    delete iPresIdentity;
-    iPresIdentity = NULL;
-     
-    if ( aFormatUri )
-        {
-        DP_SDA("CPresencePluginGroups::SetPresIdentityL, format uri");
-
-        HBufC8* identityCopy = HBufC8::NewLC( KBufSize255 );
-        TPtr8 identityCopyPtr( identityCopy->Des() );
-        identityCopyPtr.Copy( aPresentityId.Identity() );
-    
-        HBufC8* prefixUri = iPresenceData->CreatePresenceUri8LC( 
-            identityCopyPtr );
-    
-        HBufC* prefixUri16 = HBufC::NewLC( KBufSize255 );
-        TPtr prefixUri16Ptr( prefixUri16->Des() );
-        prefixUri16Ptr.Copy( *prefixUri );
-    
-        iPresIdentity = prefixUri16;
-        CleanupStack::Pop( prefixUri16 );
-        CleanupStack::PopAndDestroy( prefixUri );
-        CleanupStack::PopAndDestroy( identityCopy );
-        }
-    else
-        {
-        DP_SDA("CPresencePluginGroups::SetPresIdentityL, use as it is");
-        iPresIdentity = aPresentityId.Identity().AllocL();
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginGroups::StartXdmOperationL
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginGroups::StartXdmOperationL(
-    TXIMPRequestId aReqId,
-    TPluginGroupsOperation aOperation )
-    {
-    DP_SDA("StartXdmOperationL StartXdmOperationL two param");
-    __ASSERT_DEBUG( !IsActive(), User::Leave( KErrCorrupt ) );
-    iXIMPId = aReqId;
-    iOperation = aOperation;
-    StartXdmOperationL();
-    DP_SDA("StartXdmOperationL StartXdmOperationL two param end");
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginGroups::StartXdmOperationL
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginGroups::StartXdmOperationL(
-    const MXIMPIdentity& aId,
-    TXIMPRequestId aReqId,
-    TPluginGroupsOperation aOperation )
-    {
-    DP_SDA("StartXdmOperationL StartXdmOperationL three param");
-    __ASSERT_DEBUG( !IsActive(), User::Leave( KErrCorrupt ) );
-    SetPresIdentityL( aId, EFalse );
-    iXIMPId = aReqId;
-    iOperation = aOperation;
-    StartXdmOperationL();
-    }
-  
-// ---------------------------------------------------------------------------
-// CPresencePluginGroups::StartXdmOperationL
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginGroups::StartXdmOperationL()
-    {
-    if ( !iXdmUtils )
-        {
-        DP_SDA("CPresencePluginGroups::StartXdmOperationL Get xdmUtils");
-        iXdmUtils = iConnObs.XdmUtilsL();
-        }
-    DP_SDA("CPresencePluginGroups::StartXdmOperationL StartXdmOperationL");
-    
-    iXdmUtils->InitializeXdmL( iStatus );
-    iState = EPluginInitXdm;
-    DP_SDA("CPresencePluginGroups::StartXdmOperationL SetActive");
-    SetActive();
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginGroups::GetListOfListsL
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginGroups::GetListOfListsL()
-    {
-    DP_SDA("CPresencePluginGroups::GetListOfListsL");
-
-    RPointerArray<MXIMPIdentity> subscribed;
-    CleanupClosePushL( subscribed );
-
-    iXdmUtils->SubscribeBuddyListL( subscribed );
-	DP_SDA("CPresencePluginGroups::GetListOfListsL SubscribeBudyList Ready");
-	
-    MXIMPObjectCollection* coll =
-        iConnObs.ObjectFactory().NewObjectCollectionLC();    // << coll
-        
-    TInt count = subscribed.Count();
-    DP_SDA2("CPresencePluginGroups::GetListOfListsL soul count %d", count);
-    
-    for ( TInt i = 0; i < count; i++ )
-        {
-        MXIMPIdentity* currId = subscribed[i];
-        MPresentityGroupInfo* sInfo =
-            iConnObs.PresenceObjectFactoryOwn().NewPresentityGroupInfoLC();
-        sInfo->SetGroupIdL( currId ); // ownership is taken
-        sInfo->SetGroupDisplayNameL( currId->Identity() );
-        
-        coll->AddObjectL( sInfo );      // ownership is taken
-        CleanupStack::Pop();                                // >> bInfo
-        }
-    DP_SDA("SubscribeBudyList For ready SEND COMPLETE continue");    
-     
-    CompleteXIMPReq( KErrNone );
-    
-     // Callback for subscription state (terminated).
-    MXIMPDataSubscriptionState* myState =
-        iConnObs.ObjectFactory().NewDataSubscriptionStateLC();
-        
-    MXIMPStatus* myStatus = iConnObs.ObjectFactory().NewStatusLC();
-    
-    // Notice: consider XIMP error codes
-    myStatus->SetResultCode( KErrNone );
-    myState->SetSubscriptionStateL(
-        MXIMPDataSubscriptionState::ESubscriptionInactive );
-        
-    MProtocolPresentityGroupsDataHost& dataHost =
-         iConnObs.ProtocolPresenceHost().GroupsDataHost();
-    
-    dataHost.SetPresentityGroupListDataSubscriptionStateL(
-        myState, myStatus );
-        
-    dataHost.HandlePresentityGroupListL( coll );    
-
-    CleanupStack::Pop( 3 ); // >> myState, myStatus, coll
-   	CleanupStack::Pop( &subscribed );
-   	DP_SDA("CPresencePluginGroups::GetListOfListsL end"); 
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginGroups::GetListContentL
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginGroups::GetListContentL()
-    {
-    DP_SDA("CPresencePluginGroups::GetListContentL");
-    
-    if( !iPresIdentity->Compare( KPresenceBuddyList ) )
-        {
-        DP_SDA("CPresencePluginGroups::GetListContentL - get buddies");
-        DoGetSubscribedBuddyListL();
-        
-        // Consider waiting complete for each subscribe before completing
-        CompleteXIMPReq( KErrNone ); 
-        }
-    else if( !iPresIdentity->Compare( KPresenceSubcribedBuddys ) )
-    	{
-    	//Subscribe subscribed buddyes virtual group
-    	DP_SDA("GetListContentL KPresenceSubcribedBuddys");
-    	DoGetSubscribedBuddyListL();
-    	}
-    else
-    	{
-    	DP_SDA("CPresencePluginGroups::GetListContentL Wrong list name");	
-        User::Leave( KErrNotFound );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginGroups::DoGetBuddyListL()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginGroups::DoGetBuddyListL()
-    {
-    DP_SDA("CPresencePluginGroups::DoGetBuddyListL KPresenceBuddyList");
-    MXIMPObjectFactory& myFactory = iConnObs.ObjectFactory();
-    MProtocolPresentityGroupsDataHost& dataHost =
-        iConnObs.ProtocolPresenceHost().GroupsDataHost();
-    
-    MXIMPObjectCollection* entities =
-    	myFactory.NewObjectCollectionLC();          // << entities
-    iXdmUtils->GetEntitiesInListL( iPresIdentity->Des(), *entities );
-    DP_SDA("DoGetBuddyListL entities get ready SEND COMPLETE");
-    
-    // callback for data
-    DP_SDA("CPresencePluginGroups::DoGetBuddyListL callback data");
-    MXIMPIdentity* id = myFactory.NewIdentityLC();  // << id
-    id->SetIdentityL( iPresIdentity->Des() );
-    dataHost.HandlePresentityGroupContentL( id, entities );
-    CleanupStack::Pop();// >> id
-    CleanupStack::Pop();// >> entities
-    DP_SDA("CPresencePluginGroups::DoGetBuddyListL callback ready");
-
-    // Callback for subscription state (terminated).
-    DP_SDA("CPresencePluginGroups::DoGetBuddyListL terminated ");
-    id = myFactory.NewIdentityLC();  // << id
-    id->SetIdentityL( iPresIdentity->Des() );
-    MXIMPDataSubscriptionState* myState =
-    myFactory.NewDataSubscriptionStateLC();
-    MXIMPStatus* myStatus = myFactory.NewStatusLC();
-    // Notice: consider XIMP error codes
-    myStatus->SetResultCode( KErrNone );
-    myState->SetSubscriptionStateL(
-    		MXIMPDataSubscriptionState::ESubscriptionInactive );
-    
-    dataHost.SetPresentityGroupContentDataSubscriptionStateL(
-    	id, myState, myStatus );
-  
-    DP_SDA("CPresencePluginGroups::DoGetBuddyListL Pop");
-	CleanupStack::Pop( 3 );
-	
-    DP_SDA("CPresencePluginGroups::DoGetBuddyListL end");
-    }
-    
-// ---------------------------------------------------------------------------
-// CPresencePluginGroups::DoGetSubscribedBuddyListL()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginGroups::DoGetSubscribedBuddyListL()
-    {
-    DP_SDA("CPresencePluginGroups::DoGetSubscribedBuddyListL");
-    MXIMPObjectFactory& myFactory = iConnObs.ObjectFactory();
-    MProtocolPresentityGroupsDataHost& dataHost =
-        iConnObs.ProtocolPresenceHost().GroupsDataHost();
-    
-    // Get internal list content
-    MXIMPObjectCollection* entities =
-    	myFactory.NewObjectCollectionLC();          // << entities
-    iXdmUtils->GetEntitiesInListL( iPresIdentity->Des(), *entities );
-    DP_SDA("DoGetBuddyListL entities get ready SEND COMPLETE");
-    CleanupStack::PopAndDestroy();	// entities
-    
-    // start getting virtualEntities
-    MXIMPObjectCollection* virtualEntities =
-        myFactory.NewObjectCollectionLC();// << virtualEntities
-
-    iSubscribedBuddies->GetVirtualEntitiesL( *virtualEntities );
-    
-    DP_SDA("CPresencePluginGroups::DoGetSubscribedBuddyListL - subscribe all");
-    iConnObs.WatcherHandlerL()->SubscribeAllL();
-    DP_SDA("CPresencePluginGroups::DoGetSubscribedBuddyListL - subscribe all ok");
-
-    // callback for data
-    DP_SDA("DoGetSubscribedBuddyListL callback data");
-    MXIMPIdentity* id = myFactory.NewIdentityLC();  // << id
-    id->SetIdentityL( iPresIdentity->Des() );
-    dataHost.HandlePresentityGroupContentL( id, virtualEntities );
-    CleanupStack::Pop();                            // >> id
-    CleanupStack::Pop();                            // >> entities
-    DP_SDA("DoGetSubscribedBuddyListL callback ready");
-
-    // Callback for subscription state (terminated).
-    DP_SDA("CPresencePluginGroups::DoGetSubscribedBuddyListL terminated");
-    id = myFactory.NewIdentityLC();  // << id
-    id->SetIdentityL( iPresIdentity->Des() );
-    MXIMPDataSubscriptionState* myState =
-    	myFactory.NewDataSubscriptionStateLC();
-    MXIMPStatus* myStatus = myFactory.NewStatusLC();
-    // Notice: consider XIMP error codes
-    myStatus->SetResultCode( KErrNone );
-    myState->SetSubscriptionStateL(
-    		MXIMPDataSubscriptionState::ESubscriptionActive );
-    dataHost.SetPresentityGroupContentDataSubscriptionStateL(
-    	id, myState, myStatus );
-    
-	CleanupStack::Pop( 3 );
-	
-    DP_SDA("DoGetSubscribedBuddyListL - KPresenceOnlineBuddy case end");
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginGroups::CompleteXIMPReq
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginGroups::CompleteXIMPReq( TInt aStatus )
-    {
-    DP_SDA("CPresencePluginGroups::CompleteXIMPReq");
-    if ( iCompleted  )
-        {
-        DP_SDA("CPresencePluginGroups::CompleteXIMPReq return");
-        return;
-        }
-
-    iCompleted = ETrue;
-    iOperation = ENoOperation;
-    iConnObs.CompleteReq( iXIMPId, aStatus );
-    iXIMPId = TXIMPRequestId();
-    DP_SDA("CPresencePluginGroups::CompleteXIMPReq end");
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginGroups::DeletePersonCacheL
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginGroups::DeletePersonCacheL()
-    {
-    DP_SDA("CPresencePluginGroups::DeletePersonCacheL");
-    DP_SDA(" -> strip prefix from uri");
-    HBufC* withoutPrefix = iPresenceData->RemovePrefixLC( *iPresIdentity );
-    iPresenceData->DeletePresenceL( *withoutPrefix );
-    CleanupStack::PopAndDestroy( withoutPrefix );
-    DP_SDA("CPresencePluginGroups::DeletePersonCacheL out");
-    }
-
-// End of file