wvuing/IMPSConnectionUI/ClientPluginSrc/IMPSPublishLevelPolicy.h
changeset 0 094583676ce7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wvuing/IMPSConnectionUI/ClientPluginSrc/IMPSPublishLevelPolicy.h	Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,217 @@
+/*
+* 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: Presence Publish Level Policy which offers publish level changing and initializing
+*
+*/
+
+#ifndef __IMPSPUBLISHLEVELPOLICY_H
+#define __IMPSPUBLISHLEVELPOLICY_H
+
+//  INCLUDES
+#include <E32Std.h>
+#include <PECAppSharedData.h>
+
+
+//FORWARD DECLARATION
+class CPEngAttributeListStore2;
+class MPEngAttributeList2;
+class CPEngNWSessionSlotID2;
+
+// TYPE DEFINITIONS
+/**
+ * Attribute list mutator function type definition.
+ **/
+typedef void ( *TSetPresenceL )( MPEngAttributeList2& );
+
+
+
+// CLASS DECLARATION
+
+/**
+* Presence Publish Level Policy. Offers
+* publish level changing and initializing.
+*
+*  @lib IMPSuilib.dll
+*  @since 2.1
+*/
+NONSHARABLE_CLASS( IMPSPublishLevelPolicy )
+
+    {
+public: // New functions
+
+    /**
+     * Initialize settings of Publish level, based on the settings
+     * from the settings stored in the shared data.
+     * Function is synchronous and creates only attribute lists for
+     * contact lists based on the publish level
+     *
+     * @param aNWSessionSlotID the network session slot ID
+     * @since 2.1
+     */
+    static void InitializePublishLevelL( CPEngNWSessionSlotID2& aNWSessionSlotID );
+
+
+    // New set functions
+
+    /**
+     *  Update settings of the attribute lists, so it reflects publishinglevel passed
+     *  as parameter, no network asynchronous operations are performed, all changes
+     *  are done only on local machine
+     *
+     * @since 2.1
+     * @param aPublishLevel publish level to
+     * @return
+     */
+    static void UpdateAttributeListsL( TInt aPublishLevel,
+                                       CPEngNWSessionSlotID2& aNWSessionSlotID );
+
+private:
+    /**
+     *  Set Attribute lists so it reflects private and Public publish level
+     *  as parameter, no network asynchronous operations are performed, all changes
+     *  are done only on local machine
+     *
+     * @since 2.1
+     * @param   aAttributeListFactory attribute lists factory instance, function does not take
+     *          ownership
+     * @return
+     */
+    static void SetPrivatePublicPublishingL( CPEngAttributeListStore2& aAttributeListFactory );
+
+
+    /**
+     *  Set Attribute lists so it reflects only private publishing
+     *  as parameter, no network asynchronous operations are performed, all changes
+     *  are done only on local machine
+     *
+     * @since 2.1
+     * @param   aAttributeListFactory attribute lists factory instance, function does not take
+     *          ownership
+     * @return
+     */
+    static void SetOnlyPrivatePublishingL( CPEngAttributeListStore2& aAttributeListFactory );
+
+
+    /**
+     *  Set Attribute lists so it reflects only Public publishing
+     *  as parameter, no network asynchronous operations are performed, all changes
+     *  are done only on local machine
+     *
+     * @since 2.1
+     * @param   aAttributeListFactory attribute lists factory instance, function does not take
+     *          ownership
+     * @return
+     */
+    static void SetOnlyPublicPublishingL( CPEngAttributeListStore2& aAttributeListFactory );
+
+
+    /**
+     *  Set Attribute lists so it reflects all publishing OFF
+     *  as parameter, no network asynchronous operations are performed, all changes
+     *  are done only on local machine
+     *
+     * @since 2.1
+     * @param   aAttributeListFactory attribute lists factory instance, function does not take
+     *          ownership
+     * @return
+     */
+    static void SetPublishOffL( CPEngAttributeListStore2& aAttributeListFactory );
+
+
+    /**
+     *  Set Attribute lists so it reflects all publishing ON
+     *  as parameter, no network asynchronous operations are performed, all changes
+     *  are done only on local machine
+     *
+     * @since 2.1
+     * @return
+     */
+    static void SetPublishAllOnL();
+
+    /**
+     * Attribute list mutator.
+     *
+     * Updates given PEC contact lists attribute list
+     * to given publish level. (Publish level is declared
+     * trough the given function pointer.)
+     *
+     * @since 2.1
+     * @param   aAttrLstStore Attribute list store to use to mutate attribute list.
+     * @param   aContactList The contact list which attribute list to change.
+     * @return  aPresenceCall The attribute list mutator function to use to
+     * alter the attribute list.
+     */
+    static void UpdateAttributeListL(	CPEngAttributeListStore2& aAttrLstStore,
+                                      const TDesC& aContactList,
+                                      TSetPresenceL aPresenceCall );
+
+    /**
+     * Attribute list mutator.
+     *
+     * Updates default attribute list to given publish level.
+     * (Publish level is declared trough the given function pointer.)
+     *
+     * @since 2.1
+     * @param   aAttrLstStore Attribute list store to use to mutate attribute list.
+     * @return  aPresenceCall The attribute list mutator function to use to
+     * alter the attribute list.
+     */
+    static void UpdateDefaultAttrListL( CPEngAttributeListStore2& aAttrLstStore,
+                                        TSetPresenceL aPresenceCall );
+
+
+    /**
+     * Attribute list mutator.
+     * Sets PEC "private presence" attributes on the
+     * given attribute list.
+     *
+     * @since 2.1
+     * @param aAttrListModel Attribute list to alter.
+     */
+    static void SetPrivatePresenceL( MPEngAttributeList2& aAttrListModel );
+
+
+    /**
+     * Attribute list mutator.
+     * Sets PEC "public presence" attributes on the
+     * given attribute list.
+     *
+     * @since 2.1
+     * @param aAttrListModel Attribute list to alter.
+     */
+    static void SetPublicPresenceL( MPEngAttributeList2& aAttrListModel );
+
+
+    /**
+     * Attribute list mutator.
+     * Sets PEC "no presence" attributes on the
+     * given attribute list.
+     *
+     * @since 2.1
+     * @param aAttrListModel Attribute list to alter.
+     */
+    static void SetNoPresence( MPEngAttributeList2& aAttrListModel );
+
+
+
+protected: //prohibited constructor / destructor
+
+    ~IMPSPublishLevelPolicy();
+    IMPSPublishLevelPolicy();
+
+    };
+
+#endif      // __IMPSPUBLISHLEVELPOLICY_H
+
+// End of File