/*
* 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);
}