diff -r cdae8c6c3876 -r 4e8ebe173323 taskswitcherapp/tsapplication/src/tstaskswitcher.cpp --- a/taskswitcherapp/tsapplication/src/tstaskswitcher.cpp Fri Apr 16 14:54:01 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,88 +0,0 @@ -/* -* 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 "tstaskswitcher.h" - -#include -#include - -#include - -QTM_USE_NAMESPACE - -TsTaskSwitcher::TsTaskSwitcher(QObject* aParent) : QObject(aParent) -{ - // FIXME: we're leaking service manager to prevent crash caused by QServiceManager deletion - QServiceManager *serviceManager = new QServiceManager; - - // FIXME: temporary workaround for bug in QtSF database - this process have to add services - QList tsServiceInterfaces = serviceManager->findInterfaces("TaskSwitcher"); - QStringList requiredInterfaces; - requiredInterfaces << "com.nokia.taskswitcher.itemprovider"; - requiredInterfaces << "com.nokia.taskswitcher.activation"; - requiredInterfaces << "com.nokia.taskswitcher.deactivation"; - requiredInterfaces << "com.nokia.taskswitcher.presentation"; - requiredInterfaces << "com.nokia.taskswitcher.runtime.defaultruntime"; - - foreach (const QServiceInterfaceDescriptor &interface, tsServiceInterfaces) { - QString interfaceName = interface.interfaceName(); - if (requiredInterfaces.contains(interfaceName)) { - requiredInterfaces.removeAll(interfaceName); - } - } - - if (!requiredInterfaces.isEmpty()) { - // clean old entries - serviceManager->removeService("TaskSwitcher"); - - bool servicesAdded = serviceManager->addService(":/tsserviceplugin.xml"); - Q_ASSERT_X(servicesAdded, "Adding Ts Services", qPrintable(QString("addService returned false, error %1").arg(serviceManager->error()))); - - bool runtimeAdded = serviceManager->addService(":/tsdefaultruntimeplugin.xml"); - Q_ASSERT_X(runtimeAdded, "Adding Ts Runtime", qPrintable(QString("addService returned false, error %1").arg(serviceManager->error()))); - } - // FIXME - - mRuntime = serviceManager->loadLocalTypedInterface("com.nokia.taskswitcher.runtime.defaultruntime"); - if (mRuntime) { - mRuntime->setParent(this); - connect(mRuntime, SIGNAL(stopped()), this, SIGNAL(exit())); - } else { - qCritical("Failed to create runtime"); - } -} - -void TsTaskSwitcher::start() -{ - if (mRuntime) { - mRuntime->start(); - } else { - emit exit(); - } -} - -void TsTaskSwitcher::stop() -{ - if (mRuntime) { - if (mRuntime->isRunning()) { - QEventLoop eventLoop; - connect(mRuntime, SIGNAL(finished()), &eventLoop, SLOT(quit())); - QMetaObject::invokeMethod(mRuntime, "event_exit", Qt::QueuedConnection); - eventLoop.exec(); - } - } -}