presencefwsimpleadpt/inc/simpleplugingroups.h
branchRCL_3
changeset 35 fbd2e7cec7ef
parent 0 c8caa15ef882
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/presencefwsimpleadpt/inc/simpleplugingroups.h	Wed Sep 01 12:23:14 2010 +0100
@@ -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