diff -r 000000000000 -r c464cd7e2753 ftuapplication/src/ftufirsttimeuse.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ftuapplication/src/ftufirsttimeuse.cpp Mon Apr 19 14:01:47 2010 +0300 @@ -0,0 +1,202 @@ +/* +* 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: First Time Use application main class. +* +*/ + + +#include "ftufirsttimeuse.h" + +#include +#include +#include +#include +#include +#include +#include + + +QTM_USE_NAMESPACE + +const char* ftuRuntimeUri = "com.nokia.ftu.runtime.FtuRuntime"; + +// --------------------------------------------------------------------------- +// FtuFirstTimeUse::FtuFirstTimeUse +// --------------------------------------------------------------------------- +// +FtuFirstTimeUse::FtuFirstTimeUse(QObject* aParent) : + QObject(aParent), + mRuntime(NULL) +{ + FTUTEST_FUNC_ENTRY("FTU::FtuFirstTimeUse::FtuFirstTimeUse"); + + registerServicePlugins(); + + QServiceManager manager; + QServiceFilter filter(ftuRuntimeUri); + QList interfaces = manager.findInterfaces( + filter); + + qDebug() << "ftu: found " << interfaces.count() + << " instances of runtime"; + + if(interfaces.count() > 0){ + mRuntime = (QStateMachine*)(manager.loadInterface( + interfaces.first().interfaceName())); + } + + + + if(mRuntime) { + mRuntime->setParent(this); + connect(mRuntime, SIGNAL(started()), SLOT(handleRuntimeStarted())); + connect(mRuntime, SIGNAL(stopped()), SLOT(handleRuntimeStopped())); + connect(mRuntime, SIGNAL(faulted()), SLOT(handleRuntimeFaulted())); + } + + FTUTEST_FUNC_EXIT("FTU::FtuFirstTimeUse::FtuFirstTimeUse"); +} + +// --------------------------------------------------------------------------- +// FtuFirstTimeUse::~FtuFirstTimeUse() +// --------------------------------------------------------------------------- +// +FtuFirstTimeUse::~FtuFirstTimeUse() +{ + if(mRuntime) + { + disconnect(mRuntime, SIGNAL(started()), this, SLOT(handleRuntimeStarted())); + disconnect(mRuntime, SIGNAL(stopped()), this, SLOT(handleRuntimeStopped())); + disconnect(mRuntime, SIGNAL(faulted()), this, SLOT(handleRuntimeFaulted())); + + delete mRuntime; + } +} + +// --------------------------------------------------------------------------- +// FtuFirstTimeUse::start() +// --------------------------------------------------------------------------- +// +void FtuFirstTimeUse::start() +{ + FTUTEST_FUNC_ENTRY("FTU::FtuFirstTimeUse::start"); + + if(mRuntime) { + mRuntime->start(); + } else { + emit exit(); + } + + FTUTEST_FUNC_EXIT("FTU::FtuFirstTimeUse::start"); +} + +// --------------------------------------------------------------------------- +// FtuFirstTimeUse::stop() +// --------------------------------------------------------------------------- +// +void FtuFirstTimeUse::stop() +{ + FTUTEST_FUNC_ENTRY("FTU::FtuFirstTimeUse::stop"); + + mRuntime->stop(); + + FTUTEST_FUNC_EXIT("FTU::FtuFirstTimeUse::stop"); +} + +// --------------------------------------------------------------------------- +// FtuFirstTimeUse::handleRuntimeStarted() +// --------------------------------------------------------------------------- +// +void FtuFirstTimeUse::handleRuntimeStarted() +{ +} + +// --------------------------------------------------------------------------- +// FtuFirstTimeUse::handleRuntimeStopped() +// --------------------------------------------------------------------------- +// +void FtuFirstTimeUse::handleRuntimeStopped() +{ + emit exit(); +} + +// --------------------------------------------------------------------------- +// FtuFirstTimeUse::handleRuntimeFaulted() +// --------------------------------------------------------------------------- +// +void FtuFirstTimeUse::handleRuntimeFaulted() +{ + emit exit(); +} +// --------------------------------------------------------------------------- +// FtuFirstTimeUse::registerServicePlugins() +// --------------------------------------------------------------------------- +// +void FtuFirstTimeUse::registerServicePlugins() +{ + FTUTEST_FUNC_ENTRY("FTU::FtuFirstTimeUse::registerServicePlugins()"); + QStringList pluginPaths; + + pluginPaths << "fturesources/plugins"; + + QFileInfoList drives = QDir::drives(); + foreach(const QString pluginPath, pluginPaths) { +#ifdef Q_OS_SYMBIAN + //Check plugin dirs from root of different drives + foreach(QFileInfo drive, drives) { + QString driveLetter = drive.absolutePath(); + QString path = driveLetter + pluginPath; + if(QDir(path).exists()) { + registerServicePlugins(path); + } + } +#endif + //Check plugin path relative to current dir + if(QDir(pluginPath).exists()) { + registerServicePlugins(pluginPath); + } + } + FTUTEST_FUNC_EXIT("FTU::FtuFirstTimeUse::registerServicePlugins()"); +} + +// --------------------------------------------------------------------------- +// FtuFirstTimeUse::registerServicePlugins() +// --------------------------------------------------------------------------- +// +void FtuFirstTimeUse::registerServicePlugins(const QString &root) +{ + FTUTEST_FUNC_ENTRY("FTU::FtuFirstTimeUse::registerServicePlugins(const QString &)"); + qDebug() << "FTU: root: " << root; + QDir dir = QDir(root); + QFileInfoList fileInfos = dir.entryInfoList(QDir::AllDirs | QDir::NoDotAndDotDot); + + foreach (QFileInfo fileInfo, fileInfos) { + registerServicePlugins(fileInfo.absoluteFilePath()); + } + + fileInfos = dir.entryInfoList(QStringList("*.xml")); + + if (!fileInfos.isEmpty()) { + //Plugin dll and xml are in the same directory + QApplication::addLibraryPath(root); + qDebug() << QString("FTU::FtuFirstTimeUse::registerServicePlugins - Directory added to application's library paths: ") + << root; + QServiceManager manager; + foreach(QFileInfo fileInfo, fileInfos) { + manager.addService(fileInfo.absoluteFilePath()); + qDebug() << QString("FTU::FtuFirstTimeUse::registerServicePlugins - Plugin registered: ") + fileInfo.fileName(); + } + } + FTUTEST_FUNC_EXIT("FTU::FtuFirstTimeUse::registerServicePlugins(const QString &)"); +}