diff -r 2b7283837edb -r 3104fc151679 uiservicetab/vimpstcmdprocess/inc/cvimpstprocessarray.h --- a/uiservicetab/vimpstcmdprocess/inc/cvimpstprocessarray.h Thu Aug 19 09:41:53 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,531 +0,0 @@ -/* -* Copyright (c) 2008 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: Array Process -* -*/ - - -#ifndef _CVIMPSTPROCESSARRAY_H -#define _CVIMPSTPROCESSARRAY_H - -// INCLUDES -#include -#include "mvimpstcmdhandler.h" -#include "vimpstcmd.hrh" -#include "mvimpststoragecontactsobserver.h" -#include "mvimpstprocessarray.h" -#include "tvimpstenums.h" -#include "mvimpstengineimsubserviceeventobserver.h" -#include "mvimpstenginepresencesubserviceeventobserver.h" -#include - -// FORWARD DECLARATION -class MVIMPSTProcessArrayItem; -class MVIMPSTStorageContact; -class MVIMPSTStorageContactList; -class MVIMPSTStorageServiceView; -class MVIMPSTProcessArrayObserver; -class MVIMPSTStorageItemModel; -class MVPbkContactLink; -class MVPbkStoreContact; -class MVIMPSTEngine; -class CVIMPSTProcessFriendRequestItem; -class CVIMPSTProcessUnknownContactItem; - -// CLASS DECLARATION - -/** - * Array Process. - * Responsible for handling all contacts array - * @lib vimpstcmdprocess.dll - * @since 5.0 - */ -class CVIMPSTProcessArray : public CBase, - public MVIMPSTProcessArray, - public MVIMPSTStorageContactsObserver, - public MVIMPSTEngineIMSubServiceEventObserver, - public MVIMPSTEnginePresenceSubServiceEventObserver - { - friend class Cvimpstcmdprocess_utest; - public: // Construction and destruction - - /** - * Creates a new instance of this class. - * @param aEngine, reference to engine. - * @return A new instance of this class. - */ - static CVIMPSTProcessArray* NewL( - MVIMPSTEngine& aEngine); - - /** - * Destructor. - */ - ~CVIMPSTProcessArray(); - - public: //form mvimpstchatobserver - /** - * @see MVIMPSTEngineIMSubServiceEventObserver.h - **/ - void HandleChatMessageEventL(TVIMPSTEnums::TIMEventType aEventType ,const TDesC& aSender ); - - - public: - /** - * Observer Event for new add request - * aRequester - requester for add request. - */ - void HandleAddRequestEventL(TVIMPSTEnums::TOperationType aType, const TDesC& aRequesterId, - const TDesC& aRequestorDisplayName ); - - - public : //from MVIMPSTProcessArray - /** - * register for array call back - * @param aObserver: to be added - */ - void AddObserver(MVIMPSTProcessArrayObserver* aObserver) ; - - /** - * unregister for array call back - * @param aObserver: to be removed - */ - void RemoveObserver() ; - - /** - * Count: Called by UI components to get total count of array - * @return integer Count of array - */ - virtual TInt Count() const; - - /** - * @return ETrue if presence service is enabled - */ - TBool IsSubServiceSupportedL( TVIMPSTEnums::SubServiceType aType ) const ; - - /** - * @return, ETrue if IM is supported - */ - TBool IsIMSupported(); - - /** - * @return, ETrue if Presence is supported - */ - TBool IsPresenceSupported(); - - /** - * GetType: Function to get the type of list item - * @param aIndex: index of the list item - * @return TEnumsPC::TItem: type of the list item as EContactItem, EOwnStatusItem etc - */ - virtual TVIMPSTEnums::TItem GetType(TInt aIndex) const; - - /** - * ResetArray: Function to reset and fill the array - */ - void ResetArray(); - - /** - * GetItemNameText: To get item name of each list item - * @param aIndex: Index of the list item whose name is to be returned - * @return TPtrC: Name of the list item - */ - virtual TPtrC GetItemNameText(TInt aIndex); - - - /** - * SetLoginState: To set the loginstate. - * @param aLoginState: state of login - */ - virtual void SetLoginStateL(TVIMPSTEnums::TVIMPSTRegistrationState aLoginState); - - - /** - * GetLoginState: To set the loginstate. - * @return TVIMPSTRegistrationState, state of login - */ - virtual TVIMPSTEnums::TVIMPSTRegistrationState GetLoginState(); - - /** - * @returns the VPBK Contact Link - */ - MVPbkContactLink* ContactLink(TInt aIndex); - - - /** - * GetOnlineStatusL gets the status of given index. - * @param aIndex: Index of the item - * @returns the onlinestatus of given valid index. - */ - TVIMPSTEnums::TOnlineStatus GetOnlineStatusL(TInt aIndex); - - /** - * Get the status text for the contact - * @param aIndex: Index of contact item - * @return reference to the status text. - */ - const TDesC& StatusTextL(TInt aIndex ) ; - - /** - * From MVIMPSTProcessArray - * - */ - void MapContactListPositions(RArray& aPositionArray ); - /** - * IsMsgPending: To find if there are any pending messages to - * decide the icons for display - * @param aIndex: index of the list item - * @return bool: True if there are pending messages else false. - */ - TBool IsMsgPending(TInt aIndex); - - /** - * ResetPendingMsg: To reset if there are any pending messages to - * decide the icons for display - * @param aIndex: index of the list item - */ - void ResetPendingMsg(TInt aIndex); - - - /** - * Find any contact which id is aContactId - * @param aContactId, user id. - * @return ETrue if contact already existst.else EFlase. - */ - TBool FindAnyContact( const TDesC& aContactId ); - - /** - * Find any contact which id is aContactId - * @param aContactId, user id. - * @return ETrue if contact already existst.else EFlase. - */ - TBool FindAnyContactServiceField( const TDesC& aContactId ); - /** - * Find any friend request which id is aRequesterId - * @param aRequesterId, user id. - * @return ETrue if request already existst.else EFlase. - */ - TBool FindAnyAddRequest( const TDesC& aRequesterId ); - - /** - * @param aRequesterId, user id. - * @return ETrue if request already existst.else EFlase. - */ - TBool IsContactBlocked( const TDesC& aRequesterId ); - - /** - * check if already conversation opened - * @param aRecipientId, the selected user id with whom conversation is started - * @return ETrue if already exist else EFlase. - */ - TBool IsConversationExistL(const TDesC& aRecipientId) ; - /** - * check if already conversation opened - * @param aRecipientId, the selected user id with whom conversation is started - * @return ETrue if already exist else EFlase. - */ - TBool IsConversationExist(TInt aIndex); - - /** - * Find the index of contact with contact id as aContactId - * @param aContactId : id of contact whose index is to be found - * @return index of contact else KErrNotFounf if not found - */ - TInt FindContactIndexL( const TDesC& aContactId ) ; - - /** - * GetItemNameText: To get item name of each list item - * @param aIndex, Index of the list item whose name is to be returned - * @return TPtrC, Name of the list item - */ - TPtrC GetItemUserId(TInt aIndex); - /** - * RemoveFriendRequest: To remove friend request from list. - * @param aIndex, Index of the list item to be removed. - */ - void RemoveFriendRequestL(const TDesC& aRequesterId); - /** - * Login user name of the own user from settings - * owener ship is transferred to the caller - * @return allocated HBufC: Login user name of the own user from settings - */ - const TDesC& LoginUserIdFromStoreL() const; - - /** - * OwnAvatarIndex: Returns the avatar index for the corresponding contact item - * This index is used to append the avatar in the UI. - * If index is ' 0 ', then it means no avatar is set. - * - * @return index of the own avatar - */ - TInt OwnAvatarIndexL( ) ; - /** - * OwnAvatarContent: Returns the mime type of the avatar image for the conatct - * - * If nothing returns KNullDesC8 - * @return TDesC8& own avatar content - */ - const TDesC8& OwnAvatarContentL( ) const ; - - /** - * SetOwnAvatarIndex: Sets the index for own avatar contact item - * @param aAvatarIndex: Index to be set - */ - void SetOwnAvatarIndexL( TInt aAvatarIndex ); - - /** - * AvatarMimeType: Returns the mime type of the avatar image for the conatct - * - * If nothing returns KNullDesC8 - * @param aContactIndex : Index of the conatct item - * - * @return TDesC8& mime type of the avatar - */ - const TDesC8& AvatarContent(TInt aContactIndex) ; - - /** - * SetAvatarIndex: Sets the index for avatar for for the corresponding contact item - * - * @param aContactIndex : Index of the conatct item - * @param aAvatarIndex: Index to be set - */ - void SetAvatarIndex( TInt aContactIndex, TInt aAvatarIndex ); - - /** - * AvatarIndex: Returns the avatar index for the corresponding contact item - * This index is used to append the avatar in the UI. - * If index is ' 0 ', then it means no avatar is set. - * - * @param aContactIndex : Index of the conatct item - * - * @return index of the own avatar - */ - TInt AvatarIndex(TInt aContactIndex) ; - - /** - * from MVIMPSTProcessArray - * Return index of aContactId (considering friend request also.). - * @param aContactId, contact id for which index to be found. - * @return, Index of aContactId including friend request. - */ - TInt GetSelectedItemIndex(const TDesC& aContactId); - - /* - * find and return the array item - */ - MVIMPSTProcessArrayItem* FindArrayItem( const TDesC& aSenderId ); - - /* - * reset all pending and open flags to EFalse - */ - void ResetOpenConversationPendingMsg(); - - /* - * @aIndex, index for the listbox item whose descriptor is needed - * @return, the descriptor for the array item to be used by listbox - */ - TPtrC16 GetFormattedString(TInt aIndex); - - - public: // From MVIMPSTStorageContactsObserver - - - /** - * HandleChange: To handle the Chnage event from the MCAStoredContactsObserver - * @see MCAStoredContactsObserver - * @param aList: reference to the list at which a change has occured - * @param aContact: reference to the contact at which a change has occured - * @param aEventType: TVIMPSTEnums::TCAObserverEventType,type of change event that has occured - * @param aUserIdChanged, ETrue if userid has changed, else EFalse. - * @return void - */ - void HandleStorageChangeL( TVIMPSTEnums::TVIMPSTStorgaeEventType aEventType, - MVIMPSTStorageContactList* aList, - MVIMPSTStorageContact* aContact, - TInt aContactIndex ); - - - private: // Implementation - - /** - * Default constructor - * @param aEngine, reference to engine. - */ - - CVIMPSTProcessArray( MVIMPSTEngine& aEngine ); - - /** - * Second phase constructor - */ - void ConstructL(); - - /** - * FillItemL: fill up the individual item in the array - * @return void - **/ - void FillItemL(); - /** - * FillOwnDataL: fill up fill the owndata item - * @return void - **/ - TBool FillOwnDataL(); - - /** - * FillArray: fill up the complete array - * @return void - **/ - void FillArrayL(); - - /** - * fill the unknown contact to main array - * @return void - **/ - void FillUnknownContactsL(); - /** - * FillAddRequestDataL: fill up the add request to array - * @return void - **/ - void FillAddRequestDataL(); - - /** - * remove all the unknown contacts from main array iItemArray, - * so that unknown contact can pesist till the session is entertainesd. - * @return void - **/ - void RemoveUnKnownContacts(); - /** - * RemoveAddRequestData: removes data from iItemArray, - * so that request can pesist till the reqest is entertainesd. - * @return void - **/ - void RemoveAddRequestData(); - - /** - * handlle the message which is from unknown buddy - * @param aSenderId , Sender Id - * @return void - **/ - void DoHandleUnKnownContactMessageL( const TDesC& aSenderId ,TBool aIsMsgPending); - - /** - * get the all open chat and append unknown contacts - * @return void - **/ - void GetAndCreateOpenChatListL(); - - /** - * remove the item from invitation or unknown array if found - * @param aContactId : conatct user Id - * @return ETrue if contact is removed - */ - TBool RemoveFromUnknonOrInvitationListL( const TDesC& aContactId , TBool aBlocked ) ; - /** - * play the incoming message tone. - */ - void PlayMsgBeepL(); - - /** - * @return ETrue if unread message exist - */ - TBool IsUnreadMessageExistsL(const TDesC& aRecipientId); - /** - * helper method for removing unknown contacts - * @return ETrue if contact is removed - */ - TBool RemoveFromUnknonListL( const TDesC& aAddedUserId ); - /** - * helper method for removing invitation contacts - * @return ETrue if contact is removed - */ - TBool RemoveFromInvitationListL( const TDesC& aAddedUserId ); - /** - * helper method for finding and marking as open chat - * @return ETrue if contact is find - */ - TBool FindAndMarkContactAsOpenChat( const TDesC& aContactId, TBool aMesssagePending ); - - private: // Data - - /** - * starting index of Owndata , it's 0 as per ui spec - **/ - TInt iOwnDataIndex; - - /** - * starting index of contacts , it's 0 as per ui spec - **/ - TInt iContactListIndex; - - //Ref to the engine item for current service - MVIMPSTEngine& iEngine; - - /** - * Flag to check whether own data added or not - **/ - TBool iOwnDataAdded; - - /** - * Owns. Buffer that hold's information about fetched item - **/ - HBufC* iData; - - - /** - * reference to the contact list interface - **/ - MVIMPSTStorageServiceView* iContactInterface; - - // owned : take RPointerArray if nedded - MVIMPSTProcessArrayObserver* iProcessObservers; - - /** - * list of items here - **/ - RPointerArray iItemArray; - - - /** - * reference to the contact list model - * not owned. - **/ - MVIMPSTStorageItemModel* iContactListModel; - - //service id - TUint32 iServiceId; - - TVIMPSTEnums::TVIMPSTRegistrationState iLoginState; - - /** - * reference list of friend request items here - **/ - RPointerArray iAddRequestArray; - - /** - * reference list of friend request items here - **/ - RPointerArray iUnKnownContactArray; - - // ETrue if fetch completed - TBool iFetchCompleted; - - // ETrue if engine supports IM subservice - TBool iIMSupported; - - // ETrue if engine supports Presence subservice - TBool iPresenceSupported; - - }; - -#endif // _CVIMPSTPROCESSARRAY_H - -// End of File