diff -r 000000000000 -r 094583676ce7 wvuing/IMPSConnectionUI/ClientPluginSrc/CCnUiClientPluginIM.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wvuing/IMPSConnectionUI/ClientPluginSrc/CCnUiClientPluginIM.h Thu Dec 17 08:41:52 2009 +0200 @@ -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 +#include +#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& 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) + */ + 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 + +