--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/activityfw/testapplications/newtestappset/acttestletter/viewmanager.cpp Thu Sep 16 12:11:40 2010 +0100
@@ -0,0 +1,268 @@
+/*
+* 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 <QEventLoop>
+#include <QStringList>
+#include <QCoreApplication>
+#include <hbapplication.h>
+#include "viewmanager.h"
+#include "boldwidget.h"
+#include "italicwidget.h"
+#include "underlinewidget.h"
+#include "letterwidget.h"
+#include "afstorageglobals.h"
+
+QTM_USE_NAMESPACE
+
+viewmanager::viewmanager(HbApplication *hbapp):
+ HbMainWindow(), mHbApp(hbapp)
+{
+ 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)));
+
+
+ mBoldWidget = new boldwidget();
+ mItalicWidget = new italicwidget();
+ mUnderlineWidget = new underlinewidget();
+ mBoldView = addView(mBoldWidget);
+ mBoldView->setTitle("Bold");
+ mItalicView = addView(mItalicWidget);
+ mItalicView->setTitle("Italic");
+ mUnderlineView = addView(mUnderlineWidget);
+ mUnderlineView->setTitle("Underline");
+ toitalic();
+ connect(mBoldWidget, SIGNAL(toitalic()), this, SLOT(toitalic()));
+ connect(mBoldWidget, SIGNAL(tounderline()), this, SLOT(tounderline()));
+
+ connect(mItalicWidget, SIGNAL(tounderline()), this, SLOT(tounderline()));
+ connect(mItalicWidget, SIGNAL(tobold()), this, SLOT(tobold()));
+
+ connect(mUnderlineWidget, SIGNAL(tobold()), this, SLOT(tobold()));
+ connect(mUnderlineWidget, SIGNAL(toitalic()), this, SLOT(toitalic()));
+
+ connect(mBoldWidget, SIGNAL(save()), this, SLOT(save()));
+ connect(mItalicWidget, SIGNAL(save()), this, SLOT(save()));
+ connect(mUnderlineWidget, SIGNAL(save()), this, SLOT(save()));
+ connect(mBoldWidget, SIGNAL(del()), this, SLOT(del()));
+ connect(mItalicWidget, SIGNAL(del()), this, SLOT(del()));
+ connect(mUnderlineWidget, SIGNAL(del()), this, SLOT(del()));
+
+ connect(this, SIGNAL(statusChanged(bool)), this, SLOT(newStatus(bool)));
+
+ //startup case
+ Af::ActivationReason reason;
+ bool ok = QMetaObject::invokeMethod(mActivaction, "reason", Q_RETURN_ARG(Af::ActivationReason, reason));
+ if (!ok) {
+ emit statusChanged(false);
+ }
+ QString actName;
+ QVariantHash parameters;
+ if (reason == Af::ActivationReasonActivity) {
+ ok = QMetaObject::invokeMethod(mActivaction, "name", Q_RETURN_ARG(QString, actName));
+ if (!ok) {
+ emit statusChanged(false);
+ }
+ ok = QMetaObject::invokeMethod(mActivaction, "parameters", Q_RETURN_ARG(QVariantHash, parameters));
+ if (!ok) {
+ emit statusChanged(false);
+ }
+
+ QVariant data;
+ ok = QMetaObject::invokeMethod(mActivityStorage, "activityData", Q_RETURN_ARG(QVariant, data), Q_ARG(QString, actName));
+ if (!ok) {
+ emit statusChanged(false);
+ }
+
+ bool background = false;
+ if (parameters.contains(Af::KActivityUriBackgroundKey)) {
+ background = true;
+ }
+ loadActivityData(data, background, true);
+ }
+ //startup case end
+}
+
+viewmanager::~viewmanager()
+{
+}
+
+void viewmanager::toitalic()
+{
+ setCurrentView(mItalicView);
+ mStatename = "italic";
+}
+
+void viewmanager::tobold()
+{
+ setCurrentView(mBoldView);
+ mStatename = "bold";
+}
+
+void viewmanager::tounderline()
+{
+ setCurrentView(mUnderlineView);
+ mStatename = "underline";
+}
+
+
+void viewmanager::save()
+{
+ QString color;
+ QString visible;
+ QString persistent;
+ QString name;
+ bool delBefore;
+ letterwidget* widget = currentWidget();
+ color = widget->color();
+ visible = widget->visibility();
+ persistent = widget->persistent();
+ name = widget->name();
+ delBefore = widget->delBeforeSave();
+
+ QStringList list;
+ list.append(mStatename);
+ list.append(color);
+ mSaveVariant.clear();
+ mSaveVariant = list;
+
+ HbMainWindow *mainWindow = hbInstance->allMainWindows().first();
+ QPixmap screenshot = QPixmap::grabWidget(mainWindow, mainWindow->rect());
+ QVariantHash metadata;
+ metadata.insert(ActivityScreenshotKeyword, screenshot);
+ if ( visible == "true" )
+ {
+ metadata.insert(ActivityVisibility, true);
+ }
+ else if ( visible == "false" )
+ {
+ metadata.insert(ActivityVisibility, false);
+ }
+
+ if ( persistent == "true" )
+ {
+ metadata.insert(ActivityPersistence, true);
+ }
+ else if ( persistent == "false" )
+ {
+ metadata.insert(ActivityPersistence, false);
+ }
+
+ if ( name != "none" )
+ {
+ metadata.insert(ActivityApplicationName, name);
+ }
+
+ bool retok, ok;
+ if (delBefore) {
+ ok = QMetaObject::invokeMethod(mActivityStorage, "removeActivity", Q_RETURN_ARG(bool, retok), Q_ARG(QString, mStatename));
+ if (!ok) {
+ emit statusChanged(false);
+ return;
+ }
+ }
+
+ ok = QMetaObject::invokeMethod(mActivityStorage, "saveActivity", Q_RETURN_ARG(bool, retok), Q_ARG(QString, mStatename), Q_ARG(QVariant, mSaveVariant), Q_ARG(QVariantHash, metadata));
+ if (!ok || !retok) {
+ emit statusChanged(false);
+ return;
+ }
+ emit statusChanged(true);
+}
+void viewmanager::del()
+{
+ bool retok;
+ bool ok = QMetaObject::invokeMethod(mActivityStorage, "removeActivity", Q_RETURN_ARG(bool, retok), Q_ARG(QString, mStatename));
+ if (!ok || !retok) {
+ emit statusChanged(false);
+ }
+ emit statusChanged(true);
+}
+
+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) {
+ emit statusChanged(false);
+ return;
+ }
+ bool background = false;
+ if (parameter.contains(Af::KActivityUriBackgroundKey)) {
+ background = true;
+ }
+ loadActivityData(data, background, false);
+}
+
+void viewmanager::loadActivityData(const QVariant &data, bool background, bool startup)
+{
+ HbView *oldView = currentView();
+
+ QStringList list = data.toStringList();
+ QString statename = list.at(0);
+ QString color = list.at(1);
+ if (statename == "bold") {
+ mBoldWidget->setcolor(color);
+ mBoldWidget->setBackgroundFlag(background);
+ tobold();
+ mBoldWidget->update();
+ } else if (statename == "italic") {
+ mItalicWidget->setcolor(color);
+ mItalicWidget->setBackgroundFlag(background);
+ toitalic();
+ mItalicWidget->update();
+ } else if (statename == "underline") {
+ mUnderlineWidget->setcolor(color);
+ mUnderlineWidget->setBackgroundFlag(background);
+ tounderline();
+ mUnderlineWidget->update();
+ } else {
+ statusChanged(false);
+ }
+
+ if (currentView() != oldView && !startup) {
+ QEventLoop loop;
+ loop.connect(this, SIGNAL(viewReady()), SLOT(quit()));
+ loop.exec();
+ }
+}
+
+letterwidget* viewmanager::currentWidget()
+{
+ HbView* view = currentView();
+ QGraphicsWidget* gwidget = view->widget();
+ letterwidget* lwidget = qobject_cast<letterwidget*>(gwidget);
+}
+
+void viewmanager::newStatus(bool status)
+{
+ letterwidget* cw = currentWidget();
+ if(cw) {
+ cw->setStatus(status);
+ }
+}