imservices/instantmessagingcache/imcacheclient/inc/cimcacheaccessor.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 19 Aug 2010 10:14:19 +0300
branchRCL_3
changeset 20 eedf17a17c27
parent 0 e6b17d312c8b
permissions -rw-r--r--
Revision: 201031 Kit: 201033

/*
* 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:  class declaration for accessing the cache
*
*/



#ifndef __CIMCACHEACCESSOR_H__
#define __CIMCACHEACCESSOR_H__

#include <e32base.h>
#include "mimcacheaccessor.h"
#include "cimcacheclient.h"

class MIMCacheEventHandler;

/**
 * write right class declaration
 */
 
NONSHARABLE_CLASS( CIMCacheAccessor ): public CBase,
								 public MIMCacheAccessor
    {
	public:
		/**
		* Two-phased constructor.
		* @param aServiceId, service id to used
		* @param aUserId, user id who is conversing
		*/
		static CIMCacheAccessor* NewL(TInt aServiceId,
										const TDesC& aUserId );
		/**
		* virtual destructor.
		*/
    	virtual ~CIMCacheAccessor();

		
	private:
	
		/**
		* ConstructL.
		* @param aUserId, user id who is conversing
		*/
		
    	void ConstructL( const TDesC& aUserId );
    	
    	/**
		* default constructor.
		* @param aServiceId, service id to used
		*/
		CIMCacheAccessor(TInt aServiceId);

	
	private: // from MIMCacheAccessor

		/**
    	* Register to observer instantmessagingcache data updates
    	* @param aObserver the observer interface
    	*/
        void RegisterObserverL( MIMCacheEventHandler& aObserver );

    	/**
    	* Unregister a instantmessagingcache data update observer
    	* @param aObserver the observer interface
    	*/
        void UnRegisterObserver( MIMCacheEventHandler& aObserver);
        	
       
       	/**
    	* to get the unread message count from server
    	* @param aOwnUserId , logged in user id
    	* @return number of unread msg count
    	*/
       TInt GetUnreadMessageCountL(const TDesC& aBuddyId );
		
		 /**
    	* to get the all unread message count from server
    	* @param , aOwnUserId logged in user id
    	* @return number of all unread msg count
    	*/
        TInt GetAllUnreadMessageCountL();		
			 						
		/**
         * check if already conversation opened
         * @param aServiceId, serviceid to use
         * @param aOwnUserId, own user id 
         * @param aRecipientId, the selected user id with whom conversation is started
         * @return ETrue if already exist else EFlase.
         */
        TBool IsConversationExistL( const TDesC& aBuddyId )  ;
        
        /**
        * closes conversation and commit operation
        * @param aServiceId service id.
        * @param aOwnId own user id.
        * @param aRecipientId recipient's user id.
        */
        void CloseConversationL( const TDesC& aBuddyId );
        
        
        /**
        * get the chat list corresponding to service
        * @param aServiceId service id
        * @return Array of chats
        */
        RArray<SIMCacheChatItem> GetChatListL( const TInt aServiceId  ); 
   
	private :
		/**
         * default constructor.
         * @param aServiceId, service id to used
         */
        void InternalizeChatListL( RArray<SIMCacheChatItem>& aChatArray, TPtr8 aChatListBuffer, TBool& aMore );
        	 
    public : // new api
    	
       /**
		* return the serviceid
		*/
    	TInt ServiceId() const ;	        
		
	private: // data

		// owned , user id
		HBufC* iUserId;
		
		// not owned , client
		CIMCacheClient iClient;
		
		// owned, service id
		TInt iServiceId;
	
    };

#endif      //  __CIMCACHEUPDATER_H__


//  END OF FILE