diff -r 000000000000 -r c8caa15ef882 presencefwsimpleadpt/inc/simpleplugingroups.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/presencefwsimpleadpt/inc/simpleplugingroups.h Tue Feb 02 01:05:17 2010 +0200 @@ -0,0 +1,441 @@ +/* +* Copyright (c) 2006 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: Simple Protocol implementation for Presence Framework +* +*/ + + + + +#ifndef CSIMPLEPLUGINGROUPS_H +#define CSIMPLEPLUGINGROUPS_H + +#include + +#include +#include + +#include + +#include "simpleplugincommon.h" +#include "msimplepluginconnectionobs.h" + + +class TXIMPRequestId; +class MXIMPIdentity; +class MPresenceInfoFilter; +class MProtocolPresentityGroupsDataHost; +class MXIMPObjectCollection; + +class MSimpleWinfo; +class CPresenceXDM; +class CRLSXDM; +class CXdmEngine; +class CXdmDocument; + + +/** + * CSimplePluginGroups + * + * Simple Engine Connection + * + * @lib ?library + * @since s60 v5.0 + */ +NONSHARABLE_CLASS( CSimplePluginGroups ) : public CActive, + public MProtocolPresentityGroups + { +private: + + + /** + * Current operation + */ + enum TPluginGroupsOperation + { + ENoOperation, + ECreatePresentityGroup, + EDeletePresentityGroup, + EAddPresentityGroupMember, + ERemovePresentityGroupMember, + EGetListOfLists, + EGetListContent + }; + + /** + * Current actibe object state + */ + enum TPluginGroupsState + { + EPluginIdle, + EPluginInitXdm, + EPluginFetchRls, + EPluginAddGroupMember, + EPluginRemoveGroupMember, + EPluginCommitRls, + EPluginCommitXdm, + ERemoveGroupFromGranted + }; + +public: + /** + * Constructor. + * @param aObs callback for complete requests + */ + static CSimplePluginGroups* NewL( + MSimplePluginConnectionObs& aObs ); + + virtual ~CSimplePluginGroups(); + + + +private: + + CSimplePluginGroups( + MSimplePluginConnectionObs& aObs ); + + void ConstructL( ); + + +// from base class MXIMPBase +public: + + /** + * Defined in a base class + */ + TAny* GetInterface( + TInt32 aInterfaceId, + TIfGetOps aOps ); + + /** + * Defined in a base class + */ + const TAny* GetInterface( + TInt32 aInterfaceId, + TIfGetOps aOps ) const; + + /** + * Defined in a base class + */ + TInt32 GetInterfaceId() const; + + +// from base class MProtocolPresentityGroups + + /** + * Defined in a base class + */ + void DoSubscribePresentityGroupListL( + TXIMPRequestId aReqId ); + + /** + * Defined in a base class + */ + void DoUnsubscribePresentityGroupListL( + TXIMPRequestId aReqId ); + + /** + * Defined in a base class + */ + void DoCreatePresentityGroupL( + const MXIMPIdentity& aGroupId, + const TDesC16& aDisplayName, + TXIMPRequestId aReqId ); + + /** + * Defined in a base class + */ + void DoDeletePresentityGroupL( + const MXIMPIdentity& aGroupId, + TXIMPRequestId aReqId ); + + /** + * Defined in a base class + */ + void DoUpdatePresentityGroupDisplayNameL( + const MXIMPIdentity& aGroupId, + const TDesC16& aDisplayName, + TXIMPRequestId aReqId ); + + /** + * Defined in a base class + */ + void DoSubscribePresentityGroupContentL( + const MXIMPIdentity& aGroupId, + TXIMPRequestId aReqId ); + + /** + * Defined in a base class + */ + void DoUnsubscribePresentityGroupContentL( + const MXIMPIdentity& aGroupId, + TXIMPRequestId aReqId ); + + /** + * Defined in a base class + */ + void DoAddPresentityGroupMemberL( + const MXIMPIdentity& aGroupId, + const MXIMPIdentity& aMemberId, + const TDesC16& aMemberDisplayName, + TXIMPRequestId aReqId ); + + /** + * Defined in a base class + */ + void DoRemovePresentityGroupMemberL( + const MXIMPIdentity& aGroupId, + const MXIMPIdentity& aMemberId, + TXIMPRequestId aReqId ); + + /** + * Defined in a base class + */ + void DoUpdatePresentityGroupMemberDisplayNameL( + const MXIMPIdentity& aGroupId, + const MXIMPIdentity& aMemberId, + const TDesC16& aMemberDisplayName, + TXIMPRequestId aReqId ); + +protected: + +// from base class CActive + + /** + * Defined in a base class + */ + void RunL(); + + /** + * Defined in a base class + */ + TInt RunError( TInt aError ); + + /** + * Defined in a base class + */ + void DoCancel(); + +private: + + /** + * Save presentity id + * @param aPresentityId presentity id + */ + void SetPresIdentityL( + const MXIMPIdentity& aPresentityId ); + + /** + * Save presentity id + * @param aPresentityId presentity id + */ + void SetPresIdentity2L( + const MXIMPIdentity& aPresentityId ); + + /** + * Calls MXIMPProtocolConnectionHost callback + * @param aStatus error status + */ + void CompletePrFwReq( TInt aStatus ); + + /** + * Start XDM operation + */ + void StartXdmOperationL( + TXIMPRequestId aReqId, + TPluginGroupsOperation aOperation ); + + /** + * Start XDM operation + */ + void StartXdmOperationL( + const MXIMPIdentity& aId, + TXIMPRequestId aReqId, + TPluginGroupsOperation aOperation ); + + /** + * Start XDM operation + */ + void StartXdmOperationL( + const MXIMPIdentity& aId, + const TDesC16& aDisplayName, + TXIMPRequestId aReqId, + TPluginGroupsOperation aOperation ); + + /** + * Start XDM operation + */ + void StartXdmOperationL( + const MXIMPIdentity& aId, + const MXIMPIdentity& aMemberId, + TXIMPRequestId aReqId, + TPluginGroupsOperation aOperation ); + + /** + * Start XDM operation + */ + void StartXdmOperationL( + const MXIMPIdentity& aId, + const MXIMPIdentity& aMemberId, + const TDesC16& aDisplayName, + TXIMPRequestId aReqId, + TPluginGroupsOperation aOperation ); + + /** + * Start XDM operation + */ + void StartXdmOperationL(); + + /** + * Start XDM operation, StartXdmOperationL calls this. + */ + void DoStartXdmOperationL( ); + + /** + * Call CSimpleXdmUtils operation + */ + void CallActualXdmOperationL(); + + /** + * Get list of the entity lists + */ + void GetListOfListsL(); + + /** + * Get content of the entity list + */ + void GetListContentL(); + + /** + * Yields to active scheduler and runs next RunL loop + * @param aStatus error status + */ + void CompleteMe( TInt aStatus ); + + /** + * Copy data from aLists and from aNames into aCollection + * @param aNames group names [IN] + * @param aNames group display names [IN] + * @param aCollection collection of MPresentityGroupInfo [OUT] + */ + void CopyGroupArraysToCollectionL( + CDesCArrayFlat& aLists, CDesCArrayFlat& aNames, MXIMPObjectCollection& aCollection ); + + /** + * Copy data from aIds and from aNames into aCollection + * @param aNames group member names [IN] + * @param aNames group member display names [IN] + * @param aCollection collection of MPresentityGroupMemberInfo [OUT] + */ + void CopyGroupMembersToCollectionL( + CPtrCArray& aIds, CPtrCArray& aNames, MXIMPObjectCollection& aCollection); + + + /** + * Add presentity group + * @param aGroupId group id + * @param adispName display name + */ + void HandleCreatePresentityGroupL( + const TDesC& aGroupId, const TDesC& aDispName ); + + /** + * Delete presentity group + * @param aGroupId group id + */ + void HandleDeletePresentityGroupL( const TDesC& aGroupId ); + + /** + * Add presentity group member + */ + void HandleAddPresentityGroupMemberL(); + + /** + * Remove group member + */ + void HandleRemovePresentityGroupMemberL(); + + + +private: // Data + + /** + * PrFw Plugin connection observer + */ + MSimplePluginConnectionObs& iConnObs; + + /** + * XDM Settings id + */ + TInt iSettingsId; + + /** + * PrFW request id + */ + TXIMPRequestId iPrFwId; + + /** + * PrFW request id for own requests + */ + TXIMPRequestId iPrFwIdOwn; + + /** + * Simple Engine request id + */ + TInt iSimpleId; + + /** + * Subscribed items. Bitmask. + */ + TUint iSubscribed; + + /** + * Current operation + */ + TPluginGroupsOperation iOperation; + + /** + * Current presentity in progress + * Own. + */ + HBufC16* iPresIdentity; + + /** + * Current presentity in progress + * Own. + */ + HBufC16* iPresIdentity2; + + /** + * XDM Utils + * Not own. + */ + CSimplePluginXdmUtils* iXdmUtils; + + /** + * Display name + * Own + */ + HBufC* iDisplayName; + + /** + * Active object state + */ + TPluginGroupsState iState; + + TBool iCompleted; + + }; + +#endif // CSimplePluginGroups_H