--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/alfwidgetutils/src/alfwidgetfactoryloaderimpl.cpp Thu Dec 17 08:56:02 2009 +0200
@@ -0,0 +1,91 @@
+/*
+* Copyright (c) 2007 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: Encapsulates factory plugin loading mechanism
+*
+*/
+
+
+
+#include <ecom/ecom.h>
+//#include <alf/alfecompluginfactoryuid.rh>
+#include <alf/ialfwidgetfactory.h>
+#include <alf/ialffactoryplugin.h>
+#include <osn/osnnew.h>
+
+#include "alf/alfecompluginfactoryuid.rh"
+#include "alfwidgetfactoryloaderimpl.h"
+
+using namespace std;
+
+namespace Alf
+ {
+
+static const char* const KWidgetFactory ="alfwidgetfactory";
+const int KPluginIuid = 0x11201113;
+
+AlfWidgetFactoryLoaderImpl::AlfWidgetFactoryLoaderImpl():
+ mFactoryPlugin(0),
+ mWidgetFactory(0),
+ mDtorKey(0)
+ {
+
+ }
+
+AlfWidgetFactoryLoaderImpl::~AlfWidgetFactoryLoaderImpl()
+ {
+ delete mWidgetFactory;
+ if (mFactoryPlugin)
+ {
+ delete mFactoryPlugin;
+ REComSession::DestroyedImplementation(TUid::Uid(mDtorKey));
+ }
+
+ }
+
+IAlfWidgetFactory* AlfWidgetFactoryLoaderImpl::load(CAlfEnv& aEnv)
+ {
+ if (!mWidgetFactory)
+ {
+ TEComResolverParams resolverParams;
+ resolverParams.SetDataType(TPtrC8((TUint8*)KWidgetFactory));
+ resolverParams.SetWildcardMatch(ETrue);
+
+ TAny* plugin = NULL;
+
+ TUid tmpDtor;
+
+ TRAPD(err,plugin = REComSession::CreateImplementationL(
+ TUid::Uid(KPluginIuid),tmpDtor,
+ resolverParams))
+
+
+ if (!err)
+ {
+ mDtorKey = tmpDtor.iUid;
+ mFactoryPlugin = reinterpret_cast<IAlfFactoryPlugin*>(plugin);
+ IAlfInterfaceBase* tmp(0);
+ tmp = mFactoryPlugin->createProduct(KWidgetFactory,&aEnv);
+ mWidgetFactory =
+ IAlfInterfaceBase::makeInterface<IAlfWidgetFactory>(tmp);
+ }
+ }
+
+ return mWidgetFactory;
+ }
+
+ }
+
+
+// End of File
+