controlpanel/src/cpframework/src/cpsettingformentryitemdata.cpp
changeset 21 851e19007849
parent 18 e3554c9069b6
child 52 58cebe0861a8
--- a/controlpanel/src/cpframework/src/cpsettingformentryitemdata.cpp	Fri Apr 16 15:15:08 2010 +0300
+++ b/controlpanel/src/cpframework/src/cpsettingformentryitemdata.cpp	Mon May 03 12:46:45 2010 +0300
@@ -15,12 +15,9 @@
 *
 */
 #include "cpsettingformentryitemdata.h"
+#include "cpsettingformentryitemdata_p.h"
 #include "cpviewlauncher.h"
 #include <cpbasesettingview.h>
-#include <hbpushbutton.h>
-#include <hbdataformviewitem.h>
-#include <hbdataform.h>
-#include <cpitemdatahelper.h>
 
 
 /*!
@@ -44,8 +41,9 @@
     Construct a new CpSettingFormEntryItemData with the given parent.
 */
 CpSettingFormEntryItemData::CpSettingFormEntryItemData(const HbDataFormModelItem *parent /* = 0*/)
-: CpSettingFormItemData(parent)
+: CpSettingFormItemData(parent),  d_ptr(new CpSettingFormEntryItemDataPrivate())
 {
+    d_ptr->init(this);
 }
 
 
@@ -58,13 +56,16 @@
         const QString &description /* = QString()*/,
 		const HbIcon &icon,
         const HbDataFormModelItem *parent /*= 0*/) : 
-        CpSettingFormItemData(HbDataFormModelItem::CustomItemBase,QString(),parent)
+        CpSettingFormItemData(HbDataFormModelItem::CustomItemBase,QString(),parent),
+        d_ptr(new CpSettingFormEntryItemDataPrivate(&itemDataHelper))
 {
-	itemDataHelper.addConnection(this,SIGNAL(pressed()),this,SLOT(onLaunchView()));
-	setType ( static_cast<HbDataFormModelItem::DataItemType> (CpSettingFormEntryItemData::EntryItem) );
-    setContentWidgetData(QString("text"),QVariant(text));
-	setContentWidgetData(QString("additionalText"),QVariant(description));
-	setContentWidgetData(QString("icon"),QVariant(icon));
+    setType ( static_cast<HbDataFormModelItem::DataItemType> (CpSettingFormEntryItemData::ListEntryItem) );
+	
+    d_ptr->init(this);
+    
+	setText(text);
+	setDescription(description);
+	setIcon(icon.iconName());
 }
 
 /*!
@@ -72,19 +73,59 @@
 */
 
 CpSettingFormEntryItemData::CpSettingFormEntryItemData(HbDataForm *dataForm,
-			const QString &text /*= QString()*/,
-	        const QString &description /*= QString()*/,
-			const HbIcon &icon /*= HbIcon()*/,
-			const HbDataFormModelItem *parent/* = 0*/) :
-			CpSettingFormItemData(HbDataFormModelItem::CustomItemBase,QString(),parent)
+        const QString &text /*= QString()*/,
+        const QString &description /*= QString()*/,
+        const HbIcon &icon /*= HbIcon()*/,
+        const HbDataFormModelItem *parent/* = 0*/) :
+        CpSettingFormItemData(HbDataFormModelItem::CustomItemBase,QString(),parent),
+        d_ptr(new CpSettingFormEntryItemDataPrivate(dataForm))
+{
+	setType ( static_cast<HbDataFormModelItem::DataItemType> (CpSettingFormEntryItemData::ListEntryItem) );
+	
+	d_ptr->init(this);
+	
+    setText(text);
+    setDescription(description);
+    setIcon(icon.iconName());
+}
+
+
+CpSettingFormEntryItemData::CpSettingFormEntryItemData(
+         EntryItemType type,
+         CpItemDataHelper &itemDataHelper,
+         const QString &text /*= QString()*/,
+         const QString &description /*= QString()*/,
+         const QString &iconName /*= QString()*/,
+         const HbDataFormModelItem *parent /*= 0*/) :
+         CpSettingFormItemData(HbDataFormModelItem::CustomItemBase,QString(),parent),
+         d_ptr(new CpSettingFormEntryItemDataPrivate(&itemDataHelper))
 {
-	if (dataForm) {
-		dataForm->addConnection(this,SIGNAL(pressed()),this,SLOT(onLaunchView()));
-	}
-	setType ( static_cast<HbDataFormModelItem::DataItemType> (CpSettingFormEntryItemData::EntryItem) );
-    setContentWidgetData(QString("text"),QVariant(text));
-	setContentWidgetData(QString("additionalText"),QVariant(description));
-	setContentWidgetData(QString("icon"),QVariant(icon));
+    setType ( static_cast<HbDataFormModelItem::DataItemType> (type) );
+    
+    d_ptr->init(this);
+    
+    setText(text);
+    setDescription(description);
+    setIcon(iconName);
+}
+
+CpSettingFormEntryItemData::CpSettingFormEntryItemData(
+         EntryItemType type,
+         HbDataForm *dataForm,
+         const QString &text /*= QString()*/,
+         const QString &description /*= QString()*/,
+         const QString &iconName /*= QString()*/,
+         const HbDataFormModelItem *parent /*= 0*/) : 
+         CpSettingFormItemData(HbDataFormModelItem::CustomItemBase,QString(),parent),
+         d_ptr(new CpSettingFormEntryItemDataPrivate(dataForm))
+{
+    setType ( static_cast<HbDataFormModelItem::DataItemType> (type) );
+    
+    d_ptr->init(this);
+    
+    setText(text);
+    setDescription(description);
+    setIcon(iconName);
 }
 
 
