contentstorage/cahandler/tapp/src/catapphandler.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 31 Aug 2010 15:30:51 +0300
branchRCL_3
changeset 113 0efa10d348c0
permissions -rw-r--r--
Revision: 201033 Kit: 201035

/*
 * 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:  Default implementation of the home screen runtime.
 *
 */

#include <qservicemanager.h>
#include <qservicefilter.h>
#include <qserviceinterfacedescriptor.h>
#include <XQConversions>
#include <xqappmgr.h>

#include "caentry.h"
#include "catapphandler.h"
#include "caclient_defines.h"

static const QString hsitemLaunchUri("item:launchuri");

QTM_USE_NAMESPACE

/*!
    \class CaTappHandler
    \ingroup
    \brief Implementation of templated application command handler.
*/

/*!
 Constructor.
 \param parent Parent object of this object.
 */
CaTappHandler::CaTappHandler(QObject *parent)
{
	Q_UNUSED(parent);
    mAiwMgr = new XQApplicationManager();
}

/*!
 Destructor.
 */
CaTappHandler::~CaTappHandler()
{
    delete mAiwMgr;
}

/*!
 Executes \a command by default "open" on template application represented by \a entry.
 Uses XQApplicationManager
 \param entry Subject of the \a command.
 \param command Description of the command.
 \retval Error code described in QSERVICEMANAGER.H
 */
int CaTappHandler::execute(const CaEntry& entry, const QString& command)
{
    // this returns Error enum from QSERVICEMANAGER.H
    int error = 0;
    if (command == caCmdOpen) {
        QString attribute = entry.attribute(hsitemLaunchUri);
        if (!attribute.isNull()) {
            // e.g. QUrl("appto://101F7AE7?");
            QScopedPointer<XQAiwRequest> request(mAiwMgr->create(QUrl(attribute),
                false));
            if (!request.isNull()) {
                bool res = request->send();
                if (!res) {
                    error = request->lastError();
                }
            }
        }
    } else {
        // TODO: error code cleanning and an appropriate conversion (in other classes too).
        static const int NotSupportedErrorCode = 100;
        error = NotSupportedErrorCode;
    }
    return error;
}