diff -r 3ab5c078b490 -r c63ee96dbe5f activityfw/testapplications/newtestappset/acttestletter/viewmanager.cpp --- /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 +#include +#include +#include +#include +#include +#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"); + 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(gwidget); +} + +void viewmanager::newStatus(bool status) +{ + letterwidget* cw = currentWidget(); + if(cw) { + cw->setStatus(status); + } +}