--- a/imservices/ossprotocoladaptation/src/cosscontactmanager.cpp Wed Apr 14 16:17:20 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,301 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: contact manager
-*
-*/
-
-#include "cosscontactmanager.h"
-#include "mossprotocolconnectionmanager.h"
-
-#include <ximpobjectfactory.h>
-#include <ximpprotocolconnectionhost.h>
-#include <ximpidentity.h>
-#include <ximpobjectcollection.h>
-#include <presenceobjectfactory.h>
-#include <protocolpresencedatahost.h>
-#include <protocolpresentitygroupsdatahost.h>
-#include <presentitygroupinfo.h>
-#include <presentitygroupmemberinfo.h>
-#include <presencegrantrequestinfo.h>
-#include <protocolpresenceauthorizationdatahost.h>
-#include <mpresencebuddyinfo2.h>
-#include <presencecachewriter2.h>
-#include <avabilitytext.h>
-#include "cossprotocolconnectionmanager.h"
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// COSSContactManager::COSSContactManager()
-// ---------------------------------------------------------------------------
-//
-COSSContactManager::COSSContactManager(MOSSProtocolConnectionManager& aConnMan):
- iConnMan ( aConnMan )
- {
-
- }
-
-
-// ---------------------------------------------------------------------------
-// COSSContactManager::ConstructL()
-// ---------------------------------------------------------------------------
-//
-void COSSContactManager::ConstructL()
- {
- iFetchContactsFirstTime = EFalse;
- iFetchInvitationsFirstTime = EFalse;
- }
-
-
-// ---------------------------------------------------------------------------
-// COSSContactManager::NewL()
-// ---------------------------------------------------------------------------
-//
-COSSContactManager* COSSContactManager::NewL(MOSSProtocolConnectionManager& aConnMan)
- {
-
- COSSContactManager* self = new ( ELeave )COSSContactManager(aConnMan);
-
- CleanupStack::PushL ( self );
-
- self->ConstructL();
- CleanupStack::Pop ( self );
-
- return self;
- }
-
-
-// ---------------------------------------------------------------------------
-// COSSContactManager::~COSSProtocolConnectionManager()
-// ---------------------------------------------------------------------------
-//
-COSSContactManager::~COSSContactManager()
- {
- iContacts.ResetAndDestroy();
- iInvitationList.ResetAndDestroy();
- }
-
-// ---------------------------------------------------------------------------
-// COSSContactManager::IsFetchForFirstTime()
-// ---------------------------------------------------------------------------
-//
-TBool COSSContactManager::IsFetchContactsFirstTime()
- {
- return iFetchContactsFirstTime;
- }
-
-// ---------------------------------------------------------------------------
-// COSSContactManager::IsFetchInvitationsForFirstTime()
-// ---------------------------------------------------------------------------
-//
-TBool COSSContactManager::IsFetchInvitationsForFirstTime()
- {
- return iFetchInvitationsFirstTime;
- }
-
-// ---------------------------------------------------------------------------
-// COSSContactManager::SetFetchForFirstTime()
-// ---------------------------------------------------------------------------
-//
-void COSSContactManager::SetFetchContactsFirstTime(TBool aValue)
- {
- iFetchContactsFirstTime = aValue;
- }
-
-// ---------------------------------------------------------------------------
-// COSSContactManager::SetFetchInvitationsForFirstTime()
-// ---------------------------------------------------------------------------
-//
-void COSSContactManager::SetFetchInvitationsForFirstTime(TBool aValue)
- {
- iFetchInvitationsFirstTime = aValue;
- }
-
-// ---------------------------------------------------------------------------
-// COSSContactManager::GetContactsListL()
-// ---------------------------------------------------------------------------
-//
-RPointerArray<HBufC>& COSSContactManager::GetContactsListL()
- {
- return iContacts;
- }
-// ---------------------------------------------------------------------------
-// COSSContactManager::GetInvitationListL()
-// ---------------------------------------------------------------------------
-//
-RPointerArray<HBufC>& COSSContactManager::GetInvitationListL()
- {
- return iInvitationList;
- }
-
-// ---------------------------------------------------------------------------
-// COSSContactManager::ReturnContactsListL()
-// ---------------------------------------------------------------------------
-//
-void COSSContactManager::ReturnInvitationListL()
- {
- MXIMPObjectFactory& prfwObjFact = iConnMan.HandleToHost().ObjectFactory();
-
- MPresenceObjectFactory& prObjFact = iConnMan.HandleToHost().ProtocolPresenceDataHost().PresenceObjectFactory();
-
- MXIMPIdentity* AuthReqIdentity = NULL ;
- MPresenceGrantRequestInfo* presenceGrant = NULL;
-
- MXIMPObjectCollection* listOfInvitations = prfwObjFact.NewObjectCollectionLC();
-
- for ( TInt i = 0; i<iInvitationList.Count(); i++ )
- {
- presenceGrant = prObjFact.NewPresenceGrantRequestInfoLC();//1
- AuthReqIdentity = prfwObjFact.NewIdentityLC();//2
- AuthReqIdentity->SetIdentityL(*(iInvitationList[ i ] ));
- iInvitationList[i]->Des().Fold();
- presenceGrant->SetRequestorIdL(AuthReqIdentity);
- listOfInvitations->AddObjectL( presenceGrant );
- CleanupStack::Pop ( 2 );//presenceGrant, AuthReqIdentity
- }
-
- iConnMan.HandleToHost().ProtocolPresenceDataHost().AuthorizationDataHost().HandlePresenceGrantRequestListL( listOfInvitations );
- CleanupStack::Pop ( 1 );//listOfInvitations
- }
-
-// ---------------------------------------------------------------------------
-// COSSContactManager::ReturnContactsListL()
-// ---------------------------------------------------------------------------
-//
-void COSSContactManager::ReturnContactsListL()
- {
- MXIMPObjectFactory& prfwObjFact = iConnMan.HandleToHost().ObjectFactory();
-
- MPresenceObjectFactory& prObjFact = iConnMan.HandleToHost().ProtocolPresenceDataHost().PresenceObjectFactory();
-
- MXIMPIdentity* contactIdentity = NULL;
- MPresentityGroupMemberInfo* groupMemberInfo = NULL;
-
- MXIMPObjectCollection* listOfContacts = prfwObjFact.NewObjectCollectionLC();
- for(TInt i = 0;i<iContacts.Count();i++)
- {
- contactIdentity = prfwObjFact.NewIdentityLC();
- groupMemberInfo = prObjFact.NewPresentityGroupMemberInfoLC();
- contactIdentity->SetIdentityL ( *(iContacts[ i ] ));
- groupMemberInfo->SetGroupMemberIdL ( contactIdentity );
- groupMemberInfo->SetGroupMemberDisplayNameL ( *(iContacts[ i ] ) );
- listOfContacts->AddObjectL ( groupMemberInfo );
- CleanupStack::Pop ( 2 );//groupMemberInfo, contactIdentity
- }
- MXIMPIdentity* groupIdentity = prfwObjFact.NewIdentityLC();
- groupIdentity->SetIdentityL ( iConnMan.GroupId() );
- iConnMan.HandleToHost().ProtocolPresenceDataHost().GroupsDataHost().HandlePresentityGroupContentL ( groupIdentity, listOfContacts );
- CleanupStack::Pop ( 2 );//groupIdentity,listOfContacts
- }
-
-// ---------------------------------------------------------------------------
-// COSSContactManager::RemoveContactFromLocalL()
-// ---------------------------------------------------------------------------
-//
-void COSSContactManager::RemoveContactFromLocalL(const TDesC& aContactName)
- {
- HBufC* contactName = aContactName.AllocLC();
- MXIMPObjectFactory& ximpObjFact = iConnMan.HandleToHost().ObjectFactory();
- MXIMPIdentity* contactIdentity = ximpObjFact.NewIdentityLC();
- MXIMPIdentity* groupIdentity = ximpObjFact.NewIdentityLC();
- groupIdentity->SetIdentityL ( iConnMan.GroupId());
- contactIdentity->SetIdentityL(*contactName);
- //removing from the local copy of the contacts
- for(TInt i = 0; i<iContacts.Count(); i++)
- {
- if (!contactName->Compare(*(iContacts[i])))
- {
- iContacts.Remove( i );
- //give info after removing. to ximp fw and client
- iConnMan.HandleToHost().ProtocolPresenceDataHost().GroupsDataHost().HandlePresentityGroupMemberRemovedL ( groupIdentity, contactIdentity );
- break;
- }
- }
- CleanupStack::Pop( 2 ); // contactIdentity , groupIdentity
- CleanupStack::PopAndDestroy( 1 ); //contactName
- }
-
-// ---------------------------------------------------------------------------
-// COSSContactManager::AddContactToLocalL()
-// ---------------------------------------------------------------------------
-//
-void COSSContactManager::AddContactToLocalL(const TDesC& aContactName)
- {
- HBufC* contactName = aContactName.AllocLC();
- MXIMPObjectFactory& ximpObjFact = iConnMan.HandleToHost().ObjectFactory();
- MXIMPIdentity* contactIdentity = ximpObjFact.NewIdentityLC();
- MXIMPIdentity* groupIdentity = ximpObjFact.NewIdentityLC();
- groupIdentity->SetIdentityL ( iConnMan.GroupId());
- contactIdentity->SetIdentityL(*contactName);
- iContacts.AppendL(contactName);
- groupIdentity->SetIdentityL ( iConnMan.GroupId());
- contactIdentity->SetIdentityL(*contactName);
- MPresentityGroupMemberInfo* groupMemberInfo = iConnMan.HandleToHost().ProtocolPresenceDataHost().PresenceObjectFactory().NewPresentityGroupMemberInfoLC();
- groupMemberInfo->SetGroupMemberIdL ( contactIdentity );
- groupMemberInfo->SetGroupMemberDisplayNameL ( *contactName );
- iConnMan.HandleToHost().ProtocolPresenceDataHost().GroupsDataHost().HandlePresentityGroupMemberAddedL ( groupIdentity, groupMemberInfo );
-
- //set presence as pending for the added contact
- MPresenceBuddyInfo2* buddyPresInfo = MPresenceBuddyInfo2::NewLC();
-
- MPresenceCacheWriter2* presenceCacheWriter = MPresenceCacheWriter2::CreateWriterL();
- CleanupDeletePushL(presenceCacheWriter);
- HBufC* name = HBufC::NewLC( aContactName.Length() + iConnMan.ServiceName().Length() + KColon().Length() );
- TPtr namePtr( name->Des() );
- namePtr.Zero();
- namePtr.Append(iConnMan.ServiceName() ); // prepend service name
- namePtr.Append(KColon);
- namePtr.Append(aContactName );
- buddyPresInfo->SetIdentityL(namePtr);
- buddyPresInfo->SetAnyFieldL(KExtensionKey,KPendingRequestExtensionValue());
- CleanupStack::PopAndDestroy(1);//name
-
- // Writing into Presence Cache
- TInt cacheerror = presenceCacheWriter->WritePresenceL(buddyPresInfo);
- User::LeaveIfError ( cacheerror);
- CleanupStack::PopAndDestroy(2);//presenceCacheWriter,buddyPresInfo
- CleanupStack::Pop( 4 ); // contactName, contactIdentity , groupIdentity , groupMemberInfo
- }
-
-// ---------------------------------------------------------------------------
-// COSSContactManager::RemoveInvitationFromLocalL()
-// ---------------------------------------------------------------------------
-//
-void COSSContactManager::RemoveInvitationFromLocalL(const TDesC& aContactName)
- {
- MXIMPObjectFactory& ObjFact = iConnMan.HandleToHost().ObjectFactory();
- MPresenceObjectFactory& prfwObjFact = iConnMan.HandleToHost().ProtocolPresenceDataHost().PresenceObjectFactory();
- MXIMPIdentity* authReqIdentity = ObjFact.NewIdentityLC();//1
- if( authReqIdentity )
- {
- authReqIdentity->SetIdentityL(aContactName);
- for(TInt i = 0; i<iInvitationList.Count(); i++)
- {
- HBufC* findInvitation = iInvitationList[i];
- if ( findInvitation && !aContactName.Compare( *findInvitation) )
- {
- iInvitationList.Remove( i );
- delete findInvitation;
- findInvitation = NULL;
- iInvitationList.Compress();
- iConnMan.HandleToHost().ProtocolPresenceDataHost().AuthorizationDataHost().HandlePresenceGrantRequestObsoletedL(authReqIdentity);
- CleanupStack::Pop(); //AuthReqIdentity
- return;
- }
- }
- CleanupStack::PopAndDestroy(); //AuthReqIdentity
- }
- }
-// End of File
-
-