presencefwsimpleadpt/inc/simpleplugindata.h
branchRCL_3
changeset 18 fbd2e7cec7ef
parent 0 c8caa15ef882
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/presencefwsimpleadpt/inc/simpleplugindata.h	Wed Sep 01 12:23:14 2010 +0100
@@ -0,0 +1,178 @@
+/*
+* Copyright (c) 2007 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 C_SIMPLEPLUGINDATA_H
+#define C_SIMPLEPLUGINDATA_H
+
+
+// Includes
+#include <e32std.h>
+
+class MXIMPObjectFactory;
+class MXIMPIdentity;
+
+class MPresenceObjectFactory;
+class MSimpleDocument;
+class MPresenceInfo;
+class MSimplePresenceList;
+class MPresenceInfoFieldCollection;
+class MPersonPresenceInfo;
+class MPresenceInfoFieldValueEnum;
+class MSimpleElement;
+class MPresenceInfoFieldValueText;
+
+
+/**
+ *  CSimplePluginData
+ *
+ *  This provides data conversion between SIMPLE Engine and PrFw data strcutres.
+ *
+ *  @lib simplexmlutils
+ *  @since s60 v5.0
+ */
+NONSHARABLE_CLASS(CSimplePluginData) : public CBase
+    {
+public:
+
+    static CSimplePluginData* NewL(  );
+
+    static CSimplePluginData* NewLC();
+
+    virtual ~CSimplePluginData();
+
+    /**
+     * Convert to engine notification to MPresenceInfo
+     * @param aPresenceFactory PrFw Presence Factory
+     * @param aDocument notification
+     * @param aPrInfo PrFW info structure [out]
+     */
+    static void NotifyToPrInfoL(
+        MPresenceObjectFactory& aPresenceFactory,        
+        MSimpleDocument& aDocument,
+        MPresenceInfo& aPrInfo );
+
+    /**
+     * Convert to engine list notification to MPresenceInfo elements
+     * @param aFactory PrFw Factory
+     * @param aPresenceFactory PrFw Presence Factory
+     * @param aList notification
+     * @param aEntities array of PrFW info structure [out]
+     * @param aTerminated array of PrFW info structure for terminated  entities [out]
+     * @param aFullList ETrue if full state list [out]
+     */
+    static void NotifyListToPrInfoL(
+        MXIMPObjectFactory& aFactory,
+        MPresenceObjectFactory& aPresenceFactory,        
+        MSimplePresenceList& aList,
+        RPointerArray<MPresenceInfo>& aEntities,
+        RPointerArray<MXIMPIdentity>& aActives,
+        RPointerArray<MXIMPIdentity>& aTerminated,
+        TBool& aFullList );
+
+    /**
+     * Converts MPersonPresenceInfo to MSimpleDocument elements
+     * @param aInfo Person's presence info [in]
+     * @param aDocument PIDF document containing Person's presence info [out] 
+     * @param aSipId Person's SIP indetity
+     */
+    static void AddPrPersToSimpleDocumentL(
+        const MPersonPresenceInfo* aInfo,
+        MSimpleDocument& aDocument,
+        const TDesC8& aSipId );
+
+
+private:
+
+    CSimplePluginData();
+
+    void ConstructL( );
+
+    static void UserOverridingWillingnessToPrFwL(
+        MPresenceObjectFactory& aPresenceFactory,        
+        MSimpleElement* aElement,
+        MPresenceInfoFieldCollection& aCollection );
+
+    static void UserStatusIconToPrFwL(
+        MPresenceObjectFactory& aPresenceFactory,        
+        MSimpleElement* aElement,
+        MPresenceInfoFieldCollection& aCollection,
+        MSimpleDocument& aDocument );
+
+    static void UserNoteToPrFwL(
+        MPresenceObjectFactory& aPresenceFactory,        
+        MSimpleElement* aElement,
+        MPresenceInfoFieldCollection& aCollection );
+        
+    static void CollectAllPresentitiesL( 
+        RPointerArray<MPresenceInfo>& aEntities,
+        RPointerArray<MXIMPIdentity>& aActives,        
+        RPointerArray<MSimpleDocument>& aDocs,         
+        MXIMPObjectFactory& aFactory,
+        MPresenceObjectFactory& aPresenceFactory );
+        
+    /**
+     * Add terminated instances into array
+     * @param aTerminated list of PrFw indetities [OUT]
+     * @param aElems RLS meta data list entry elements
+     * @param aFactory PrFw Factory
+     */     
+    static void CollectTerminatedPresentitiesL( 
+        RPointerArray<MXIMPIdentity>& aTerminated,
+        RPointerArray<MSimpleElement>& aElems,    
+        MXIMPObjectFactory& aFactory );
+        
+    /** 
+     * Search the latest timestamp in the elements
+     * @param aElems element array     
+     * @retun position of the latest element in the element array. KErrNotFound if not found.    
+     */
+    static TInt SearchLatestTimestampL( 
+        RPointerArray<MSimpleElement>& aElems  );
+        
+    /**
+     * Add availability info into SIMPLE document
+     * @param aText new value [IN]
+     * @param aPersElem personal data to be modified [OUT]     
+     */    
+    static void AddPrPersAvailabilityToDocL( 
+        const MPresenceInfoFieldValueText* aText, 
+        MSimpleElement* aPersElem );
+    
+    /**
+     * Check if the current element is terminated instance.
+     * If yes then add the aUri into aTerminated
+     * @param aTerminated list of PrFw indetities [OUT]
+     * @param aElem current element
+     * @param aUri8 corresponding sip entity URI
+     * @param aFactory PrFw Factory
+     */
+    static void SearchTerminatedInstanceL( 
+            RPointerArray<MXIMPIdentity>& aTerminated,
+            MSimpleElement* aElem,    
+            const TDesC8* aUri8,
+            MXIMPObjectFactory& aFactory );
+        
+      
+
+};
+
+
+
+#endif // C_SIMPLEPLUGINDATA_H