phoneapp/phonemediatorcenter/src/cphonemediatorfactory.cpp
changeset 0 5f000ab63145
child 21 92ab7f8d0eab
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneapp/phonemediatorcenter/src/cphonemediatorfactory.cpp	Mon Jan 18 20:18:27 2010 +0200
@@ -0,0 +1,164 @@
+/*
+* 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: Implementation of CPhoneMediatorFactory class.
+*
+*/
+
+
+// INCLUDE FILES
+#include "cphonemediatorfactory.h"
+#include "phonelogger.h"
+#include "phoneconstants.h"
+#include "phoneui.pan"
+#include "cphonemediatorsender.h"
+#include "cphonemediatorcommandlistener.h"
+#include "cphonemediatormessagefactory.h"
+#include "mphonemenuandcbaevents.h"
+#include "mphoneenginemessagesender.h"
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// CPhoneMediatorFactory::Instance
+// Initializes the singleton object
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+EXPORT_C CPhoneMediatorFactory* CPhoneMediatorFactory::Instance()
+    {
+    CPhoneMediatorFactory* instance = static_cast<CPhoneMediatorFactory*> 
+        ( CCoeEnv::Static ( KUidMediatorFactorySingleton ) );
+    
+    if ( !instance )
+        {
+        TRAPD( err, instance = CPhoneMediatorFactory::NewL() );
+        if ( err )
+	        {
+	        Panic( EPhoneMediatorCenterCouldNotCreateSingleton );	
+	        }
+        }
+    return instance;
+    }
+
+// -----------------------------------------------------------------------------
+// CPhoneMediatorFactory::CPhoneMediatorFactory
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CPhoneMediatorFactory::CPhoneMediatorFactory() :
+    CCoeStatic( KUidMediatorFactorySingleton )
+    {
+    }
+
+// Destructor
+CPhoneMediatorFactory::~CPhoneMediatorFactory()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CPhoneMediatorFactory::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CPhoneMediatorFactory::ConstructL()
+    {
+    __LOGMETHODSTARTEND( EPhoneMediatorCenter, "CPhoneMediatorFactory::ConstructL( ) ");
+    }
+
+// -----------------------------------------------------------
+// CPhoneMediatorFactory::NewL()
+// Constructor
+// (other items were commented in a header).
+// -----------------------------------------------------------
+//
+CPhoneMediatorFactory* CPhoneMediatorFactory::NewL()
+    {
+    __LOGMETHODSTARTEND( EPhoneMediatorCenter, "CPhoneMediatorFactory::NewL( ) ");
+    
+    CPhoneMediatorFactory* self = new ( ELeave ) CPhoneMediatorFactory;
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CPhoneMediatorFactory::Sender
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CPhoneMediatorSender* CPhoneMediatorFactory::Sender()
+	{
+    __LOGMETHODSTARTEND( EPhoneMediatorCenter, "CPhoneMediatorFactory::Sender( ) ");
+    return CPhoneMediatorSender::Instance();
+	}
+
+// -----------------------------------------------------------------------------
+// CPhoneMediatorFactory::CommandListener
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CPhoneMediatorCommandListener* CPhoneMediatorFactory::CommandListener( 
+	MPhoneMenuAndCbaEvents* aMenuAndCbaEventHandler, 
+	MPhoneEngineMessageSender* aMessageSender,
+	MPEEngineInfo* aEngineInfo )
+	{
+    __LOGMETHODSTARTEND( EPhoneMediatorCenter, "CPhoneMediatorFactory::CommandListener( ) ");
+    
+    if( aEngineInfo && !iEngineInfo )
+	    {
+		iEngineInfo = aEngineInfo;	    	
+	    }
+    
+	if( aMenuAndCbaEventHandler && aMessageSender )
+		{
+		iMenuAndCbaEvents = aMenuAndCbaEventHandler;
+		iMessageSender = aMessageSender;
+		CPhoneMediatorCommandListener::Instance()->Initialize( aMenuAndCbaEventHandler,
+			aMessageSender, aEngineInfo );
+		}
+	else
+		{
+		// Sanity checks
+		__ASSERT_DEBUG( iMenuAndCbaEvents, Panic( EPhoneMediatorCenterParameterNotInitialized ) );
+		__ASSERT_DEBUG( iMessageSender, Panic( EPhoneMediatorCenterParameterNotInitialized ) );
+		__ASSERT_DEBUG( iEngineInfo, Panic( EPhoneMediatorCenterParameterNotInitialized ) );
+		}
+	return CPhoneMediatorCommandListener::Instance();
+	}
+
+// -----------------------------------------------------------------------------
+// CPhoneMediatorFactory::MediatorMessage
+// -----------------------------------------------------------------------------
+//
+EXPORT_C MPhoneMediatorMessage* CPhoneMediatorFactory::MediatorMessage(
+    const TInt aMessage, TInt aCallId )
+	{
+    __LOGMETHODSTARTEND( EPhoneMediatorCenter, "CPhoneMediatorFactory::MediatorMessage( ) ");
+	__ASSERT_DEBUG( iEngineInfo, Panic( EPhoneMediatorCenterParameterNotInitialized ) );
+
+	CPhoneMediatorMessageFactory* messageFactory = NULL;
+    MPhoneMediatorMessage* message = NULL;
+    
+	TRAPD( error, messageFactory = CPhoneMediatorMessageFactory::NewL( *iEngineInfo ) );
+	if( error == KErrNone )
+		{
+		TRAP_IGNORE( message = messageFactory->CreateMessageL( aMessage, aCallId ) );
+		delete messageFactory;
+		}
+
+	return message;
+	}
+
+// End of File