diff -r 9b022b1f357c -r e0aa398e6810 activityfw/activityserviceplugin/src/afactivation_p.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/activityfw/activityserviceplugin/src/afactivation_p.cpp Wed Aug 18 10:05:49 2010 +0300 @@ -0,0 +1,79 @@ +/* +* 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 "afactivation_p.h" + +#include + +#include "afstorageproxy.h" + +#include "aflauncher.h" +#include "afcommandlineparser.h" + +AfActivationPrivate::AfActivationPrivate(const QSharedPointer &connection, QObject *parent) : QObject(parent), mReason(Af::ActivationReasonNormal), mConnection(connection) +{ + AfCommandLineParser::parseCommandLine(qApp->arguments(), + mReason, + mName, + mParameters); + connect(mConnection.data(), SIGNAL(activityRequested(QString)), this, SLOT(handleActivityRequest(QString))); + connect(mConnection.data(), SIGNAL(activityRequested(QString)), this, SLOT(bringToForeground())); +} + +QVariantHash AfActivationPrivate::parameters() const +{ + return mParameters; +} + +Af::ActivationReason AfActivationPrivate::reason() const +{ + return mReason; +} + +QString AfActivationPrivate::name() const +{ + return mName; +} + +void AfActivationPrivate::handleActivityRequest(const QString &activityUri) +{ + mReason = Af::ActivationReasonActivity; + mName = QString(); + mParameters = QVariantHash(); + + QUrl uri(activityUri); + QVariantHash parameters; + QList > uriParams = uri.queryItems(); + for (QList >::const_iterator i = uriParams.constBegin(); i != uriParams.constEnd(); ++i) { + parameters.insert(i->first, i->second); + } + if (parameters.contains(Af::KActivityUriNameKey)) { + mName = parameters.value(Af::KActivityUriNameKey).toString(); + parameters.remove(Af::KActivityUriNameKey); + } + mParameters = parameters; + + emit activated(mReason, mName, mParameters); +} + +void AfActivationPrivate::bringToForeground() +{ + if (!mParameters.contains(Af::KActivityUriBackgroundKey)) { + // process all update events from widgets to prevent flickering + QCoreApplication::processEvents(); + AfLauncher().bringToForeground(RProcess().SecureId().iId); + } +}