diff -r f62f87b200ec -r 8e5041d13c84 activityfw/activityserviceplugin/activitymanager_p.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/activityfw/activityserviceplugin/activitymanager_p.cpp Fri Apr 16 15:16:09 2010 +0300 @@ -0,0 +1,83 @@ +/* +* 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 "activitymanager_p.h" +#include "activitymanager.h" +#include + +#include +#include + +ActivityManagerPrivate::ActivityManagerPrivate(ActivityManager *q) : QObject(q), q_ptr(q) +{ + mServerClient = new HsActivityDbClient(); + mServerClient->connect(); +} + +ActivityManagerPrivate::~ActivityManagerPrivate() +{ + delete mServerClient; +} + +QList ActivityManagerPrivate::activitiesList() +{ + QList retVal; + mServerClient->activities(retVal); + return retVal; +} + +void ActivityManagerPrivate::launchActivity(const QString &uri) +{ + // @todo use the same parser as in HbApplicationPrivate (if possible) + QRegExp uriMatcher("^appto://(.+)\\?activityname=(.+)$"); + if (uriMatcher.indexIn(uri) != -1) { + QStringList list = uriMatcher.capturedTexts(); + Q_ASSERT(list.count() == 3); + launchActivity(list.at(1).toInt(), list.at(2)); + } else { + qWarning("Activity URI parsing error"); + } +} + +void ActivityManagerPrivate::launchActivity(int applicationId, const QString &activityId) +{ + + ApplicationLauncher applicationLauncher; + if(applicationLauncher.isRunning(applicationId)) { + QVariantHash activity; + activity.insert(ActivityApplicationKeyword, applicationId); + activity.insert(ActivityActivityKeyword, activityId); + mServerClient->launchActivity(activity); + applicationLauncher.bringToForeground(applicationId); + } else { + applicationLauncher.startApplication(applicationId, activityId); + } +} + +void ActivityManagerPrivate::removeActivity(int applicationId, const QString &activityId) +{ + QVariantHash activity; + activity.insert(ActivityApplicationKeyword, applicationId); + activity.insert(ActivityActivityKeyword, activityId); + mServerClient->removeActivity(activity); +} + +void ActivityManagerPrivate::removeApplicationActivities(int applicationId) +{ + QVariantHash activity; + activity.insert(ActivityApplicationKeyword, applicationId); + mServerClient->removeApplicationActivities(activity); +}