--- a/homescreenapp/hsdomainmodel/src/hscontentservice.cpp Fri Jun 11 13:30:16 2010 +0300
+++ b/homescreenapp/hsdomainmodel/src/hscontentservice.cpp Wed Jun 23 18:03:36 2010 +0300
@@ -23,26 +23,40 @@
#include "hswidgethost.h"
+/*!
+ \class HsContentService
+ \ingroup group_hsdomainmodel
+ \brief
+*/
+
+/*!
+
+*/
HsContentService::HsContentService(QObject *parent)
- : QObject(parent)
+ : QObject(parent),mWidgetStartFaulted(false)
{
}
+/*!
+
+*/
HsContentService::~HsContentService()
{
}
+/*!
+*/
bool HsContentService::createWidget(const QVariantHash ¶ms)
{
- HsWidgetHost *widget = createWidgetForPreview(params);
- if (!widget) {
- return false;
- }
- return HsScene::instance()->activePage()->addNewWidget(widget);
+ return addWidget(params.value("uri").toString(),params.value("preferences").toHash());
}
+// This method will be removed.
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC SKIP
+#endif //COVERAGE_MEASUREMENT
HsWidgetHost *HsContentService::createWidgetForPreview(const QVariantHash ¶ms)
{
HsWidgetData widgetData;
@@ -51,6 +65,9 @@
return HsWidgetHost::createInstance(
widgetData, params.value("preferences").toHash());
}
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC ENDSKIP
+#endif //COVERAGE_MEASUREMENT
/*!
@@ -70,9 +87,15 @@
widget->remove();
return false;
}
-
- widget->startWidget();
- page->layoutNewWidgets();
+ connect(widget,SIGNAL(event_faulted()),SLOT(widgetStartFaulted()));
+ mWidgetStartFaulted = false;
+ widget->startWidget(); // synchronous operation
+ if (mWidgetStartFaulted) {
+ // page will destroy widget instance
+ return false;
+ }
+ widget->disconnect(this);
+
return true;
}
@@ -88,6 +111,14 @@
}
/*!
+
+*/
+void HsContentService::widgetStartFaulted()
+{
+ mWidgetStartFaulted = true;
+}
+
+/*!
Points to the content service instance.
*/
HsContentService *HsContentService::mInstance(0);