--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/server/src/tsservicesproviderconfig.cpp Thu Sep 16 12:11:40 2010 +0100
@@ -0,0 +1,82 @@
+/*
+* Copyright (c) 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 <xqconversions.h>
+#include <qservicemanager.h>
+#include "tsservicesproviderconfig.h"
+
+const char ServicesInterface [] = "com.nokia.qt.taskswitcher.dataprovider";
+// -----------------------------------------------------------------------------
+CTsServiceProviderConfig* CTsServiceProviderConfig::NewLC()
+{
+ CTsServiceProviderConfig *self = new (ELeave)CTsServiceProviderConfig();
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ return self;
+}
+
+// -----------------------------------------------------------------------------
+CTsServiceProviderConfig::CTsServiceProviderConfig()
+{
+ //No implementation required
+}
+
+// -----------------------------------------------------------------------------
+void CTsServiceProviderConfig::ConstructL()
+{
+ QTM_NAMESPACE::QServiceInterfaceDescriptor *ptr(0);
+ //QT_TRYCATCH_LEAVING(
+ QTM_NAMESPACE::QServiceManager serviceManager;
+ const QList<QTM_NAMESPACE::QServiceInterfaceDescriptor> serivces(serviceManager.findInterfaces(QTM_NAMESPACE::QServiceFilter(ServicesInterface)));
+ foreach(QTM_NAMESPACE::QServiceInterfaceDescriptor serviceImplementation, serivces) {
+ ptr = new QTM_NAMESPACE::QServiceInterfaceDescriptor(serviceImplementation);
+ if(0 != ptr) {
+ if(KErrNone != mServices.Append(ptr)) {
+ delete ptr;
+ }
+ }
+ }
+ //)
+}
+
+// -----------------------------------------------------------------------------
+CTsServiceProviderConfig::~CTsServiceProviderConfig()
+{
+ for(TInt iter(0); iter < mServices.Count(); ++iter){
+ delete static_cast<QTM_NAMESPACE::QServiceInterfaceDescriptor *>(mServices[iter]);
+ }
+ mServices.Close();
+}
+
+// -----------------------------------------------------------------------------
+TInt CTsServiceProviderConfig::count() const
+{
+ return mServices.Count();
+}
+
+// -----------------------------------------------------------------------------
+QObject* CTsServiceProviderConfig::loadL(TInt offset)const
+{
+ const QTM_NAMESPACE::QServiceInterfaceDescriptor *service
+ = static_cast<QTM_NAMESPACE::QServiceInterfaceDescriptor *>(mServices[offset]);
+ QObject *retVal(0);
+ QT_TRYCATCH_LEAVING(
+ QTM_NAMESPACE::QServiceManager serviceManager;
+ retVal = serviceManager.loadInterface(*service);
+ );
+ User::LeaveIfNull(retVal);
+ return retVal;
+}