wvuing/IMPSConnectionUI/ClientPluginSrc/CCnUiClientPluginIM.h
branchRCL_3
changeset 13 a941bc465d9f
parent 0 094583676ce7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wvuing/IMPSConnectionUI/ClientPluginSrc/CCnUiClientPluginIM.h	Wed Sep 01 12:31:13 2010 +0100
@@ -0,0 +1,320 @@
+/*
+* 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:  IM client plug-in.
+*
+*/
+
+#ifndef __CCNUICLIENTPLUGINIM_H
+#define __CCNUICLIENTPLUGINIM_H
+
+//  INCLUDES
+#include <E32Base.h>
+#include <f32file.h>
+#include "CCnUiClientPluginBase.h"
+#include "MIMPSSharedData.h"
+
+// FORWARD DECLARATIONS
+class CPEngNWSessionSlotID2;
+class CPEngAttributeListStore2;
+class MPEngAttributeList2;
+class MPEngPresenceAttrModel2;
+class RResourceFile;
+class MIMPSSharedData;
+
+// CLASS DECLARATION
+/**
+ * IM client plug-in.
+ *
+ * IM project has responsibility to maintain / change implementation
+ * of this class as they need.
+ *
+ * @since 2.1
+ */
+NONSHARABLE_CLASS( CCnUiClientPluginIM ) : public CCnUiClientPluginBase
+
+    {
+public:  // Two-phased constructors and destructor
+
+    /**
+     * Two-phased constructor.
+     */
+    static CCnUiClientPluginIM* NewL( CPEngNWSessionSlotID2& aNWSessionSlotID );
+
+
+    /**
+     * Destructor.
+     */
+    ~CCnUiClientPluginIM();
+
+private:
+
+    /**
+     * C++ constructor.
+     */
+    CCnUiClientPluginIM();
+
+    /**
+     * Symbian OS constructor.
+     */
+    void ConstructL( CPEngNWSessionSlotID2& aNWSessionSlotID );
+
+
+
+private: //From MCnUiClientPlugin
+
+    /**
+     * From MCnUiClientPlugin
+     * @see MCnUiClientPlugin
+     * @since 2.1
+     */
+    TCnUiConnectionMode CurrentConnectionModeSettingL();
+
+
+    /**
+     * From MCnUiClientPlugin
+     * @see MCnUiClientPlugin
+     * @since 2.1
+     */
+    void ReWakeAutomaticConnectionModeL();
+
+
+    /**
+     * From MCnUiClientPlugin
+     * Overloaded from CCnUiClientPluginBase
+     * @see MCnUiClientPlugin
+     * @since 2.1
+     */
+    void ConnectionOpenInitL( TBool aSapConnectionOpen, const CIMPSSAPSettings& aSap );
+
+    /**
+     * From MCnUiClientPlugin
+     * Overloaded from CCnUiClientPluginBase
+     * @see MCnUiClientPlugin
+     * @since 2.1
+     */
+    void LoginCancelledL();
+
+public: //Template methods from CCnUiClientPluginBase
+
+    /**
+     * Template method from CCnUiClientPluginBase
+     * @see CCnUiClientPluginBase
+     * @since 2.1
+     */
+    TBool DoVerifySapCapabilities( TPEngWVCspServicesTree2 aCurrenServices );
+
+
+    /**
+     * Template method from CCnUiClientPluginBase
+     * @see CCnUiClientPluginBase
+     * @since 2.1
+     */
+    CDesCArray* DoClientKnownCntListsLC();
+
+
+    /**
+     * Template method from CCnUiClientPluginBase
+     * @see CCnUiClientPluginBase
+     * @since 2.1
+     */
+    void DoStartExplicitPostLoginSyncL();
+
+    /**
+     * Template method from CCnUiClientPluginBase
+     * @see CCnUiClientPluginBase
+     * @since 2.1
+     */
+    void DoHandleExplicitPostLoginSyncStepCompleteL( TStepId aStepId, TInt& aStepStatus );
+
+
+    /**
+     * Template method from CCnUiClientPluginBase
+     * @see CCnUiClientPluginBase
+     * @since 2.1
+     */
+    void DoStartPreLogoutPublishL();
+
+
+    /**
+     * Template method from CCnUiClientPluginBase
+     * @see CCnUiClientPluginBase
+     * @since 2.1
+     */
+    void DoHandlePreLogoutPublishStepCompleteL( TStepId aStepId, TInt& aStepStatus );
+
+private: // New helpers
+
+    /**
+     * Gets IM publish level value.
+     *
+     * @since 2.1
+     * @return IM setting value for attribute publishing
+     */
+    static TInt IMAttributePublishLevelL();
+
+    /**
+     * Updates IM attribute-lists if needed
+     * @param aStatus Request status
+     * @since 2.1
+     */
+    void UpdateIMAttributeListsL( TInt aPublishLevel, MDesCArray& aContactLists );
+
+    /**
+     * Gets default attribute-list
+     * @since 2.1
+     * @return Default attribute-list
+     */
+    static MPEngAttributeList2* DefaultAttributeListLC(
+        CPEngAttributeListStore2& aAttributeListFactory );
+
+
+    /**
+     * Read IM Attributes from resource and set them
+     * @since 3.0
+     * @param aLockedOwnAttributes
+     *        On return, contains list of locked own
+     *        attributes that should be published and unlocked.
+     */
+    void ReadIMAttributesL( RPointerArray<MPEngPresenceAttrModel2>& aLockedOwnAttributes );
+
+    /**
+     * Update local IM Attributes as given und issues NWE publish if needed
+     * @since 2.1
+     * @param aStatus Request status
+     */
+    void IssueIMAttributeUpdateAndPublishIfNeededL( TInt aPublishLevel );
+
+    /**
+     * Opens correct resource file.
+     * !!! Two items left to cleanup stack. !!!
+     * @param aResourceFile Contains opened file on return
+     * @since 3.0
+     */
+    void OpenResourceFileLC( RResourceFile& aResourceFile );
+
+
+
+    //Ease of IM Branding
+    /**
+     * Opens correct variation resource file.
+     * !!! Two items left to cleanup stack. !!!
+     * @param aResourceFile Contains opened file on return
+     * @since 3.2
+     */
+    void OpenVariationResourceFileLC( RResourceFile& aResourceFile );
+
+
+    /**
+     * Resource reader for non-Cone situations
+     * @param aResourceId The integer-valued resource id to read
+     * @return The value of the integer
+     */
+    TInt ReadResourceIntValueL( TInt aResourceId );
+
+    /**
+    * Calls ResetAndDestroy to given array
+    * @since 3.0
+    * @param aObject Array (RPointerArray<MPEngPresenceAttrModel2>)
+    */
+    static void DestroyCloseModelArray( TAny* aObject );
+
+    /**
+    * Sets presence authorization to all
+    * @since 3.0
+    */
+    void SetAuthorizationToAllL( MDesCArray& aContactLists );
+
+    /**
+    * Sets presence authorization to none
+    * @since 3.0
+    */
+    void SetAuthorizationToNoneL( MDesCArray& aContactLists );
+
+    /**
+    * Sets presence authorization to friends
+    * @since 3.0
+    */
+    void SetAuthorizationToFriendsL(
+        MDesCArray& aContactLists );
+
+    /**
+    * Attaches attribute list to contact lists
+    * @since 3.0
+    */
+    void AttachAttributeListL(
+        MDesCArray& aContactLists,
+        MPEngAttributeList2& aAttributeList );
+
+    /**
+    * Detaches attribute list from contact lists
+    * @since 3.0
+    */
+    void DetachAttributeListL(  MDesCArray& aContactLists );
+
+    /**
+     * Get first status message for online state.
+     * @return first status message from saved ones.
+     *          If not found, empty descriptor returned.
+     *          Ownership is transferred to caller.
+     * @since 3.0
+     */
+    HBufC* GetFirstStatusMessageL() const;
+
+    /**
+     * Get sharedData attribute value.
+     * @return Shared data string.
+     *         If not found, empty descriptor returned.
+     *         Ownership is transferred to caller.
+     * @since 3.0
+     */
+    HBufC* GetSharedDataL( TIMPSSharedKeys aKey ) const;
+
+    /**
+     * Finds alias for given aUserID inside aAliasTable.
+     * @param aAliasTable string containeing all aliases for different ids
+     * @param aUserId Userid to look for
+     * @param aIndex Position inside aAliasTable, where the wanted alias starts.
+     *               Or KErrNotFound
+     * @param aLength aLength length of alias
+     */
+    void LocateAliasL( const TDesC& aAliasTable, const TDesC& aUserId,
+                       TInt& aIndex, TInt& aLength );
+
+private: // data
+
+    // ETrue if reactive authorization is used
+    TBool iRAUsed;
+
+    // ETrue if alias attribute is supported
+    TBool iAliasUsed;
+
+    RFs   iRFs;
+
+    // ETrue if attribute lists are supported
+    TBool iAttribListsSupported;
+
+    // Presence authorization setting value
+    TInt iPresenceAuth;
+
+    // own. cached alias value
+    HBufC* iAlias;
+
+    //owns
+    MIMPSSharedData*	iSharedData;
+    };
+
+#endif      //__CCNUICLIENTPLUGINIM_H
+//  End of File
+
+