--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/activityfw/testapplications/activitytakeawhile/viewmanager.cpp Thu Sep 16 12:11:40 2010 +0100
@@ -0,0 +1,126 @@
+/*
+* 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 <qservicemanager.h>
+#include <HbInstance>
+#include <QStringList>
+#include <QCoreApplication>
+#include <hbapplication.h>
+#include "viewmanager.h"
+#include "letterwidget.h"
+#include <QGraphicsGridLayout>
+#include <HbPushButton>
+
+QTM_USE_NAMESPACE
+
+viewmanager::viewmanager():
+ HbMainWindow()
+{
+ QServiceManager serviceManager;
+ mActivityClient = serviceManager.loadInterface("com.nokia.qt.activities.ActivityClient");
+ if (!mActivityClient) {
+ qFatal("load plugin failed");
+ }
+
+ mLw = new letterwidget;
+ addView(mLw);
+
+ connect(mActivityClient, SIGNAL(activityRequested(QString)), this, SLOT(loadActivityData(QString)));
+
+
+
+ bool retok;
+ bool ok = QMetaObject::invokeMethod(mActivityClient, "waitActivity", Q_RETURN_ARG(bool, retok));
+ if (!ok || !retok) {
+// qFatal("Subscribe failed");
+ }
+
+ //startup case
+ QStringList arglist = qApp->arguments();
+ QVariantHash actdata;
+ 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");
+ }
+ loadActivityData(data);
+ }
+ //startup case end
+
+ connect(mLw, SIGNAL(save()), this, SLOT(save()));
+ connect(mLw, SIGNAL(del()), this, SLOT(del()));
+}
+
+viewmanager::~viewmanager()
+{
+}
+
+void viewmanager::save()
+{
+ mSaveVariant = mLw->state();
+
+ HbMainWindow *mainWindow = hbInstance->allMainWindows().first();
+ QPixmap screenshot = QPixmap::grabWidget(mainWindow, mainWindow->rect());
+ QVariantHash metadata;
+ metadata.insert("screenshot", screenshot);
+
+ bool retok;
+ bool ok = QMetaObject::invokeMethod(mActivityClient, "removeActivity", Q_RETURN_ARG(bool, retok), Q_ARG(QString, mLw->state()));
+ if (!ok) {
+ qFatal("Remove failed");
+ }
+
+ ok = QMetaObject::invokeMethod(mActivityClient, "addActivity", Q_RETURN_ARG(bool, retok), Q_ARG(QString, mLw->state()), Q_ARG(QVariant, mSaveVariant), Q_ARG(QVariantHash, metadata));
+ if (!ok || !retok) {
+ qFatal("Add failed");
+ }
+}
+void viewmanager::del()
+{
+ bool retok;
+ bool ok = QMetaObject::invokeMethod(mActivityClient, "removeActivity", Q_RETURN_ARG(bool, retok), Q_ARG(QString, mLw->state()));
+ if (!ok) {
+ qFatal("Remove failed");
+ }
+}
+
+void viewmanager::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");
+ }
+ loadActivityData(data);
+}
+
+void viewmanager::loadActivityData(const QVariant &data)
+{
+ QString statename = data.toString();
+ mLw->setState(statename);
+}