homescreenapp/hsapplication/src/hshomescreenclientserviceprovider.cpp
changeset 36 cdae8c6c3876
child 39 4e8ebe173323
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/src/hshomescreenclientserviceprovider.cpp	Fri Apr 16 14:54:01 2010 +0300
@@ -0,0 +1,70 @@
+/*
+* Copyright (c) 2010 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:  Main class for HsHomeScreenClientServiceProvider library.
+*
+*/
+
+#include "hshomescreenclientserviceprovider.h"
+
+#include "hsscene.h"
+#include "hspage.h"
+#include "hsdomainmodeldatastructures.h"
+#include "hswidgethost.h"
+
+const char INTERFACE_NAME[] = "com.nokia.services.hsapplication.IHomeScreenClient";
+
+HsHomeScreenClientServiceProvider::HsHomeScreenClientServiceProvider(QObject* parent)
+: XQServiceProvider(INTERFACE_NAME,parent)
+{
+    publishAll();
+}
+
+HsHomeScreenClientServiceProvider::~HsHomeScreenClientServiceProvider()
+{
+}
+
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC SKIP
+#endif //COVERAGE_MEASUREMENT
+
+// this should be moved to HsContentService class 
+
+bool HsHomeScreenClientServiceProvider::addWidget(const QString &uri,const QVariantHash &preferences)
+{
+
+    HsWidgetData widgetData;
+    widgetData.uri = uri;
+
+    QScopedPointer<HsWidgetHost> widget(HsWidgetHost::createInstance(widgetData,preferences));
+
+    if (!widget.data()) {
+        return false;
+    }
+    HsPage* activePage = HsScene::instance()->activePage();
+    if (!widget->load() || !activePage->addNewWidget(widget.data())) {
+        widget->deleteFromDatabase();
+        return false;
+    }
+    HsWidgetHost* taken = widget.take();
+    taken->initializeWidget();
+    taken->showWidget();
+    activePage->layoutNewWidgets();
+
+    return true;
+}
+
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC ENDSKIP
+#endif //COVERAGE_MEASUREMENT
+