homescreenapp/hsdomainmodel/src/hscontentservice.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 16 Apr 2010 14:54:01 +0300
changeset 36 cdae8c6c3876
parent 35 f9ce957a272c
child 39 4e8ebe173323
permissions -rw-r--r--
Revision: 201011 Kit: 201015

/*
* 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:  Homescreen runtime content service.
*
*/

#include "hscontentservice.h"
#include "hsdatabase.h"
#include "hsscene.h"
#include "hspage.h"
#include "hsdomainmodeldatastructures.h"
#include "hswidgethost.h"


HsContentService::HsContentService(QObject *parent)
    : QObject(parent)
{
   
}

HsContentService::~HsContentService()
{
}


bool HsContentService::createWidget(const QVariantHash &params)
{
    HsWidgetHost *widget = createWidgetForPreview(params);
    if (!widget) {
        return false;
    }
     
    return HsScene::instance()->activePage()->addNewWidget(widget);
}

HsWidgetHost *HsContentService::createWidgetForPreview(const QVariantHash &params)
{
    HsWidgetData widgetData;
    widgetData.uri = params.value("uri").toString();


    HsWidgetHost *widget = HsWidgetHost::createInstance(widgetData,
                                                        params.value("preferences").toHash());

    if (!widget) {
        return NULL;
    }
    if (!widget->load()) {
        widget->deleteFromDatabase();
        delete widget;
        return NULL;
    }

    return widget;
}