// Copyright (c) 2007-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:
//
#include <ecom/ecom.h>
#include "hwrmuipluginservice.h"
#include "hwrmuipluginresolver.h"
// CONSTANTS
// Plugin name must match the default_data field in the resource file (case sensitive!)
_LIT8( KPluginName, "HwrmUiPlugin" );
// -----------------------------------------------------------------------------
// CHwrmUiPluginService::NewL
// Factory method to create implementation. Implementation is found via ECom.
// -----------------------------------------------------------------------------
//
CHwrmUiPluginService* CHwrmUiPluginService::NewL()
{
TUid uiPluginUid(TUid::Null());
TAny* interface(NULL);
#ifdef _DEBUG
{
CHwrmUiPluginResolver* uiPluginResolver = CHwrmUiPluginResolver::NewLC();
TRAP_IGNORE(uiPluginResolver->GetDesiredPluginL(uiPluginUid));
CleanupStack::PopAndDestroy(uiPluginResolver);
}
#endif
if (uiPluginUid == TUid::Null())
{
// Set resolve parameters to find correct implementation
TEComResolverParams resolverParams;
resolverParams.SetDataType(KPluginName);
resolverParams.SetWildcardMatch(EFalse);
interface = REComSession::CreateImplementationL(KHwrmUiPluginServiceInterfaceUid,
_FOFF(CHwrmUiPluginService, iDestructorIDKey),
resolverParams,
KRomOnlyResolverUid);
}
else
{
interface = REComSession::CreateImplementationL(uiPluginUid,
_FOFF(CHwrmUiPluginService, iDestructorIDKey));
}
User::LeaveIfNull(interface);
CHwrmUiPluginService* service = reinterpret_cast<CHwrmUiPluginService*>(interface);
return service;
}
// End of File