mmsharinguis_plat/live_comms_plugin_api/inc/lcengine.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 31 Aug 2010 15:12:07 +0300
branchRCL_3
changeset 22 73a1feb507fb
permissions -rw-r--r--
Revision: 201032 Kit: 201035

/*
* Copyright (c) 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: 
*
*/

#ifndef CLCENGINE_H
#define CLCENGINE_H

// INCLUDES
#include <e32base.h>

// FORWARD DECLARATIONS
class MLcSession;

// CONSTANTS
/** Interface UID of this ECOM interface */
const TUid KLcEngineInterfaceUid = { 0x20021340 };

// CLASS DECLARATION
/**
* A base class for ECom plug-ins implementing
* the Live Comms engine plug-in API. 
*/
class CLcEngine : public CBase
    {
    public: // Enumerations

        /**
        * The list of plug-in configurable features.
        */
        enum TLcFeature
            {
            ELcShowInvitingNote,
            ELcShowWaitingNote,
            ELcShowAcceptQuery,
            ELcSendVideoQuery
            };

    public: // Constructors and destructor
    
        /**
        * Loads and creats an instance of the plug-in.
        * @param aEngineName used in finding the correct implementation.
        * Matched to the IMPLEMENTATION_INFO / default_data of the plug-in.
        * @return a new instance of CLcEngine, the ownership is transferred
        */
        inline static CLcEngine* NewL( const TDesC8& aEngineName );
    
        /**
        * Destructor
        */
        inline ~CLcEngine();

    public: // New pure virtual functions
    
        /**
        * Returns a reference to the session created by the plug-in.
        * @return the session
        */
        virtual MLcSession& Session() = 0;

    public: // New virtual functions    
        
        /**
        * Checks if a feature should be used with the particular engine.
        * @param aLcFeature the identifier of the feature
        * @return ETrue if the feature is supported, otherwise EFalse.
        */
        inline virtual TBool IsFeatureSupported( TLcFeature aLcFeature );

    protected: // Constructors

        inline CLcEngine();
    
    public: // Data

        TUid iInstanceKey;
    };

#include "lcengine.inl"    
    
#endif // CLCENGINE_H

// end of file