taskswitcher/server/src/tsservicesproviderconfig.cpp
changeset 117 c63ee96dbe5f
--- /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;
+}