@@ -93,6 +134,7 @@
 */
 CpSettingFormEntryItemData::~CpSettingFormEntryItemData()
 {
+    delete d_ptr;
 }
 
 
@@ -101,7 +143,7 @@
 */
 QString CpSettingFormEntryItemData::text() const
 {
-    return contentWidgetData(QString("text")).toString();
+    return d_ptr->text();
 }
 
 /*!
@@ -109,7 +151,7 @@
 */
 void CpSettingFormEntryItemData::setText(const QString &text)
 {
-    setContentWidgetData(QString("text"),QVariant(text));
+    d_ptr->setText(text);
 }
 
 /*!
@@ -117,7 +159,7 @@
 */
 QString CpSettingFormEntryItemData::description() const
 {
-    return contentWidgetData(QString("additionalText")).toString();
+    return d_ptr->description();
 }
 
 /*!
@@ -125,7 +167,18 @@
 */
 void CpSettingFormEntryItemData::setDescription(const QString &description)
 {
-    setContentWidgetData(QString("additionalText"),QVariant(description));
+    d_ptr->setDescription(description);
+}
+
+
+QString CpSettingFormEntryItemData::iconName() const
+{
+    return d_ptr->iconName();
+}
+
+void CpSettingFormEntryItemData::setIconName(const QString &icon)
+{
+    d_ptr->setIconName(icon);
 }
 
 /*!
@@ -133,7 +186,7 @@
 */
 HbIcon CpSettingFormEntryItemData::entryItemIcon()const
 {
-	return qvariant_cast<HbIcon>(contentWidgetData(QString("icon")));
+    return d_ptr->entryItemIcon();
 }
 
 /*!
@@ -141,12 +194,18 @@
 */
 void CpSettingFormEntryItemData::setEntryItemIcon(const HbIcon& icon)
 {
-	setContentWidgetData(QString("icon"),icon);
+    d_ptr->setEntryItemIcon(icon);
 }
 
 void CpSettingFormEntryItemData::onLaunchView() 
 {
-	if (CpBaseSettingView *view = createSettingView()) {
-		CpViewLauncher::launchView(view);
-	}
+    //avoid being launched more than one times
+    if (d_ptr->mSettingViewPtr.isNull()) {
+        d_ptr->mSettingViewPtr = createSettingView();
+        if (!d_ptr->mSettingViewPtr.isNull()) {
+            CpViewLauncher::launchView(d_ptr->mSettingViewPtr.data());
+        }
+    }
 }
+
+//End of File