diff -r 000000000000 -r ed9695c8bcbe vtengines/videoteleng/Src/Base/CVtEngModel.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vtengines/videoteleng/Src/Base/CVtEngModel.cpp Mon Nov 23 14:47:47 2009 +0200 @@ -0,0 +1,189 @@ +/* +* 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: Video telephony engine class implementation. +* +*/ + + + +// INCLUDE FILES +#include "CVtEngModel.h" +#include "CVtEngHandlerContainer.h" +#include "CVtEngCommandHandler.h" +#include "CVtEngEventManager.h" +#include "CVtEngStateManager.h" +#include "VtEngUtils.h" +#include "VtEngPanic.h" +#include +#include "CVtEngExtensions.h" + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CVtEngModel::CVtEngModel +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +CVtEngModel::CVtEngModel() + { + } + +// ----------------------------------------------------------------------------- +// CVtEngModel::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CVtEngModel::ConstructL( + MVtEngEventObserver& aEventObserver, + MVtEngCommandObserver& aCommandObserver ) + { + VTLOGINIT + __VTPRINTENTER( "Model.ConstructL" ) + + __VTPRINT( DEBUG_GEN | DEBUG_CONSTRUCT, "Model.ConL" ) + iUtils = CVtEngUtility::NewL( ); + iHandlers = CVtEngHandlerContainer::NewL( ); + + // Create extensions + iExtensions = CVtEngExtensions::NewL(); + + iUtils->PrepareL( + *iHandlers, + iStateManager, + iEventManager, + iExtensions ); + iCommandHandler = CVtEngCommandHandler::NewL( *iHandlers ); + iCommandHandler->AddObserverL( aCommandObserver ); + iEventManager = CVtEngEventManager::NewL( aEventObserver ); + iStateManager = CVtEngStateManager::NewL( *iHandlers, *iEventManager ); + __VTPRINTEXIT( "Model.ConstructL" ) + } + +// ----------------------------------------------------------------------------- +// CVtEngModel::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +EXPORT_C CVtEngModel* CVtEngModel::NewL( + MVtEngEventObserver& aEventObserver, + MVtEngCommandObserver& aCommandObserver) + { + CVtEngModel* self = new( ELeave ) CVtEngModel; + + CleanupStack::PushL( self ); + self->ConstructL( aEventObserver, aCommandObserver ); + CleanupStack::Pop(); + + return self; + } + + +// Destructor +CVtEngModel::~CVtEngModel() + { + __VTPRINTENTER( "Model.~" ) + delete iStateManager; + delete iCommandHandler; + delete iHandlers; + delete iUtils; + delete iEventManager; + delete iExtensions; + __VTPRINTEXIT( "Model.~" ) + VTLOGUNINIT + } + +// ----------------------------------------------------------------------------- +// CVtEngModel::CommandHandler +// Returns command handler reference. +// ----------------------------------------------------------------------------- +// +EXPORT_C MVtEngCommandHandler& CVtEngModel::CommandHandler() const + { + return *iCommandHandler; + } + +// ----------------------------------------------------------------------------- +// CVtEngModel::Session +// Returns session reference. +// ----------------------------------------------------------------------------- +// +EXPORT_C MVtEngSessionInfo& CVtEngModel::Session() const + { + return iHandlers->Session(); + } + +// ----------------------------------------------------------------------------- +// CVtEngModel::Media +// Returns media reference. +// +// ----------------------------------------------------------------------------- +// +EXPORT_C MVtEngMedia& CVtEngModel::Media() const + { + return iHandlers->Media(); + } + +// ----------------------------------------------------------------------------- +// CVtEngModel::Audio +// Returns audio reference. +// ----------------------------------------------------------------------------- +// +EXPORT_C MVtEngAudio& CVtEngModel::Audio() const + { + return iHandlers->Audio(); + } + +// ----------------------------------------------------------------------------- +// CVtEngModel::Extension +// Returns extension pointer (currently none) +// ----------------------------------------------------------------------------- +// +EXPORT_C TAny* CVtEngModel::Extension( const TUid& aExtensionUid ) + { + __VTPRINTENTER( "Model.Extension" ) + + // init local variables + TInt error = KErrNone; + TAny* interfacePtr = NULL; + + // get mediahandler handle + MVtEngMedia& msession = iHandlers->Media(); + CVtEngMediaHandler& handler = static_cast( msession ); + + // get API IF from extension + error = iExtensions->GetClientInterface( &interfacePtr, aExtensionUid , + handler ); + + // in case of error + if ( error != KErrNone ) + { + __VTPRINTEXITR( "Model.Extension GetClientInterface failed %d", error) + return NULL; + } + + __VTPRINTEXIT( "Model.Extension" ) + return interfacePtr; + } + +// Engine's internal panic function +void Panic( TVtEngPanic aPanic ) + { + __VTPRINT2( DEBUG_GEN, "EnginePanic %d", aPanic) + User::Panic( KVtEngPanicCategory, aPanic ); + } + +// ========================== OTHER EXPORTED FUNCTIONS ========================= + +// End of File