vtengines/videoteleng/Src/Base/CVtEngModel.cpp
changeset 0 ed9695c8bcbe
--- /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    <cvtlogger.h>
+#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<CVtEngMediaHandler&>( 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