/*
* 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 <qservicemanager.h>
#include <QApplication>
#include <HbMainWindow>
#include <HbInstance>
#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);
}