--- /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 <e32std.h>
+
+#include <ximpbase.h>
+#include <protocolpresentitygroups.h>
+
+#include <mrlspresxdmasynchandler.h>
+
+#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