imstutils/imconversationview/imcvuiengine/inc/mimcvenginefactory.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 02 Feb 2010 10:12:18 +0200
changeset 0 5e5d6b214f4f
permissions -rw-r--r--
Revision: 201003 Kit: 201005

/*
* Copyright (c) 2008-2009 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:  service engine factory class interface
*
*/

#ifndef MIMCVENGINEFACTORY_H
#define MIMCVENGINEFACTORY_H
#include <e32def.h>

//FORWARD DECLARATION
class CIMCVEngine;
class MIMCVEngineConnectionHandler;
class MIMCVEngineOpenChatsObserver;
class MIMCVEngineServiceChangeObserver;
//CLASS  DECLARATION
/**
 *  
 *  This class list the M-Class for Engine factory
 *
 *  @lib vimpstengine.lib
 *  @since S60 5.0
 */
class MIMCVEngineFactory
    {

public:	

    /**
     * return the engine instance for aServiceId.
     */
    virtual CIMCVEngine& GetServiceEngineL( TInt aServiceId ) = 0 ;

    /**
     * find and release the engine instance for aServiceId.
     */
    virtual void ReleaseServiceEngine( TInt aServiceId ) = 0 ;


    /**
     * GetDisplayNameL: returns the Identification       
     * @param aIndex - Index of the item for which Identification 
     *                 is required
     * @return TPtrC - Identification
     */
    virtual TPtrC GetDisplayNameL(TInt aIndex) const = 0;


    /**
     * GetTargetIdL: returns the Conversation Party ID      
     * @param aIndex - Index of the item 
     * @return Conversation Party ID
     */
    virtual const TDesC& GetTargetIdL(TInt aIndex) const = 0;


    /**
     * Count: Returns the number of items              
     * @return TInt - Total number of openchats item
     */
    virtual TInt Count() const = 0;


    /**
     * SetActiveItemL: Sets the item as the current active one       
     * @param aIndex - Index of the item
     * @return void
     */      
    virtual void SetActiveItemL( const TInt aIndex ) = 0;


    /**
     * GetActiveItem: Gets the current active conversation        
     * @return Active Conversation Party Id
     */
    virtual const TDesC& GetActiveItemL() const = 0;

    /**
     * Returns the pending messages status of the contact item 
     * @param aIndex - Index of the item
     * @return bool: true if the conversation item has pending messages
     * else return false
     */      
    virtual TBool IsMsgPendingL( const TInt aIndex ) const = 0;

    /**
     * Find the index of the item in the Conversation List 
     * @param aItem - Conversation Party Id      
     * @return aIndex - Index of the item        
     */
    virtual TInt FindIndexL(const TDesC& aItem) = 0;

    virtual void ResetL() = 0;
    
    /**
     * @see MVIMPSTEngineFactory
     */
    virtual void RegisterOpenChatObserver(MIMCVEngineOpenChatsObserver* aChatObserver) = 0 ;
    /**
     * @see MVIMPSTEngineFactory
     */
    virtual void UnRegisterOpenChatObserver() = 0 ;
    
       
    virtual TInt GetActiveServiceId() = 0 ;
	/*
	* return all availabe service engines
	*/
    virtual RPointerArray<CIMCVEngine>&  GetServiceEngines() = 0;
    /**
     * @see MVIMPSTEngineFactory
     */
    virtual void RegisterServiceObserver(MIMCVEngineServiceChangeObserver* aServiceObserver) = 0 ;
    /**
     * @see MVIMPSTEngineFactory
     */
    virtual void UnRegisterServiceObserver() = 0 ;
    
    /**
     * ~CVIMPSTEngineFactory 
     * dont call delete 
     */
    virtual ~MIMCVEngineFactory() 
        {

        }

    };

#endif //MIMCVENGINEFACTORY_H