activityfw/testapplications/newtestappset/acttesttakeawhile/viewmanager.cpp
changeset 117 c63ee96dbe5f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/activityfw/testapplications/newtestappset/acttesttakeawhile/viewmanager.cpp	Thu Sep 16 12:11:40 2010 +0100
@@ -0,0 +1,127 @@
+/*
+* 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>
+#include "afstorageglobals.h"
+
+QTM_USE_NAMESPACE
+
+viewmanager::viewmanager():
+    HbMainWindow()
+{
+    mLw = new letterwidget;
+    addView(mLw);
+    
+    QServiceManager serviceManager;
+    mActivityStorage = serviceManager.loadInterface("com.nokia.qt.activities.Storage");
+    if (!mActivityStorage) {
+        qFatal("load Storage plugin failed");
+    }
+
+    mActivaction = serviceManager.loadInterface("com.nokia.qt.activities.Activation");
+    if (!mActivaction) {
+        qFatal("load Activation plugin failed");
+    }
+    
+    qRegisterMetaType<Af::ActivationReason>("Af::ActivationReason");
+    connect(mActivaction, SIGNAL(activated(Af::ActivationReason, QString, QVariantHash)), this, SLOT(loadActivityData(Af::ActivationReason, QString, QVariantHash)));
+    
+    
+    //startup case    
+    Af::ActivationReason reason;
+    bool ok = QMetaObject::invokeMethod(mActivaction, "reason", Q_RETURN_ARG(Af::ActivationReason, reason));
+    if (!ok) {
+        qFatal("Get reason failed");
+    }
+    QString actName;
+    QVariantHash parameters;
+    if (reason == Af::ActivationReasonActivity) {
+        ok = QMetaObject::invokeMethod(mActivaction, "name", Q_RETURN_ARG(QString, actName));
+        if (!ok) {
+            qFatal("Get name failed");
+        }
+        ok = QMetaObject::invokeMethod(mActivaction, "parameters", Q_RETURN_ARG(QVariantHash, parameters));    
+        if (!ok) {
+            qFatal("Get parameter failed");
+        }
+        
+        QVariant data;
+        ok = QMetaObject::invokeMethod(mActivityStorage, "activityData", Q_RETURN_ARG(QVariant, data), Q_ARG(QString, actName));
+        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()
+{
+    delete mActivityStorage;
+    delete mActivaction;
+}
+
+void viewmanager::save()
+{
+    mSaveVariant = mLw->state();
+
+    HbMainWindow *mainWindow = hbInstance->allMainWindows().first();
+    QPixmap screenshot = QPixmap::grabWidget(mainWindow, mainWindow->rect());
+    QVariantHash metadata;
+    metadata.insert(ActivityScreenshotKeyword, screenshot);
+
+    bool ok, retok;
+    ok = QMetaObject::invokeMethod(mActivityStorage, "saveActivity", Q_RETURN_ARG(bool, retok), Q_ARG(QString, mLw->state()), Q_ARG(QVariant, mSaveVariant), Q_ARG(QVariantHash, metadata));
+
+    if (!ok || !retok) {
+        qFatal("Save failed");
+    }
+}
+void viewmanager::del()
+{
+    bool retok;
+    bool ok = QMetaObject::invokeMethod(mActivityStorage, "removeActivity", Q_RETURN_ARG(bool, retok), Q_ARG(QString, mLw->state()));
+    if (!ok) {
+        qFatal("Remove failed");
+    }
+}
+    
+void viewmanager::loadActivityData(Af::ActivationReason reason, const QString &name, QVariantHash parameter)
+{
+    QVariant data;
+    bool ok = QMetaObject::invokeMethod(mActivityStorage, "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);
+}