diff -r 3ab5c078b490 -r c63ee96dbe5f activityfw/testapplications/activitytestmodel/activityhandler.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/activityfw/testapplications/activitytestmodel/activityhandler.cpp Thu Sep 16 12:11:40 2010 +0100 @@ -0,0 +1,102 @@ +/* +* 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 "activityhandler.h" + +#include + +#include +#include +#include + +#include "iconsview.h" + +QTM_USE_NAMESPACE + +ActivityHandler::ActivityHandler(IconsView *iconsView) : mIconsView(iconsView), mActivityClient(NULL) +{ + QServiceManager serviceManager; + mActivityClient = serviceManager.loadInterface("com.nokia.qt.activities.ActivityClient"); + Q_ASSERT(mActivityClient); + + connect(mActivityClient, SIGNAL(activityRequested(QString)), this, SLOT(loadActivityData(QString))); + + //startup case + QStringList arglist = qApp->arguments(); + QVariantHash actdata; + bool ok = QMetaObject::invokeMethod(mActivityClient, "parseCommandLine", Q_RETURN_ARG(QVariantHash, actdata), Q_ARG(QStringList, arglist)); + if (!ok) { + // qFatal("Startup failed"); + } + QString actid = actdata.value("activityname").toString(); + if ( !actid.isNull() ) + { + QVariant data; + ok = QMetaObject::invokeMethod(mActivityClient, "activityData", Q_RETURN_ARG(QVariant, data), Q_ARG(QString, actid)); + if (!ok) { + qFatal("Get data failed"); + } + mIconsView->loadActivity(data); + } + //startup case end + + bool retok; + ok = QMetaObject::invokeMethod(mActivityClient, "waitActivity", Q_RETURN_ARG(bool, retok)); + if (!ok || !retok) { + // qFatal("Subscribe failed"); + } +} + +ActivityHandler::~ActivityHandler() +{ + delete mActivityClient; +} + +void ActivityHandler::handleSaveRequest(const QString &name) +{ + HbMainWindow *mainWindow = hbInstance->allMainWindows().first(); + QPixmap screenshot = QPixmap::grabWidget(mainWindow, mainWindow->rect()); + QVariantHash metadata; + metadata.insert("screenshot", screenshot); + QVariant data = mIconsView->generateActivityData(); + + bool retok; + bool ok = QMetaObject::invokeMethod(mActivityClient, "removeActivity", Q_RETURN_ARG(bool, retok), Q_ARG(QString, name)); + if (!ok) { + qFatal("Remove failed"); + } + + ok = QMetaObject::invokeMethod(mActivityClient, "addActivity", Q_RETURN_ARG(bool, retok), Q_ARG(QString, name), Q_ARG(QVariant, data), Q_ARG(QVariantHash, metadata)); + if (!ok || !retok) { + qFatal("Add failed"); + } +} +void ActivityHandler::loadActivityData(const QString &name) +{ + bool retok; + bool ok = QMetaObject::invokeMethod(mActivityClient, "waitActivity", Q_RETURN_ARG(bool, retok)); + if (!ok || !retok) { + //qFatal("Resubscribe failed"); + } + + QVariant data; + ok = QMetaObject::invokeMethod(mActivityClient, "activityData", Q_RETURN_ARG(QVariant, data), Q_ARG(QString, name)); + if (!ok) { + qFatal("Get data failed"); + } + mIconsView->loadActivity(data); +}