taskswitcher/testapplications/parentembedded/parent/lunchwidget.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 "lunchwidget.h"
#include <QRect>
#include <QPainter>
#include <QUrl>
#include <qservicemanager.h>
#include <xqaiwrequest.h>
#include <xqappmgr.h>
#include <xqconversions.h>
#include <hbapplication>
QTM_USE_NAMESPACE

#define hbApp qobject_cast<HbApplication*>(qApp)

lunchwidget::lunchwidget(QGraphicsItem *parent)
    : HbWidget(parent)
{

	mTitle = "trompka";
    mLunchButton = new HbPushButton("Lunch embedded app");
    mResultLabel = new HbLabel;
    
    mGridLayout = new QGraphicsGridLayout();
    mGridLayout->addItem(mResultLabel, 0, 0, 1, 1);
    mGridLayout->addItem(mLunchButton, 1, 0, 1, 1);
    setLayout(mGridLayout);


    connect(mLunchButton, SIGNAL(released()), this, SLOT(lunchApp()));
    
    QStringList list = hbApp->arguments();
    int count = list.count();

    mTimer = new QTimer;
    if( count >= 2 ) {
        mTitle = list.at(1);
        connect( mTimer, SIGNAL(timeout()), this, SLOT(timeout()) );
        mTimer->start(1);
        }
}

lunchwidget::~lunchwidget()
{
	delete mTimer;
}

void lunchwidget::lunchApp()
{
    QList<QVariant> args;
    QString serviceName("com.nokia.services.embeddedservices");
    QString operation("requestSetTitle(QString)");
    XQAiwRequest* request;
    XQApplicationManager appManager;
    request = appManager.create(serviceName, "requestSetTitle", operation, true); //embedded
    if ( request == NULL )
    {
        mResultLabel->setPlainText( "request failed" );
        return;    
    }

    // Result handlers
    connect (request, SIGNAL(requestOk(const QVariant&)), 
        this, SLOT(setTitleCompleted(const QVariant&)));
    connect (request, SIGNAL(requestError(int,const QString&)), 
        this, SLOT(serviceRequestError(int,const QString&)));

    args << mTitle; 


    request->setArguments(args);
    if(!request->send()) {
		mResultLabel->setPlainText( "sending request failed" );
    }
    delete request;
}

void lunchwidget::setTitleCompleted(const QVariant& data)
{
    QString title = data.toString();
    mResultLabel->setPlainText( title );
}
    
void lunchwidget::serviceRequestError(int err,const QString& msg)
{
    QString errmsg = tr("Error: %1, ").arg(err);
    errmsg += msg;
    mResultLabel->setPlainText( errmsg );
}    

void lunchwidget::timeout()
	{
	mTimer->stop();
	lunchApp();
	}