PECengine/AttributeLibrary2/SrcAttributeBase/CPEngPresenceAttrModel.h
changeset 0 094583676ce7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/PECengine/AttributeLibrary2/SrcAttributeBase/CPEngPresenceAttrModel.h	Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,279 @@
+/*
+* Copyright (c) 2004 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:  Attribute model implementation.
+*
+*/
+
+#ifndef CPENGPRESENCEATTRMODEL_H
+#define CPENGPRESENCEATTRMODEL_H
+
+//INCLUDES
+#include "MPEngPresenceAdvancedAttrModel2.h"
+#include "MPEngPresenceAttrModel2.h"
+#include "MPEngPresenceAttrManager.h"
+#include <E32Base.h>
+
+
+
+// FORWARD DECLARATIONS
+class MPEngPresenceAttrModelTypeImp;
+class CPEngPresenceAttrConstructor;
+class CPEngAttrModelAsyncDataSetHook;
+class CPEngPresenceAttrModelStorageProxy;
+
+
+
+/**
+ * Attribute model implementation.
+ *
+ * @lib PEngAttrLib
+ * @since 3.0
+ */
+NONSHARABLE_CLASS( CPEngPresenceAttrModel ) :  public CBase,
+        public MPEngPresenceAdvancedAttrModel2
+    {
+public: // Construction
+
+    /**
+     * Instantiates CPEngPresenceAttrModel object.
+     *
+     * @param aTypeConstruct The attribute type specific construct.
+     * @return New CPEngPresenceAttrModel instance.
+     */
+    static CPEngPresenceAttrModel* NewL(
+        CPEngPresenceAttrConstructor& aTypeConstructor,
+        const TDesC& aPresenceID,
+        MPEngPresenceAttrModelTypeImp* aTypeImp );
+
+
+    /**
+     * Destructor.
+     * Virtual by CBase.
+     */
+    ~CPEngPresenceAttrModel();
+
+
+
+private:
+
+    /**
+     * C++ default constructor.
+     */
+    CPEngPresenceAttrModel( CPEngPresenceAttrConstructor& aTypeConstructor );
+
+
+    /**
+     * Symbian OS constructor.
+     */
+    void ConstructL( const TDesC& aPresenceID );
+
+
+
+public: // Functions from MPEngPresenceAttrModel2
+
+
+    /**
+     * From MPEngPresenceAttrModel2.
+     *
+     * Attribute type details.
+     * @since 3.0
+     */
+    TUint32 Type() const;
+    const MPEngPresenceAttrTypeProperties2& TypeProperties() const;
+
+
+    /**
+     * From MPEngPresenceAttrModel2.
+     *
+     * Attribute instance details.
+     * @since 3.0
+     */
+    const TDesC& PresenceID() const;
+    TPEngAttrDataSource DataSource() const;
+
+
+    /**
+     * From MPEngPresenceAttrModel2.
+     *
+     * Attribute data getters.
+     * @since 3.0
+     */
+    TBool Qualifier() const;
+    TInt DataInt( TInt aField,
+                  TInt aGroup ) const;
+
+    const TPtrC8 DataDesC8( TInt aField,
+                            TInt aGroup ) const;
+
+    const TPtrC16 DataDesC16( TInt aField,
+                              TInt aGroup ) const;
+
+
+
+    /**
+     * From MPEngPresenceAttrModel2.
+     *
+     * Attribute data setters.
+     * @since 3.0
+     */
+    void SetQualifier( TBool aQualifier );
+    void SetDataIntL( TInt aData,
+                      TInt aField,
+                      TInt aGroup );
+
+    void SetDataDesC8L( const TDesC8& aData,
+                        TInt aField,
+                        TInt aGroup );
+
+    void SetDataDesC16L( const TDesC16& aData,
+                         TInt aField,
+                         TInt aGroup );
+
+
+    /**
+     * From MPEngPresenceAttrModel2.
+     *
+     * Attribute async data setters.
+     * @since 3.0
+     */
+    void SetDataDesC8AsyncL( const TDesC8& aData,
+                             TRequestStatus& aRequestStatus,
+                             TInt aField,
+                             TInt aGroup );
+
+    void SetDataDesC16AsyncL( const TDesC16& aData,
+                              TRequestStatus& aRequestStatus,
+                              TInt aField,
+                              TInt aGroup );
+
+
+    /**
+     * From MPEngPresenceAttrModel2.
+     *
+     * Attribute async data set cancel.
+     * @since 3.0
+     */
+    void CancelSetDataAsync();
+
+
+
+    /**
+     * From MPEngPresenceAttrModel2.
+     *
+     * Extensions interfaces.
+     * @since 3.0
+     */
+    const MPEngAttrModelExtension2* Extension() const;
+    MPEngAttrModelExtension2* Extension();
+    TAny* TypeExtension( TUint32 aType );
+
+
+
+    /**
+     * From MPEngPresenceAttrModel2.
+     *
+     * Presence Engine internal interface.
+     * @since 3.0
+     */
+    const MPEngPresenceAdvancedAttrModel2* Advanced() const;
+    MPEngPresenceAdvancedAttrModel2* Advanced();
+
+
+
+    /**
+     * From MPEngPresenceAttrModel2.
+     *
+     * Clone support .
+     * @since 3.0
+     */
+    MPEngPresenceAttrModel2* CloneLC() const;
+
+
+
+    /**
+     * From MPEngPresenceAttrModel2.
+     *
+     * Cleanup support .
+     * @since 3.0
+     */
+    void Close();
+
+
+
+public: //From MPEngPresenceAdvancedAttrModel2
+
+
+    /**
+     * From MPEngPresenceAdvancedAttrModel2.
+     *
+     * @since 3.0
+     */
+    void EncodeToXmlL( MPEngXMLSerializer& aSerializer ) const;
+    void DecodeFromXmlL( MPEngXMLParser& aParser,
+                         const TDesC8& aDataBlock );
+
+    const CPEngPresenceAttrModelStorageProxy& Storage() const;
+    CPEngPresenceAttrModelStorageProxy& Storage();
+
+
+    TInt ExternalizeSize() const;
+    void ExternalizeL( RWriteStream& aStream ) const;
+    void InternalizeL( RReadStream& aStream );
+
+
+    void HandleAttributeUpdatedToNetwork();
+    void HandleNetworkSessionStateChangeL( TBool aSessionOpen );
+
+
+private: //Helpers
+
+
+    /**
+     * Lazy initializes the async set hook.
+     * @since 3.0
+     */
+    void LazyInitAsyncSetHookL();
+
+
+
+private:    // Base model maintained attribute data
+
+
+    //REF: Model type constructor
+    CPEngPresenceAttrConstructor& iTypeConstructor;
+
+    //OWN: Async set hook. Lazy initialized when needed.
+    CPEngAttrModelAsyncDataSetHook* iAsyncSetHook;
+
+    //OWN: Model storage proxy
+    CPEngPresenceAttrModelStorageProxy*   iStorage;
+
+    //OWN: Attribute instances presence Id
+    HBufC*  iPresenceId;
+
+    //OWN: Attribute data source
+    TPEngAttrDataSource     iDataSource;
+
+    //OWN: Attribute qualifier value
+    TBool   iQualifier;
+
+    //OWN: Attribute model type instance
+    MPEngPresenceAttrModelTypeImp*    iTypeImp;
+
+    };
+
+#endif      // CPENGPRESENCEATTRMODEL_H
+
+//  End of File
+