wvuing/wvuiprocess/Inc/MCAMainViewArrayPC.h
changeset 0 094583676ce7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wvuing/wvuiprocess/Inc/MCAMainViewArrayPC.h	Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,776 @@
+/*
+* Copyright (c) 2006 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:  Interface for CCAMainViewArrayPC, to  be used by the
+*                single view array decorator to fill the listbox of the single view
+*
+*/
+
+
+#ifndef MCAMAINVIEWARRAYPC_H
+#define MCAMAINVIEWARRAYPC_H
+
+#include <e32base.h>
+#include <BADESCA.h>
+
+#include "TEnumsPC.h"
+#include "MCAMainViewObserverManagerPC.h"
+#include "MCAPresenceError.h"
+#include "MCAContactListModel.h"
+#include "MCAPresence.h"
+#include "ChatDefinitions.h"
+#include "MCAListInitObserver.h"
+
+const TInt KInitIndex = 0;
+const TInt KOwnDataIndex = 0;	// default value as per UI spec
+const TInt KOpenChatsIndex = 1; // default value as per UI spec
+
+
+//Forward Declarations
+class MCAMainViewObserverPC;
+class MCAStoredContact;
+class MCAInvitation;
+class MCAServerContactsArrayPC;
+class MCASingleListViewCB;
+class MCAArrayItemPC;
+// INTERFACE DECLARATION
+// Helper struct for holding the aItemID, aListID, aItemType
+struct TCAItemDetails
+    {
+    TBuf< 2 * KMaxWVIDLength > aItemID;
+    TBuf< KMaxWVIDLength > aListID;
+    TEnumsPC::TItem aItem;
+    };
+/*
+* MCAMainViewArrayPC: This is main interface of arraywrapper on
+* Process component side.UI Side array decorator has to use this
+* array and get the required details.
+*
+* @lib wvuiprocessng.lib
+*/
+class MCAMainViewArrayPC : public MCAMainViewObserverManagerPC
+    {
+
+    public: //destructor
+        virtual ~MCAMainViewArrayPC() {};
+
+
+    public: // From MCAMainViewObserverManagerPC
+        /**
+        * AddObserverL: To add the UI component as an observer to listen to the
+        * event from the MainViewArrayPC
+        * @see MCAMainViewObserverManagerPC
+        * @return void
+        */
+        virtual void AddObserverL( MCAMainViewObserverPC* aObserver ) = 0;
+
+        /**
+        * RemoveObserver: To remove the UI component as an observer to the
+        * events from the MainViewArrayPC
+        * @see MCAMainViewObserverManagerPC
+        * @return void
+        */
+        virtual void RemoveObserver( MCAMainViewObserverPC* aObserver ) = 0;
+
+        /**
+        * AddObserverL: To add the UI component as an observer to listen to the
+        * event from the MainViewArrayPC
+        * @see MCAMainViewObserverManagerPC
+        * @return void
+        */
+        virtual void AddObserver( MCASyncObserverPC* aObserver ) = 0;
+
+        /**
+        * RemoveObserver: To remove the UI component as an observer to the
+        * events from the MainViewArrayPC
+        * @see MCAMainViewObserverManagerPC
+        * @return void
+        */
+        virtual void RemoveObserver( ) = 0;
+
+    public:
+
+
+        /**
+        * SetSkipStorageEvents: Called by UI component to set flag for skipping
+        * storage events
+        * @param aSkip : A flag to check whether to skip strage events or not
+        * @return void
+        */
+        virtual void SetSkipStorageEvents( TBool aSkip ) = 0;
+
+        /**
+        * GetSkipStorageEvents: Called by UI component to get the flag for skipping
+        * storage events
+        * @return boolean
+        */
+        virtual TBool GetSkipStorageEvents() = 0;
+
+        /**
+        * Count: Called by UI components to get total count of array
+        * @return integer: Count of array
+        */
+        virtual TInt Count() const = 0; // total count of array
+
+        /**
+        * 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 TEnumsPC::TItem GetType( TInt aIndex ) const = 0;
+
+        /**
+        * IsCollapsed: To find if the list box item is collapsed
+        * @param aIndex: index of the list item
+        * @return bool: True if the list item is collapsed else false.
+        */
+        virtual TBool IsCollapsed( TInt aIndex ) const = 0;
+
+        /**
+        * 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.
+        */
+        virtual TBool IsMsgPending( TInt aIndex )  = 0;
+
+        /**
+        * IsBlocked: To find if the list item is a blocked contact
+        * @param aIndex: index of the list item
+        * @return bool: True if the list item is a blocked contact else false
+        */
+        virtual TBool IsBlocked( TInt aIndex ) const = 0;
+
+        /**
+        * ForceExpanded: To expand or collapse all the list items
+        * @param aAllExpanded: True if all items have to be expanded else false
+        * @return bool: True if there are pending messages else false.
+        */
+        virtual void ForceExpanded( TBool aAllExpanded ) = 0;
+
+        /**
+        * IsForceExpanded: To find if all the list items have been force expanded
+        * @return bool: True if all the list items are force expanded else false
+        */
+        virtual TBool IsForceExpanded() const = 0;
+
+        /**
+        * GetOnlineStatus: To get the online status of the list item as Online,
+        * Away, Busy etc
+        * @param aIndex: Index of the list item
+        * @return TEnumsPC::TOnlineStatus
+        */
+        virtual TEnumsPC::TOnlineStatus GetOnlineStatus( TInt aIndex ) = 0;
+
+
+        /**
+        * SetCollapsed: To set the list item to a collapsed or expanded state
+        * @param aStatus: The collapsed or expanded state to be set for the list item
+        * @param aIndex: Index of the list item whose state has to be set
+        * @return void
+        */
+        virtual void SetCollapsed( TBool aStatus , TInt aIndex )  = 0;
+
+        virtual void SetSelected( TBool aSelected, TInt aIndex ) = 0;
+
+        virtual void GetSelectedL(  CDesCArray& aSelectedContact,
+                                    CDesCArray* aSelectedIdentifications,
+                                    TEnumsPC::TFilterType aFilter ) = 0;
+
+        /**
+        * SetMsgPending: To set the pending messages for a list item
+        * @param aPendingMsgs: The no. of pending messages to be set for the list item
+        * @param aIndex: Index of the list item
+        * @return void
+        */
+        virtual void SetMsgPending( TInt aPendingMsgs, TInt aIndex )  = 0;
+
+        /**
+        * SetBlocked: To set the blocked status of a list item of type contact
+        * @param aStatus: The blocked status  to be set for the list item
+        * @param aIndex: Index of the list item whose status has to be set
+        * @return void
+        */
+        virtual void SetBlocked( TBool aStatus , TInt aIndex )  = 0;
+
+        /**
+        * SetOnlineStatus: To set the online status of a list item
+        * @param aStatus: The online status to be set for the list item
+        * @param aIndex: Index of the list item whose status has to be set
+        * @return void
+        */
+        virtual void SetOnlineStatus( TEnumsPC::TOnlineStatus aStatus,
+                                      TInt aIndex ) = 0;
+
+        /**
+        * 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 ) = 0;
+
+        /**
+        * ClearArray: clear everything in the array
+        * @return void
+        */
+        virtual void ClearArray( TBool aClearOpenChatsArray ) = 0;
+        // clear everything in the array.....
+
+        /**
+        * RefreshArray: clear and fill with the new data in the array
+        * @return void
+        */
+        virtual void ResetArray( TBool aClearOpenChatsArray ) = 0;
+
+        /**
+        * SetDefaultFilter: To set the default filters of each item
+        * @param aMyFilter: TEnumsPC::TFilterType to be set
+        * @return void
+        */
+        virtual void SetDefaultFilter( TEnumsPC::TFilterType iMyFilter ) = 0;
+
+        /**
+        * ResetDefaultFilter: To reset the default filters of each item
+        * @return void
+        */
+        virtual void ResetDefaultFilter() = 0;
+
+        /**
+        * GetDefaultFilter: To get the default filters of list item
+        * @return TEnumsPC::TFilterType: type of filter
+        */
+        virtual TEnumsPC::TFilterType GetDefaultFilter() const = 0;
+
+        /**
+        * ClientType: To get the client type of list item at given index
+        * @return TEnumsPC::TClientType: type of client
+        */
+        virtual TEnumsPC::TClientType ClientType( TInt aIndex ) = 0;
+
+        /**
+        * Selected: To know if the list item at given index is selected currently
+        * @param aIndex: index of list item
+        * @return bool: true if the list item at given index is selected currently else false
+        */
+        virtual TBool Selected( TInt aIndex ) = 0;
+
+        /**
+        * IsWatched: To get the status on whether the list item at given index is
+        * being watched for notifications on that contacts online status changes
+        * @param aIndex: index of list item
+        * @return bool: true if the contact is being watched else false
+        */
+        virtual TBool IsWatched( TInt aIndex ) = 0;
+
+        /**
+        * Synchronised: To get the synchronised status for the list item
+        * @param aIndex: index of list item
+        * @return TEnumsPC::TSyncStatus: the synchronization status of the list item
+        */
+        virtual TEnumsPC::TSyncStatus Synchronised( TInt aIndex ) = 0;
+
+        /**
+        * IsAllSynchronised: To get the synchronised status of all the list items
+        * @return TEnumsPC::TSyncStatus: the synchronization status of all the items
+        */
+        virtual TEnumsPC::TSyncStatus IsAllSynchronised() = 0;
+
+        /**
+        * AddWatcher: To add watcher to presence
+           */
+        virtual void AddWatcherL( TPtrC contact/*wvid*/ ) = 0;
+
+        /**
+        * RemoveWatcher: To remove watcher from presence
+        *
+        */
+        virtual void RemoveWatcherL( TPtrC contact/*wvid*/ ) = 0;
+
+        /**
+        * Refreshes friends-storage presence data.
+        */
+        virtual void RefreshFriendsL() = 0;
+
+        /**
+        * Places all friends (from aUserList) that are online to aOnlineList
+        * and users that are offline to aOfflineList.
+        * @param aUserList List of users, whose presence data is to be fetched.
+        * @param aOnlineList List of users, that are online, can be NULL.
+        * @param aOfflineList List of users, that are offline, can be NULL.
+        * @param aUpdateStorage If ETrue, contact storage flags are updated
+        */
+        virtual void GetOnlineUsersL(
+            const CDesCArray *aUsers,
+            CDesCArray* aOnlineList,
+            CDesCArray* aOfflineList,
+            TBool aUpdateStorage = EFalse ) = 0;
+        /**
+        * Invoke the fetch contacts method from presence component
+        */
+        virtual void FetchContactsL() = 0;
+        /**
+         * Changes client own presence status, and sets status message
+         * @param aStatus Presence status -online,oflline etc
+         * @param aStatusMessage Presence status message
+         * @return Error code.
+         */
+        virtual TInt ChangeStatusL( TEnumsPC::TOnlineStatus aStatus,
+                                    const TDesC& aStatusMessage ) = 0;
+
+        /**
+         * Changes presence status message
+         * @param aStatusMessage Presence status message
+         * @return Operation error.
+         */
+        virtual TInt ChangeStatusMessageL( const TDesC& aStatusMessage ) = 0;
+
+        /**
+        * StatusL: To get the own status like Online, Away, Busy etc
+        * @return TEnumsPC::TOnlineStatus
+        */
+        virtual TEnumsPC::TOnlineStatus StatusL() = 0;
+
+        /**
+        * GetOwnStatusConverter: To get TEnumsPC:TOnlineStatus type of enum from
+        * the presence side MCAPresence::TPresenceStatus enums for own status
+        * @param aPresenceStatus: presence side MCAPresence::TPresenceStatus enums
+        * @return TEnumsPC::TOnlineStatus
+        */
+        virtual TEnumsPC::TOnlineStatus GetOwnStatusConverter(
+            MCAPresence::TPresenceStatus  aPresenceStatus ) = 0;
+    public :
+
+        /*
+        * gets the alias of the specified contact at aIndex
+        * @param aIndex: index of contact
+        * @return the alias
+        */
+        virtual const TDesC& GetSelectedContactAlias( TInt aIndex ) = 0;
+
+        /*
+        * gets the nickname of the specified contact at aIndex
+        * @param aIndex: index of contact
+        * @return the nickname
+        */
+        virtual const TDesC& GetSelectedContactNickname( TInt aIndex ) = 0;
+
+        /*
+        * gets the user id of the specified contact at aIndex
+        * @param aIndex: index of contact
+        * @return the user id
+        */
+        virtual const TDesC& GetSelectedContactUserId( TInt aIndex ) = 0;
+
+        /*
+        * gets the identification of the specified contact at aIndex
+        * @param aIndex: index of contact
+        * @return the identification
+        */
+        virtual const TDesC& GetSelectedContactIdentification( TInt aIndex ) = 0;
+
+
+    public:
+
+        /**
+        * IgnoreOfflineStatusL: To decide whether to ignore the offline status of a contact
+        * @param aIndex: index of the contact item in the listbox
+        * @return bool: true if the offline status of contact can be ignored else return false
+        */
+        virtual TInt IgnoreOfflineStatusL( TInt aIndex ) = 0;
+        /**
+         * SetMessageReadInterfaceL: Calls the MessageReadInterface() of engine component
+         * to set the read interface
+         * @param aIndex: index of contact for whom the read interface (conversation) has
+         * to be set
+         * @return void
+        */
+        virtual void SetMessageReadInterfaceL( TInt aIndex ) = 0;
+
+        /**
+         * ChatExistsL: Checks if there is an existing chat for the contact
+         * at index
+         * @param aIndex: index of contact for which the existing
+         * conversation has to be checked
+         * @return bool: If chat exists for contact at aIndex return true
+         * else return false
+         */
+        virtual TBool ChatExistsL( TInt aIndex ) = 0;
+
+        /**
+         * IndexOfList: find the index of the list if the item is a contact list else find the
+         * index of parent contactlist of the contact at aIndex
+         * @param aIndex: index of contactitem or list whose list index has tto be returned
+         * @return TInt: If the item is a contactlist type return aIndex else it will return
+         * the index of the parent contactlist of the contactitem type
+         */
+        virtual TInt IndexOfList( TInt aIndex,
+                                  TBool aIgnoreOwnItem = EFalse,
+                                  TBool aIgnoreEmptyLists = ETrue ) const = 0;
+
+        /**
+         * Check if synchronization of contact lists is done
+         * @return ETrue if done
+         */
+        virtual TBool IsSyncDoneL() = 0;
+
+
+        /**
+        * To create a contact list with given name
+        * @param aDisplayName: name of the list to be created
+        * @return KErrNone if list is created else retrun KErrAlreadyExists
+        */
+
+        virtual TInt CreateContactListL( const TDesC& aDisplayName ,
+                                         TInt& aIndex ) = 0;
+
+        /**
+        * To sort the contact list in alphbetical order
+        * @param alistId: list id of renamed contact list
+        */
+        virtual TInt SortContactListAfterRenameL( const TDesC& aListId ) = 0 ;
+
+        /**
+        * Find if there is a list with given name already
+        * @param aNamePtr: name of the list to be searched
+        * @return KErrNone if theres no list with the name aNamePtr else return KErrAlreadyExists
+        */
+
+        virtual TInt ListAlreadyExistsL( const TPtr aNamePtr ) = 0;
+
+        /**
+         * Check if there are any contact list in the contact lists
+         * @return KErrGeneral if no contact list is available else return KErrNone
+         */
+        virtual TInt ContactListsExistL() = 0;
+
+
+        /**
+         * Find the no. of contact items in the contact list
+         * @param aIndex: the index of contact list
+         * @return TInt: the no. of contact items in the list at aIndex
+         */
+        virtual TInt CountOfContactsInList( TInt aIndex ) = 0;
+
+        /**
+         * Count of lists.
+         * @return Count of lists.
+         */
+        virtual TInt ListCountL() const = 0;
+
+        /**
+         * Delete the contact list
+         * @param aIndex:    ID of the list
+         * @return Error code
+         */
+        virtual TInt DeleteContactListL( TInt aIndex ) = 0;
+
+        /**
+        * Deletes one contact from server side contact list
+        * @param aIndex: Index of list to be updated
+        * @return Error code
+        */
+        virtual TInt DeleteServerContactL( TInt aIndex ) = 0;
+
+        /*
+        * gets the list id of the specified list at aIndex
+        * @param aIndex: index of list
+        * @return the list id
+        */
+        virtual const TDesC& GetSelectedListId( TInt aIndex ) = 0;
+
+        /**
+        * Find a contact from the store by wv User ID
+        * @param aContactListId List which contains contact.
+        * @param aId the User ID of the contact to find
+        * @return The contact
+        */
+        virtual TInt FindContactL( const TDesC& aContactListId,
+
+
+                                   const TDesC& aId ) = 0;
+
+
+
+        /**
+        * Find a contact list from the store by wv User ID
+        * @param aContactListId List which contains contact list id.
+        * @return The contact list index
+        */
+        virtual TInt FindContactListIndexL( const TDesC& aListId ) = 0;
+
+
+        /**
+        * Get the status text for the contact
+        * @param aIndex: Index of contact item
+        * @return Error code
+        */
+        virtual const TDesC& StatusText( TInt aIndex ) const = 0;
+
+        /**
+         * Construct an array of contact list positions in model.
+         * aPositionArray is cleared before appending positions!
+         * @param aPositionArray array in which to store positions
+         * @return none
+         */
+        virtual void MapContactListPositions( RArray<TInt>& aPositionArray ) = 0;
+        /*
+        * gets the displayname of the specified List at aIndex
+        * @param aIndex: index of list
+        * @return the displayname
+        */
+
+        virtual TPtrC DisplayName( TInt aIndex ) = 0;
+
+        /**
+        * SetDisplayName: To set/rename item name of each list item
+        * @param aIndex: Index of the list item whose name is to be changed/set
+        * @param aItemName: name to be set for the list item at specified index
+        * @return TInt: Error code to check if the name has been set
+        */
+        virtual TInt SetDisplayNameL( TInt aIndex, const TPtrC aItemName ) = 0;
+
+
+        /**
+         *Sets the selectionmode
+         */
+        virtual void SetContactSelectionL(
+            TEnumsPC::TListSelectionType aSelectionMode,
+            TInt aSelectedListIndex ) = 0;
+        /**
+         *Sets the selectionmode
+         */
+        virtual void ResetContactSelectionL() = 0;
+
+        /**
+         * Should the model show "All" item in beginning
+         * of each contact list.
+         * @param aShow If ETrue, first item in every contact list is "All"
+         */
+        virtual void ShowAll( TBool aShow ) = 0;
+
+        /**
+         * GetFilteredCount
+         */
+        virtual TInt GetFilteredCount(
+            TEnumsPC::TFilterType aFilter, TInt aIndex ) = 0;
+
+        /**
+         * Clears all selected-flags
+         */
+        virtual void ClearSelectedL( ) = 0;
+
+        //for invitations
+        /**
+         * Returns index for given invitation
+         * @param aIndex
+         * @return index of invitation
+         */
+        virtual TInt GetItemEngineIndex( TInt aIndex  ) const = 0;
+
+        /**
+        * ToUpdatePresence: To get the information on whether presence has to be updated
+        * by anding the two filters
+        * @parm aFilter1: TEnumsPC::TFilterType
+        * @parm aFilter2: TEnumsPC::TFilterType
+        */
+        virtual TBool ToUpdatePresence( TEnumsPC::TFilterType aFilter1,
+                                        TEnumsPC::TFilterType aFilter2 ) = 0;
+
+        /**
+         * Returns index of invitation for given wvid and
+         * Deletes item from array.
+         * @since 3.2
+         * @param Index of invitation
+         */
+        virtual TInt FindInvitationAndDelete(
+            const TDesC& aInviteID /*TInt aIndex*/ ) = 0;
+
+        /**
+         * Returns index of invitation for given wvid and
+         * Deletes item from array.
+         * @since 3.2
+         * @param Index of invitation
+         */
+        virtual TInt FindInvitationAndDelete( TInt aIndex ) = 0;
+
+        /**
+        * Find any contact which id is aContactId
+        * @param aContactId Contactid to recognize contact.
+        * @return ETrue if contact found else EFalse
+        */
+        virtual TBool FindAnyContactL( const TDesC& aContactId ) = 0;
+
+
+        /**
+        * Set a separate filter for the single list view array items
+        * @param aFilter: filter to be set
+        */
+        virtual void SetSingleListArrayFilter(
+            TEnumsPC::TFilterType aFilter ) = 0;
+        /**
+        * Get a separate filter for the single list view array items
+        * @return filter
+        */
+        virtual TEnumsPC::TFilterType GetSingleListArrayFilter() = 0;
+
+        /**
+        * To set the filter type for engine
+        */
+        virtual void SetFilter( TEnumsPC::TFilterType aFilter ) = 0;
+
+        /**
+        * To get the filter type for engine
+        */
+        virtual TEnumsPC::TFilterType Filter() = 0;
+
+
+        /**
+        * Fills aOnlineList with the user id's from friends-list that are
+        * online.
+        * @param aOnlineList List that will be populated with online friends.
+        * @param aFetchFromNetwork Fetch presence information from network
+        */
+        virtual void GetOnlineContactsL( CDesCArray& aOnlineList,
+                                         TBool aFetchFromNetwork = EFalse ) = 0;
+
+        /**
+         * Gets the details of the given index
+         * like aItemId, aListId,aItemType.
+         * @return teh structure filled with tha above details.
+         */
+        virtual TCAItemDetails GetArrayItemIdDetails( TInt aIndex ) = 0;
+
+        /**
+         * Gets the Index, given item details
+         * like aItemId, aListId,aItemType.
+         * @return the index
+         */
+        virtual TInt GetArrayItemIdIndexL( const TCAItemDetails& aItemDetails ) = 0;
+
+        /**
+         * Registers the singlelistview for callback.
+         */
+        virtual void RegisterCallBack( MCASingleListViewCB* aSingleViewCB ) = 0;
+
+        /**
+         * UnRegisters the singlelistview for callback.
+         */
+        virtual void UnRegisterCallBack( ) = 0;
+
+        /**
+         * @return returns ETrue if any contact is found in contactlists
+         * else returns EFalse if no contact is found
+         */
+        virtual TBool IsAnyContactFound() = 0;
+
+        /**
+         * Populate the group array iGroupArray with groups
+         */
+        virtual void  PopulateGroupsListL() = 0;
+
+        /**
+        * To set the group count down flag, for each logout. For the first time login
+        * it is set in the constructor to EFalse. This flag ensures that the
+        * initial deletion of groups from iGroupArray and the subsequent additions
+        * of user created groups are not reflected on the UI
+        */
+        virtual void ResetGroupCountDownOnLogout() = 0;
+
+
+        virtual const TDesC& GetInviteItemID( TInt aIndex ) = 0;
+
+        virtual const RPointerArray<MCAArrayItemPC>& GetOpenChatsArray() const = 0;
+
+        /**
+        * @returns the index of the given item W.R.T singlelistview.
+        */
+        virtual TInt FindIndexOfOpenChatsItem( TEnumsPC::TItem aItemType,
+                                               const TDesC& aId ) = 0;
+
+        virtual TInt GetOpenChatsActiveIndex()const = 0;
+
+        /**
+         * Sets the focus to the owndata on logout.
+         */
+        virtual void SetCurrentItemIndexL( TBool aFreshLogin = EFalse ) = 0;
+
+
+    public: //Added methods for sorting of openchats
+
+        virtual void InsertConversationItemL( const TDesC& aUserId,
+                                              const TDesC& aIdentification ) = 0;
+        virtual void RemoveConversationItem( const TDesC& aUserId ) = 0;
+
+        virtual TBool IsOpenChatsMsgPending(
+            const TEnumsPC::TItem aType,
+            const TDesC& aId ) = 0;
+
+        /**
+         * First pending message containers WVID.
+         * @return First pending message WVID.
+         */
+        virtual const TDesC& PendingMessageInfo() = 0;
+
+        /**
+         * First pending message containers groupID.
+         * @param First pending message groupName.
+         * @return First pending message groupID.
+         */
+        virtual const TDesC& ChatGroupPendingMessageInfo( TDesC& aGroupName ) = 0;
+
+
+        /**
+        * RegisterObserverL: To add the UI component as an observer to listen to the
+        * event from the MainViewArrayPC
+        * @see MCAListInitObserver
+        * @return void
+        */
+        virtual void RegisterObserverL( MCAListInitObserver* aObserver ) = 0;
+
+        /**
+        * UnRegisterObserverL:
+        * @see MCAListInitObserver
+        * @return void
+        */
+        virtual void UnRegisterObserverL() = 0;
+
+        /**
+        * AIsListInitializationCompleteL:
+        * @return Bool value
+        */
+        virtual TBool IsListInitializationCompletedL()  = 0;
+
+
+        /**
+         * Refresh the conversation item in openchats to
+         * reflect the changes upon addation/chang/deletion of a contact
+         * @param aContactId: userId whose nickname is changed.
+         */
+        virtual void RefreshConversationItemText( const TDesC& aContactId ) = 0;
+        /**
+         * Refresh the invitation item in openchats to
+         * reflect the changes upon addation/chang/deletion of a contact
+         * @param aContactId: userId whose nickname is changed.
+         */
+        virtual void RefreshInvitationItemTextL( const TDesC& aContactId ) = 0;
+        /*
+        *Get the index of top pending conversation in single list view.
+        *This index can be used high light that perticular item.
+        */
+        virtual TInt GetIndexOfTopPendingMessage() = 0;
+
+    };
+
+#endif      // MCAMAINVIEWARRAYPC_H
+