activityfw/testapplications/activitytestfigure/viewmanager.cpp
author Jaakko Haukipuro (Nokia-MS/Oulu) <Jaakko.Haukipuro@nokia.com>
Thu, 16 Sep 2010 12:11:40 +0100
changeset 117 c63ee96dbe5f
permissions -rw-r--r--
Missing activityfw and taskswitcher components - fix for Bug 3670

/*
* 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 "viewmanager.h"
#include <qservicemanager.h>
#include <HbInstance>
#include <QStringList>
#include <QCoreApplication>
#include <hbinstance.h>
#include <hbapplication.h>
#include <hbactivitymanager.h>
#include <hbmainwindow.h>
#include "squrewidget.h"
#include "trianglewidget.h"
#include "circlewidget.h"
#include "figurewidget.h"
#include <QEventLoop>

QTM_USE_NAMESPACE
#define hbApp qobject_cast<HbApplication*>(qApp)

viewmanager::viewmanager(HbApplication *hbapp):
    HbMainWindow(), mHbApp(hbapp)
{

    connect(hbApp->activityManager(), SIGNAL(activityRequested(QString)), this, SLOT(loadActivityData(QString)));
    

    mSw = new squrewidget();
    mTw = new trianglewidget();
    mCw = new circlewidget();
    mSView = addView(mSw);
    mSView->setTitle("Squre");
    mTView = addView(mTw);
    mTView->setTitle("Triangle");
    mCView = addView(mCw);
    mCView->setTitle("Circle");
    totriangle();
    connect(mSw, SIGNAL(totriangle()), this, SLOT(totriangle()));
    connect(mSw, SIGNAL(tocircle()), this, SLOT(tocircle()));

    connect(mTw, SIGNAL(tocircle()), this, SLOT(tocircle()));
    connect(mTw, SIGNAL(tosqure()), this, SLOT(tosqure()));

    connect(mCw, SIGNAL(tosqure()), this, SLOT(tosqure()));
    connect(mCw, SIGNAL(totriangle()), this, SLOT(totriangle()));

    connect(mSw, SIGNAL(save()), this, SLOT(save()));
    connect(mTw, SIGNAL(save()), this, SLOT(save()));
    connect(mCw, SIGNAL(save()), this, SLOT(save()));
    connect(mSw, SIGNAL(updateAct()), this, SLOT(updateAct()));
    connect(mTw, SIGNAL(updateAct()), this, SLOT(updateAct()));
    connect(mCw, SIGNAL(updateAct()), this, SLOT(updateAct()));
    connect(mSw, SIGNAL(del()), this, SLOT(del()));
    connect(mTw, SIGNAL(del()), this, SLOT(del()));
    connect(mCw, SIGNAL(del()), this, SLOT(del())); 

}

viewmanager::~viewmanager()
{
	
}

void viewmanager::totriangle()
{
    setCurrentView(mTView);
    mStatename = "triangle";
}

void viewmanager::tosqure()
{
    setCurrentView(mSView);
    mStatename = "squre";
}

void viewmanager::tocircle()
{
    setCurrentView(mCView);
    mStatename = "circle";
}


void viewmanager::save()
{
    QString color;
    figurewidget* widget = currentWidget();
    color = widget->color();

    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("screenshot", screenshot);

	bool ok = hbApp->activityManager()->addActivity(mStatename, mSaveVariant, metadata);	
    if (!ok) {
        widget->setFailedFlag();
    }
    else {
        widget->clearFailedFlag();
    }
}

void viewmanager::updateAct()
{
    QString color;
    figurewidget* widget = currentWidget();
    color = widget->color();

    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("screenshot", screenshot);

	bool ok = hbApp->activityManager()->updateActivity(mStatename, mSaveVariant, metadata);	
    if (!ok) {
        widget->setFailedFlag();
    }
    else {
        widget->clearFailedFlag();
    }
}

void viewmanager::del()
{
	bool ok = hbApp->activityManager()->removeActivity(mStatename);		
	figurewidget* widget = currentWidget();   
	if (!ok) {
        widget->setFailedFlag();
    }
    else {
        widget->clearFailedFlag();
    }
}

void viewmanager::loadActivityData(const QString &name)
{
    QVariant data = hbApp->activityManager()->activityData( name );
	loadActivityData( data );				
}

void viewmanager::loadActivityData(const QVariant &data)
{
    HbView *oldView = currentView();
    QStringList list = data.toStringList();
    QString statename = list.at(0);
    QString color = list.at(1);
    if (statename == "squre") {
        mSw->setcolor(color);
        tosqure();
        mSw->update();
    } else if (statename == "triangle") {
        mTw->setcolor(color);
        totriangle();
        mTw->update();
    } else if (statename == "circle") {
        mCw->setcolor(color);
        tocircle();
        mCw->update();
    } else {
        Q_ASSERT(false);
    }
    
    if (currentView() != oldView) {
        QEventLoop loop;
        loop.connect(this, SIGNAL(viewReady()), SLOT(quit()));
        loop.exec();
    }
}

figurewidget* viewmanager::currentWidget()
	{
	HbView* view = currentView();
	QGraphicsWidget* gwidget = view->widget();
	figurewidget* lwidget = qobject_cast<figurewidget*>(gwidget);
	}