201033
authorhgs
Tue, 24 Aug 2010 10:30:25 +0800
changeset 52 58cebe0861a8
parent 40 6465d5bb863a
child 61 33e86ecbfdb4
201033
controlpanel/conf/s60settingsuis.confml
controlpanel/controlpanel_plat/inc/controlpanel_plat.pri
controlpanel/controlpanel_plat/inc/cpbasepath.h
controlpanel/controlpanel_plat/inc/cpbasesettingview.h
controlpanel/controlpanel_plat/inc/cpglobal.h
controlpanel/controlpanel_plat/inc/cpitemdatahelper.h
controlpanel/controlpanel_plat/inc/cplauncherinterface.h
controlpanel/controlpanel_plat/inc/cplogger.h
controlpanel/controlpanel_plat/inc/cpplugininterface.h
controlpanel/controlpanel_plat/inc/cppluginlauncher.h
controlpanel/controlpanel_plat/inc/cppluginloader.h
controlpanel/controlpanel_plat/inc/cppluginplatinterface.h
controlpanel/controlpanel_plat/inc/cppluginutility.h
controlpanel/controlpanel_plat/inc/cpsettingformentryitemdataimpl.h
controlpanel/controlpanel_plat/inc/cpsettingformitemdata.h
controlpanel/controlpanel_plat/inc/logger.h
controlpanel/controlpanel_plat/inc/logger_plat.pri
controlpanel/controlpanel_plat/inc/loggerglobal.h
controlpanel/controlpanel_plat/inc/logoutput.h
controlpanel/controlpanel_plat/inc/logoutputfactory.h
controlpanel/rom/controlpanel.iby
controlpanel/src/cpframework/bwins/cpframeworku.def
controlpanel/src/cpframework/cpframework.pro
controlpanel/src/cpframework/cpframework_export.pri
controlpanel/src/cpframework/eabi/cpframeworku.def
controlpanel/src/cpframework/resources/widgetml/cpdataformlistentryviewitem.css
controlpanel/src/cpframework/resources/widgetml/cpdataformlistentryviewitem.widgetml
controlpanel/src/cpframework/src/cpbasesettingview.cpp
controlpanel/src/cpframework/src/cpbasesettingview_p.cpp
controlpanel/src/cpframework/src/cpbasesettingview_p.h
controlpanel/src/cpframework/src/cpdataformbuttonentryviewitem.cpp
controlpanel/src/cpframework/src/cpdataformbuttonentryviewitem.h
controlpanel/src/cpframework/src/cpdataformlistentryviewitem.cpp
controlpanel/src/cpframework/src/cpdataformlistentryviewitem.h
controlpanel/src/cpframework/src/cpitemdatahelper.cpp
controlpanel/src/cpframework/src/cppluginlauncher.cpp
controlpanel/src/cpframework/src/cppluginloader.cpp
controlpanel/src/cpframework/src/cppluginutility.cpp
controlpanel/src/cpframework/src/cpsettingformentryitemdata.cpp
controlpanel/src/cpframework/src/cpsettingformentryitemdata_p.cpp
controlpanel/src/cpframework/src/cpsettingformentryitemdata_p.h
controlpanel/src/cpframework/src/cpsettingformitemdata.cpp
controlpanel/src/cpframework/src/cputility.cpp
controlpanel/src/cpframework/src/cputility.h
controlpanel/src/cpframework/src/cpviewlauncher.cpp
controlpanel/src/cpframework/src/cpviewlauncher.h
controlpanel/src/logger/bwins/cploggeru.def
controlpanel/src/logger/eabi/cploggeru.def
controlpanel/src/logger/logger.pro
controlpanel/src/logger/src/logger.cpp
controlpanel/src/logger/src/logoutput.cpp
controlpanel/src/logger/src/logoutputfactory.cpp
controlpanel/src/logger/src/logoutputimpl.cpp
controlpanel/src/src.pro
controlpanel/tsrc/tsrc.pro
controlpanel/tsrc/unit/pluginfortest/firstpluginfortest/firstpluginfortest.pro
controlpanel/tsrc/unit/pluginfortest/firstpluginfortest/src/firstpluginfortest.cpp
controlpanel/tsrc/unit/pluginfortest/firstpluginfortest/src/firstpluginfortest.h
controlpanel/tsrc/unit/pluginfortest/firstpluginfortest/src/firstpluginviewfortest.cpp
controlpanel/tsrc/unit/pluginfortest/firstpluginfortest/src/firstpluginviewfortest.h
controlpanel/tsrc/unit/pluginfortest/secondpluginfortest/secondpluginfortest.pro
controlpanel/tsrc/unit/pluginfortest/secondpluginfortest/src/secondpluginfortest.cpp
controlpanel/tsrc/unit/pluginfortest/secondpluginfortest/src/secondpluginfortest.h
controlpanel/tsrc/unit/pluginfortest/secondpluginfortest/src/secondpluginviewfortest.cpp
controlpanel/tsrc/unit/pluginfortest/secondpluginfortest/src/secondpluginviewfortest.h
controlpanel/tsrc/unit/pluginfortest/thirdpluginfortest/src/thirdpluginfortest.cpp
controlpanel/tsrc/unit/pluginfortest/thirdpluginfortest/src/thirdpluginfortest.h
controlpanel/tsrc/unit/pluginfortest/thirdpluginfortest/src/thirdpluginviewfortest.cpp
controlpanel/tsrc/unit/pluginfortest/thirdpluginfortest/src/thirdpluginviewfortest.h
controlpanel/tsrc/unit/pluginfortest/thirdpluginfortest/thirdpluginfortest.pro
controlpanel/tsrc/unit/testplugin/data/testplugin.cpcfg
controlpanel/tsrc/unit/testplugin/src/cppersonalizationplugin.cpp
controlpanel/tsrc/unit/testplugin/src/cppersonalizationplugin.h
controlpanel/tsrc/unit/testplugin/testplugin.pri
controlpanel/tsrc/unit/testplugin/testplugin.pro
controlpanel/tsrc/unit/ut_common.pri
controlpanel/tsrc/unit/ut_cpapi/runtest.bat
controlpanel/tsrc/unit/ut_cpapi/src/cptestpluginentryitem.cpp
controlpanel/tsrc/unit/ut_cpapi/src/cptestpluginentryitem.h
controlpanel/tsrc/unit/ut_cpapi/src/cptestview.cpp
controlpanel/tsrc/unit/ut_cpapi/src/cptestview.h
controlpanel/tsrc/unit/ut_cpapi/src/main.cpp
controlpanel/tsrc/unit/ut_cpapi/src/ut_cpapi.cpp
controlpanel/tsrc/unit/ut_cpapi/src/ut_cpapi.h
controlpanel/tsrc/unit/ut_cpapi/ut_cpapi.pro
controlpanel/tsrc/unit/ut_cpbasesettingview/src/mycpbasesettingview.cpp
controlpanel/tsrc/unit/ut_cpbasesettingview/src/mycpbasesettingview.h
controlpanel/tsrc/unit/ut_cpbasesettingview/src/ut_cpbasesettingview.cpp
controlpanel/tsrc/unit/ut_cpbasesettingview/src/ut_cpbasesettingview.h
controlpanel/tsrc/unit/ut_cpbasesettingview/ut_cpbasesettingview.pri
controlpanel/tsrc/unit/ut_cpbasesettingview/ut_cpbasesettingview.pro
controlpanel/tsrc/unit/ut_cpdataformbuttonentryviewitem/src/mycpdataformbuttonentryviewitem.cpp
controlpanel/tsrc/unit/ut_cpdataformbuttonentryviewitem/src/mycpdataformbuttonentryviewitem.h
controlpanel/tsrc/unit/ut_cpdataformbuttonentryviewitem/src/ut_cpdataformbuttonentryviewitem.cpp
controlpanel/tsrc/unit/ut_cpdataformbuttonentryviewitem/src/ut_cpdataformbuttonentryviewitem.h
controlpanel/tsrc/unit/ut_cpdataformbuttonentryviewitem/ut_cpdataformbuttonentryviewitem.pri
controlpanel/tsrc/unit/ut_cpdataformbuttonentryviewitem/ut_cpdataformbuttonentryviewitem.pro
controlpanel/tsrc/unit/ut_cpdataformlistentryviewitem/src/mycpdataformlistentryviewitem.cpp
controlpanel/tsrc/unit/ut_cpdataformlistentryviewitem/src/mycpdataformlistentryviewitem.h
controlpanel/tsrc/unit/ut_cpdataformlistentryviewitem/src/ut_cpdataformlistentryviewitem.cpp
controlpanel/tsrc/unit/ut_cpdataformlistentryviewitem/src/ut_cpdataformlistentryviewitem.h
controlpanel/tsrc/unit/ut_cpdataformlistentryviewitem/ut_cpdataformlistentryviewitem.pri
controlpanel/tsrc/unit/ut_cpdataformlistentryviewitem/ut_cpdataformlistentryviewitem.pro
controlpanel/tsrc/unit/ut_cpitemdatahelper/src/ut_cpitemdatahelper.cpp
controlpanel/tsrc/unit/ut_cpitemdatahelper/src/ut_cpitemdatahelper.h
controlpanel/tsrc/unit/ut_cpitemdatahelper/ut_cpitemdatahelper.pri
controlpanel/tsrc/unit/ut_cpitemdatahelper/ut_cpitemdatahelper.pro
controlpanel/tsrc/unit/ut_cppluginlauncher/src/ut_cppluginlauncher.cpp
controlpanel/tsrc/unit/ut_cppluginlauncher/src/ut_cppluginlauncher.h
controlpanel/tsrc/unit/ut_cppluginlauncher/ut_cppluginlauncher.pri
controlpanel/tsrc/unit/ut_cppluginlauncher/ut_cppluginlauncher.pro
controlpanel/tsrc/unit/ut_cppluginloader/src/ut_cppluginloader.cpp
controlpanel/tsrc/unit/ut_cppluginloader/src/ut_cppluginloader.h
controlpanel/tsrc/unit/ut_cppluginloader/ut_cppluginloader.pri
controlpanel/tsrc/unit/ut_cppluginloader/ut_cppluginloader.pro
controlpanel/tsrc/unit/ut_cppluginutility/src/ut_cppluginutility.cpp
controlpanel/tsrc/unit/ut_cppluginutility/src/ut_cppluginutility.h
controlpanel/tsrc/unit/ut_cppluginutility/ut_cppluginutility.pri
controlpanel/tsrc/unit/ut_cppluginutility/ut_cppluginutility.pro
controlpanel/tsrc/unit/ut_cpsettingformentryitemdata/src/MyCpSettingFormEntryItemData.cpp
controlpanel/tsrc/unit/ut_cpsettingformentryitemdata/src/MyCpSettingFormEntryItemData.h
controlpanel/tsrc/unit/ut_cpsettingformentryitemdata/src/ut_cpsettingformentryitemdata.cpp
controlpanel/tsrc/unit/ut_cpsettingformentryitemdata/src/ut_cpsettingformentryitemdata.h
controlpanel/tsrc/unit/ut_cpsettingformentryitemdata/ut_cpsettingformentryitemdata.pri
controlpanel/tsrc/unit/ut_cpsettingformentryitemdata/ut_cpsettingformentryitemdata.pro
controlpanel/tsrc/unit/ut_cpsettingformitemdata/src/ut_cpsettingformitemdata.cpp
controlpanel/tsrc/unit/ut_cpsettingformitemdata/src/ut_cpsettingformitemdata.h
controlpanel/tsrc/unit/ut_cpsettingformitemdata/ut_cpsettingformitemdata.pri
controlpanel/tsrc/unit/ut_cpsettingformitemdata/ut_cpsettingformitemdata.pro
controlpanel/tsrc/unit/ut_cputility/src/ut_cputility.cpp
controlpanel/tsrc/unit/ut_cputility/src/ut_cputility.h
controlpanel/tsrc/unit/ut_cputility/ut_cputility.pri
controlpanel/tsrc/unit/ut_cputility/ut_cputility.pro
controlpanel/tsrc/unit/ut_cpviewlauncher/src/ut_cpviewlauncher.cpp
controlpanel/tsrc/unit/ut_cpviewlauncher/src/ut_cpviewlauncher.h
controlpanel/tsrc/unit/ut_cpviewlauncher/ut_cpviewlauncher.pri
controlpanel/tsrc/unit/ut_cpviewlauncher/ut_cpviewlauncher.pro
gsprofilesrv_plat/profiles_engine_api/inc/ProfileInternal.hrh
profilesservices/ProfileEngine/conf/profilesengine.confml
Binary file controlpanel/conf/s60settingsuis.confml has changed
--- a/controlpanel/controlpanel_plat/inc/controlpanel_plat.pri	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/controlpanel_plat/inc/controlpanel_plat.pri	Tue Aug 24 10:30:25 2010 +0800
@@ -17,7 +17,6 @@
 PLATFORM_HEADERS += $$PWD/cpglobal.h \
 	$$PWD/cpbasepath.h \
     $$PWD/cpplugininterface.h \
-    $$PWD/cppluginplatinterface.h \
     $$PWD/cpsettingformitemdata.h \
     $$PWD/cppluginlauncher.h \
     $$PWD/cpbasesettingview.h \
@@ -25,11 +24,6 @@
     $$PWD/cpsettingformentryitemdata.h \
     $$PWD/cpsettingformentryitemdataimpl.h \
     $$PWD/cppluginloader.h \
-    $$PWD/logger.h \
-    $$PWD/loggerglobal.h \
-    $$PWD/logoutput.h \
-    $$PWD/logoutputfactory.h \
-    $$PWD/cplogger.h \
     $$PWD/cppluginutility.h \
     $$PWD/cplauncherinterface.h 
     
--- a/controlpanel/controlpanel_plat/inc/cpbasepath.h	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/controlpanel_plat/inc/cpbasepath.h	Tue Aug 24 10:30:25 2010 +0800
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  
+* Description:  Common path definitions for controlpanel
 *
 */
 
@@ -20,6 +20,10 @@
 
 #include <QLatin1String>
 
+/*
+ CP_PLUGIN_PATH : path to place controlpanel plugin stub files (.qtplugin files)
+ CP_PLUGIN_CONFIG_PATH: path to place controlpanel plugin configuration files (.cpcfg files)
+*/
 #ifdef Q_OS_SYMBIAN
         #define CP_PLUGIN_PATH QLatin1String("/resource/qt/plugins/controlpanel")
         #define CP_PLUGIN_CONFIG_PATH QLatin1String("/resource/qt/plugins/controlpanel/config")
--- a/controlpanel/controlpanel_plat/inc/cpbasesettingview.h	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/controlpanel_plat/inc/cpbasesettingview.h	Tue Aug 24 10:30:25 2010 +0800
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  
+* Description:  Base class for controlpane plugin views.
 *
 */
 #ifndef CPBASESETTINGVIEW_H
@@ -32,16 +32,6 @@
 public:
 	explicit CpBaseSettingView(QGraphicsWidget *widget = 0, QGraphicsItem *parent = 0);
     virtual ~CpBaseSettingView();    
-    
-    //\deprecated please use HbView::setWidget
-    void setSettingForm(HbDataForm *settingForm)
-    {
-    }
-    //\deprecated HbDataForm *settingForm(), please use HbView::widget() instead
-    HbDataForm *settingForm() const
-    {
-        return 0;
-    }
 signals:
     void returnValueDelivered(const QVariant &returnValue);
     void aboutToClose();
--- a/controlpanel/controlpanel_plat/inc/cpglobal.h	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/controlpanel_plat/inc/cpglobal.h	Tue Aug 24 10:30:25 2010 +0800
@@ -9,14 +9,14 @@
 * Initial Contributors:
 * Nokia Corporation - initial contribution.
 *
-* Contributors:
+* Contributors: 
 *
-* Description:  
+* Description:  Common definitions for controlpanel
 *
 */
 
-#ifndef CP_GLOBAL_H
-#define CP_GLOBAL_H
+#ifndef CPGLOBAL_H
+#define CPGLOBAL_H
 
 #include <QtGlobal>
 
--- a/controlpanel/controlpanel_plat/inc/cpitemdatahelper.h	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/controlpanel_plat/inc/cpitemdatahelper.h	Tue Aug 24 10:30:25 2010 +0800
@@ -9,13 +9,13 @@
 * Initial Contributors:
 * Nokia Corporation - initial contribution.
 *
-* Contributors:
+* Contributors: 
 *
-* Description:  
+* Description:  Helper class by which a plugin can communicate with the associated dataform.
 *
 */
-#ifndef CP_ITEM_DATA_HELPER_H
-#define CP_ITEM_DATA_HELPER_H
+#ifndef CPITEMDATAHELPER_H
+#define CPITEMDATAHELPER_H
 
 #include <QObject>
 #include <cpglobal.h>
--- a/controlpanel/controlpanel_plat/inc/cplauncherinterface.h	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/controlpanel_plat/inc/cplauncherinterface.h	Tue Aug 24 10:30:25 2010 +0800
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  
+* Description:  Interface for controlpanel plugins, with this interface client application can launch a view from outside of controlpanel application.
 *
 */
 
@@ -24,7 +24,49 @@
 
 /*!
     \class CpLauncherInterface
-    \brief The class CpLauncherInterface defines an interface for plugins which can be launched a specific view from outside controlpanel application.
+    \brief The class CpLauncherInterface defines an interface for plugins, if one controlpanel plugin implements
+    this interface, client application can launch a setting view from outside of controlpanel application by two ways.
+    
+    (1) launch setting view in client process, using CpPluginLauncher.
+    
+    \code
+    CpBaseSettingView *settingView = CpPluginLauncher::launchSettingView("cpmyplugin.dll",QVariant());
+    \endcode
+    
+    (2) launch setting view in embedded mode, using QtHighway client API.
+    
+    \code
+    if (mRequest) {
+        delete mRequest;
+        mRequest = 0;
+    }
+    
+    mRequest = mAppMgr.create("com.nokia.symbian.ICpPluginLauncher", "launchSettingView(QString,QVariant)", true);
+
+    if (!mRequest)
+    {
+        return;
+    }
+    else
+    {
+        connect(mRequest, SIGNAL(requestOk(QVariant)), SLOT(handleReturnValue(QVariant)));
+        connect(mRequest, SIGNAL(requestError(int,QString)), SLOT(handleError(int,QString)));
+    }
+
+    // Set arguments for request 
+    QList<QVariant> args;
+    args << QVariant("cpmyplugin.dll");
+    args << QVariant();
+    mRequest->setArguments(args);
+
+    mRequest->setSynchronous(false);    
+    // Make the request
+    if (!mRequest->send())
+    {
+        //report error     
+    }
+    \endcode
+    
  */
 
 class QVariant;
--- a/controlpanel/controlpanel_plat/inc/cplogger.h	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/controlpanel_plat/inc/cplogger.h	Tue Aug 24 10:30:25 2010 +0800
@@ -9,9 +9,9 @@
 * Initial Contributors:
 * Nokia Corporation - initial contribution.
 *
-* Contributors:
+* Contributors: 
 *
-* Description:  
+* Description:  Log utility for controlpanel framework.
 *
 */
 #ifndef CPLOGGER_H
@@ -43,13 +43,13 @@
 #include <logger.h>
 
 /*
- make CPFW_LOG work
+ define ENABLE_CPFW_LOG to  make CPFW_LOG work
 */
 
 //#define ENABLE_CPFW_LOG
 
 /*
- make CPPERF_LOG work
+ define ENABLE_CPPERF_LOG to make CPPERF_LOG work
 */
 
 //#define ENABLE_CPPERF_LOG
@@ -60,9 +60,11 @@
 #define CP_LOGGER_CONFIG_PATH QLatin1String(":/logconf/controlpanellog.conf")
 
 #ifdef ENABLE_CPFW_LOG
-    #define CPFW_LOG(str)   Logger::instance(CPFW_LOGGER_NAME)->log(str);
+    #define CPFW_LOG(str)             Logger::instance(CPFW_LOGGER_NAME)->log(str);
+    #define CPSP_LOG_FUNC_ENTRY(func) LogFunctionEntryHelper ___cpfw_log_func_entry_helper(CPFW_LOGGER_NAME,func);
 #else
     #define CPFW_LOG(str)
+    #define CPSP_LOG_FUNC_ENTRY(func)
 #endif
 
 #ifdef ENABLE_CPPERF_LOG
--- a/controlpanel/controlpanel_plat/inc/cpplugininterface.h	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/controlpanel_plat/inc/cpplugininterface.h	Tue Aug 24 10:30:25 2010 +0800
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  
+* Description:  Interface for controlpanel plugins.
 *
 */
 
@@ -23,7 +23,7 @@
 
 /*!
     \class CpPluginInterface
-    \brief The class CpPluginInterface is an interface for plugins which can be displayed in control panel application. 
+    \brief The class CpPluginInterface is an interface for controlpanel plugins.
  */
 
 class CpSettingFormItemData;
@@ -40,7 +40,7 @@
     }
     
     /*!
-     Create a data form mode item, by which the control panel framework can build a data form model.
+     Create a set of data form mode item, by which the control panel framework can build a data form model.
      */
     virtual QList<CpSettingFormItemData*> createSettingFormItemData(CpItemDataHelper &itemDataHelper) const = 0;
 };
--- a/controlpanel/controlpanel_plat/inc/cppluginlauncher.h	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/controlpanel_plat/inc/cppluginlauncher.h	Tue Aug 24 10:30:25 2010 +0800
@@ -11,10 +11,7 @@
 *
 * Contributors:
 *
-* Description:  This class is for loading and display a plugin's view.
-*								This class may dropped, suggest not using it. If you 
-*								want to use it, pls inform us, or check the wiki 
-*								http://s60wiki.nokia.com/S60Wiki/Team_S60_China_SW/Qt_Control_Panel/FAQ
+* Description: Launch controlpanel plugin setting view in client process.
 *
 */
 
@@ -29,11 +26,7 @@
 
 class CP_EXPORT CpPluginLauncher
 {
-public:
-	/*  OLD Interface - Deprecated! */
-    static bool launchCpPluginView(const QString &pluginFile,int index = 0);
-    
-    /*  */
+public:    
 	static CpBaseSettingView* launchSettingView(const QString &pluginFile,const QVariant &hint = QVariant());
 };
 
--- a/controlpanel/controlpanel_plat/inc/cppluginloader.h	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/controlpanel_plat/inc/cppluginloader.h	Tue Aug 24 10:30:25 2010 +0800
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  
+* Description:  Utility class to load a CpPluginInterface or CpLauncherInterface from a controlpanel plugin file.
 *
 */
 
@@ -28,19 +28,7 @@
 
 class CP_EXPORT CpPluginLoader
 {
-public:    
-    /* OLD INTERFACES* DPRECATED!!! \deprecated static CpPluginInterface     *loadCpPlugin(const QString &pluginFile)*/
-    static CpPluginInterface     *loadCpPlugin(const QString &pluginFile)
-    {
-        return 0;
-    }
-    /* OLD INTERFACES* DPRECATED!!! \deprecated static CpPluginPlatInterface *loadPlatCpPlugin(const QString &pluginFile)*/
-    static CpPluginPlatInterface *loadPlatCpPlugin(const QString &pluginFile)
-    {
-        return 0;
-    }
-    
-    /*NEW INTERFACES*/
+public:        
     static CpPluginInterface     *loadCpPluginInterface(const QString &pluginFile);
     static CpLauncherInterface   *loadCpLauncherInterface(const QString &pluginFile);
 };
--- a/controlpanel/controlpanel_plat/inc/cppluginplatinterface.h	Fri Jun 25 17:09:30 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/*
-* 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:  
-*
-*/
-
-#ifndef CPPLUGINPLATINTERFACE_H
-#define CPPLUGINPLATINTERFACE_H
-
-#include <QtPlugin>
-
-/*!
-		\deprecated class CpPluginPlatInterface
-    \class CpPluginPlatInterface
-    \brief The class is Deprecated! please use CpPluginInterface instead.
- */
-
-class CpSettingFormItemData;
-class CpItemDataHelper;
-
-class CpPluginPlatInterface
-{
-public:
-    /*!
-     Destructor of CpPluginPlatInterface.
-     */
-    virtual ~CpPluginPlatInterface()
-    {
-    }
-    
-    /*!
-    \deprecated CpSettingFormItemData *createSettingFormItemData(CpItemDataHelper &itemDataHelper)
-     Create a data form mode item, by which the control panel framework can build a data form model.
-     */
-    virtual CpSettingFormItemData *createSettingFormItemData(CpItemDataHelper &itemDataHelper) const = 0;
-};
-
-Q_DECLARE_INTERFACE(CpPluginPlatInterface, "com.nokia.plugin.controlpanel.platform.interface/1.0");
-
-#endif /* CPPLUGINPLATINTERFACE_H */
--- a/controlpanel/controlpanel_plat/inc/cppluginutility.h	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/controlpanel_plat/inc/cppluginutility.h	Tue Aug 24 10:30:25 2010 +0800
@@ -11,22 +11,19 @@
 *
 * Contributors:
 *
-* Description:  
+* Description:  Utility class for controlpanel plugins.
 *
 */
 
-#ifndef CP_PLUGINUTILITY_H
-#define CP_PLUGINUTILITY_H
+#ifndef CPPLUGINUTILITY_H
+#define CPPLUGINUTILITY_H
 
 #include <cpglobal.h>
+
 class HbDataForm;
 
 class CP_EXPORT CpPluginUtility
 {
-/*!
-     This function can add the proto type of setting items (like entry item) 
-     which is supplied by control panel into your dataform's instance
- */
 public:
     static void addCpItemPrototype(HbDataForm *settingForm);
 };
--- a/controlpanel/controlpanel_plat/inc/cpsettingformentryitemdataimpl.h	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/controlpanel_plat/inc/cpsettingformentryitemdataimpl.h	Tue Aug 24 10:30:25 2010 +0800
@@ -15,8 +15,8 @@
 *
 */
 
-#ifndef CP_SETTINGFORM_ENTRY_ITEM_DATA_IMPL_H
-#define CP_SETTINGFORM_ENTRY_ITEM_DATA_IMPL_H
+#ifndef CPSETTINGFORMENTRYITEMDATAIMPL_H
+#define CPSETTINGFORMENTRYITEMDATAIMPL_H
 
 #include "cpsettingformentryitemdata.h"
 
@@ -55,6 +55,9 @@
 
 	{ }
 	
+	/*!
+	    Construct a new CpSettingFormEntryItemData with the given type, text, description, icon name, and parent.
+	*/
     explicit CpSettingFormEntryItemDataImpl(
             EntryItemType type,
             CpItemDataHelper &itemDataHelper,
@@ -65,6 +68,9 @@
             CpSettingFormEntryItemData(type,itemDataHelper,text,description,icon,parent)
     { }
     
+    /*!
+        Construct a new CpSettingFormEntryItemData with the given type, text, description, icon name, and parent.
+    */
     explicit CpSettingFormEntryItemDataImpl(
             EntryItemType type,
             HbDataForm *dataForm,
--- a/controlpanel/controlpanel_plat/inc/cpsettingformitemdata.h	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/controlpanel_plat/inc/cpsettingformitemdata.h	Tue Aug 24 10:30:25 2010 +0800
@@ -12,12 +12,12 @@
 * Contributors:
 *
 * Description:  
-*						This class is a control panel defined HbDataFormModelItem,
+*						This class is a control panel defined HbDataFormModelItem
 *					
 *						
 */
-#ifndef CP_SETTING_FORM_ITEM_DATA_H
-#define CP_SETTING_FORM_ITEM_DATA_H
+#ifndef CPSETTINGFORMITEMDATA_H
+#define CPSETTINGFORMITEMDATA_H
 
 #include <cpglobal.h>
 #include <hbdataformmodelitem.h>
--- a/controlpanel/controlpanel_plat/inc/logger.h	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/controlpanel_plat/inc/logger.h	Tue Aug 24 10:30:25 2010 +0800
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  
+* Description:  This class provide log functionality.
 *
 */
 
@@ -33,6 +33,7 @@
     [myapplog]
     logDateTime = 1
     logLoggerName = 1
+    datetimeformat = hh:mm:ss
     output = debugoutput consoleoutput fileoutput
     fileoutput/logfile = C:/data/log/myapp.log
     fileoutput/truncate = 1
@@ -87,4 +88,39 @@
     LoggerPrivate *d_ptr;
 };
 
+class InitLoggerHelper
+{
+public:
+    InitLoggerHelper(const QString &loggerName,const QString &configPath)
+    : mLoggerName(loggerName)
+    {
+        Logger::instance(loggerName)->configure(configPath,QSettings::IniFormat);
+    }
+    ~InitLoggerHelper() {
+        Logger::close(mLoggerName);
+    }
+private:
+    QString mLoggerName;
+};
+
+class LogFunctionEntryHelper
+{
+public:
+    LogFunctionEntryHelper(const QString &loggerName,const QString &func)
+    : mLoggerName(loggerName), mFunc(func)
+    {
+        Logger::instance(mLoggerName)->log(QLatin1String(">>>> ") + mFunc);
+    }
+    ~LogFunctionEntryHelper()
+    {
+        Logger::instance(mLoggerName)->log(QLatin1String("<<<< ") + mFunc);
+    }
+private:
+    QString mLoggerName;
+    QString mFunc;
+};
+
+#define INIT_LOGGER(loggerName,configPath) \
+    InitLoggerHelper __init##loggerName(loggerName,configPath);
+
 #endif //LOGGER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/controlpanel_plat/inc/logger_plat.pri	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,23 @@
+#
+# 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: 
+#
+
+PLATFORM_HEADERS += $$PWD/logger.h \
+    $$PWD/loggerglobal.h \
+    $$PWD/logoutput.h \
+    $$PWD/logoutputfactory.h \
+    $$PWD/cplogger.h 
+    
+HEADERS += $$PLATFORM_HEADERS
--- a/controlpanel/controlpanel_plat/inc/loggerglobal.h	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/controlpanel_plat/inc/loggerglobal.h	Tue Aug 24 10:30:25 2010 +0800
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  
+* Description:  Common definitions for log.
 *
 */
 #ifndef LOGGERGLOBAL_H
--- a/controlpanel/controlpanel_plat/inc/logoutput.h	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/controlpanel_plat/inc/logoutput.h	Tue Aug 24 10:30:25 2010 +0800
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  
+* Description:  An interface to output log string.
 *
 */
 #ifndef LOGOUTPUT_H
--- a/controlpanel/controlpanel_plat/inc/logoutputfactory.h	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/controlpanel_plat/inc/logoutputfactory.h	Tue Aug 24 10:30:25 2010 +0800
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  
+* Description:  Factory class to create LogOutput.
 *
 */
 #ifndef LOGOUTPUTFACTORY_H
--- a/controlpanel/rom/controlpanel.iby	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/rom/controlpanel.iby	Tue Aug 24 10:30:25 2010 +0800
@@ -24,5 +24,6 @@
 #define CP_UPGRADABLE_APP_REG_RSC(NAME) data=DATAZ_\PRIVATE\10003A3F\IMPORT\APPS\ ## NAME ## _reg.rsc        Private\10003a3f\import\apps\ ## NAME ## _reg.rsc
 
 file=ABI_DIR\BUILD_DIR\cpframework.dll			  	 SHARED_LIB_DIR\cpframework.dll
+file=ABI_DIR\BUILD_DIR\cplogger.dll			  	 SHARED_LIB_DIR\cplogger.dll
 
 #endif
--- a/controlpanel/src/cpframework/bwins/cpframeworku.def	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/src/cpframework/bwins/cpframeworku.def	Tue Aug 24 10:30:25 2010 +0800
@@ -1,137 +1,137 @@
 EXPORTS
-	?addLogOutput@Logger@@QAE_NPAVLogOutput@@@Z @ 1 NONAME ; bool Logger::addLogOutput(class LogOutput *)
+	?addLogOutput@Logger@@QAE_NPAVLogOutput@@@Z @ 1 NONAME ABSENT ; bool Logger::addLogOutput(class LogOutput *)
 	??0CpItemDataHelper@@QAE@PAVHbDataForm@@@Z @ 2 NONAME ; CpItemDataHelper::CpItemDataHelper(class HbDataForm *)
-	?trUtf8@LogOutput@@SA?AVQString@@PBD0@Z @ 3 NONAME ; class QString LogOutput::trUtf8(char const *, char const *)
+	?trUtf8@LogOutput@@SA?AVQString@@PBD0@Z @ 3 NONAME ABSENT ; class QString LogOutput::trUtf8(char const *, char const *)
 	??1CpItemDataHelper@@UAE@XZ @ 4 NONAME ; CpItemDataHelper::~CpItemDataHelper(void)
 	??_ECpSettingFormEntryItemData@@UAE@I@Z @ 5 NONAME ; CpSettingFormEntryItemData::~CpSettingFormEntryItemData(unsigned int)
 	?staticMetaObject@CpItemDataHelper@@2UQMetaObject@@B @ 6 NONAME ; struct QMetaObject const CpItemDataHelper::staticMetaObject
 	?metaObject@CpBaseSettingView@@UBEPBUQMetaObject@@XZ @ 7 NONAME ; struct QMetaObject const * CpBaseSettingView::metaObject(void) const
 	?text@CpSettingFormEntryItemData@@QBE?AVQString@@XZ @ 8 NONAME ; class QString CpSettingFormEntryItemData::text(void) const
 	?qt_metacast@CpSettingFormItemData@@UAEPAXPBD@Z @ 9 NONAME ; void * CpSettingFormItemData::qt_metacast(char const *)
-	??1LogOutput@@UAE@XZ @ 10 NONAME ; LogOutput::~LogOutput(void)
-	?qt_metacall@Logger@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 11 NONAME ; int Logger::qt_metacall(enum QMetaObject::Call, int, void * *)
+	??1LogOutput@@UAE@XZ @ 10 NONAME ABSENT ; LogOutput::~LogOutput(void)
+	?qt_metacall@Logger@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 11 NONAME ABSENT ; int Logger::qt_metacall(enum QMetaObject::Call, int, void * *)
 	?loadCpLauncherInterface@CpPluginLoader@@SAPAVCpLauncherInterface@@ABVQString@@@Z @ 12 NONAME ; class CpLauncherInterface * CpPluginLoader::loadCpLauncherInterface(class QString const &)
 	?loadCpPluginInterface@CpPluginLoader@@SAPAVCpPluginInterface@@ABVQString@@@Z @ 13 NONAME ; class CpPluginInterface * CpPluginLoader::loadCpPluginInterface(class QString const &)
-	?staticMetaObject@Logger@@2UQMetaObject@@B @ 14 NONAME ; struct QMetaObject const Logger::staticMetaObject
-	?loadPlatCpPlugin@CpPluginLoader@@SAPAVCpPluginPlatInterface@@ABVQString@@@Z @ 15 NONAME ; class CpPluginPlatInterface * CpPluginLoader::loadPlatCpPlugin(class QString const &)
-	?logOutput@Logger@@QAEPAVLogOutput@@ABVQString@@@Z @ 16 NONAME ; class LogOutput * Logger::logOutput(class QString const &)
-	??_ELogOutput@@UAE@I@Z @ 17 NONAME ; LogOutput::~LogOutput(unsigned int)
+	?staticMetaObject@Logger@@2UQMetaObject@@B @ 14 NONAME ABSENT ; struct QMetaObject const Logger::staticMetaObject
+	?loadPlatCpPlugin@CpPluginLoader@@SAPAVCpPluginPlatInterface@@ABVQString@@@Z @ 15 NONAME ABSENT ; class CpPluginPlatInterface * CpPluginLoader::loadPlatCpPlugin(class QString const &)
+	?logOutput@Logger@@QAEPAVLogOutput@@ABVQString@@@Z @ 16 NONAME ABSENT ; class LogOutput * Logger::logOutput(class QString const &)
+	??_ELogOutput@@UAE@I@Z @ 17 NONAME ABSENT ; LogOutput::~LogOutput(unsigned int)
 	?addCpItemPrototype@CpPluginUtility@@SAXPAVHbDataForm@@@Z @ 18 NONAME ; void CpPluginUtility::addCpItemPrototype(class HbDataForm *)
-	?qt_metacast@LogOutput@@UAEPAXPBD@Z @ 19 NONAME ; void * LogOutput::qt_metacast(char const *)
+	?qt_metacast@LogOutput@@UAEPAXPBD@Z @ 19 NONAME ABSENT ; void * LogOutput::qt_metacast(char const *)
 	?qt_metacast@CpBaseSettingView@@UAEPAXPBD@Z @ 20 NONAME ; void * CpBaseSettingView::qt_metacast(char const *)
 	?getStaticMetaObject@CpBaseSettingView@@SAABUQMetaObject@@XZ @ 21 NONAME ; struct QMetaObject const & CpBaseSettingView::getStaticMetaObject(void)
 	??1CpSettingFormItemData@@UAE@XZ @ 22 NONAME ; CpSettingFormItemData::~CpSettingFormItemData(void)
 	??0CpSettingFormEntryItemData@@QAE@W4EntryItemType@0@PAVHbDataForm@@ABVQString@@22PBVHbDataFormModelItem@@@Z @ 23 NONAME ; CpSettingFormEntryItemData::CpSettingFormEntryItemData(enum CpSettingFormEntryItemData::EntryItemType, class HbDataForm *, class QString const &, class QString const &, class QString const &, class HbDataFormModelItem const *)
 	?d_func@CpSettingFormEntryItemData@@ABEPBVCpSettingFormEntryItemDataPrivate@@XZ @ 24 NONAME ; class CpSettingFormEntryItemDataPrivate const * CpSettingFormEntryItemData::d_func(void) const
 	?d_func@CpBaseSettingView@@ABEPBVCpBaseSettingViewPrivate@@XZ @ 25 NONAME ; class CpBaseSettingViewPrivate const * CpBaseSettingView::d_func(void) const
-	?launchCpPluginView@CpPluginLauncher@@SA_NABVQString@@H@Z @ 26 NONAME ; bool CpPluginLauncher::launchCpPluginView(class QString const &, int)
+	?launchCpPluginView@CpPluginLauncher@@SA_NABVQString@@H@Z @ 26 NONAME ABSENT ; bool CpPluginLauncher::launchCpPluginView(class QString const &, int)
 	?aboutToClose@CpBaseSettingView@@IAEXXZ @ 27 NONAME ; void CpBaseSettingView::aboutToClose(void)
 	?close@CpBaseSettingView@@MAEXXZ @ 28 NONAME ; void CpBaseSettingView::close(void)
 	?modelItemFromModelIndex@CpItemDataHelper@@QAEPAVHbDataFormModelItem@@ABVQModelIndex@@@Z @ 29 NONAME ; class HbDataFormModelItem * CpItemDataHelper::modelItemFromModelIndex(class QModelIndex const &)
-	?instance@Logger@@SAPAV1@ABVQString@@@Z @ 30 NONAME ; class Logger * Logger::instance(class QString const &)
+	?instance@Logger@@SAPAV1@ABVQString@@@Z @ 30 NONAME ABSENT ; class Logger * Logger::instance(class QString const &)
 	?trUtf8@CpSettingFormEntryItemData@@SA?AVQString@@PBD0H@Z @ 31 NONAME ; class QString CpSettingFormEntryItemData::trUtf8(char const *, char const *, int)
 	?removeConnection@CpItemDataHelper@@QAEXPAVHbDataFormModelItem@@PBDPAVQObject@@1@Z @ 32 NONAME ; void CpItemDataHelper::removeConnection(class HbDataFormModelItem *, char const *, class QObject *, char const *)
 	?returnValueDelivered@CpBaseSettingView@@IAEXABVQVariant@@@Z @ 33 NONAME ; void CpBaseSettingView::returnValueDelivered(class QVariant const &)
-	?setDateTimeFormat@Logger@@QAEXABVQString@@@Z @ 34 NONAME ; void Logger::setDateTimeFormat(class QString const &)
-	?settingForm@CpBaseSettingView@@QBEPAVHbDataForm@@XZ @ 35 NONAME ; class HbDataForm * CpBaseSettingView::settingForm(void) const
-	??1Logger@@UAE@XZ @ 36 NONAME ; Logger::~Logger(void)
+	?setDateTimeFormat@Logger@@QAEXABVQString@@@Z @ 34 NONAME ABSENT ; void Logger::setDateTimeFormat(class QString const &)
+	?settingForm@CpBaseSettingView@@QBEPAVHbDataForm@@XZ @ 35 NONAME ABSENT ; class HbDataForm * CpBaseSettingView::settingForm(void) const
+	??1Logger@@UAE@XZ @ 36 NONAME ABSENT ; Logger::~Logger(void)
 	?description@CpSettingFormEntryItemData@@QBE?AVQString@@XZ @ 37 NONAME ; class QString CpSettingFormEntryItemData::description(void) const
-	?log@Logger@@QAEXABVQString@@@Z @ 38 NONAME ; void Logger::log(class QString const &)
-	??_ELogger@@UAE@I@Z @ 39 NONAME ; Logger::~Logger(unsigned int)
+	?log@Logger@@QAEXABVQString@@@Z @ 38 NONAME ABSENT ; void Logger::log(class QString const &)
+	??_ELogger@@UAE@I@Z @ 39 NONAME ABSENT ; Logger::~Logger(unsigned int)
 	?tr@CpItemDataHelper@@SA?AVQString@@PBD0H@Z @ 40 NONAME ; class QString CpItemDataHelper::tr(char const *, char const *, int)
-	?setName@LogOutput@@QAEXABVQString@@@Z @ 41 NONAME ; void LogOutput::setName(class QString const &)
+	?setName@LogOutput@@QAEXABVQString@@@Z @ 41 NONAME ABSENT ; void LogOutput::setName(class QString const &)
 	?qt_metacall@CpBaseSettingView@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 42 NONAME ; int CpBaseSettingView::qt_metacall(enum QMetaObject::Call, int, void * *)
 	?trUtf8@CpBaseSettingView@@SA?AVQString@@PBD0H@Z @ 43 NONAME ; class QString CpBaseSettingView::trUtf8(char const *, char const *, int)
 	?getStaticMetaObject@CpSettingFormEntryItemData@@SAABUQMetaObject@@XZ @ 44 NONAME ; struct QMetaObject const & CpSettingFormEntryItemData::getStaticMetaObject(void)
-	?name@Logger@@QBE?AVQString@@XZ @ 45 NONAME ; class QString Logger::name(void) const
-	?load@LogOutput@@QAE_NAAVQSettings@@@Z @ 46 NONAME ; bool LogOutput::load(class QSettings &)
+	?name@Logger@@QBE?AVQString@@XZ @ 45 NONAME ABSENT ; class QString Logger::name(void) const
+	?load@LogOutput@@QAE_NAAVQSettings@@@Z @ 46 NONAME ABSENT ; bool LogOutput::load(class QSettings &)
 	??0CpSettingFormEntryItemData@@QAE@AAVCpItemDataHelper@@ABVQString@@1ABVHbIcon@@PBVHbDataFormModelItem@@@Z @ 47 NONAME ; CpSettingFormEntryItemData::CpSettingFormEntryItemData(class CpItemDataHelper &, class QString const &, class QString const &, class HbIcon const &, class HbDataFormModelItem const *)
 	?setText@CpSettingFormEntryItemData@@QAEXABVQString@@@Z @ 48 NONAME ; void CpSettingFormEntryItemData::setText(class QString const &)
-	?close@Logger@@SAXABVQString@@@Z @ 49 NONAME ; void Logger::close(class QString const &)
+	?close@Logger@@SAXABVQString@@@Z @ 49 NONAME ABSENT ; void Logger::close(class QString const &)
 	?disconnectFromForm@CpItemDataHelper@@QAEXPBDPAVQObject@@0@Z @ 50 NONAME ; void CpItemDataHelper::disconnectFromForm(char const *, class QObject *, char const *)
 	?metaObject@CpItemDataHelper@@UBEPBUQMetaObject@@XZ @ 51 NONAME ; struct QMetaObject const * CpItemDataHelper::metaObject(void) const
 	??_ECpItemDataHelper@@UAE@I@Z @ 52 NONAME ; CpItemDataHelper::~CpItemDataHelper(unsigned int)
 	??1CpSettingFormEntryItemData@@UAE@XZ @ 53 NONAME ; CpSettingFormEntryItemData::~CpSettingFormEntryItemData(void)
 	?iconName@CpSettingFormEntryItemData@@QBE?AVQString@@XZ @ 54 NONAME ; class QString CpSettingFormEntryItemData::iconName(void) const
 	?staticMetaObject@CpSettingFormItemData@@2UQMetaObject@@B @ 55 NONAME ; struct QMetaObject const CpSettingFormItemData::staticMetaObject
-	?createLogOutput@LogOutputFactory@@SAPAVLogOutput@@ABVQString@@@Z @ 56 NONAME ; class LogOutput * LogOutputFactory::createLogOutput(class QString const &)
+	?createLogOutput@LogOutputFactory@@SAPAVLogOutput@@ABVQString@@@Z @ 56 NONAME ABSENT ; class LogOutput * LogOutputFactory::createLogOutput(class QString const &)
 	?setEntryItemIcon@CpSettingFormEntryItemData@@QAEXABVHbIcon@@@Z @ 57 NONAME ; void CpSettingFormEntryItemData::setEntryItemIcon(class HbIcon const &)
 	?launchSettingView@CpPluginLauncher@@SAPAVCpBaseSettingView@@ABVQString@@ABVQVariant@@@Z @ 58 NONAME ; class CpBaseSettingView * CpPluginLauncher::launchSettingView(class QString const &, class QVariant const &)
 	?entryItemIcon@CpSettingFormEntryItemData@@QBE?AVHbIcon@@XZ @ 59 NONAME ; class HbIcon CpSettingFormEntryItemData::entryItemIcon(void) const
 	?qt_metacall@CpSettingFormEntryItemData@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 60 NONAME ; int CpSettingFormEntryItemData::qt_metacall(enum QMetaObject::Call, int, void * *)
 	?onLaunchView@CpSettingFormEntryItemData@@UAEXXZ @ 61 NONAME ; void CpSettingFormEntryItemData::onLaunchView(void)
-	?setLogDateTime@Logger@@QAEX_N@Z @ 62 NONAME ; void Logger::setLogDateTime(bool)
-	?configure@Logger@@QAEXABVQString@@W4Format@QSettings@@@Z @ 63 NONAME ; void Logger::configure(class QString const &, enum QSettings::Format)
-	?tr@Logger@@SA?AVQString@@PBD0@Z @ 64 NONAME ; class QString Logger::tr(char const *, char const *)
+	?setLogDateTime@Logger@@QAEX_N@Z @ 62 NONAME ABSENT ; void Logger::setLogDateTime(bool)
+	?configure@Logger@@QAEXABVQString@@W4Format@QSettings@@@Z @ 63 NONAME ABSENT ; void Logger::configure(class QString const &, enum QSettings::Format)
+	?tr@Logger@@SA?AVQString@@PBD0@Z @ 64 NONAME ABSENT ; class QString Logger::tr(char const *, char const *)
 	?trUtf8@CpItemDataHelper@@SA?AVQString@@PBD0H@Z @ 65 NONAME ; class QString CpItemDataHelper::trUtf8(char const *, char const *, int)
-	?metaObject@LogOutput@@UBEPBUQMetaObject@@XZ @ 66 NONAME ; struct QMetaObject const * LogOutput::metaObject(void) const
+	?metaObject@LogOutput@@UBEPBUQMetaObject@@XZ @ 66 NONAME ABSENT ; struct QMetaObject const * LogOutput::metaObject(void) const
 	?trUtf8@CpItemDataHelper@@SA?AVQString@@PBD0@Z @ 67 NONAME ; class QString CpItemDataHelper::trUtf8(char const *, char const *)
 	??0CpSettingFormEntryItemData@@QAE@PBVHbDataFormModelItem@@@Z @ 68 NONAME ; CpSettingFormEntryItemData::CpSettingFormEntryItemData(class HbDataFormModelItem const *)
-	?logDateTime@Logger@@QBE_NXZ @ 69 NONAME ; bool Logger::logDateTime(void) const
+	?logDateTime@Logger@@QBE_NXZ @ 69 NONAME ABSENT ; bool Logger::logDateTime(void) const
 	??0CpSettingFormEntryItemData@@QAE@PAVHbDataForm@@ABVQString@@1ABVHbIcon@@PBVHbDataFormModelItem@@@Z @ 70 NONAME ; CpSettingFormEntryItemData::CpSettingFormEntryItemData(class HbDataForm *, class QString const &, class QString const &, class HbIcon const &, class HbDataFormModelItem const *)
 	?d_func@CpBaseSettingView@@AAEPAVCpBaseSettingViewPrivate@@XZ @ 71 NONAME ; class CpBaseSettingViewPrivate * CpBaseSettingView::d_func(void)
 	??0CpSettingFormItemData@@QAE@W4DataItemType@HbDataFormModelItem@@ABVQString@@PBV2@@Z @ 72 NONAME ; CpSettingFormItemData::CpSettingFormItemData(enum HbDataFormModelItem::DataItemType, class QString const &, class HbDataFormModelItem const *)
 	?connectToForm@CpItemDataHelper@@QAEXPBDPAVQObject@@0@Z @ 73 NONAME ; void CpItemDataHelper::connectToForm(char const *, class QObject *, char const *)
-	?tr@LogOutput@@SA?AVQString@@PBD0@Z @ 74 NONAME ; class QString LogOutput::tr(char const *, char const *)
+	?tr@LogOutput@@SA?AVQString@@PBD0@Z @ 74 NONAME ABSENT ; class QString LogOutput::tr(char const *, char const *)
 	?setIconName@CpSettingFormEntryItemData@@QAEXABVQString@@@Z @ 75 NONAME ; void CpSettingFormEntryItemData::setIconName(class QString const &)
 	?qt_metacast@CpItemDataHelper@@UAEPAXPBD@Z @ 76 NONAME ; void * CpItemDataHelper::qt_metacast(char const *)
-	?metaObject@Logger@@UBEPBUQMetaObject@@XZ @ 77 NONAME ; struct QMetaObject const * Logger::metaObject(void) const
+	?metaObject@Logger@@UBEPBUQMetaObject@@XZ @ 77 NONAME ABSENT ; struct QMetaObject const * Logger::metaObject(void) const
 	?tr@CpSettingFormEntryItemData@@SA?AVQString@@PBD0@Z @ 78 NONAME ; class QString CpSettingFormEntryItemData::tr(char const *, char const *)
-	??0Logger@@AAE@ABVQString@@PAVQObject@@@Z @ 79 NONAME ; Logger::Logger(class QString const &, class QObject *)
+	??0Logger@@AAE@ABVQString@@PAVQObject@@@Z @ 79 NONAME ABSENT ; Logger::Logger(class QString const &, class QObject *)
 	?addConnection@CpItemDataHelper@@QAEXPAVHbDataFormModelItem@@PBDPAVQObject@@1@Z @ 80 NONAME ; void CpItemDataHelper::addConnection(class HbDataFormModelItem *, char const *, class QObject *, char const *)
 	?d_func@CpSettingFormEntryItemData@@AAEPAVCpSettingFormEntryItemDataPrivate@@XZ @ 81 NONAME ; class CpSettingFormEntryItemDataPrivate * CpSettingFormEntryItemData::d_func(void)
-	?dateTimeFormat@Logger@@QBE?AVQString@@XZ @ 82 NONAME ; class QString Logger::dateTimeFormat(void) const
+	?dateTimeFormat@Logger@@QBE?AVQString@@XZ @ 82 NONAME ABSENT ; class QString Logger::dateTimeFormat(void) const
 	??0CpSettingFormItemData@@QAE@PBVHbDataFormModelItem@@@Z @ 83 NONAME ; CpSettingFormItemData::CpSettingFormItemData(class HbDataFormModelItem const *)
-	?clearAllLogOutput@Logger@@QAEXXZ @ 84 NONAME ; void Logger::clearAllLogOutput(void)
-	?qt_metacall@LogOutput@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 85 NONAME ; int LogOutput::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?clearAllLogOutput@Logger@@QAEXXZ @ 84 NONAME ABSENT ; void Logger::clearAllLogOutput(void)
+	?qt_metacall@LogOutput@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 85 NONAME ABSENT ; int LogOutput::qt_metacall(enum QMetaObject::Call, int, void * *)
 	?setDescription@CpSettingFormEntryItemData@@QAEXABVQString@@@Z @ 86 NONAME ; void CpSettingFormEntryItemData::setDescription(class QString const &)
 	?tr@CpSettingFormEntryItemData@@SA?AVQString@@PBD0H@Z @ 87 NONAME ; class QString CpSettingFormEntryItemData::tr(char const *, char const *, int)
 	?getStaticMetaObject@CpSettingFormItemData@@SAABUQMetaObject@@XZ @ 88 NONAME ; struct QMetaObject const & CpSettingFormItemData::getStaticMetaObject(void)
 	?staticMetaObject@CpSettingFormEntryItemData@@2UQMetaObject@@B @ 89 NONAME ; struct QMetaObject const CpSettingFormEntryItemData::staticMetaObject
-	?setParentLogger@LogOutput@@QAEXPAVLogger@@@Z @ 90 NONAME ; void LogOutput::setParentLogger(class Logger *)
-	?parentLogger@LogOutput@@QAEPAVLogger@@XZ @ 91 NONAME ; class Logger * LogOutput::parentLogger(void)
+	?setParentLogger@LogOutput@@QAEXPAVLogger@@@Z @ 90 NONAME ABSENT ; void LogOutput::setParentLogger(class Logger *)
+	?parentLogger@LogOutput@@QAEPAVLogger@@XZ @ 91 NONAME ABSENT ; class Logger * LogOutput::parentLogger(void)
 	?qt_metacall@CpSettingFormItemData@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 92 NONAME ; int CpSettingFormItemData::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?tr@Logger@@SA?AVQString@@PBD0H@Z @ 93 NONAME ; class QString Logger::tr(char const *, char const *, int)
+	?tr@Logger@@SA?AVQString@@PBD0H@Z @ 93 NONAME ABSENT ; class QString Logger::tr(char const *, char const *, int)
 	??_ECpBaseSettingView@@UAE@I@Z @ 94 NONAME ; CpBaseSettingView::~CpBaseSettingView(unsigned int)
 	?bindToForm@CpItemDataHelper@@QAEXPAVHbDataForm@@@Z @ 95 NONAME ; void CpItemDataHelper::bindToForm(class HbDataForm *)
 	??_ECpSettingFormItemData@@UAE@I@Z @ 96 NONAME ; CpSettingFormItemData::~CpSettingFormItemData(unsigned int)
-	?getStaticMetaObject@Logger@@SAABUQMetaObject@@XZ @ 97 NONAME ; struct QMetaObject const & Logger::getStaticMetaObject(void)
+	?getStaticMetaObject@Logger@@SAABUQMetaObject@@XZ @ 97 NONAME ABSENT ; struct QMetaObject const & Logger::getStaticMetaObject(void)
 	?trUtf8@CpSettingFormItemData@@SA?AVQString@@PBD0H@Z @ 98 NONAME ; class QString CpSettingFormItemData::trUtf8(char const *, char const *, int)
 	?staticMetaObject@CpBaseSettingView@@2UQMetaObject@@B @ 99 NONAME ; struct QMetaObject const CpBaseSettingView::staticMetaObject
 	?tr@CpBaseSettingView@@SA?AVQString@@PBD0H@Z @ 100 NONAME ; class QString CpBaseSettingView::tr(char const *, char const *, int)
 	?tr@CpBaseSettingView@@SA?AVQString@@PBD0@Z @ 101 NONAME ; class QString CpBaseSettingView::tr(char const *, char const *)
-	?setLogLoggerName@Logger@@QAEX_N@Z @ 102 NONAME ; void Logger::setLogLoggerName(bool)
+	?setLogLoggerName@Logger@@QAEX_N@Z @ 102 NONAME ABSENT ; void Logger::setLogLoggerName(bool)
 	?tr@CpSettingFormItemData@@SA?AVQString@@PBD0@Z @ 103 NONAME ; class QString CpSettingFormItemData::tr(char const *, char const *)
-	?closeAll@Logger@@SAXXZ @ 104 NONAME ; void Logger::closeAll(void)
-	?setSettingForm@CpBaseSettingView@@QAEXPAVHbDataForm@@@Z @ 105 NONAME ; void CpBaseSettingView::setSettingForm(class HbDataForm *)
+	?closeAll@Logger@@SAXXZ @ 104 NONAME ABSENT ; void Logger::closeAll(void)
+	?setSettingForm@CpBaseSettingView@@QAEXPAVHbDataForm@@@Z @ 105 NONAME ABSENT ; void CpBaseSettingView::setSettingForm(class HbDataForm *)
 	?tr@CpSettingFormItemData@@SA?AVQString@@PBD0H@Z @ 106 NONAME ; class QString CpSettingFormItemData::tr(char const *, char const *, int)
-	?trUtf8@LogOutput@@SA?AVQString@@PBD0H@Z @ 107 NONAME ; class QString LogOutput::trUtf8(char const *, char const *, int)
+	?trUtf8@LogOutput@@SA?AVQString@@PBD0H@Z @ 107 NONAME ABSENT ; class QString LogOutput::trUtf8(char const *, char const *, int)
 	?trUtf8@CpSettingFormItemData@@SA?AVQString@@PBD0@Z @ 108 NONAME ; class QString CpSettingFormItemData::trUtf8(char const *, char const *)
-	?removeLogOutput@Logger@@QAEXPAVLogOutput@@@Z @ 109 NONAME ; void Logger::removeLogOutput(class LogOutput *)
+	?removeLogOutput@Logger@@QAEXPAVLogOutput@@@Z @ 109 NONAME ABSENT ; void Logger::removeLogOutput(class LogOutput *)
 	??0CpBaseSettingView@@QAE@PAVQGraphicsWidget@@PAVQGraphicsItem@@@Z @ 110 NONAME ; CpBaseSettingView::CpBaseSettingView(class QGraphicsWidget *, class QGraphicsItem *)
 	?widgetFromModelIndex@CpItemDataHelper@@QAEPAVHbWidget@@ABVQModelIndex@@@Z @ 111 NONAME ; class HbWidget * CpItemDataHelper::widgetFromModelIndex(class QModelIndex const &)
-	??0LogOutput@@IAE@PAVLogger@@@Z @ 112 NONAME ; LogOutput::LogOutput(class Logger *)
-	?staticMetaObject@LogOutput@@2UQMetaObject@@B @ 113 NONAME ; struct QMetaObject const LogOutput::staticMetaObject
+	??0LogOutput@@IAE@PAVLogger@@@Z @ 112 NONAME ABSENT ; LogOutput::LogOutput(class Logger *)
+	?staticMetaObject@LogOutput@@2UQMetaObject@@B @ 113 NONAME ABSENT ; struct QMetaObject const LogOutput::staticMetaObject
 	?trUtf8@CpSettingFormEntryItemData@@SA?AVQString@@PBD0@Z @ 114 NONAME ; class QString CpSettingFormEntryItemData::trUtf8(char const *, char const *)
-	?name@LogOutput@@QBE?AVQString@@XZ @ 115 NONAME ; class QString LogOutput::name(void) const
+	?name@LogOutput@@QBE?AVQString@@XZ @ 115 NONAME ABSENT ; class QString LogOutput::name(void) const
 	?tr@CpItemDataHelper@@SA?AVQString@@PBD0@Z @ 116 NONAME ; class QString CpItemDataHelper::tr(char const *, char const *)
 	?getStaticMetaObject@CpItemDataHelper@@SAABUQMetaObject@@XZ @ 117 NONAME ; struct QMetaObject const & CpItemDataHelper::getStaticMetaObject(void)
 	?qt_metacast@CpSettingFormEntryItemData@@UAEPAXPBD@Z @ 118 NONAME ; void * CpSettingFormEntryItemData::qt_metacast(char const *)
-	?logLoggerName@Logger@@QBE_NXZ @ 119 NONAME ; bool Logger::logLoggerName(void) const
+	?logLoggerName@Logger@@QBE_NXZ @ 119 NONAME ABSENT ; bool Logger::logLoggerName(void) const
 	?qt_metacall@CpItemDataHelper@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 120 NONAME ; int CpItemDataHelper::qt_metacall(enum QMetaObject::Call, int, void * *)
 	?metaObject@CpSettingFormEntryItemData@@UBEPBUQMetaObject@@XZ @ 121 NONAME ; struct QMetaObject const * CpSettingFormEntryItemData::metaObject(void) const
-	?qt_metacast@Logger@@UAEPAXPBD@Z @ 122 NONAME ; void * Logger::qt_metacast(char const *)
+	?qt_metacast@Logger@@UAEPAXPBD@Z @ 122 NONAME ABSENT ; void * Logger::qt_metacast(char const *)
 	?addItemPrototype@CpItemDataHelper@@QAEXPAVHbAbstractViewItem@@@Z @ 123 NONAME ; void CpItemDataHelper::addItemPrototype(class HbAbstractViewItem *)
 	?trUtf8@CpBaseSettingView@@SA?AVQString@@PBD0@Z @ 124 NONAME ; class QString CpBaseSettingView::trUtf8(char const *, char const *)
-	?getStaticMetaObject@LogOutput@@SAABUQMetaObject@@XZ @ 125 NONAME ; struct QMetaObject const & LogOutput::getStaticMetaObject(void)
-	?createLogOutput@LogOutputFactory@@SAPAVLogOutput@@ABVQString@@ABV?$QHash@VQString@@VQVariant@@@@@Z @ 126 NONAME ; class LogOutput * LogOutputFactory::createLogOutput(class QString const &, class QHash<class QString, class QVariant> const &)
-	?addCreateLogOutputEntry@LogOutputFactory@@SAXABVQString@@P6APAVLogOutput@@XZ@Z @ 127 NONAME ; void LogOutputFactory::addCreateLogOutputEntry(class QString const &, class LogOutput * (*)(void))
-	?configure@Logger@@QAEXAAVQSettings@@@Z @ 128 NONAME ; void Logger::configure(class QSettings &)
-	?loadCpPlugin@CpPluginLoader@@SAPAVCpPluginInterface@@ABVQString@@@Z @ 129 NONAME ; class CpPluginInterface * CpPluginLoader::loadCpPlugin(class QString const &)
+	?getStaticMetaObject@LogOutput@@SAABUQMetaObject@@XZ @ 125 NONAME ABSENT ; struct QMetaObject const & LogOutput::getStaticMetaObject(void)
+	?createLogOutput@LogOutputFactory@@SAPAVLogOutput@@ABVQString@@ABV?$QHash@VQString@@VQVariant@@@@@Z @ 126 NONAME ABSENT ; class LogOutput * LogOutputFactory::createLogOutput(class QString const &, class QHash<class QString, class QVariant> const &)
+	?addCreateLogOutputEntry@LogOutputFactory@@SAXABVQString@@P6APAVLogOutput@@XZ@Z @ 127 NONAME ABSENT ; void LogOutputFactory::addCreateLogOutputEntry(class QString const &, class LogOutput * (*)(void))
+	?configure@Logger@@QAEXAAVQSettings@@@Z @ 128 NONAME ABSENT ; void Logger::configure(class QSettings &)
+	?loadCpPlugin@CpPluginLoader@@SAPAVCpPluginInterface@@ABVQString@@@Z @ 129 NONAME ABSENT ; class CpPluginInterface * CpPluginLoader::loadCpPlugin(class QString const &)
 	??1CpBaseSettingView@@UAE@XZ @ 130 NONAME ; CpBaseSettingView::~CpBaseSettingView(void)
 	??0CpSettingFormEntryItemData@@QAE@W4EntryItemType@0@AAVCpItemDataHelper@@ABVQString@@22PBVHbDataFormModelItem@@@Z @ 131 NONAME ; CpSettingFormEntryItemData::CpSettingFormEntryItemData(enum CpSettingFormEntryItemData::EntryItemType, class CpItemDataHelper &, class QString const &, class QString const &, class QString const &, class HbDataFormModelItem const *)
 	?metaObject@CpSettingFormItemData@@UBEPBUQMetaObject@@XZ @ 132 NONAME ; struct QMetaObject const * CpSettingFormItemData::metaObject(void) const
-	?tr@LogOutput@@SA?AVQString@@PBD0H@Z @ 133 NONAME ; class QString LogOutput::tr(char const *, char const *, int)
-	?trUtf8@Logger@@SA?AVQString@@PBD0H@Z @ 134 NONAME ; class QString Logger::trUtf8(char const *, char const *, int)
-	?trUtf8@Logger@@SA?AVQString@@PBD0@Z @ 135 NONAME ; class QString Logger::trUtf8(char const *, char const *)
+	?tr@LogOutput@@SA?AVQString@@PBD0H@Z @ 133 NONAME ABSENT ; class QString LogOutput::tr(char const *, char const *, int)
+	?trUtf8@Logger@@SA?AVQString@@PBD0H@Z @ 134 NONAME ABSENT ; class QString Logger::trUtf8(char const *, char const *, int)
+	?trUtf8@Logger@@SA?AVQString@@PBD0@Z @ 135 NONAME ABSENT ; class QString Logger::trUtf8(char const *, char const *)
 
--- a/controlpanel/src/cpframework/cpframework.pro	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/src/cpframework/cpframework.pro	Tue Aug 24 10:30:25 2010 +0800
@@ -18,7 +18,6 @@
 TARGET = cpframework
 
 include ( ../common.pri )
-include ( ../logger/logger.pri)
 include ( ./cpframework.pri )
 include ( ../../controlpanel_plat/inc/controlpanel_plat.pri )
 
@@ -29,27 +28,10 @@
 }
 
 CONFIG += Hb xml
-DEFINES += BUILD_CP_FRAMEWORK BUILD_LOGGER_DLL
-                    
-symbian: {  
-    # export headers to mw
-    EXPORT_PLATFORM_HEADERS += \
-                             ../../controlpanel_plat/inc/cpglobal.h \
-                             ../../controlpanel_plat/inc/cpbasepath.h \
-                             ../../controlpanel_plat/inc/cpplugininterface.h \
-                             ../../controlpanel_plat/inc/cppluginplatinterface.h \
-                             ../../controlpanel_plat/inc/cppluginloader.h \
-                             ../../controlpanel_plat/inc/cppluginlauncher.h \
-                             ../../controlpanel_plat/inc/cpbasesettingview.h \
-                             ../../controlpanel_plat/inc/cpitemdatahelper.h \
-                             ../../controlpanel_plat/inc/cpsettingformitemdata.h \
-                             ../../controlpanel_plat/inc/cpsettingformentryitemdata.h \
-                             ../../controlpanel_plat/inc/cpsettingformentryitemdataimpl.h \
-                             ../../controlpanel_plat/inc/cppluginutility.h \
-                             ../../controlpanel_plat/inc/cplauncherinterface.h
+
+DEFINES += BUILD_CP_FRAMEWORK
+
+LIBS += -lcplogger
+                   
+include ( cpframework_export.pri )
     
-    headers.sources = $$EXPORT_PLATFORM_HEADERS
-    for(header, headers.sources):BLD_INF_RULES.prj_exports += "./$$header $$MW_LAYER_PLATFORM_EXPORT_PATH($$basename(header))"
-}
-include (../logger/logger_export.pri)
-    
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/src/cpframework/cpframework_export.pri	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,35 @@
+#
+# 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: controlpanel project - common qmake settings
+#
+
+symbian: {  
+    # export headers to mw
+    EXPORT_PLATFORM_HEADERS += \
+                             ../../controlpanel_plat/inc/cpglobal.h \
+                             ../../controlpanel_plat/inc/cpbasepath.h \
+                             ../../controlpanel_plat/inc/cpplugininterface.h \
+                             ../../controlpanel_plat/inc/cppluginloader.h \
+                             ../../controlpanel_plat/inc/cppluginlauncher.h \
+                             ../../controlpanel_plat/inc/cpbasesettingview.h \
+                             ../../controlpanel_plat/inc/cpitemdatahelper.h \
+                             ../../controlpanel_plat/inc/cpsettingformitemdata.h \
+                             ../../controlpanel_plat/inc/cpsettingformentryitemdata.h \
+                             ../../controlpanel_plat/inc/cpsettingformentryitemdataimpl.h \
+                             ../../controlpanel_plat/inc/cppluginutility.h \
+                             ../../controlpanel_plat/inc/cplauncherinterface.h
+    
+    headers.sources = $$EXPORT_PLATFORM_HEADERS
+    for(header, headers.sources):BLD_INF_RULES.prj_exports += "./$$header $$MW_LAYER_PLATFORM_EXPORT_PATH($$basename(header))"
+}
--- a/controlpanel/src/cpframework/eabi/cpframeworku.def	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/src/cpframework/eabi/cpframeworku.def	Tue Aug 24 10:30:25 2010 +0800
@@ -20,10 +20,10 @@
 	_ZN16CpItemDataHelperD1Ev @ 19 NONAME
 	_ZN16CpItemDataHelperD2Ev @ 20 NONAME
 	_ZN16CpPluginLauncher17launchSettingViewERK7QStringRK8QVariant @ 21 NONAME
-	_ZN16CpPluginLauncher18launchCpPluginViewERK7QStringi @ 22 NONAME
-	_ZN16LogOutputFactory15createLogOutputERK7QString @ 23 NONAME
-	_ZN16LogOutputFactory15createLogOutputERK7QStringRK5QHashIS0_8QVariantE @ 24 NONAME
-	_ZN16LogOutputFactory23addCreateLogOutputEntryERK7QStringPFP9LogOutputvE @ 25 NONAME
+	_ZN16CpPluginLauncher18launchCpPluginViewERK7QStringi @ 22 NONAME ABSENT
+	_ZN16LogOutputFactory15createLogOutputERK7QString @ 23 NONAME ABSENT
+	_ZN16LogOutputFactory15createLogOutputERK7QStringRK5QHashIS0_8QVariantE @ 24 NONAME ABSENT
+	_ZN16LogOutputFactory23addCreateLogOutputEntryERK7QStringPFP9LogOutputvE @ 25 NONAME ABSENT
 	_ZN17CpBaseSettingView11qt_metacallEN11QMetaObject4CallEiPPv @ 26 NONAME
 	_ZN17CpBaseSettingView11qt_metacastEPKc @ 27 NONAME
 	_ZN17CpBaseSettingView12aboutToCloseEv @ 28 NONAME
@@ -64,40 +64,40 @@
 	_ZN26CpSettingFormEntryItemDataD0Ev @ 63 NONAME
 	_ZN26CpSettingFormEntryItemDataD1Ev @ 64 NONAME
 	_ZN26CpSettingFormEntryItemDataD2Ev @ 65 NONAME
-	_ZN6Logger11qt_metacallEN11QMetaObject4CallEiPPv @ 66 NONAME
-	_ZN6Logger11qt_metacastEPKc @ 67 NONAME
-	_ZN6Logger12addLogOutputEP9LogOutput @ 68 NONAME
-	_ZN6Logger14setLogDateTimeEb @ 69 NONAME
-	_ZN6Logger15removeLogOutputEP9LogOutput @ 70 NONAME
-	_ZN6Logger16setLogLoggerNameEb @ 71 NONAME
-	_ZN6Logger16staticMetaObjectE @ 72 NONAME DATA 16
-	_ZN6Logger17clearAllLogOutputEv @ 73 NONAME
-	_ZN6Logger17setDateTimeFormatERK7QString @ 74 NONAME
-	_ZN6Logger19getStaticMetaObjectEv @ 75 NONAME
-	_ZN6Logger3logERK7QString @ 76 NONAME
-	_ZN6Logger5closeERK7QString @ 77 NONAME
-	_ZN6Logger8closeAllEv @ 78 NONAME
-	_ZN6Logger8instanceERK7QString @ 79 NONAME
-	_ZN6Logger9configureER9QSettings @ 80 NONAME
-	_ZN6Logger9configureERK7QStringN9QSettings6FormatE @ 81 NONAME
-	_ZN6Logger9logOutputERK7QString @ 82 NONAME
-	_ZN6LoggerC1ERK7QStringP7QObject @ 83 NONAME
-	_ZN6LoggerC2ERK7QStringP7QObject @ 84 NONAME
-	_ZN6LoggerD0Ev @ 85 NONAME
-	_ZN6LoggerD1Ev @ 86 NONAME
-	_ZN6LoggerD2Ev @ 87 NONAME
-	_ZN9LogOutput11qt_metacallEN11QMetaObject4CallEiPPv @ 88 NONAME
-	_ZN9LogOutput11qt_metacastEPKc @ 89 NONAME
-	_ZN9LogOutput12parentLoggerEv @ 90 NONAME
-	_ZN9LogOutput15setParentLoggerEP6Logger @ 91 NONAME
-	_ZN9LogOutput16staticMetaObjectE @ 92 NONAME DATA 16
-	_ZN9LogOutput19getStaticMetaObjectEv @ 93 NONAME
-	_ZN9LogOutput4loadER9QSettings @ 94 NONAME
-	_ZN9LogOutput7setNameERK7QString @ 95 NONAME
-	_ZN9LogOutputC2EP6Logger @ 96 NONAME
-	_ZN9LogOutputD0Ev @ 97 NONAME
-	_ZN9LogOutputD1Ev @ 98 NONAME
-	_ZN9LogOutputD2Ev @ 99 NONAME
+	_ZN6Logger11qt_metacallEN11QMetaObject4CallEiPPv @ 66 NONAME ABSENT
+	_ZN6Logger11qt_metacastEPKc @ 67 NONAME ABSENT
+	_ZN6Logger12addLogOutputEP9LogOutput @ 68 NONAME ABSENT
+	_ZN6Logger14setLogDateTimeEb @ 69 NONAME ABSENT
+	_ZN6Logger15removeLogOutputEP9LogOutput @ 70 NONAME ABSENT
+	_ZN6Logger16setLogLoggerNameEb @ 71 NONAME ABSENT
+	_ZN6Logger16staticMetaObjectE @ 72 NONAME DATA 16 ABSENT
+	_ZN6Logger17clearAllLogOutputEv @ 73 NONAME ABSENT
+	_ZN6Logger17setDateTimeFormatERK7QString @ 74 NONAME ABSENT
+	_ZN6Logger19getStaticMetaObjectEv @ 75 NONAME ABSENT
+	_ZN6Logger3logERK7QString @ 76 NONAME ABSENT
+	_ZN6Logger5closeERK7QString @ 77 NONAME ABSENT
+	_ZN6Logger8closeAllEv @ 78 NONAME ABSENT
+	_ZN6Logger8instanceERK7QString @ 79 NONAME ABSENT
+	_ZN6Logger9configureER9QSettings @ 80 NONAME ABSENT
+	_ZN6Logger9configureERK7QStringN9QSettings6FormatE @ 81 NONAME ABSENT
+	_ZN6Logger9logOutputERK7QString @ 82 NONAME ABSENT
+	_ZN6LoggerC1ERK7QStringP7QObject @ 83 NONAME ABSENT
+	_ZN6LoggerC2ERK7QStringP7QObject @ 84 NONAME ABSENT
+	_ZN6LoggerD0Ev @ 85 NONAME ABSENT
+	_ZN6LoggerD1Ev @ 86 NONAME ABSENT
+	_ZN6LoggerD2Ev @ 87 NONAME ABSENT
+	_ZN9LogOutput11qt_metacallEN11QMetaObject4CallEiPPv @ 88 NONAME ABSENT
+	_ZN9LogOutput11qt_metacastEPKc @ 89 NONAME ABSENT
+	_ZN9LogOutput12parentLoggerEv @ 90 NONAME ABSENT
+	_ZN9LogOutput15setParentLoggerEP6Logger @ 91 NONAME ABSENT
+	_ZN9LogOutput16staticMetaObjectE @ 92 NONAME DATA 16 ABSENT
+	_ZN9LogOutput19getStaticMetaObjectEv @ 93 NONAME ABSENT
+	_ZN9LogOutput4loadER9QSettings @ 94 NONAME ABSENT
+	_ZN9LogOutput7setNameERK7QString @ 95 NONAME ABSENT
+	_ZN9LogOutputC2EP6Logger @ 96 NONAME ABSENT
+	_ZN9LogOutputD0Ev @ 97 NONAME ABSENT
+	_ZN9LogOutputD1Ev @ 98 NONAME ABSENT
+	_ZN9LogOutputD2Ev @ 99 NONAME ABSENT
 	_ZNK16CpItemDataHelper10metaObjectEv @ 100 NONAME
 	_ZNK17CpBaseSettingView10metaObjectEv @ 101 NONAME
 	_ZNK21CpSettingFormItemData10metaObjectEv @ 102 NONAME
@@ -106,25 +106,25 @@
 	_ZNK26CpSettingFormEntryItemData13entryItemIconEv @ 105 NONAME
 	_ZNK26CpSettingFormEntryItemData4textEv @ 106 NONAME
 	_ZNK26CpSettingFormEntryItemData8iconNameEv @ 107 NONAME
-	_ZNK6Logger10metaObjectEv @ 108 NONAME
-	_ZNK6Logger11logDateTimeEv @ 109 NONAME
-	_ZNK6Logger13logLoggerNameEv @ 110 NONAME
-	_ZNK6Logger14dateTimeFormatEv @ 111 NONAME
-	_ZNK6Logger4nameEv @ 112 NONAME
-	_ZNK9LogOutput10metaObjectEv @ 113 NONAME
-	_ZNK9LogOutput4nameEv @ 114 NONAME
+	_ZNK6Logger10metaObjectEv @ 108 NONAME ABSENT
+	_ZNK6Logger11logDateTimeEv @ 109 NONAME ABSENT
+	_ZNK6Logger13logLoggerNameEv @ 110 NONAME ABSENT
+	_ZNK6Logger14dateTimeFormatEv @ 111 NONAME ABSENT
+	_ZNK6Logger4nameEv @ 112 NONAME ABSENT
+	_ZNK9LogOutput10metaObjectEv @ 113 NONAME ABSENT
+	_ZNK9LogOutput4nameEv @ 114 NONAME ABSENT
 	_ZTI16CpItemDataHelper @ 115 NONAME
 	_ZTI17CpBaseSettingView @ 116 NONAME
 	_ZTI21CpSettingFormItemData @ 117 NONAME
 	_ZTI26CpSettingFormEntryItemData @ 118 NONAME
-	_ZTI6Logger @ 119 NONAME
-	_ZTI9LogOutput @ 120 NONAME
+	_ZTI6Logger @ 119 NONAME ABSENT
+	_ZTI9LogOutput @ 120 NONAME ABSENT
 	_ZTV16CpItemDataHelper @ 121 NONAME
 	_ZTV17CpBaseSettingView @ 122 NONAME
 	_ZTV21CpSettingFormItemData @ 123 NONAME
 	_ZTV26CpSettingFormEntryItemData @ 124 NONAME
-	_ZTV6Logger @ 125 NONAME
-	_ZTV9LogOutput @ 126 NONAME
+	_ZTV6Logger @ 125 NONAME ABSENT
+	_ZTV9LogOutput @ 126 NONAME ABSENT
 	_ZThn16_N17CpBaseSettingViewD0Ev @ 127 NONAME
 	_ZThn16_N17CpBaseSettingViewD1Ev @ 128 NONAME
 	_ZThn8_N17CpBaseSettingViewD0Ev @ 129 NONAME
--- a/controlpanel/src/cpframework/resources/widgetml/cpdataformlistentryviewitem.css	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/src/cpframework/resources/widgetml/cpdataformlistentryviewitem.css	Tue Aug 24 10:30:25 2010 +0800
@@ -3,10 +3,15 @@
     Layout selection
 */
 
-CpDataFormListEntryViewItem {
+CpDataFormListEntryViewItem[hasDescription] {
     layout:default;
 }
 
+
+CpDataFormListEntryViewItem[!hasDescription] {
+    layout:singletext;
+}
+
 CpDataFormListEntryViewItem::dataItem_Background
 {
 }
@@ -36,25 +41,27 @@
 
 CpDataFormListEntryViewItem::dataItem_Icon
 {
-    left:-var(hb-param-margin-gene-left);
+    left:-var(hb-param-margin-gene-left);   
+    top:-var(hb-param-margin-gene-top);
+    bottom:var(hb-param-margin-gene-bottom);
 }
 
-
 CpDataFormListEntryViewItem::dataItem_Label[!hasIcon]
 {
     left:-var(hb-param-margin-gene-left);
     right:var(hb-param-margin-form-label-right);
-    top:-var(hb-param-margin-gene-top);
 }
 
 CpDataFormListEntryViewItem::dataItem_Label[hasIcon]
 {
     left:-var(hb-param-margin-gene-middle-horizontal);
-    top:-var(hb-param-margin-gene-top);
     right:var(hb-param-margin-form-label-right);
 }
 
-
+CpDataFormListEntryViewItem::dataItem_Label[hasDescription]
+{
+	top:-var(hb-param-margin-gene-top);
+}
 
 CpDataFormListEntryViewItem::dataItem_Description[!hasIcon]
 {
@@ -67,10 +74,3 @@
     left:-var(hb-param-margin-gene-middle-horizontal);
     right:var(hb-param-margin-gene-right);
 }
-
-
-CpDataFormListEntryViewItem::dataItem_Description
-{
-	bottom:var(hb-param-margin-gene-bottom);
-}
-
--- a/controlpanel/src/cpframework/resources/widgetml/cpdataformlistentryviewitem.widgetml	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/src/cpframework/resources/widgetml/cpdataformlistentryviewitem.widgetml	Tue Aug 24 10:30:25 2010 +0800
@@ -8,18 +8,35 @@
     <meshitem src="dataItem_Background" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
 
     <meshitem src="dataItem_Icon" srcEdge="LEFT" dst="" dstEdge="LEFT" />
-    <meshitem src="dataItem_Icon" srcEdge="CENTERV" dst="" dstEdge="CENTERV" />
+    <meshitem src="dataItem_Icon" srcEdge="TOP" dst="" dstEdge="TOP" />
+    <meshitem src="dataItem_Icon" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" />
 
-    <meshitem src="dataItem_Label" srcEdge="TOP" dst="" dstEdge="TOP" />
+
+    <meshitem src="dataItem_Label" srcEdge="TOP" dst="" dstEdge="TOP" />	
     <meshitem src="dataItem_Label" srcEdge="LEFT" dst="dataItem_Icon" dstEdge="RIGHT" />
     <meshitem src="dataItem_Label" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
     <meshitem src="dataItem_Label" srcEdge="BOTTOM" dst="dataItem_Description" dstEdge="TOP" />
 
-    <meshitem src="dataItem_Description" srcEdge="TOP" dst="dataItem_Label" dstEdge="BOTTOM" />
     <meshitem src="dataItem_Description" srcEdge="LEFT" dst="dataItem_Icon" dstEdge="RIGHT" />
     <meshitem src="dataItem_Description" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
-    <meshitem src="dataItem_Description" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" />
     
   </layout> 
   
+  <layout name="singletext" type="mesh">
+  
+    <meshitem src="dataItem_Background" srcEdge="TOP" dst="" dstEdge="TOP" />
+    <meshitem src="dataItem_Background" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" />
+    <meshitem src="dataItem_Background" srcEdge="LEFT" dst="" dstEdge="LEFT" />
+    <meshitem src="dataItem_Background" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
+
+    <meshitem src="dataItem_Icon" srcEdge="LEFT" dst="" dstEdge="LEFT" />
+    <meshitem src="dataItem_Icon" srcEdge="TOP" dst="" dstEdge="TOP" />
+    <meshitem src="dataItem_Icon" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" />
+
+
+    <meshitem src="dataItem_Label" srcEdge="CENTERV" dst="" dstEdge="CENTERV" />	
+    <meshitem src="dataItem_Label" srcEdge="LEFT" dst="dataItem_Icon" dstEdge="RIGHT" />
+
+  </layout> 
+    
 </hbwidget>
\ No newline at end of file
--- a/controlpanel/src/cpframework/src/cpbasesettingview.cpp	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/src/cpframework/src/cpbasesettingview.cpp	Tue Aug 24 10:30:25 2010 +0800
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  
+* Description:  Base class for controlpane plugin views.
 *
 */
 
@@ -23,10 +23,24 @@
 
 /*!
     \class CpBaseSettingView
-    \brief The CpBaseSettingView is base class for all setting views in control panel application.
+    \brief The CpBaseSettingView is the base class for all setting views in controlpanel application.
     This class is responsible for processing some common properties, such as setting view's title, content widget and back key action.
  */
 
+
+/*!
+    \fn void returnValueDelivered(const QVariant &returnValue)
+    
+    This signal is emitted when the setting view need to deliver return value to caller. Derived class can 
+    emit the signal in some proper time.
+*/
+
+/*!
+    \fn void aboutToClose()
+    
+    This signal is emitted when the setting view is about to close.
+*/
+
 /*!
     Constructor of CpBaseSettingView.
  */
@@ -46,8 +60,8 @@
 
 
 /*!
-    Give derived class a chance to do some cleaning work before exiting view.
-    Return : true:  ok to exit
+    Emit aboutToClose() signal to indicate that the view is about to close.
+    Derived class can override it to do some specified work before exit.
  */
 void CpBaseSettingView::close()
 {
--- a/controlpanel/src/cpframework/src/cpbasesettingview_p.cpp	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/src/cpframework/src/cpbasesettingview_p.cpp	Tue Aug 24 10:30:25 2010 +0800
@@ -11,7 +11,7 @@
  *
  * Contributors:
  *
- * Description:  
+ * Description:  Private implementaion for CpBaseSettingView
  *
  */
 
@@ -49,6 +49,7 @@
     
     if (!widget) {
         widget = new HbDataForm();
+        // add item prototypes by default.
 		CpPluginUtility::addCpItemPrototype(qobject_cast<HbDataForm *>(widget));
     }    
     
--- a/controlpanel/src/cpframework/src/cpbasesettingview_p.h	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/src/cpframework/src/cpbasesettingview_p.h	Tue Aug 24 10:30:25 2010 +0800
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  
+* Description:  Private implementaion for CpBaseSettingView
 *
 */
 #ifndef CPBASESETTINGVIEW_P_H
--- a/controlpanel/src/cpframework/src/cpdataformbuttonentryviewitem.cpp	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/src/cpframework/src/cpdataformbuttonentryviewitem.cpp	Tue Aug 24 10:30:25 2010 +0800
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  
+* Description:  View item implementation for button entry item.
 *
 */
 #include "cpdataformbuttonentryviewitem.h"
@@ -121,39 +121,6 @@
 }
 
 /*!
-    Deprecated. Be instead of HbDataFormViewItem::restore()
-	Inherit from HbDataForm. This function is called by hbdataform's framework, 
-	for supporting to load entry item's text, icon and additional text dynamically.
-	It is not recommended to call this function manually.
- */
-void CpDataFormButtonEntryViewItem::load()
-{
-	//HbDataFormViewItem::load();
-
-	if (d_ptr->mWidget) {
-		HbDataFormModelItem::DataItemType itemType = static_cast<HbDataFormModelItem::DataItemType>(
-			modelIndex().data(HbDataFormModelItem::ItemTypeRole).toInt());
-
-		if(itemType == CpSettingFormEntryItemData::ButtonEntryItem) {
-
-			QModelIndex itemIndex = modelIndex();
-			HbDataFormModel *model = static_cast<HbDataFormModel*>(itemView()->model());;
-			HbDataFormModelItem *modelItem = static_cast<HbDataFormModelItem*>(
-				model->itemFromIndex(itemIndex));
-
-			const QMetaObject *metaObj = d_ptr->mWidget->metaObject();
-			int count = metaObj->propertyCount();
-			for (int i = 0; i < count; i++) {
-				QMetaProperty metaProperty = metaObj->property(i);
-				if (metaProperty.isValid() && metaProperty.isWritable()) {
-					metaProperty.write(d_ptr->mWidget,modelItem->contentWidgetData(metaProperty.name()));
-				}
-
-			}
-		}
-	}
-}
-/*!
     Inherit from HbDataForm. This function is called by hbdataform's framework, 
     for supporting to load entry item's text, icon and additional text dynamically.
     It is not recommended to call this function manually.
@@ -162,6 +129,8 @@
 {
     HbDataFormViewItem::restore();
 
+    // Set widget's properties according to model item's content widget data
+    // so that the widget can be refreshed
     if (d_ptr->mWidget) {
         HbDataFormModelItem::DataItemType itemType = static_cast<HbDataFormModelItem::DataItemType>(
             modelIndex().data(HbDataFormModelItem::ItemTypeRole).toInt());
--- a/controlpanel/src/cpframework/src/cpdataformbuttonentryviewitem.h	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/src/cpframework/src/cpdataformbuttonentryviewitem.h	Tue Aug 24 10:30:25 2010 +0800
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  
+* Description:  View item implementation for button entry item.
 *
 */
 #ifndef CPDATAFORMBUTTONENTRYVIEWITEM_H
@@ -28,14 +28,17 @@
     explicit CpDataFormButtonEntryViewItem(QGraphicsItem *parent = 0);
     virtual ~CpDataFormButtonEntryViewItem();
     
+    // From HbAbstractViewItem
     virtual HbAbstractViewItem *createItem();
+    // From HbAbstractViewItem
 	virtual bool canSetModelIndex(const QModelIndex &index) const;
 public slots:
-    virtual void load();
+    // From HbDataFormViewItem
     virtual void restore();
 protected:
-	CpDataFormButtonEntryViewItem(const CpDataFormButtonEntryViewItem &ohter);
-	CpDataFormButtonEntryViewItem &operator = (const CpDataFormButtonEntryViewItem &ohter);
+	CpDataFormButtonEntryViewItem(const CpDataFormButtonEntryViewItem &other);
+	CpDataFormButtonEntryViewItem &operator = (const CpDataFormButtonEntryViewItem &other);
+	// From HbAbstractViewItem
     virtual HbWidget *createCustomWidget();
 private:
 	CpDataFormButtonEntryViewItemPrivate *d_ptr;
--- a/controlpanel/src/cpframework/src/cpdataformlistentryviewitem.cpp	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/src/cpframework/src/cpdataformlistentryviewitem.cpp	Tue Aug 24 10:30:25 2010 +0800
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  
+* Description:  View item implementation for list entry item.
 *
 */
 
@@ -33,24 +33,38 @@
 
 #define CP_DATAFORMLISTENTRYVIEWITEM QLatin1String("cpdataformlistentryviewitem")
 
+/**
+ * Constructor
+ */
 CpDataFormListEntryViewItem::CpDataFormListEntryViewItem(QGraphicsItem *parent) : 
     HbDataFormViewItem(parent)
 {
+    // Add effeect just like item in HbListView
 #ifdef HB_EFFECTS       
     HbEffect::add(CP_DATAFORMLISTENTRYVIEWITEM + "-focus", "listviewitem_press", "pressed");
     HbEffect::add(CP_DATAFORMLISTENTRYVIEWITEM + "-focus", "listviewitem_release", "released");
 #endif
 }
 
+/**
+ * Destructor
+ */
 CpDataFormListEntryViewItem::~CpDataFormListEntryViewItem()
 {
 }
 
+/**
+ * Reimplement by CpDataFormListEntryViewItem, this function return a instance copy.
+ */
 HbAbstractViewItem* CpDataFormListEntryViewItem::createItem()
 {
     return new CpDataFormListEntryViewItem(*this);
 }
 
+/**
+ * Reimplement by CpDataFormListEntryViewItem, return true when the model item type is 
+ * ListEntryItem
+ */
 bool CpDataFormListEntryViewItem::canSetModelIndex(const QModelIndex &index) const
 {
     HbDataFormModelItem::DataItemType itemType = 
@@ -60,24 +74,44 @@
     return ( itemType == CpSettingFormEntryItemData::ListEntryItem );
 }
 
+/**
+ * Reimplement by CpDataFormListEntryViewItem
+ * No content widget in custom list item. So return a null pointer directly
+ */
 HbWidget* CpDataFormListEntryViewItem::createCustomWidget()
 {
+    // Don't need to create any widget
+    return 0;
+}
+/**
+ * Reimplement by CpDataFormListEntryViewItem. Change the description property for 
+ * custom list item.
+ */
+void CpDataFormListEntryViewItem::restore()
+{
     HbDataFormModelItem::DataItemType itemType =
-            static_cast<HbDataFormModelItem::DataItemType> (modelIndex().data(
-                    HbDataFormModelItem::ItemTypeRole).toInt());
-    switch (itemType)
-    {
-        case CpSettingFormEntryItemData::ListEntryItem: {
-            break;
-        }
-        default: {
-            break;
-        }
+        static_cast<HbDataFormModelItem::DataItemType> (modelIndex().data(
+            HbDataFormModelItem::ItemTypeRole).toInt());
+
+    if (itemType == CpSettingFormEntryItemData::ListEntryItem) {
+        QModelIndex itemIndex = modelIndex();
+        HbDataFormModel *model = qobject_cast<HbDataFormModel*> (itemView()->model());
+        if (model) {
+            HbDataFormModelItem *modelItem = model->itemFromIndex(itemIndex);
+            if (modelItem->data(HbDataFormModelItem::DescriptionRole).toString().isEmpty()) {
+                this->setProperty("hasDescription", false);
+            }
+            else {
+                this->setProperty("hasDescription", true);
+            }    
+        }        
     }
-    
-    return 0;
+    HbDataFormViewItem::restore();
 }
 
+/**
+ * Reimplement by CpDataFormListEntryViewItem, provide the effect when pressing list item
+ */
 void CpDataFormListEntryViewItem::pressStateChanged(bool pressed, bool animate)
 {
 #ifdef HB_EFFECTS
@@ -112,6 +146,10 @@
 }
 
 #ifdef HB_GESTURE_FW
+
+/**
+ * Reimplement by CpDataFormListEntryViewItem, set different graphics for list item's gesture
+ */
 void CpDataFormListEntryViewItem::gestureEvent(QGestureEvent *event)
 {
     HbFrameItem *backgroundItem = static_cast<HbFrameItem*> ( primitive("dataItem_Background") );
@@ -120,6 +158,7 @@
     if(backgroundItem && tap) {
         switch(tap->state()) {
         case Qt::GestureStarted: {
+                // Set the pressed state
                 backgroundItem->frameDrawer().setFrameGraphicsName(QLatin1String("qtg_fr_list_pressed"));
             }
             break;
@@ -128,10 +167,12 @@
             }
             break;
         case Qt::GestureCanceled: {
+                // Set the normal state
                 backgroundItem->frameDrawer().setFrameGraphicsName(QLatin1String("qtg_fr_list_normal"));
             }
             break;
         case Qt::GestureFinished: {
+                // Set the normal state
                 backgroundItem->frameDrawer().setFrameGraphicsName(QLatin1String("qtg_fr_list_normal"));
             }
             break;
--- a/controlpanel/src/cpframework/src/cpdataformlistentryviewitem.h	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/src/cpframework/src/cpdataformlistentryviewitem.h	Tue Aug 24 10:30:25 2010 +0800
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  
+* Description:  View item implementation for list entry item.
 *
 */
 
@@ -27,13 +27,20 @@
 public:
     explicit CpDataFormListEntryViewItem(QGraphicsItem *parent = 0);
     virtual ~CpDataFormListEntryViewItem();
+    // From HbAbstractViewItem
     virtual HbAbstractViewItem* createItem();
+    // From HbAbstractViewItem
     virtual bool canSetModelIndex(const QModelIndex &index) const;
 protected:
+    // From HbDataFormViewItem
     virtual HbWidget* createCustomWidget();
+
+    virtual void restore();
+
+    // From HbAbstractViewItem
     virtual void pressStateChanged(bool pressed, bool animate);
 #ifdef HB_GESTURE_FW
-    //from HbWidgetBase
+    // From HbWidgetBase
     virtual void gestureEvent(QGestureEvent *event);
 #endif
 };
--- a/controlpanel/src/cpframework/src/cpitemdatahelper.cpp	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/src/cpframework/src/cpitemdatahelper.cpp	Tue Aug 24 10:30:25 2010 +0800
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  
+* Description:  Helper class by which a plugin can communicate with the associated dataform.
 *
 */
 #include "cpitemdatahelper.h"
@@ -21,9 +21,15 @@
 #include <hbdataformviewitem.h>
 #include <hbdataformmodel.h>
 
+/*!
+\internal
+*/
 class CpItemDataHelperPrivate
 {
 public:
+    /*!
+    \internal
+    */
     class ItemConnection
     {
     public:
@@ -204,7 +210,8 @@
 
 /*!
     \class CpItemDataHelper
-    \brief The CpItemDataHelper class is a helper class to help control panel plugins (group plugins) to connect slots to inner widgets of setting items.
+    \brief The CpItemDataHelper class is a helper class to help controlpanel plugins to comminicate with the associated dataform,
+    such as connecting slots to inner widgets of setting items, add item prototypes.
 	 And add prototypes to dataform.
  */
 
@@ -286,7 +293,7 @@
 }
 
 
-/*
+/*!
     Get the HbWidget instance from data form.
 */
 HbWidget *CpItemDataHelper::widgetFromModelIndex(const QModelIndex &index)
@@ -294,6 +301,9 @@
     return d->widgetFromModelIndex(index);
 }
 
+/*!
+    Get the HbDataFormModelItem with a QModelIndex from associated data form's model.
+*/
 HbDataFormModelItem *CpItemDataHelper::modelItemFromModelIndex(const QModelIndex &index)
 {
     return d->modelItemFromModelIndex(index);
--- a/controlpanel/src/cpframework/src/cppluginlauncher.cpp	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/src/cpframework/src/cppluginlauncher.cpp	Tue Aug 24 10:30:25 2010 +0800
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  
+* Description:  Launch controlpanel plugin setting view in client process.
 *
 */
 
@@ -23,19 +23,11 @@
 #include <cpbasesettingview.h>
 #include <cpitemdatahelper.h>
 #include "cpviewlauncher.h"
-/*!
 
-*/
 /*!
     \class CpPluginLauncher
     \brief The CpPluginLauncher class loads a controlpanel plugin at run-time.And display the specify plugin view in client process.
-		\deprecated CpPluginLauncher::launchCpPluginView(const QString &pluginFile,int index )
-    is deprecated. Use pPluginLauncher::launchSettingView instead.
 */
-bool CpPluginLauncher::launchCpPluginView(const QString &pluginFile,int index /*= 0*/)
-{
-    return false;
-}
 
 /*!
     Load and display a plugin view in client process. The client must be a orbit based application.
--- a/controlpanel/src/cpframework/src/cppluginloader.cpp	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/src/cpframework/src/cppluginloader.cpp	Tue Aug 24 10:30:25 2010 +0800
@@ -36,13 +36,18 @@
     #define PLUGINFILE_SUFFIX "qtplugin"
 #endif
 
-template <typename INTERFACE>
-static INTERFACE* loadPluginInterface(const QString &pluginFile)
+/*
+ *  Load the root component object of the plugin from @pluginFile
+ *  if @pluginFile is an absoulte file path, load it directly, if is a 
+ *  file name, load the root component from path /resource/qt/plugins/controlpanel
+*/
+static QObject* loadPluginInterface(const QString &pluginFile)
 {
     CPPERF_LOG( QLatin1String("Loading plugin: ") + pluginFile );
     
     QFileInfo fileInfo(pluginFile);
 
+    // scan the plugin file from path /resource/qt/plugins/controlpanel
     if (!fileInfo.isAbsolute()) {
         QString fileName = fileInfo.fileName();
         if (fileInfo.suffix().compare(PLUGINFILE_SUFFIX,Qt::CaseInsensitive)) {
@@ -52,6 +57,7 @@
 		QStringList pluginDirs = CpUtility::pluginDirectories();
 		foreach(const QString &pluginDir,pluginDirs) {
 			fileInfo.setFile(pluginDir + fileName);
+			// found a valid plugin file.
 			if (fileInfo.exists() && QLibrary::isLibrary(fileInfo.absoluteFilePath())) {
 			    CPPERF_LOG( QLatin1String("Valid plugin stub found: ") + fileInfo.absoluteFilePath() );
 				break;
@@ -60,7 +66,7 @@
     }
 
 	QPluginLoader loader(fileInfo.absoluteFilePath());
-	INTERFACE *plugin = qobject_cast<INTERFACE*> (loader.instance());
+	QObject *plugin = loader.instance();
 	if (!plugin) {
 		loader.unload();
 	}
@@ -71,7 +77,7 @@
 }
 
 /*!
-    load a CpPluginInterface by plugin file.
+    load a CpPluginInterface by a controlpanel plugin file.
     the plugin file can either absoulte file path or only file name.
     acceptable format:
         sampleplugin
@@ -82,11 +88,11 @@
  */
 CpPluginInterface *CpPluginLoader::loadCpPluginInterface(const QString &pluginFile)
 {
-    return ::loadPluginInterface<CpPluginInterface>(pluginFile);
+    return qobject_cast<CpPluginInterface*>(::loadPluginInterface(pluginFile));
 }
 
 /*!
-    load a CpLauncherInterface by plugin file.
+    load a CpLauncherInterface by a controlpanel plugin file.
     the plugin file can either absoulte file path or only file name.
     acceptable format:
         sampleplugin
@@ -97,7 +103,7 @@
  */
 CpLauncherInterface *CpPluginLoader::loadCpLauncherInterface(const QString &pluginFile)
 {
-    return ::loadPluginInterface<CpLauncherInterface>(pluginFile);    
+    return qobject_cast<CpLauncherInterface*>(::loadPluginInterface(pluginFile));  
 }
 
 
--- a/controlpanel/src/cpframework/src/cppluginutility.cpp	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/src/cpframework/src/cppluginutility.cpp	Tue Aug 24 10:30:25 2010 +0800
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  
+* Description:  Utility class for controlpanel plugins.
 *
 */
 
@@ -20,11 +20,13 @@
 #include "cpdataformlistentryviewitem.h"
 
 #include <hbdataform.h>
+
 /*! \class CpPluginUtility
-	\brief  This class supply the utility function for the plugin, currently there is only one function.
+	\brief  This class supply the utility functions for controlpanel plugins.
  */
+
 /*!
-	This class will add the control panel's proto type of setting items( only entry item currently) to the settingForm.  
+	Add item prototypes which are supported by controlpanel framework to a setting form.  
  */
 void CpPluginUtility::addCpItemPrototype(HbDataForm *settingForm)
 {
--- a/controlpanel/src/cpframework/src/cpsettingformentryitemdata.cpp	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/src/cpframework/src/cpsettingformentryitemdata.cpp	Tue Aug 24 10:30:25 2010 +0800
@@ -89,7 +89,9 @@
     setIcon(icon.iconName());
 }
 
-
+/*!
+    Construct a new CpSettingFormEntryItemData with the given type, text, description, icon name, and parent.
+*/
 CpSettingFormEntryItemData::CpSettingFormEntryItemData(
          EntryItemType type,
          CpItemDataHelper &itemDataHelper,
@@ -109,6 +111,9 @@
     setIcon(iconName);
 }
 
+/*!
+    Construct a new CpSettingFormEntryItemData with the given type, text, description, icon name, and parent.
+*/
 CpSettingFormEntryItemData::CpSettingFormEntryItemData(
          EntryItemType type,
          HbDataForm *dataForm,
@@ -170,12 +175,17 @@
     d_ptr->setDescription(description);
 }
 
-
+/*!
+    Get the icon name of the entry item.
+*/
 QString CpSettingFormEntryItemData::iconName() const
 {
     return d_ptr->iconName();
 }
 
+/*!
+    Set the icon name of the entry item.
+*/
 void CpSettingFormEntryItemData::setIconName(const QString &icon)
 {
     d_ptr->setIconName(icon);
@@ -197,6 +207,9 @@
     d_ptr->setEntryItemIcon(icon);
 }
 
+/*!
+    Launch the setting view when user clicks the entry item.
+*/
 void CpSettingFormEntryItemData::onLaunchView() 
 {
     //avoid being launched more than one times
--- a/controlpanel/src/cpframework/src/cpsettingformentryitemdata_p.cpp	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/src/cpframework/src/cpsettingformentryitemdata_p.cpp	Tue Aug 24 10:30:25 2010 +0800
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  
+* Description:  Private implementatin for class CpSettingFormEntryItemData.
 *
 */
 #include "cpsettingformentryitemdata_p.h"
@@ -131,6 +131,9 @@
     default: break;
     case CpSettingFormEntryItemData::ListEntryItem:
         mParent->setData(HbDataFormModelItem::DescriptionRole , description);
+		// set a useless property for model item to emit a datachanged signal
+		// this is a workaround for informing the change event of description in list item 
+        mParent->setContentWidgetData("Useless", true);
         break;
     case CpSettingFormEntryItemData::ButtonEntryItem:
         mParent->setContentWidgetData(QString("additionalText"),QVariant(description));
--- a/controlpanel/src/cpframework/src/cpsettingformentryitemdata_p.h	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/src/cpframework/src/cpsettingformentryitemdata_p.h	Tue Aug 24 10:30:25 2010 +0800
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  
+* Description:  Private implementatin for class CpSettingFormEntryItemData.
 *
 */
 
@@ -50,7 +50,7 @@
     HbIcon entryItemIcon() const;
     void setEntryItemIcon(const HbIcon &icon);
     
-    //private slots
+    //private slots implementation
     void _q_itemPressed(const QModelIndex &index);
     void _q_itemActivated(const QModelIndex &index);
     
--- a/controlpanel/src/cpframework/src/cpsettingformitemdata.cpp	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/src/cpframework/src/cpsettingformitemdata.cpp	Tue Aug 24 10:30:25 2010 +0800
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  
+* Description:  This class is a control panel defined HbDataFormModelItem
 *
 */
 #include "cpsettingformitemdata.h"
--- a/controlpanel/src/cpframework/src/cputility.cpp	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/src/cpframework/src/cputility.cpp	Tue Aug 24 10:30:25 2010 +0800
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  
+* Description:  Utility class for cpframework.
 *
 */
 #include "cputility.h"
--- a/controlpanel/src/cpframework/src/cputility.h	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/src/cpframework/src/cputility.h	Tue Aug 24 10:30:25 2010 +0800
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  
+* Description:  Utility class for cpframework.
 *
 */
 #ifndef CP_UTILITY_H
--- a/controlpanel/src/cpframework/src/cpviewlauncher.cpp	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/src/cpframework/src/cpviewlauncher.cpp	Tue Aug 24 10:30:25 2010 +0800
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  
+* Description:  This class adds a setting view to main window, and restore previous view when back key clicked.
 *
 */
 
--- a/controlpanel/src/cpframework/src/cpviewlauncher.h	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/src/cpframework/src/cpviewlauncher.h	Tue Aug 24 10:30:25 2010 +0800
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  
+* Description:  This class adds a setting view to main window, and restore previous view when back key clicked.
 *
 */
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/src/logger/bwins/cploggeru.def	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,51 @@
+EXPORTS
+	?setLogDateTime@Logger@@QAEX_N@Z @ 1 NONAME ; void Logger::setLogDateTime(bool)
+	?tr@Logger@@SA?AVQString@@PBD0@Z @ 2 NONAME ; class QString Logger::tr(char const *, char const *)
+	?configure@Logger@@QAEXABVQString@@W4Format@QSettings@@@Z @ 3 NONAME ; void Logger::configure(class QString const &, enum QSettings::Format)
+	?addLogOutput@Logger@@QAE_NPAVLogOutput@@@Z @ 4 NONAME ; bool Logger::addLogOutput(class LogOutput *)
+	?getStaticMetaObject@Logger@@SAABUQMetaObject@@XZ @ 5 NONAME ; struct QMetaObject const & Logger::getStaticMetaObject(void)
+	?setDateTimeFormat@Logger@@QAEXABVQString@@@Z @ 6 NONAME ; void Logger::setDateTimeFormat(class QString const &)
+	?metaObject@LogOutput@@UBEPBUQMetaObject@@XZ @ 7 NONAME ; struct QMetaObject const * LogOutput::metaObject(void) const
+	?trUtf8@LogOutput@@SA?AVQString@@PBD0@Z @ 8 NONAME ; class QString LogOutput::trUtf8(char const *, char const *)
+	??1Logger@@UAE@XZ @ 9 NONAME ; Logger::~Logger(void)
+	?logDateTime@Logger@@QBE_NXZ @ 10 NONAME ; bool Logger::logDateTime(void) const
+	?log@Logger@@QAEXABVQString@@@Z @ 11 NONAME ; void Logger::log(class QString const &)
+	?setLogLoggerName@Logger@@QAEX_N@Z @ 12 NONAME ; void Logger::setLogLoggerName(bool)
+	??1LogOutput@@UAE@XZ @ 13 NONAME ; LogOutput::~LogOutput(void)
+	?qt_metacall@Logger@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 14 NONAME ; int Logger::qt_metacall(enum QMetaObject::Call, int, void * *)
+	??_ELogger@@UAE@I@Z @ 15 NONAME ; Logger::~Logger(unsigned int)
+	?closeAll@Logger@@SAXXZ @ 16 NONAME ; void Logger::closeAll(void)
+	?tr@LogOutput@@SA?AVQString@@PBD0@Z @ 17 NONAME ; class QString LogOutput::tr(char const *, char const *)
+	?setName@LogOutput@@QAEXABVQString@@@Z @ 18 NONAME ; void LogOutput::setName(class QString const &)
+	?trUtf8@LogOutput@@SA?AVQString@@PBD0H@Z @ 19 NONAME ; class QString LogOutput::trUtf8(char const *, char const *, int)
+	?removeLogOutput@Logger@@QAEXPAVLogOutput@@@Z @ 20 NONAME ; void Logger::removeLogOutput(class LogOutput *)
+	?metaObject@Logger@@UBEPBUQMetaObject@@XZ @ 21 NONAME ; struct QMetaObject const * Logger::metaObject(void) const
+	?name@Logger@@QBE?AVQString@@XZ @ 22 NONAME ; class QString Logger::name(void) const
+	??0Logger@@AAE@ABVQString@@PAVQObject@@@Z @ 23 NONAME ; Logger::Logger(class QString const &, class QObject *)
+	?staticMetaObject@Logger@@2UQMetaObject@@B @ 24 NONAME ; struct QMetaObject const Logger::staticMetaObject
+	?load@LogOutput@@QAE_NAAVQSettings@@@Z @ 25 NONAME ; bool LogOutput::load(class QSettings &)
+	?dateTimeFormat@Logger@@QBE?AVQString@@XZ @ 26 NONAME ; class QString Logger::dateTimeFormat(void) const
+	??0LogOutput@@IAE@PAVLogger@@@Z @ 27 NONAME ; LogOutput::LogOutput(class Logger *)
+	?staticMetaObject@LogOutput@@2UQMetaObject@@B @ 28 NONAME ; struct QMetaObject const LogOutput::staticMetaObject
+	?clearAllLogOutput@Logger@@QAEXXZ @ 29 NONAME ; void Logger::clearAllLogOutput(void)
+	??_ELogOutput@@UAE@I@Z @ 30 NONAME ; LogOutput::~LogOutput(unsigned int)
+	?logOutput@Logger@@QAEPAVLogOutput@@ABVQString@@@Z @ 31 NONAME ; class LogOutput * Logger::logOutput(class QString const &)
+	?close@Logger@@SAXABVQString@@@Z @ 32 NONAME ; void Logger::close(class QString const &)
+	?name@LogOutput@@QBE?AVQString@@XZ @ 33 NONAME ; class QString LogOutput::name(void) const
+	?qt_metacast@LogOutput@@UAEPAXPBD@Z @ 34 NONAME ; void * LogOutput::qt_metacast(char const *)
+	?logLoggerName@Logger@@QBE_NXZ @ 35 NONAME ; bool Logger::logLoggerName(void) const
+	?qt_metacall@LogOutput@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 36 NONAME ; int LogOutput::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?qt_metacast@Logger@@UAEPAXPBD@Z @ 37 NONAME ; void * Logger::qt_metacast(char const *)
+	?getStaticMetaObject@LogOutput@@SAABUQMetaObject@@XZ @ 38 NONAME ; struct QMetaObject const & LogOutput::getStaticMetaObject(void)
+	?setParentLogger@LogOutput@@QAEXPAVLogger@@@Z @ 39 NONAME ; void LogOutput::setParentLogger(class Logger *)
+	?createLogOutput@LogOutputFactory@@SAPAVLogOutput@@ABVQString@@@Z @ 40 NONAME ; class LogOutput * LogOutputFactory::createLogOutput(class QString const &)
+	?createLogOutput@LogOutputFactory@@SAPAVLogOutput@@ABVQString@@ABV?$QHash@VQString@@VQVariant@@@@@Z @ 41 NONAME ; class LogOutput * LogOutputFactory::createLogOutput(class QString const &, class QHash<class QString, class QVariant> const &)
+	?parentLogger@LogOutput@@QAEPAVLogger@@XZ @ 42 NONAME ; class Logger * LogOutput::parentLogger(void)
+	?tr@Logger@@SA?AVQString@@PBD0H@Z @ 43 NONAME ; class QString Logger::tr(char const *, char const *, int)
+	?addCreateLogOutputEntry@LogOutputFactory@@SAXABVQString@@P6APAVLogOutput@@XZ@Z @ 44 NONAME ; void LogOutputFactory::addCreateLogOutputEntry(class QString const &, class LogOutput * (*)(void))
+	?configure@Logger@@QAEXAAVQSettings@@@Z @ 45 NONAME ; void Logger::configure(class QSettings &)
+	?instance@Logger@@SAPAV1@ABVQString@@@Z @ 46 NONAME ; class Logger * Logger::instance(class QString const &)
+	?tr@LogOutput@@SA?AVQString@@PBD0H@Z @ 47 NONAME ; class QString LogOutput::tr(char const *, char const *, int)
+	?trUtf8@Logger@@SA?AVQString@@PBD0H@Z @ 48 NONAME ; class QString Logger::trUtf8(char const *, char const *, int)
+	?trUtf8@Logger@@SA?AVQString@@PBD0@Z @ 49 NONAME ; class QString Logger::trUtf8(char const *, char const *)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/src/logger/eabi/cploggeru.def	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,50 @@
+EXPORTS
+	_ZN16LogOutputFactory15createLogOutputERK7QString @ 1 NONAME
+	_ZN16LogOutputFactory15createLogOutputERK7QStringRK5QHashIS0_8QVariantE @ 2 NONAME
+	_ZN16LogOutputFactory23addCreateLogOutputEntryERK7QStringPFP9LogOutputvE @ 3 NONAME
+	_ZN6Logger11qt_metacallEN11QMetaObject4CallEiPPv @ 4 NONAME
+	_ZN6Logger11qt_metacastEPKc @ 5 NONAME
+	_ZN6Logger12addLogOutputEP9LogOutput @ 6 NONAME
+	_ZN6Logger14setLogDateTimeEb @ 7 NONAME
+	_ZN6Logger15removeLogOutputEP9LogOutput @ 8 NONAME
+	_ZN6Logger16setLogLoggerNameEb @ 9 NONAME
+	_ZN6Logger16staticMetaObjectE @ 10 NONAME DATA 16
+	_ZN6Logger17clearAllLogOutputEv @ 11 NONAME
+	_ZN6Logger17setDateTimeFormatERK7QString @ 12 NONAME
+	_ZN6Logger19getStaticMetaObjectEv @ 13 NONAME
+	_ZN6Logger3logERK7QString @ 14 NONAME
+	_ZN6Logger5closeERK7QString @ 15 NONAME
+	_ZN6Logger8closeAllEv @ 16 NONAME
+	_ZN6Logger8instanceERK7QString @ 17 NONAME
+	_ZN6Logger9configureER9QSettings @ 18 NONAME
+	_ZN6Logger9configureERK7QStringN9QSettings6FormatE @ 19 NONAME
+	_ZN6Logger9logOutputERK7QString @ 20 NONAME
+	_ZN6LoggerC1ERK7QStringP7QObject @ 21 NONAME
+	_ZN6LoggerC2ERK7QStringP7QObject @ 22 NONAME
+	_ZN6LoggerD0Ev @ 23 NONAME
+	_ZN6LoggerD1Ev @ 24 NONAME
+	_ZN6LoggerD2Ev @ 25 NONAME
+	_ZN9LogOutput11qt_metacallEN11QMetaObject4CallEiPPv @ 26 NONAME
+	_ZN9LogOutput11qt_metacastEPKc @ 27 NONAME
+	_ZN9LogOutput12parentLoggerEv @ 28 NONAME
+	_ZN9LogOutput15setParentLoggerEP6Logger @ 29 NONAME
+	_ZN9LogOutput16staticMetaObjectE @ 30 NONAME DATA 16
+	_ZN9LogOutput19getStaticMetaObjectEv @ 31 NONAME
+	_ZN9LogOutput4loadER9QSettings @ 32 NONAME
+	_ZN9LogOutput7setNameERK7QString @ 33 NONAME
+	_ZN9LogOutputC2EP6Logger @ 34 NONAME
+	_ZN9LogOutputD0Ev @ 35 NONAME
+	_ZN9LogOutputD1Ev @ 36 NONAME
+	_ZN9LogOutputD2Ev @ 37 NONAME
+	_ZNK6Logger10metaObjectEv @ 38 NONAME
+	_ZNK6Logger11logDateTimeEv @ 39 NONAME
+	_ZNK6Logger13logLoggerNameEv @ 40 NONAME
+	_ZNK6Logger14dateTimeFormatEv @ 41 NONAME
+	_ZNK6Logger4nameEv @ 42 NONAME
+	_ZNK9LogOutput10metaObjectEv @ 43 NONAME
+	_ZNK9LogOutput4nameEv @ 44 NONAME
+	_ZTI6Logger @ 45 NONAME
+	_ZTI9LogOutput @ 46 NONAME
+	_ZTV6Logger @ 47 NONAME
+	_ZTV9LogOutput @ 48 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/src/logger/logger.pro	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,31 @@
+#
+# 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: 
+#
+
+TEMPLATE = lib
+TARGET = cplogger
+
+include ( ../common.pri )
+include ( logger.pri)
+include ( ../../controlpanel_plat/inc/logger_plat.pri )
+
+symbian: { 
+    TARGET.UID3 = 0x20028734
+}
+
+DEFINES += BUILD_LOGGER_DLL
+                    
+include ( logger_export.pri )
+    
--- a/controlpanel/src/logger/src/logger.cpp	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/src/logger/src/logger.cpp	Tue Aug 24 10:30:25 2010 +0800
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  
+* Description:  This class provide log functionality.
 *
 */
 #include <logger.h>
--- a/controlpanel/src/logger/src/logoutput.cpp	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/src/logger/src/logoutput.cpp	Tue Aug 24 10:30:25 2010 +0800
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  
+* Description:  An interface to output log string.
 *
 */
 #include <logoutput.h>
--- a/controlpanel/src/logger/src/logoutputfactory.cpp	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/src/logger/src/logoutputfactory.cpp	Tue Aug 24 10:30:25 2010 +0800
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  
+* Description:  Factory class to create LogOutput.
 *
 */
 #include <logoutputfactory.h>
--- a/controlpanel/src/logger/src/logoutputimpl.cpp	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/src/logger/src/logoutputimpl.cpp	Tue Aug 24 10:30:25 2010 +0800
@@ -28,6 +28,10 @@
     #include <Windows.h>
 #endif
 
+#ifdef Q_OS_SYMBIAN
+    #include <e32debug.h>
+#endif
+
 //DebugLogOutput
 REGISTER_OUTPUT_LOG(DEBUGOUTPUT_NAME,DebugLogOutput)
 
@@ -41,12 +45,14 @@
 
 void DebugLogOutput::output(const QString &log)
 {
-#ifdef Q_WS_WIN
+#if defined(Q_WS_WIN)
     QT_WA({
         OutputDebugStringW(reinterpret_cast<const WCHAR*>(log.utf16()));
     }, {
         OutputDebugStringA(log.toLocal8Bit().data());
     });
+#elif defined(Q_OS_SYMBIAN)
+    RDebug::Printf(log.toLocal8Bit().data());
 #else
     fprintf(stderr, log.toLocal8Bit().data());
     fflush(stderr);
--- a/controlpanel/src/src.pro	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/src/src.pro	Tue Aug 24 10:30:25 2010 +0800
@@ -15,5 +15,5 @@
 #
 
 TEMPLATE = subdirs
-SUBDIRS = cpframework 
+SUBDIRS = logger cpframework 
 CONFIG += ordered
\ No newline at end of file
--- a/controlpanel/tsrc/tsrc.pro	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/tsrc/tsrc.pro	Tue Aug 24 10:30:25 2010 +0800
@@ -15,11 +15,25 @@
 #
 
 TEMPLATE = subdirs
-SUBDIRS = unit/ut_cpapi 
-					#unit/ut_cpplugin \
-		      #unit/ut_profileengwrapper 
+SUBDIRS = unit/pluginfortest/firstpluginfortest \
+          unit/pluginfortest/secondpluginfortest \
+          unit/pluginfortest/thirdpluginfortest \
+          unit/testplugin \
+	        unit/ut_cppluginloader \ 
+          unit/ut_cpbasesettingview \
+          unit/ut_cpdataformbuttonentryviewitem \
+          unit/ut_cpdataformlistentryviewitem \
+          unit/ut_cpitemdatahelper \
+          unit/ut_cppluginlauncher \
+          unit/ut_cppluginutility \
+          unit/ut_cpsettingformentryitemdata \
+          unit/ut_cpsettingformitemdata \
+          unit/ut_cputility \
+          unit/ut_cpviewlauncher \
+	        unit/ut_cpapi 
+	
 CONFIG += ordered
-#CONFIG += symbian_test
+
 test.depends = first
 test.CONFIG += recursive
 autotest.depends = first
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/pluginfortest/firstpluginfortest/firstpluginfortest.pro	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,57 @@
+#
+# 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: 
+#
+
+TEMPLATE = lib
+TARGET = firstpluginfortest
+
+MOC_DIR = moc
+OBJECT_DIR = obj
+RCC_DIR = rcc
+
+symbian {
+    INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE
+    INCLUDEPATH += $$MOC_DIR
+    TARGET.CAPABILITY = ALL -TCB
+    TARGET.EPOCALLOWDLLDATA = 1
+}
+
+CONFIG += hb plugin
+LIBS += -lcpframework
+CONFIG += symbian_test
+
+symbian: plugin { # copy qtstub and manifest
+	
+	PLUGIN_STUB_PATH = /resource/qt/plugins/controlpanel
+	
+	deploy.path = C:
+	pluginstub.sources = $${TARGET}.dll
+	pluginstub.path = $$PLUGIN_STUB_PATH
+	DEPLOYMENT += pluginstub
+
+    qtplugins.path = $$PLUGIN_STUB_PATH
+    qtplugins.sources += qmakepluginstubs/$${TARGET}.qtplugin
+     
+    for(qtplugin, qtplugins.sources):BLD_INF_RULES.prj_exports += "./$$qtplugin  $$deploy.path$$qtplugins.path/$$basename(qtplugin)" 
+}
+
+DEPENDPATH += .
+INCLUDEPATH += .
+			 
+# Input
+HEADERS += src/firstpluginfortest.h \
+           src/firstpluginviewfortest.h    
+SOURCES += src/firstpluginfortest.cpp \
+           src/firstpluginviewfortest.cpp 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/pluginfortest/firstpluginfortest/src/firstpluginfortest.cpp	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,28 @@
+
+
+#include "firstpluginfortest.h"
+#include "firstpluginviewfortest.h"
+#include <cpsettingformentryitemdataimpl.h>
+
+FirstPluginForTest::FirstPluginForTest()
+{
+}
+
+FirstPluginForTest::~FirstPluginForTest()
+{
+}
+QList<CpSettingFormItemData*> FirstPluginForTest::createSettingFormItemData(CpItemDataHelper &itemDataHelper) const
+{
+    return QList<CpSettingFormItemData*>() 
+            << new CpSettingFormEntryItemDataImpl<FirstPluginViewForTest>(
+               itemDataHelper,
+               tr("The plugin for test"), 
+               tr("TestPlugin."));
+}
+
+CpBaseSettingView *FirstPluginForTest::createSettingView(const QVariant &hint) const
+{
+    return 0;
+}
+
+Q_EXPORT_PLUGIN2(FirstPluginForTest, FirstPluginForTest);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/pluginfortest/firstpluginfortest/src/firstpluginfortest.h	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,24 @@
+
+
+//This class is used for the test case "testCpPluginInterface()". CpTestPlugin is a subclass from CpPluginInterface.
+
+#ifndef FIRSTPLUGINFORTEST_H
+#define FIRSTPLUGINFORTEST_H
+
+#include <qobject.h>
+#include <cpplugininterface.h>
+#include <cplauncherinterface.h>
+
+class FirstPluginForTest : public QObject, public CpPluginInterface, public CpLauncherInterface
+{
+    Q_OBJECT
+    Q_INTERFACES(CpPluginInterface)
+    Q_INTERFACES(CpLauncherInterface)
+public:
+    FirstPluginForTest();
+    virtual ~FirstPluginForTest();
+    virtual QList<CpSettingFormItemData*> createSettingFormItemData(CpItemDataHelper &itemDataHelper) const;
+    virtual CpBaseSettingView *createSettingView(const QVariant &hint) const;
+};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/pluginfortest/firstpluginfortest/src/firstpluginviewfortest.cpp	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,45 @@
+#include "firstpluginviewfortest.h"
+
+#include <hbdataform.h>
+#include <qstringlist>
+#include <QDebug>
+#include <hbdataformmodel.h>
+#include <cpsettingformitemdata.h>
+#include <hbmessagebox.h>
+
+FirstPluginViewForTest::FirstPluginViewForTest(QGraphicsItem *parent) 
+    : CpBaseSettingView(0,parent),
+    mGroupItem(0),
+    mSliderItem(0)
+{
+    HbDataForm *form = qobject_cast<HbDataForm*>(widget());
+    if (form) {
+        HbDataFormModel *model = new HbDataFormModel;
+        
+        form->setHeading(tr("View from test plugin"));
+        mGroupItem = new HbDataFormModelItem(HbDataFormModelItem::GroupItem, QString("Group"));
+        
+        model->appendDataFormItem(mGroupItem);
+        
+        mSliderItem = new CpSettingFormItemData(HbDataFormModelItem::SliderItem,
+                QString("New Slider"));
+        mSliderItem->setContentWidgetData("iconEnabled","FALSE");
+        form->addConnection(mSliderItem,SIGNAL(valueChanged(int)),this,SLOT(sliderValueChanged(int)));
+        mGroupItem->appendChild(mSliderItem);      
+        
+        form->setModel(model);
+    }
+}
+FirstPluginViewForTest::~FirstPluginViewForTest()
+{
+}
+
+void FirstPluginViewForTest::testClose()
+{
+    close();
+}
+void FirstPluginViewForTest::sliderValueChanged(int value)
+{
+    //Disable the slider alert.
+	HbMessageBox::information(QString("slider value changed to:%1").arg(value));
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/pluginfortest/firstpluginfortest/src/firstpluginviewfortest.h	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,25 @@
+#ifndef	FIRSTPLUGINVIEWFORTEST_H 
+#define	FIRSTPLUGINVIEWFORTEST_H
+
+#include <cpbasesettingview.h>
+#include <QGraphicsItem>
+
+class HbDataFormModelItem;
+class CpSettingFormItemData;
+
+class FirstPluginViewForTest : public CpBaseSettingView
+{
+    Q_OBJECT
+public:
+    explicit FirstPluginViewForTest(QGraphicsItem *parent = 0);
+    virtual ~FirstPluginViewForTest();
+public:
+    void testClose();
+private slots:   
+    void sliderValueChanged(int value);
+    
+private:
+    HbDataFormModelItem   *mGroupItem;
+    CpSettingFormItemData *mSliderItem;
+};
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/pluginfortest/secondpluginfortest/secondpluginfortest.pro	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,58 @@
+#
+# 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: 
+#
+
+TEMPLATE = lib
+TARGET = secondpluginfortest
+
+MOC_DIR = moc
+OBJECT_DIR = obj
+RCC_DIR = rcc
+
+symbian {
+    INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE
+    INCLUDEPATH += $$MOC_DIR
+    TARGET.CAPABILITY = ALL -TCB
+    TARGET.EPOCALLOWDLLDATA = 1
+}
+
+CONFIG += hb plugin
+LIBS += -lcpframework
+CONFIG += symbian_test
+
+symbian: plugin { # copy qtstub and manifest
+	
+	PLUGIN_STUB_PATH = /resource/qt/plugins/controlpanel
+	
+	deploy.path = C:
+	pluginstub.sources = $${TARGET}.dll
+	pluginstub.path = $$PLUGIN_STUB_PATH
+	DEPLOYMENT += pluginstub
+
+    qtplugins.path = $$PLUGIN_STUB_PATH
+    qtplugins.sources += qmakepluginstubs/$${TARGET}.qtplugin
+     
+    for(qtplugin, qtplugins.sources):BLD_INF_RULES.prj_exports += "./$$qtplugin  $$deploy.path$$qtplugins.path/$$basename(qtplugin)" 
+}
+
+DEPENDPATH += .
+INCLUDEPATH += .
+			 
+# Input
+HEADERS += src/secondpluginfortest.h \
+           src/secondpluginviewfortest.h
+    
+SOURCES += src/secondpluginfortest.cpp \
+           src/secondpluginviewfortest.cpp 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/pluginfortest/secondpluginfortest/src/secondpluginfortest.cpp	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,29 @@
+
+
+#include "secondpluginfortest.h"
+#include "secondpluginviewfortest.h"
+#include <cpsettingformentryitemdataimpl.h>
+
+SecondPluginForTest::SecondPluginForTest()
+{
+}
+
+SecondPluginForTest::~SecondPluginForTest()
+{
+}
+QList<CpSettingFormItemData*> SecondPluginForTest::createSettingFormItemData(CpItemDataHelper &itemDataHelper) const
+{
+    return QList<CpSettingFormItemData*>() 
+            << new CpSettingFormEntryItemDataImpl<SecondPluginViewForTest>(
+               itemDataHelper,
+               tr("The plugin for test"), 
+               tr("TestPlugin."));
+}
+
+CpBaseSettingView *SecondPluginForTest::createSettingView(const QVariant &hint) const
+{
+    SecondPluginViewForTest *pView = new SecondPluginViewForTest();
+    return pView;
+}
+
+Q_EXPORT_PLUGIN2(SecondPluginForTest, SecondPluginForTest);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/pluginfortest/secondpluginfortest/src/secondpluginfortest.h	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,24 @@
+
+
+//This class is used for the test case "testCpPluginInterface()". CpTestPlugin is a subclass from CpPluginInterface.
+
+#ifndef SECONDPLUGINFORTEST_H
+#define SECONDPLUGINFORTEST_H
+
+#include <qobject.h>
+#include <cpplugininterface.h>
+#include <cplauncherinterface.h>
+
+class SecondPluginForTest : public QObject, public CpPluginInterface, public CpLauncherInterface
+{
+    Q_OBJECT
+    Q_INTERFACES(CpPluginInterface)
+    Q_INTERFACES(CpLauncherInterface)
+public:
+    SecondPluginForTest();
+    virtual ~SecondPluginForTest();
+    virtual QList<CpSettingFormItemData*> createSettingFormItemData(CpItemDataHelper &itemDataHelper) const;
+    virtual CpBaseSettingView *createSettingView(const QVariant &hint) const;
+};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/pluginfortest/secondpluginfortest/src/secondpluginviewfortest.cpp	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,45 @@
+#include "secondpluginviewfortest.h"
+
+#include <hbdataform.h>
+#include <qstringlist>
+#include <QDebug>
+#include <hbdataformmodel.h>
+#include <cpsettingformitemdata.h>
+#include <hbmessagebox.h>
+
+SecondPluginViewForTest::SecondPluginViewForTest(QGraphicsItem *parent) 
+    : CpBaseSettingView(0,parent),
+    mGroupItem(0),
+    mSliderItem(0)
+{
+    HbDataForm *form = qobject_cast<HbDataForm*>(widget());
+    if (form) {
+        HbDataFormModel *model = new HbDataFormModel;
+        
+        form->setHeading(tr("View from test plugin"));
+        mGroupItem = new HbDataFormModelItem(HbDataFormModelItem::GroupItem, QString("Group"));
+        
+        model->appendDataFormItem(mGroupItem);
+        
+        mSliderItem = new CpSettingFormItemData(HbDataFormModelItem::SliderItem,
+                QString("New Slider"));
+        mSliderItem->setContentWidgetData("iconEnabled","FALSE");
+        form->addConnection(mSliderItem,SIGNAL(valueChanged(int)),this,SLOT(sliderValueChanged(int)));
+        mGroupItem->appendChild(mSliderItem);      
+        
+        form->setModel(model);
+    }
+}
+SecondPluginViewForTest::~SecondPluginViewForTest()
+{
+}
+
+void SecondPluginViewForTest::testClose()
+{
+    close();
+}
+void SecondPluginViewForTest::sliderValueChanged(int value)
+{
+    //Disable the slider alert.
+	HbMessageBox::information(QString("slider value changed to:%1").arg(value));
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/pluginfortest/secondpluginfortest/src/secondpluginviewfortest.h	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,25 @@
+#ifndef	SECONDPLUGINVIEWFORTEST_H 
+#define	SECONDPLUGINVIEWFORTEST_H
+
+#include <cpbasesettingview.h>
+#include <QGraphicsItem>
+
+class HbDataFormModelItem;
+class CpSettingFormItemData;
+
+class SecondPluginViewForTest : public CpBaseSettingView
+{
+    Q_OBJECT
+public:
+    explicit SecondPluginViewForTest(QGraphicsItem *parent = 0);
+    virtual ~SecondPluginViewForTest();
+public:
+    void testClose();
+private slots:   
+    void sliderValueChanged(int value);
+    
+private:
+    HbDataFormModelItem   *mGroupItem;
+    CpSettingFormItemData *mSliderItem;
+};
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/pluginfortest/thirdpluginfortest/src/thirdpluginfortest.cpp	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,28 @@
+
+
+#include "thirdpluginfortest.h"
+#include "thirdpluginviewfortest.h"
+#include <cpsettingformentryitemdataimpl.h>
+
+ThirdPluginForTest::ThirdPluginForTest()
+{
+}
+
+ThirdPluginForTest::~ThirdPluginForTest()
+{
+}
+QList<CpSettingFormItemData*> ThirdPluginForTest::createSettingFormItemData(CpItemDataHelper &itemDataHelper) const
+{
+    return QList<CpSettingFormItemData*>() 
+            << new CpSettingFormEntryItemDataImpl<ThirdPluginViewForTest>(
+               itemDataHelper,
+               tr("The plugin for test"), 
+               tr("TestPlugin."));
+}
+
+CpBaseSettingView *ThirdPluginForTest::createSettingView(const QVariant &hint) const
+{
+    return 0;
+}
+
+Q_EXPORT_PLUGIN2(ThirdPluginForTest, ThirdPluginForTest);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/pluginfortest/thirdpluginfortest/src/thirdpluginfortest.h	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,24 @@
+
+
+//This class is used for the test case "testCpPluginInterface()". CpTestPlugin is a subclass from CpPluginInterface.
+
+#ifndef THIRDPLUGINFORTEST_H
+#define THIRDPLUGINFORTEST_H
+
+#include <qobject.h>
+#include <cpplugininterface.h>
+#include <cplauncherinterface.h>
+
+class ThirdPluginForTest : public QObject, public CpPluginInterface, public CpLauncherInterface
+{
+    Q_OBJECT
+    Q_INTERFACES(CpPluginInterface)
+    Q_INTERFACES(CpLauncherInterface)
+public:
+    ThirdPluginForTest();
+    virtual ~ThirdPluginForTest();
+    virtual QList<CpSettingFormItemData*> createSettingFormItemData(CpItemDataHelper &itemDataHelper) const;
+    virtual CpBaseSettingView *createSettingView(const QVariant &hint) const;
+};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/pluginfortest/thirdpluginfortest/src/thirdpluginviewfortest.cpp	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,45 @@
+#include "thirdpluginviewfortest.h"
+
+#include <hbdataform.h>
+#include <qstringlist>
+#include <QDebug>
+#include <hbdataformmodel.h>
+#include <cpsettingformitemdata.h>
+#include <hbmessagebox.h>
+
+ThirdPluginViewForTest::ThirdPluginViewForTest(QGraphicsItem *parent) 
+    : CpBaseSettingView(0,parent),
+    mGroupItem(0),
+    mSliderItem(0)
+{
+    HbDataForm *form = qobject_cast<HbDataForm*>(widget());
+    if (form) {
+        HbDataFormModel *model = new HbDataFormModel;
+        
+        form->setHeading(tr("View from test plugin"));
+        mGroupItem = new HbDataFormModelItem(HbDataFormModelItem::GroupItem, QString("Group"));
+        
+        model->appendDataFormItem(mGroupItem);
+        
+        mSliderItem = new CpSettingFormItemData(HbDataFormModelItem::SliderItem,
+                QString("New Slider"));
+        mSliderItem->setContentWidgetData("iconEnabled","FALSE");
+        form->addConnection(mSliderItem,SIGNAL(valueChanged(int)),this,SLOT(sliderValueChanged(int)));
+        mGroupItem->appendChild(mSliderItem);      
+        
+        form->setModel(model);
+    }
+}
+ThirdPluginViewForTest::~ThirdPluginViewForTest()
+{
+}
+
+void ThirdPluginViewForTest::testClose()
+{
+    close();
+}
+void ThirdPluginViewForTest::sliderValueChanged(int value)
+{
+    //Disable the slider alert.
+	HbMessageBox::information(QString("slider value changed to:%1").arg(value));
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/pluginfortest/thirdpluginfortest/src/thirdpluginviewfortest.h	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,25 @@
+#ifndef	THIRDPLUGINVIEWFORTEST_H 
+#define	THIRDPLUGINVIEWFORTEST_H
+
+#include <cpbasesettingview.h>
+#include <QGraphicsItem>
+
+class HbDataFormModelItem;
+class CpSettingFormItemData;
+
+class ThirdPluginViewForTest : public CpBaseSettingView
+{
+    Q_OBJECT
+public:
+    explicit ThirdPluginViewForTest(QGraphicsItem *parent = 0);
+    virtual ~ThirdPluginViewForTest();
+public:
+    void testClose();
+private slots:   
+    void sliderValueChanged(int value);
+    
+private:
+    HbDataFormModelItem   *mGroupItem;
+    CpSettingFormItemData *mSliderItem;
+};
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/pluginfortest/thirdpluginfortest/thirdpluginfortest.pro	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,58 @@
+#
+# 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: 
+#
+
+TEMPLATE = lib
+TARGET = thirdpluginfortest
+
+MOC_DIR = moc
+OBJECT_DIR = obj
+RCC_DIR = rcc
+
+symbian {
+    INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE
+    INCLUDEPATH += $$MOC_DIR
+    TARGET.CAPABILITY = ALL -TCB
+    TARGET.EPOCALLOWDLLDATA = 1
+}
+
+CONFIG += hb plugin
+LIBS += -lcpframework
+CONFIG += symbian_test
+
+symbian: plugin { # copy qtstub and manifest
+	
+	PLUGIN_STUB_PATH = /resource/qt/plugins/controlpanel
+	
+	deploy.path = C:
+	pluginstub.sources = $${TARGET}.dll
+	pluginstub.path = $$PLUGIN_STUB_PATH
+	DEPLOYMENT += pluginstub
+
+    qtplugins.path = $$PLUGIN_STUB_PATH
+    qtplugins.sources += qmakepluginstubs/$${TARGET}.qtplugin
+     
+    for(qtplugin, qtplugins.sources):BLD_INF_RULES.prj_exports += "./$$qtplugin  $$deploy.path$$qtplugins.path/$$basename(qtplugin)" 
+}
+
+DEPENDPATH += .
+INCLUDEPATH += .
+			 
+# Input
+HEADERS += src/thirdpluginfortest.h \
+           src/thirdpluginviewfortest.h
+    
+SOURCES += src/thirdpluginfortest.cpp \
+           src/thirdpluginviewfortest.cpp 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/testplugin/data/testplugin.cpcfg	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,14 @@
+<childplugins>
+  <plugin displayname = "Ring tone" id = "0X20028738"  dll = "cpringtoneplugin.dll">
+    <desc></desc>
+  </plugin>
+  <plugin displayname = "Theme" id = "0X2002C2F3"  dll = "cpthemeplugin.dll">
+    <desc></desc>
+  </plugin>
+  <plugin displayname = "Profile" id = "0X20028739"  dll = "cpprofileactivator.dll">
+    <desc></desc>
+  </plugin>
+  <plugin displayname = "Key touch screen" id = "0X20025FDE"  dll = "cpkeytouchfdbkplugin.dll">
+    <desc></desc>
+  </plugin>
+</childplugins>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/testplugin/src/cppersonalizationplugin.cpp	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,48 @@
+/*
+ * 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:  
+ *
+ */
+
+#include "cppersonalizationplugin.h"
+#include <cpitemdatahelper.h>
+#include <cpsettingformitemdata.h>
+#include <cpbasesettingview.h>
+
+CpPersonalizationPlugin::CpPersonalizationPlugin()
+{
+}
+
+CpPersonalizationPlugin::~CpPersonalizationPlugin()
+{
+}
+
+QList<CpSettingFormItemData*> CpPersonalizationPlugin::createSettingFormItemData(CpItemDataHelper &itemDataHelper) const
+{
+    CpSettingFormItemData *itemData = new CpSettingFormItemData();
+
+    return QList<CpSettingFormItemData*>() << itemData;
+}
+
+CpBaseSettingView *CpPersonalizationPlugin::createSettingView(const QVariant &hint) const
+{
+    if (hint.toString().compare("profile_view",Qt::CaseInsensitive) == 0) {
+        return new CpBaseSettingView;
+    }
+    return 0;
+}
+
+Q_EXPORT_PLUGIN2(cppersonalizationplugin, CpPersonalizationPlugin);
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/testplugin/src/cppersonalizationplugin.h	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,45 @@
+/*
+ * 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:  
+ *
+ */
+
+#ifndef CPPERSONALIZATIONPLUGIN_H
+#define CPPERSONALIZATIONPLUGIN_H
+
+#include <qobject.h>
+#include <cpplugininterface.h>
+#include <cplauncherinterface.h>
+
+class CpBaseSettingView;
+class QVariant;
+
+class CpPersonalizationPlugin 
+        : public QObject,
+          public CpPluginInterface,
+          public CpLauncherInterface
+{
+    Q_OBJECT
+    Q_INTERFACES(CpPluginInterface)
+    Q_INTERFACES(CpLauncherInterface)
+public:
+    CpPersonalizationPlugin();
+    virtual ~CpPersonalizationPlugin();
+    virtual QList<CpSettingFormItemData*> createSettingFormItemData(CpItemDataHelper &itemDataHelper) const;
+    virtual CpBaseSettingView *createSettingView(const QVariant &hint) const;
+};
+
+#endif /* CPPERSONALIZATIONPLUGIN_H */
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/testplugin/testplugin.pri	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,20 @@
+#
+# 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: cppersonalizationplugin source files
+#
+
+# Input
+HEADERS += src/cppersonalizationplugin.h  \
+			     
+SOURCES += src/cppersonalizationplugin.cpp \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/testplugin/testplugin.pro	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,69 @@
+#
+# 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: 
+#
+
+TEMPLATE = lib
+TARGET = testplugin
+
+CONFIG += hb plugin
+CONFIG += symbian_test
+
+QMAKE_EXTRA_TARGETS += test autotest
+
+LIBS += -lcpframework
+
+include ( testplugin.pri )
+
+symbian: { 
+    TARGET.UID3 = 0X2002D6E9
+}
+
+MOC_DIR = moc
+OBJECT_DIR = obj
+
+symbian: {
+    INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE
+    INCLUDEPATH += $$MW_LAYER_PLATFORM_EXPORT_PATH(cplogger)
+    INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
+    INCLUDEPATH += $$MOC_DIR
+    TARGET.CAPABILITY = ALL -TCB
+    TARGET.EPOCALLOWDLLDATA = 1
+    
+    deploy.path = C:
+    headers.sources = data/testplugin.cpcfg
+    headers.path = /resource/qt/plugins/controlpanel/config
+    DEPLOYMENT += headers
+
+    # This is for new exporting system coming in garden
+    for(header, headers.sources):BLD_INF_RULES.prj_exports += "./$$header $$deploy.path$$headers.path/$$basename(header)"
+}
+
+symbian: plugin { # copy qtstub and manifest
+ 
+    PLUGIN_STUB_PATH = /resource/qt/plugins/controlpanel
+  
+    deploy.path = C:
+    pluginstub.sources = $${TARGET}.dll
+    pluginstub.path = $$PLUGIN_STUB_PATH
+    DEPLOYMENT += pluginstub 
+
+    qtplugins.path = $$PLUGIN_STUB_PATH
+    qtplugins.sources += qmakepluginstubs/$${TARGET}.qtplugin
+     
+    for(qtplugin, qtplugins.sources):BLD_INF_RULES.prj_exports += "./$$qtplugin  $$deploy.path$$qtplugins.path/$$basename(qtplugin)" 
+}
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_common.pri	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,26 @@
+#
+# 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: 
+#
+
+QT		  += testlib
+
+CONFIG += hb qtestlib
+CONFIG += symbian_test
+
+QMAKE_EXTRA_TARGETS += test autotest
+
+DEPENDPATH += .
+							 
+LIBS += -lcpframework
--- a/controlpanel/tsrc/unit/ut_cpapi/runtest.bat	Fri Jun 25 17:09:30 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-@rem
-@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-@rem All rights reserved.
-@rem This component and the accompanying materials are made available
-@rem under the terms of "Eclipse Public License v1.0"
-@rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
-@rem
-@rem Initial Contributors:
-@rem Nokia Corporation - initial contribution.
-@rem
-@rem Contributors:
-@rem
-@rem Description: 
-@rem
-
-\epoc32\RELEASE\WINSCW\udeb\ut_cpapi.exe -xml -o c:\ut_cpapi.xml
-copy \epoc32\winscw\c\ut_cpapi.xml
-del \epoc32\winscw\c\ut_cpapi.xml
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cpapi/src/cptestpluginentryitem.cpp	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,34 @@
+#include "CpTestPluginEntryItem.h"
+
+#include <cpitemdatahelper.h>
+#include <hbaction.h>
+#include <QFileInfo>
+CpTestPluginEntryItemData::CpTestPluginEntryItemData(const HbDataFormModelItem *parent /* = 0*/)
+{
+    
+}
+CpTestPluginEntryItemData::CpTestPluginEntryItemData(CpItemDataHelper &itemDataHelper,
+                                                       const QString &text /*= QString()*/,
+                                                       const QString &description /*= QString()*/,
+                                                       const HbIcon &icon /*= HbIcon()*/,
+                                                       const HbDataFormModelItem *parent /*= 0*/)
+                                                       : CpSettingFormEntryItemData(itemDataHelper,
+                                                       text,
+                                                       description,
+                                                       icon,
+                                                       parent)
+{
+}
+
+CpTestPluginEntryItemData::~CpTestPluginEntryItemData()
+{
+}
+
+void CpTestPluginEntryItemData::testOnLaunchView()
+{
+    onLaunchView();
+}
+CpBaseSettingView *CpTestPluginEntryItemData::createSettingView() const
+{
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cpapi/src/cptestpluginentryitem.h	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,21 @@
+#ifndef CPTESTPLUGINENTRYITEM_H
+#define CPTESTPLUGINENTRYITEM_H
+#include <cpsettingformentryitemdata.h>
+
+class CpTestPluginEntryItemData : public CpSettingFormEntryItemData
+{
+    Q_OBJECT
+public:
+    explicit CpTestPluginEntryItemData(const HbDataFormModelItem *parent /* = 0*/); 
+    explicit CpTestPluginEntryItemData(CpItemDataHelper &itemDataHelper,
+        const QString &text = QString(),
+        const QString &description = QString(),
+        const HbIcon &icon = HbIcon(),
+        const HbDataFormModelItem *parent = 0);  
+    virtual ~CpTestPluginEntryItemData();
+public slots:
+    void testOnLaunchView();
+private:
+    virtual CpBaseSettingView *createSettingView() const;
+};
+#endif // CPTESTPLUGINENTRYITEM_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cpapi/src/cptestview.cpp	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,22 @@
+#include "CpTestView.h"
+
+#include <hbdataform.h>
+#include <qstringlist>
+#include <QDebug>
+#include <hbdataformmodel.h>
+#include <cpsettingformitemdata.h>
+#include <hbmessagebox.h>
+
+CpTestView::CpTestView(QGraphicsItem *parent) 
+    : CpBaseSettingView(0,parent)
+{
+
+}
+CpTestView::~CpTestView()
+{
+}
+
+void CpTestView::testClose()
+{
+    close();
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cpapi/src/cptestview.h	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,20 @@
+#ifndef	CPTESTVIEW_H 
+#define	CPTESTVIEW_H
+
+#include <cpbasesettingview.h>
+#include <QGraphicsItem>
+
+class HbDataFormModelItem;
+class CpSettingFormItemData;
+
+class CpTestView : public CpBaseSettingView
+{
+    Q_OBJECT
+public:
+    explicit CpTestView(QGraphicsItem *parent = 0);
+    virtual ~CpTestView();
+public:
+    void testClose();
+};
+#endif
+
--- a/controlpanel/tsrc/unit/ut_cpapi/src/main.cpp	Fri Jun 25 17:09:30 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
-* 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:  
-*       test application for qt control panel public apis.
-*/
-#include <hbapplication.h>
-#include <QTest>
-#include "ut_cpapi.h"
-int main(int argc, char *argv[])
-{
-    HbApplication app(argc, argv);
-    int res = 0;
-    //char *pass[3];
-    //pass[0] = argv[0];
-    //pass[1] = "-o";
-    
-    // log folder: \epoc32\winscw\c\data
-    
-    app.setApplicationName("TestCpAPI");
-    //pass[2] = "c:\\data\\u.txt";
-    TestCpAPI *tcUtilities = new TestCpAPI();
-    res |= QTest::qExec(tcUtilities);
-    delete tcUtilities;
-    tcUtilities = NULL;
-    return res;
-}
--- a/controlpanel/tsrc/unit/ut_cpapi/src/ut_cpapi.cpp	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/tsrc/unit/ut_cpapi/src/ut_cpapi.cpp	Tue Aug 24 10:30:25 2010 +0800
@@ -11,12 +11,15 @@
 *
 * Contributors:
 *
-* Description:  
+* Description:  test application for qt control panel public apis.
 *
 */
-#include "ut_cpapi.h"
 
-#include <hbmainwindow.h>
+#include "ut_cpapi.h"
+#include "cptestpluginentryitem.h"
+#include "cptestview.h"
+
+//#include <hbmainwindow.h>
 #include <QGraphicsWidget>
 #include <qDebug>
 #include <QtTest/QtTest>
@@ -29,8 +32,7 @@
 #include <hbabstractviewitem.h>
 #include <hbpushbutton.h>
 //testing following classes
-
-#include "cpbasesettingview.h"
+#include <cpbasesettingview.h>
 #include "cpsettingformentryitemdata.h"
 #include "cpsettingformentryitemdataimpl.h"
 #include <cpsettingformitemdata.h>
@@ -38,143 +40,655 @@
 #include <cppluginutility.h>
 #include <cppluginloader.h>
 #include <cpplugininterface.h>
+#include <cplauncherinterface.h>
 #include <cplogger.h>
-
+/*!
+     \class TestCpAPI 
+     \brief class name: TestCpAPI \n
+      class's description: \n
+      type of test case: API class test \n
+      test cases' number totally: 9 \n
+ */
 void TestCpAPI::initTestCase()
 {    
-	//mainWindow = new HbMainWindow;
-  //mainWindow->show();
+
 }
 
 void TestCpAPI::cleanupTestCase()
 {
-	//delete mainWindow;
-	//mainWindow = 0;
-	//if delete mainwindow, test app will be freezing
 	QCoreApplication::processEvents();
 }
+/*!
+    <b>Test Case Description:</b> \n&nbsp;&nbsp;
+        Verify the class CpBaseSettingView can created corresponding views via different parameters.\n
+     1. Fucntion Name: \n &nbsp;&nbsp;
+		<1> CpBaseSettingView::CpBaseSettingView(QGraphicsWidget *widget,QGraphicsItem *parent)\n &nbsp;&nbsp;
+		<2> virtual void close()\n
+     2. Case Descrition: \n&nbsp;&nbsp;
+		<1> test the constructor function\n &nbsp;&nbsp;
+		<2> Test the close() function. \n
+     3. Input Parameters: \n&nbsp;&nbsp;
+		<1> widget = 0 , parent = 0 \n &nbsp;&nbsp;
+          widget = 0, parent = new HbWidget () \n &nbsp;&nbsp;&nbsp;&nbsp;
+          widget = new Hbpushbuton (), parent = 0 \n &nbsp;&nbsp;&nbsp;&nbsp;
+          widget = new hbpushbutton(), parent  = new HbWidget() \n &nbsp;&nbsp;
+	   <2> none \n
+     4. Expected result:  \n &nbsp;&nbsp;
+		<1> pview != 0, no crash \n &nbsp;&nbsp;
+		<2> no crash \n
+ */
 void TestCpAPI::testCpBaseSettingView()
 {
-	CpBaseSettingView * pview = new CpBaseSettingView(0);
-	QVERIFY( pview != 0 );
-        HbDataForm *pForm = new HbDataForm(0);
-        pview->setWidget(pForm);
-        QVERIFY( qobject_cast<HbDataForm *>(pview->widget()) == pForm );
+	//set the parameters as 0
+    CpBaseSettingView * pview = new CpBaseSettingView(0);
+	QVERIFY( pview != 0 );	
+    HbDataForm *pForm = new HbDataForm(0);
+    pview->setWidget(pForm);
+    QVERIFY( qobject_cast<HbDataForm *>(pview->widget()) == pForm );
 	delete pview;
+	pview = 0;
+	
 	HbPushButton *widget = new HbPushButton();
 	QVERIFY(widget != 0);
+	// set the first parameter as widget
 	CpBaseSettingView *pView1 = new CpBaseSettingView(widget);
 	QVERIFY(pView1!=0);
 	HbPushButton *button = qobject_cast<HbPushButton *>(pView1->widget());
-	QVERIFY(button != 0);
-	delete pView1;
+	QVERIFY(button != 0);	
+	delete pView1;	
+	pView1 = 0;
 	
+	// test close() function in CpBaseSettingView class.
+	CpTestView *pview3 = new CpTestView();
+	pview3->testClose();
+	delete pview3;
+	pview3 = 0;
+}
+/*!
+     <b>Test Case Description:</b> \n
+     .	Verify this class could create the corresponding control panel defined HbDataFormModelItem. \n\n
+     <b>Function 1:</b> \n
+	 1. Fucntion Name: \n &nbsp;&nbsp;
+      CpSettingFormItemData(HbDataFormModelItem::DataItemType type, const QString &label, const HbDataFormModelItem *parent = 0) \n
+     2. Case Descrition: \n &nbsp;&nbsp;
+		Test the constructor function. \n
+     3. Input Parameters: \n &nbsp;&nbsp;
+      <1> type = HbDataFormModelItem::DataItemType,  label = QString, parent = new HbDataFormModelItem(), \n&nbsp;&nbsp;
+      <2> type =  (HbDataFormModelItem::DataItemType) invaildValue, label = 0, parent = 0 \n
+     4. Expected result: \n &nbsp;&nbsp;
+            <1> pdata != 0, pdata->type() == type \n &nbsp;&nbsp;
+            <2> no crash  \n
+     <b>Function 2:</b> \n
+     1. Fucntion Name: \n &nbsp;&nbsp;
+            CpSettingFormItemData(const HbDataFormModelItem *parent = 0) \n
+     2. Case Descrition: \n &nbsp;&nbsp;
+            Test the constructor function. \n
+     3. Input Parameters: \n &nbsp;&nbsp;
+            none \n
+     4. Expected result: \n &nbsp;&nbsp;
+            pdata != 0 & no crash \n
+	 <b>Function 3:</b> \n
+     1. Fucntion Name: \n &nbsp;&nbsp;
+            QString text() const; \n
+     2. Case Descrition: \n &nbsp;&nbsp;
+            Verify it returns the right text string. \n
+     3. Input Parameters: \n &nbsp;&nbsp;
+            none \n
+     4. Expected result: \n &nbsp;&nbsp;
+            return the correct text string \n
+	 <b>Function 4:</b> \n
+     1. Fucntion Name: \n &nbsp;&nbsp;
+            void setText(const QString &text); \n
+     2. Case Descrition: \n &nbsp;&nbsp;
+            Verify that the text can be set via this function. \n
+     3. Input Parameters: \n &nbsp;&nbsp;
+            text = QString(xx)
+     4. Expected result: \n &nbsp;&nbsp;
+            pItemData->text() ==  text \n
+     <b>Function 5:</b> \n
+	 1. Fucntion Name: \n &nbsp;&nbsp;
+            QString description() const; \n
+     2. Case Descrition: \n &nbsp;&nbsp;
+            Verify that it returns the correct description name. \n
+     3. Input Parameters: \n &nbsp;&nbsp;
+            none \n
+     4. Expected result: \n &nbsp;&nbsp;
+            return the correct text string \n
+     <b>Function 6:</b> \n
+	 1. Fucntion Name: \n &nbsp;&nbsp;
+            void setDescription(const QString &description); \n
+     2. Case Descrition: \n &nbsp;&nbsp;
+            Verify it can set description successfully. \n
+     3. Input Parameters: \n &nbsp;&nbsp;
+            description = QString(xx)
+     4. Expected result: \n &nbsp;&nbsp;
+            pItemData->description() ==  description \n
+     <b>Function 7:</b> \n
+	 1. Fucntion Name: \n &nbsp;&nbsp;
+            QString iconName() const;\n
+     2. Case Descrition: \n &nbsp;&nbsp;
+            Verify it can return the right icon name. \n
+     3. Input Parameters: \n &nbsp;&nbsp;
+            none \n
+     4. Expected result: \n &nbsp;&nbsp;
+            return the correct icon name \n
+     <b>Function 8:</b> \n
+	 1. Fucntion Name: \n &nbsp;&nbsp;
+            void setIconName(const QString &icon); \n
+     2. Case Descrition: \n &nbsp;&nbsp;
+            Verify it can set the given icon name successfully.\n
+     3. Input Parameters: \n &nbsp;&nbsp;
+            iconName = QString(xx)
+     4. Expected result: \n &nbsp;&nbsp;
+            pItemData->iconNmae() ==  iconName \n
+     <b>Function 9:</b> \n
+	 1. Fucntion Name: \n &nbsp;&nbsp;
+            void setEntryItemIcon(const HbIcon &icon); \n
+     2. Case Descrition: \n &nbsp;&nbsp;
+            Verify it can set the item icon successfully. \n
+     3. Input Parameters: \n &nbsp;&nbsp;
+            icon = HbIcon()
+     4. Expected result: \n &nbsp;&nbsp;
+            entryItemIcon() == icon \n            
+*/
+void TestCpAPI::testCpSettingFormEntryItemData()
+{
+    // create CpTestPluginEntryItemData class firstly
+    CpItemDataHelper *pHelper = new CpItemDataHelper();   
+    HbIcon pIcon = HbIcon("icon");
+    
+    // test the first constructor
+    CpTestPluginEntryItemData *pItemData = new CpTestPluginEntryItemData(0);
+    QVERIFY (pItemData!=0);
+    delete pItemData;
+    pItemData = 0;    
+    
+    // The second constructor
+    pItemData = new CpTestPluginEntryItemData(*pHelper, "test","test", pIcon, 0);
+    QVERIFY (pItemData!=0);
+    
+    // test settext() and text() function
+    QString aText = "strText";
+    pItemData->setText(aText);
+    QString aTextTemp = pItemData->text();
+    QVERIFY( aTextTemp == aText);
+    
+    // test setDescription() and description() function    
+    QString aDescription = "strDescription";
+    pItemData->setDescription(aDescription);
+    QString aDesTemp = pItemData->description();
+    QVERIFY( aDesTemp == aDescription);
+    
+    // test setIconName() and iconName() function    
+    QString aIconName = "strIconName";
+    pItemData->setIconName(aIconName);
+    QString aIconTemp = pItemData->iconName();
+    QVERIFY( aIconTemp == aIconName);
+    
+    // test setEntryItemIcon() and entryItemIcon() function 
+    pItemData->setEntryItemIcon(pIcon);
+    HbIcon pIconTemp = pItemData->entryItemIcon();
+    QVERIFY( pIconTemp == pIcon);
+    
+    // test onLaunchView() function
+    pItemData->onLaunchView();
+    
+    delete pItemData;
+    pItemData = 0;
+    delete pHelper;
+    pHelper = 0;
 }
 
+/*!
+     Test Case Description: \n
+         Verify this class could create the corresponding CpSettingFormEntryItemData. \n
+	 <b>Function 1:</b> \n
+     1. Fucntion Name: \n &nbsp;&nbsp;
+            explicit CpSettingFormEntryItemDataImpl(CpItemDataHelper &itemDataHelper,const QString &text = QString(), \n
+                                                    const QString &description = QString(),const HbIcon &icon = HbIcon(), \n
+                                                    const HbDataFormModelItem *parent = 0) \n
+     2. Case Descrition: \n &nbsp;&nbsp;
+            Test the first constructor function. \n
+     3. Input Parameters: \n &nbsp;&nbsp;
+            <1> itemDataHelper = CpItemDataHelper, text = Qstring(XX),description = Qstring(XX),
+            	  icon = HbIcon(), parent = new HbDataFormModelItem() \n &nbsp;&nbsp;
+            <2> itemDataHelper = CpItemDataHelper , text = Qstring(),
+            	  description = Qstring(), icon = HbIcon(), parent = 0 \n
+     4. Expected result: \n &nbsp;&nbsp;
+            <1>  pdataimp != 0 \n &nbsp;&nbsp;
+            <2> no crash  \n
+    <b>Function 2:</b> \n
+	 1. Fucntion Name: \n &nbsp;&nbsp;
+        explicit CpSettingFormEntryItemDataImpl(HbDataForm *dataForm,const QString &text = QString(), \n &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;
+        																				const QString &description = QString(),const HbIcon &icon = HbIcon(), \n &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;
+        																				   const HbDataFormModelItem *parent = 0) \n 
+     2.  Case Descrition: \n &nbsp;&nbsp;
+         Test the second constructor function. \n
+     3.  Input Parameters: \n &nbsp;&nbsp;
+            <1> dataform = new HbDataForm(), text = Qstring(XX), description Qstring(XX), 
+            	  icon = HbIcon(XX), parent = new HbDataFormModelItem(), \n &nbsp;&nbsp;
+						<2> dataForm = 0, text = Qstring(), description Qstring(), icon = HbIcon(), parent = 0 \n
+     4.  Expected result: \n &nbsp;&nbsp;
+            pdata != 0 \n      
+     <b>Function 3:</b> \n
+	 1. Fucntion Name: \n &nbsp;&nbsp;
+         explicit CpSettingFormEntryItemDataImpl(EntryItemType type,CpItemDataHelper &itemDataHelper, \n &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;
+         																				 const QString &text = QString(),const QString &description = QString(), \n &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;
+         																				 const QString &icon = QString(),const HbDataFormModelItem *parent = 0)  \n 
+     2. Case Descrition: \n &nbsp;&nbsp;
+         Test the third constructor function. \n
+     3. Input Parameters: \n &nbsp;&nbsp;
+            <1> type = HbDataFormModelItem::DataItemType,  itemDataHelper = CpItemDataHelper, \n &nbsp;&nbsp; &nbsp;&nbsp;
+            	  text = QString(XX),  description = QString(XX),  icon = QString(XX), parent = new HbDataFormModelItem() \n &nbsp;&nbsp;
+			<2> type = HbDataFormModelItem::DataItemType,  itemDataHelper = CpItemDataHelper default, \n &nbsp;&nbsp;
+							  text = QString(),  description = QString(),  icon = QString(), parent = 0 \n
+     4. Expected result: \n &nbsp;&nbsp;
+            <1> pdataimp != 0, pdataimp->icon() != icon,\n &nbsp;&nbsp;
+			<2> pdataimp != 0, pdataimp->icon() == 0, \n            
+     <b>Function 4:</b> \n
+	 1. Fucntion Name: \n &nbsp;&nbsp;
+         explicit CpSettingFormEntryItemDataImpl(EntryItemType type,HbDataForm *dataForm,const QString &text = QString(),\n &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;
+            																		 const QString &description = QString(),const QString &icon = QString(),\n &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;
+            																		 const HbDataFormModelItem *parent = 0) \n
+     2. Case Descrition: \n &nbsp;&nbsp;
+         Test the forth constructor function. \n
+     3. Input Parameters: \n &nbsp;&nbsp;
+            <1> type = HbDataFormModelItem::DataItemType, dataform = new HbDataForm(),   \n &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;
+            	  text = QString(XX),  description = QString(XX),  icon = QString(XX), parent = new HbDataFormModelItem() \n &nbsp;&nbsp;
+            <2> type = HbDataFormModelItem::DataItemType,  dataform = 0, text = QString(),   \n &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;
+            		description = QString(),  icon = QString(), parent = 0 \n
+     4. Expected result: \n &nbsp;&nbsp;
+            <1> pdataimp != 0, pdataimp->icon() != icon,\n &nbsp;&nbsp;
+			<2> pdataimp != 0, pdataimp->icon() == 0, \n   						    
+*/
 void TestCpAPI::testCpSettingFormEntryItemDataImpl()
 {
-	CpItemDataHelper *pHelper = new CpItemDataHelper();
-        CpSettingFormEntryItemDataImpl<CpBaseSettingView> *pdataimp = new CpSettingFormEntryItemDataImpl<CpBaseSettingView>( *pHelper, "text", "description"  );
-	QVERIFY( pdataimp !=0 );
-	QString strtxt = "input texts";
-	pdataimp->setText(strtxt);
-	QVERIFY( pdataimp->text() == strtxt );
-	
-	QString strDes = "input descriptions";
-	pdataimp->setDescription(strDes);
-	QVERIFY( pdataimp->description() == strDes);
-	delete pdataimp;
-        delete pHelper;
+    //Define the parameters for the constructors.
+    QString strText = "testText";
+    QString strDes = "testDescription";
+    QString strIcon = "iconString";
+    CpItemDataHelper *pHelper = new CpItemDataHelper();
+    HbDataFormModelItem *aParent = new HbDataFormModelItem();
+    HbIcon icon = HbIcon("icon");  
+    HbDataForm *pDataform = new HbDataForm();
+    CpSettingFormEntryItemData::EntryItemType EType1 = CpSettingFormEntryItemData::ListEntryItem;
+    CpSettingFormEntryItemData::EntryItemType EType2 = CpSettingFormEntryItemData::ButtonEntryItem;
+    // test the first constructor function.
+    CpSettingFormEntryItemDataImpl<CpBaseSettingView> *pdataimp =
+            new CpSettingFormEntryItemDataImpl<CpBaseSettingView>( *pHelper, strText, strDes, icon, aParent ); // first constructor
+    QVERIFY (pdataimp != 0);
+    QVERIFY( pdataimp->text() == strText );
+    QVERIFY( pdataimp->description()==strDes );
+    QVERIFY( pdataimp->icon() == icon.iconName() );
+    delete pdataimp;
+    pdataimp = 0; 
+    pdataimp = new CpSettingFormEntryItemDataImpl<CpBaseSettingView>( *pHelper, QString(), QString(), icon, 0);
+    QVERIFY (pdataimp != 0);
+    delete pdataimp;
+    pdataimp = 0; 
+        
+    pdataimp = new CpSettingFormEntryItemDataImpl<CpBaseSettingView>(0); // set parameter as "0"
+    QVERIFY (pdataimp != 0);
+    QVERIFY( pdataimp->text() == 0 );
+    QVERIFY( pdataimp->description()==0 );
+    delete pdataimp;
+    pdataimp = 0;
+    // test the second constructor function.
+    pdataimp = new CpSettingFormEntryItemDataImpl <CpBaseSettingView> ( pDataform,strText, strDes, icon, aParent ); //second contructor
+    QVERIFY( pdataimp->text() == strText );
+    QVERIFY( pdataimp->description()==strDes );
+    QVERIFY( pdataimp->icon() == icon.iconName() );
+    delete pdataimp;
+    pdataimp = 0;
+    pdataimp = new CpSettingFormEntryItemDataImpl <CpBaseSettingView> ( 0, QString(), QString(), icon, 0 );
+    QVERIFY (pdataimp != 0);
+    delete pdataimp;
+    pdataimp = 0; 
+    // test the third constructor function.
+    pdataimp = new CpSettingFormEntryItemDataImpl<CpBaseSettingView>( EType1,*pHelper, strText, strDes, strIcon, aParent );// the third constructor
+    HbDataFormModelItem::DataItemType EdataItmeTypeTemp1 = pdataimp->type();
+    QVERIFY (EdataItmeTypeTemp1 == EType1);
+    QVERIFY( pdataimp->text() == strText );
+    QVERIFY( pdataimp->description()==strDes );
+    QVERIFY( pdataimp->icon() == strIcon );
+    delete pdataimp;
+    pdataimp = 0;    
+    // test the forth constructor function.
+    pdataimp = new CpSettingFormEntryItemDataImpl<CpBaseSettingView>(EType2,pDataform, strText, strDes, strIcon, aParent );// the fourth constructor
+    CpSettingFormEntryItemData::DataItemType EdataItmeTypeTemp2 = pdataimp->type();
+    QVERIFY (EdataItmeTypeTemp2 == EType2);
+    QVERIFY( pdataimp->text() == strText );
+    QVERIFY( pdataimp->description()==strDes );
+    QVERIFY( pdataimp->icon() == strIcon );
+    delete pdataimp;
+    pdataimp = 0;
+  
+    delete pHelper;
+    pHelper=0;
+    delete pDataform;
+    pDataform = 0;
 }
+/*!
+		provide test data for the testCpSettingFormItemData()
+*/
+void TestCpAPI::testCpSettingFormItemData_data()
+{
+    // add the test data as below
+    QTest::addColumn<int>("aType");
+    QTest::addColumn<QString>("aLabel");
+    QTest::newRow("FormPageItem value") << (int)HbDataFormModelItem::FormPageItem << "FormPageItem Label";
+    QTest::newRow("GroupItem value") << (int)HbDataFormModelItem::GroupItem << "GroupItem Label";
+    QTest::newRow("GroupPageItem value") << (int)HbDataFormModelItem::GroupPageItem << "GroupPageItem Label";
+    QTest::newRow("TextItem value") << (int)HbDataFormModelItem::TextItem << "TextItem Label";
+    QTest::newRow("SliderItem value") << (int)HbDataFormModelItem::SliderItem << "SliderItem Label";
+    QTest::newRow("VolumeSliderItem value") << (int)HbDataFormModelItem::VolumeSliderItem << "VolumeSliderItem Label";
+    QTest::newRow("CheckBoxItem value") << (int)HbDataFormModelItem::CheckBoxItem << "CheckBoxItem Label";
+    QTest::newRow("ToggleValueItem value") << (int)HbDataFormModelItem::ToggleValueItem << "ToggleValueItem Label";
+    QTest::newRow("RadioButtonListItem value") << (int)HbDataFormModelItem::RadioButtonListItem << "RadioButtonListItem Label";
+    QTest::newRow("MultiselectionItem value") << (int)HbDataFormModelItem::MultiselectionItem << "MultiselectionItem Label";
+    QTest::newRow("ComboBoxItem value") << (int)HbDataFormModelItem::ComboBoxItem << "ComboBoxItem Label";    
+}
+/*!
+     <b>Test Case Description:</b> \n &nbsp;&nbsp;
+         Verify this class could create the corresponding control panel defined HbDataFormModelItem. \n
+     <b>Function 1:</b> \n
+	 1. Fucntion Name: \n &nbsp;&nbsp;
+            CpSettingFormItemData(HbDataFormModelItem::DataItemType type, const QString &label,const HbDataFormModelItem *parent = 0); \n
+     2. Case Descrition: \n &nbsp;&nbsp;
+            Test the first constructor function. \n
+     3. Input Parameters: \n &nbsp;&nbsp;
+            <1> type = HbDataFormModelItem::DataItemType,  label = QString, parent = new HbDataFormModelItem() \n &nbsp;&nbsp;
+			<2> type = (HbDataFormModelItem::DataItemType) invaildValue, label = 0, parent = 0 \n
+     4. Expected result: \n &nbsp;&nbsp;
+            <1> pdata != 0, pdata->type() == type \n &nbsp;&nbsp;
+			<2> no crash \n	
+     <b>Function 2:</b> \n
+	 1. Fucntion Name: \n &nbsp;&nbsp;
+            CpSettingFormItemData(const HbDataFormModelItem *parent = 0 \n
+     2. Case Descrition: \n &nbsp;&nbsp;
+            Test the second constructor function. \n
+     3. Input Parameters: \n &nbsp;&nbsp;
+            <1> parent = new HbDataFormModelItem() \n
+     4. Expected result: \n &nbsp;&nbsp;
+			<1> pdata != 0, no crash \n										    
+*/
 void TestCpAPI::testCpSettingFormItemData()
 {
-        CpSettingFormItemData *pdata = new CpSettingFormItemData( HbDataFormModelItem::TextItem, "label" );
-        QVERIFY( pdata !=0 );
-        delete pdata;
-        pdata = 0;
-        pdata = new CpSettingFormItemData( HbDataFormModelItem::SliderItem, "label" );
-        QVERIFY( pdata !=0 );
-        delete pdata;
-        pdata = 0;
-        pdata = new CpSettingFormItemData( HbDataFormModelItem::VolumeSliderItem, "label" );
-        QVERIFY( pdata !=0 );
-        delete pdata;
-        pdata = new CpSettingFormItemData( HbDataFormModelItem::CheckBoxItem, "label" );
-        QVERIFY( pdata !=0 );
-        delete pdata;
-        pdata = 0;
-        pdata = new CpSettingFormItemData( HbDataFormModelItem::ToggleValueItem, "label" );
-        QVERIFY( pdata !=0 );
-        delete pdata;
-        pdata = 0;
-        pdata = new CpSettingFormItemData( HbDataFormModelItem::RadioButtonListItem, "label" );
-        QVERIFY( pdata !=0 );
-        delete pdata;
-        pdata = 0;
-        pdata = new CpSettingFormItemData( HbDataFormModelItem::MultiselectionItem, "label" );
-        QVERIFY( pdata !=0 );
-        delete pdata;
-        pdata = 0;
-        pdata = new CpSettingFormItemData( HbDataFormModelItem::ComboBoxItem, "label" );
-        QVERIFY( pdata !=0 );
-        delete pdata;
-        pdata = 0;
+    // Fectch the test data from testCpSettingFormItemData_data()
+    QFETCH(int, aType);    
+    QFETCH(QString, aLabel);
+    // test the constructor using the above data
+    HbDataFormModelItem::DataItemType itemType = (HbDataFormModelItem::DataItemType)aType;
+    CpSettingFormItemData *pdata=new CpSettingFormItemData(itemType,aLabel);
+    QVERIFY( pdata !=0 );
+    HbDataFormModelItem::DataItemType itemTemp=pdata->type();
+    QVERIFY(itemType==itemTemp);
+    delete pdata;
+    pdata=0;
 }
+/*!
+     <b>Test Case Description:</b> \n &nbsp;&nbsp;
+         To verify all the functions in CpItemdataHelper class. \n
+     <b>Function 1:</b> \n
+	 1. Fucntion Name: \n &nbsp;&nbsp;
+            explicit CpItemDataHelper(HbDataForm *form = 0) \n
+     2. Case Descrition: \n &nbsp;&nbsp;
+            Test the first constructor function. \n
+     3. Input Parameters: \n &nbsp;&nbsp;
+            <1> form = 0 \n
+						<2> form = new HbDataForm() \n
+     4. Expected result: \n &nbsp;&nbsp;
+            <1> pHelper != 0 \n &nbsp;&nbsp;
+            <2> pHelper != 0 \n 
+     <b>Function 2:</b> \n
+	 1. Fucntion Name: \n &nbsp;&nbsp;
+            void bindToForm(HbDataForm *form) \n
+     2. Input Parameters: \n &nbsp;&nbsp;
+            <1> form = 0 \n &nbsp;&nbsp;
+			<2> form = new HbDataForm() \n
+     3. Expected result: \n &nbsp;&nbsp;
+			no crash \n				
+     <b>Function 3:</b> \n
+	 1. Fucntion Name: \n &nbsp;&nbsp;
+            void addItemPrototype(HbAbstractViewItem *prototype) \n 
+     2. Input Parameters: \n &nbsp;&nbsp;
+            <1> prototype = HbDataFormViewItem() \n &nbsp;&nbsp;
+			<2> prototype = 0 \n
+     3. Expected result: \n &nbsp;&nbsp;
+			no crash \n				
+     <b>Function 4:</b> \n
+	 1. Fucntion Name: \n &nbsp;&nbsp;
+            void addConnection(HbDataFormModelItem *item, const char *signal,  QObject *receiver,const char *method) \n
+     2. Input Parameters: \n &nbsp;&nbsp;
+            <1> item = new HbDataFormModelItem(), signal = char*, receiver = Qobject*, method = const char* \n &nbsp;&nbsp;
+			<2> set all parameters as '0' \n
+     3. Expected result: \n &nbsp;&nbsp;
+			no crash \n									
+     <b>Function 5:</b> \n
+	 1. Fucntion Name: \n &nbsp;&nbsp;
+            void removeConnection(HbDataFormModelItem *item, const char *signal, Qobject *receiver, const char *method) \n
+     2. Input Parameters: \n &nbsp;&nbsp;
+            <1> item = new HbDataFormModelItem(), signal = char*, receiver = Qobject*, method = const char*\n &nbsp;&nbsp;
+			<2> set all parameters as '0'
+     3. Expected result: \n &nbsp;&nbsp;
+			no crash \n	
+     <b>Function 6:</b> \n
+	 1. Fucntion Name: \n &nbsp;&nbsp;
+            void connectToForm(const char *signal, QObject *receiver, const char *method) \n
+     2. Input Parameters: \n &nbsp;&nbsp;
+            <1> signal = char*, receiver = Qobject*, method = const char* \n &nbsp;&nbsp;
+			<2> set all parameters as '0' \n
+     3. Expected result: \n &nbsp;&nbsp;
+			no crash \n						
+     <b>Function 7:</b> \n
+	 1. Fucntion Name: \n &nbsp;&nbsp;
+            HbWidget *widgetFromModelIndex(const QModelIndex &index) \n
+     2. Input Parameters: \n &nbsp;&nbsp;
+            <1>  index = const QModelIndex \n						
+     3. Expected result: \n &nbsp;&nbsp;
+			no crash \n			
+     <b>Function 8:</b> \n
+	 1. Fucntion Name: \n &nbsp;&nbsp;
+            HbDataFormModelItem *modelItemFromModelIndex(const QModelIndex &index) \n
+     2. Input Parameters: \n &nbsp;&nbsp;
+            <1> index =  const QModelIndex() \n &nbsp;&nbsp;
+			<2> set all parameters as '0' \n			
+     3. Expected result: \n &nbsp;&nbsp;
+			no crash \n																													    
+*/
 void TestCpAPI::testItemDataHelper()
 {
-    HbDataForm* form = new HbDataForm();
-    HbDataFormModel *model = new HbDataFormModel();
-    HbDataFormModelItem *general = model->appendDataFormPage(QString("General"));
-    CpItemDataHelper *phelper = new CpItemDataHelper();
-    phelper->addConnection( general, "hello",form,"hello");
-    phelper->removeConnection(general,"hello",form, "hello");
-    phelper->bindToForm(form);
+    HbDataForm* form = new HbDataForm(); // create a dataform
+    HbDataFormModel *model = new HbDataFormModel(); 
+    HbDataFormModelItem *general = model->appendDataFormPage(QString("General")); // add a dataformpage
+    CpSettingFormItemData *mItem = new CpSettingFormItemData(HbDataFormModelItem::SliderItem,
+            QString("New Slider")); 
+    general->appendChild(mItem); // add a slider to the dataformgroup, use it as a parameter when testing addConnection() function
+    form->setModel(model);    
+        
+    // test constructor using default parameter
+    CpItemDataHelper *phelperdefault = new CpItemDataHelper(0);
+    QVERIFY (phelperdefault!=0);
+    
+    // test constructor using a HbDataForm parameter
+    CpItemDataHelper *phelperForm = new CpItemDataHelper(form);
+    QVERIFY (phelperForm!=0);
+    
+    // test bindtoForm()
+    phelperForm->bindToForm(0);
+    phelperForm->bindToForm(form);
+    
+    // test the addItemPrototype() function
+    int oldProtoTypeListNr = form->itemPrototypes().count();
     HbDataFormViewItem *pitem = new HbDataFormViewItem();
-    phelper->addItemPrototype(pitem);
-    delete phelper;
+    phelperForm->addItemPrototype(pitem); 
+    int newProtoTypeListNr = form->itemPrototypes().count();
+    //Verify that the prototype is added to the prototypelist
+    QVERIFY( newProtoTypeListNr == oldProtoTypeListNr + 1 );    
+    
+    phelperForm->addItemPrototype(0); // pitem = 0
+    
+    // test addConnection() function     
+    char aSignal[] = "asignal";
+    char aMethod[] = "amethod";
+    phelperForm->addConnection( general, aSignal,mItem,aMethod);    
+    phelperForm->removeConnection(general,aSignal,mItem, aMethod);    
+    phelperForm->addConnection( 0,0,0,0 );
+    phelperForm->removeConnection(0,0,0,0);
+    phelperdefault->addConnection(general, aSignal,mItem,aMethod);
+    
+    // test connectToForm() function
+    phelperForm->connectToForm(aSignal,mItem, aMethod);
+    phelperForm->disconnectFromForm(aSignal,mItem, aMethod);
+    phelperForm->connectToForm(0,0,0);
+    phelperForm->disconnectFromForm(0,0,0); 
+    phelperdefault->connectToForm(aSignal,mItem, aMethod);
+    
+    // test widgetFromModelIndex() function
+    QModelIndex aIndex = model->indexFromItem(mItem);
+    HbWidget * widget = phelperForm->widgetFromModelIndex(aIndex);
+    QVERIFY( widget->type() == Hb::ItemType_Slider );
+    
+    // test modelItemFromModelIndex() function
+    HbDataFormModelItem *itemTest = phelperForm->modelItemFromModelIndex(aIndex);
+    HbDataFormModelItem *itemGeneral = model->itemFromIndex(aIndex);
+    QVERIFY(itemTest == itemGeneral);
+  
+    delete phelperdefault;
+    phelperdefault = 0;
+    delete phelperForm;
+    phelperForm = 0;
+    delete form;
+    form = 0;
+    delete model;
+    
 }
+/*!
+     <b>Test Case Description:</b> \n &nbsp;&nbsp;
+         Verify the class can add the control panel's proto type of setting items( only entry item currently) to the settingForm \n
+     1. Fucntion Name: \n &nbsp;&nbsp;
+            static void addCpItemPrototype(HbDataForm *settingForm) \n
+     2. Case Descrition: \n &nbsp;&nbsp;
+            Verify it can add the control panel's proto type of setting items( only entry item currently) to the settingForm \n
+     3. Input Parameters: \n &nbsp;&nbsp;
+            <1> settingForm = new HbDataForm () \n
+						<2> settingForm = 0 \n
+     4. Expected result: \n &nbsp;&nbsp;
+            <1> The proto type is added to the prototype list \n						    
+*/
 void TestCpAPI::testCpPluginUtility()
 {
     HbDataForm* form = new HbDataForm();
-    QList<HbAbstractViewItem *> oldList = form->itemPrototypes();
-    CpPluginUtility::addCpItemPrototype(form);
-    QList<HbAbstractViewItem *> newList = form->itemPrototypes();
-    QVERIFY( oldList.count() < newList.count() );
+    int oldListNr = form->itemPrototypes().count();
+    CpPluginUtility::addCpItemPrototype(form); // set settingForm = new HbDataForm ()
+    int newListNr = form->itemPrototypes().count();
+    QVERIFY( newListNr = oldListNr + 1 );
+    
+    CpPluginUtility::addCpItemPrototype(0); // set settingForm = 0
 }
-
+/*!
+     <b>Test Case Description:</b> \n &nbsp;&nbsp;
+         To verify the class could load the control panel plugin. \n
+     <b>Function 1:</b> \n
+	 1. Fucntion Name: \n &nbsp;&nbsp;
+            static CpPluginInterface *loadCpPluginInterface(const QString &pluginFile) \n
+     2. Case Descrition: \n &nbsp;&nbsp;
+            Verify that it can load the cp interface successfully. \n
+     3. Input Parameters: \n &nbsp;&nbsp;
+            <1> pluginFile = const Qstring (a vaild plugin file) \n &nbsp;&nbsp;
+			<2> pluginFile = const Qstring (an invaild plugin file) \n  &nbsp;&nbsp;
+			<3> pluginFile = 0 \n
+     4. Expected result: \n &nbsp;&nbsp;
+            no crash	\n			
+     <b>Function 2:</b> \n
+	 1. Fucntion Name: \n &nbsp;&nbsp;
+            static CpLauncherInterface   *loadCpLauncherInterface(const QString &pluginFile) \n
+     2. Case Descrition: \n &nbsp;&nbsp;
+            Verify that it can load the cp cplaucher interface successfully. \n
+     3. Input Parameters: \n &nbsp;&nbsp;
+            <1> pluginFile = const Qstring (a vaild plugin file) \n &nbsp;&nbsp;
+			<2> pluginFile = const Qstring (an invaild plugin file) \n  &nbsp;&nbsp;
+			<3> pluginFile = 0 \n
+     4. Expected result: \n &nbsp;&nbsp;
+            no crash					            	    
+*/
 void TestCpAPI::testCpPluginLoader()
 {
-    CpPluginInterface *plugin = CpPluginLoader::loadCpPluginInterface("non_existing_plugin.dll");
-    QVERIFY(plugin == 0);
+    // the plugins for test are created via the codes in tsrc/unit/pluginfortest.
+    QString aInvaildFile = "non_existing_plugin.dll";
+    QString aVaildFile1 = "firstpluginfortest";
+    QString aVaildFile2 = "secondpluginfortest.dll";
+    QString aVaildFile3 = "thirdpluginfortest.qtplugin";
+
+    CpPluginInterface *pluginInterface = CpPluginLoader::loadCpPluginInterface(aVaildFile1);
+    QVERIFY(pluginInterface != 0);
 
-    plugin = CpPluginLoader::loadCpPluginInterface("cppersonalizationplugin");
-    QVERIFY(plugin != 0);
+    pluginInterface = CpPluginLoader::loadCpPluginInterface(aVaildFile2);
+    QVERIFY(pluginInterface != 0);
+
+    pluginInterface = CpPluginLoader::loadCpPluginInterface(aVaildFile3);
+    QVERIFY(pluginInterface != 0);
+
+    //Test the 'loadCpLauncherInterface' function
+    CpLauncherInterface *pluginLauncherInterface = CpPluginLoader::loadCpLauncherInterface(aInvaildFile);
+    QVERIFY(pluginLauncherInterface == 0);  
 
-    plugin = CpPluginLoader::loadCpPluginInterface("cppersonalizationplugin.dll");
-    QVERIFY(plugin != 0);
+    pluginLauncherInterface = CpPluginLoader::loadCpLauncherInterface(aVaildFile1);
+    QVERIFY(pluginLauncherInterface != 0);
+
+    pluginLauncherInterface = CpPluginLoader::loadCpLauncherInterface(aVaildFile2);
+    QVERIFY(pluginLauncherInterface != 0);
 
-    plugin = CpPluginLoader::loadCpPluginInterface("cppersonalizationplugin.qtplugin");
-    QVERIFY(plugin != 0);
+    pluginLauncherInterface = CpPluginLoader::loadCpLauncherInterface(aVaildFile3);
+    QVERIFY(pluginLauncherInterface != 0);
 }
-
+/*!
+     <b>Test Case Description:</b> \n &nbsp;&nbsp;
+        Test the CP interface can work well. \n
+     1. Fucntion Name: \n &nbsp;&nbsp;
+            virtual QList<CpSettingFormItemData*> createSettingFormItemData(CpItemDataHelper &itemDataHelper) const \n
+     2. Case Descrition: \n &nbsp;&nbsp;
+            Test the create settingformItemData() function, it's a pure vitual function. Define a simple class  and test its interface. \n
+     3. Input Parameters: \n &nbsp;&nbsp;
+            <1> itemDataHelper = CpItemDataHelper \n
+     4. Expected result: \n &nbsp;&nbsp;
+            <1> no crash \n    					            	    
+*/
 void TestCpAPI::testCpPluginInterface()
 {
-    CpPluginInterface *plugin = CpPluginLoader::loadCpPluginInterface("cppersonalizationplugin.dll");
-    if (plugin) {
-        CpItemDataHelper helper;
-        QList<CpSettingFormItemData*> itemData = plugin->createSettingFormItemData(helper);
-        QVERIFY(itemData.size() > 0);
-        qDeleteAll(itemData.begin(),itemData.end());
-        itemData.clear();
-    }
+    CpItemDataHelper *helper = new CpItemDataHelper();
+    CpPluginInterface *plugin = CpPluginLoader::loadCpPluginInterface("firstpluginfortest");
+    QVERIFY( plugin != 0 );
+    QList<CpSettingFormItemData*> itemData = plugin->createSettingFormItemData(*helper);
+    QVERIFY( itemData.size() == 1 );
+    qDeleteAll(itemData.begin(),itemData.end());
+    itemData.clear();
+}
+/*!
+     <b>Test Case Description:</b> \n &nbsp;&nbsp;
+        Test the CP launcher interface can work well.\n
+     1. Fucntion Name: \n &nbsp;&nbsp;
+            virtual CpBaseSettingView *createSettingView(const QVariant &hint) const  \n
+     2. Case Descrition: \n &nbsp;&nbsp;
+            Test it can create setting view after loading the plugin. \n
+     3. Input Parameters: \n &nbsp;&nbsp;
+            <1> hint = Qvariant() \n
+     4. Expected result: \n &nbsp;&nbsp;
+            <1> no crash \n     					            	    
+*/
+void TestCpAPI::testCpLancherInterface()
+{
+    QVariant hint = QVariant();
+    CpLauncherInterface *plugin = CpPluginLoader::loadCpLauncherInterface("secondpluginfortest");
+    QVERIFY( plugin != 0 );
+    CpBaseSettingView *testView = plugin->createSettingView(hint);    
+    QVERIFY( testView != 0 );
+    delete testView;
+    testView = 0; 
 }
 
 void TestCpAPI::testCpLogger()
 {
-    const QString logConf = "C:/data/.config/ut_cpapi/controlpanellog.conf";
-    Logger::instance(CPFW_LOGGER_NAME)->configure(logConf,QSettings::IniFormat);
-    CPFW_LOG("Hello World!");
-    Logger::closeAll();
 }
 
-
+QTEST_MAIN(TestCpAPI)
--- a/controlpanel/tsrc/unit/ut_cpapi/src/ut_cpapi.h	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/tsrc/unit/ut_cpapi/src/ut_cpapi.h	Tue Aug 24 10:30:25 2010 +0800
@@ -26,13 +26,17 @@
 	Q_OBJECT
 private slots:
     void initTestCase();                // initialize test data
+    
     void testCpBaseSettingView();				// test basesettingview functions
-    void testCpSettingFormEntryItemDataImpl();  //test CpSettingFormEntryItemDataImpl functions
-    void testCpSettingFormItemData();           //test CpSettingFormItemData  functions
-    void testItemDataHelper();    //testing item data helper class CpItemDataHelper
+    void testCpSettingFormEntryItemData();
+    void testCpSettingFormEntryItemDataImpl();  //test CpSettingFormEntryItemDataImpl functions    
+    void testCpSettingFormItemData_data(); // provide data for "testCpSettingFormItemData()"
+    void testCpSettingFormItemData();           //test CpSettingFormItemData    
+    void testItemDataHelper();    //testing itemdatahelper class CpItemDataHelper
     void testCpPluginUtility();
     void testCpPluginLoader();    //test cppluginloader functions
-    void testCpPluginInterface(); //
+    void testCpPluginInterface(); // test cpplugininterface functions
+    void testCpLancherInterface(); // test the cpLancherInterface class
     void testCpLogger();          //test cplogger functions
     void cleanupTestCase();       // Finalize test data
 private:
--- a/controlpanel/tsrc/unit/ut_cpapi/ut_cpapi.pro	Fri Jun 25 17:09:30 2010 +0800
+++ b/controlpanel/tsrc/unit/ut_cpapi/ut_cpapi.pro	Tue Aug 24 10:30:25 2010 +0800
@@ -1,51 +1,66 @@
-#
 # 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: 
-#
+# Description:
 
 TEMPLATE = app
 TARGET = ut_cpapi
 QT += testlib
 CONFIG += hb qtestlib
 CONFIG += symbian_test
-unix {
-    test.commands = /epoc32/RELEASE/WINSCW/udeb/ut_cpapi.exe
-    autotest.commands = /epoc32/RELEASE/WINSCW/udeb/ut_cpapi.exe -xml -o c:/ut_cpapi.xml
-} else:win32 {
-    test.CONFIG += recursive
-    autotest.CONFIG += recursive
-    build_pass {
-        test.commands =/epoc32/RELEASE/WINSCW/udeb/ut_cpapi.exe
-        autotest.commands =/epoc32/RELEASE/WINSCW/udeb/ut_cpapi.exe -xml -o c:/ut_cpapi.xml
-        }
-}
+
 QMAKE_EXTRA_TARGETS += test autotest
 
 DEPENDPATH += .
-
-INCLUDEPATH += . \
-							 src/\
-							 ../../../src/inc \
-							 ../../../controlpanel_plat/inc
-							 
+INCLUDEPATH += src/ \
+               ../../../src/inc \
+               ../../../controlpanel_plat/inc
 LIBS += -lcpframework
 
 # Input
-HEADERS += src/ut_cpapi.h
-SOURCES += src/ut_cpapi.cpp \ 
-            src/main.cpp
+HEADERS += src/ut_cpapi.h 
+HEADERS += src/cptestview.h 
+HEADERS += src/cptestpluginentryitem.h
+SOURCES += src/ut_cpapi.cpp
+SOURCES += src/cptestview.cpp 
+SOURCES += src/cptestpluginentryitem.cpp
 
-symbian {
-	BLD_INF_RULES.prj_exports += "data/controlpanellog.conf C:/data/.config/ut_cpapi/controlpanellog.conf"
+symbian*: { 
+    TARGET.CAPABILITY = CAP_APPLICATION
+    LIBS += -lfirstpluginfortest \
+           -lsecondpluginfortest \
+           -lthirdpluginfortest
+    deploy.path = C:
+    testdlls.sources += firstpluginfortest.dll secondpluginfortest.dll thirdpluginfortest.dll
+    testdlls.path = /sys/bin
+    
+    testqtplugins.sources += ../pluginfortest/firstpluginfortest/qmakepluginstubs/firstpluginfortest.qtplugin \
+                             ../pluginfortest/secondpluginfortest/qmakepluginstubs/secondpluginfortest.qtplugin \
+                             ../pluginfortest/thirdpluginfortest/qmakepluginstubs/thirdpluginfortest.qtplugin 
+    testqtplugins.path = /resource/qt/plugins/controlpanel                        
+    
+    DEPLOYMENT += testdlls testqtplugins
+}
+
+
+
+symbian:BLD_INF_RULES.prj_exports += "data/controlpanellog.conf C:/data/.config/ut_cpapi/controlpanellog.conf"
+
+unix { 
+    test.commands = /epoc32/RELEASE/WINSCW/udeb/ut_cpapi.exe
+    autotest.commands = /epoc32/RELEASE/WINSCW/udeb/ut_cpapi.exe -xml -o c:/ut_cpapi.xml
+}
+else:win32 { 
+    test.CONFIG += recursive
+    autotest.CONFIG += recursive
+    build_pass { 
+        test.commands = /epoc32/RELEASE/WINSCW/udeb/ut_cpapi.exe
+        autotest.commands = /epoc32/RELEASE/WINSCW/udeb/ut_cpapi.exe -xml -o c:/ut_cpapi.xml
+    }
 }
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cpbasesettingview/src/mycpbasesettingview.cpp	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,43 @@
+/*
+* 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:  
+*       test application for qt control panel public apis.
+*/
+
+#include "mycpbasesettingview.h"
+
+/*!
+    \class MyCpBaseSettingView
+    \brief This is a derived class used for protected member functions testing \n
+ */
+
+/*!
+ * public function, only provide a method for QTest to call the protected close() function. \n
+ * directly call close() in base class.
+ */
+void MyCpBaseSettingView::close()
+    {
+    CpBaseSettingView::close();
+    }
+
+void MyCpBaseSettingView::testprivate()
+{
+    MyCpBaseSettingView *p = this;
+    const QMetaObject *mobj = p->metaObject();
+    CpBaseSettingView::qt_metacall( QMetaObject::InvokeMetaMethod,mobj->indexOfSlot("aboutToClose()"),0);
+    CpBaseSettingView::qt_metacall( QMetaObject::InvokeMetaMethod,mobj->indexOfSlot("_q_softkeyClicked()"),0);
+    CpBaseSettingView::qt_metacall( QMetaObject::InvokeMetaMethod,mobj->indexOfSlot("_q_viewChanged(HbView *view)"),(void**)(&p));
+    QModelIndex idx;
+    CpBaseSettingView::qt_metacall( QMetaObject::InvokeMetaMethod,mobj->indexOfSlot("_q_itemActivated(const QModelIndex &index)"), ((void **)(&idx)) );
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cpbasesettingview/src/mycpbasesettingview.h	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,37 @@
+/*
+* 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:  
+*       test application for qt control panel public apis.
+*/
+
+#ifndef MYCPBASESETTINGVIEW_H_
+#define MYCPBASESETTINGVIEW_H_
+
+#include <cpbasesettingview.h>
+#include <QObject>
+
+class MyCpBaseSettingView : public CpBaseSettingView
+    {
+    Q_OBJECT
+    
+public:
+    /*!
+     * provide a public interface for unit test code to call close()
+     */
+    virtual void close();
+    
+    void testprivate();
+    };
+
+#endif /* MYCPBASESETTINGVIEW_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cpbasesettingview/src/ut_cpbasesettingview.cpp	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,142 @@
+/*
+* 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:  
+*       test application for qt control panel public apis.
+*/
+
+#include "ut_cpbasesettingview.h"
+
+#include "cpbasesettingview.h"
+#include "mycpbasesettingview.h"
+
+#include <QtTest/QtTest>
+#include <hbdataform.h>
+#include <hbpushbutton.h>
+
+/*!
+    \class TestCpBaseSettingView
+    \brief \n
+    The TestCpBaseSettingView is used for the unit testing for CpBaseSettingView class.
+    This unit test is supported by QTest.
+    There are 3 test cases for this unit.
+ */
+
+void TestCpBaseSettingView::initTestCase()
+    {
+
+    }
+
+void TestCpBaseSettingView::cleanupTestCase()
+    {
+    QCoreApplication::processEvents();
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: CpBaseSettingView() \n&nbsp;
+   2. Function Descrition: \n &nbsp;&nbsp;
+       2.1 Create CpBaseSettingView object with 0 pointer.\n &nbsp;&nbsp;
+       2.2 call setWidget to set a widget into the view object.\n &nbsp;&nbsp;
+       2.3 verify widget object is set correctly.\n &nbsp;&nbsp;
+       2.4 delete the object.\n &nbsp;
+   3. Input Parameters: \n&nbsp;
+       @param: 0\n
+   4. Expected result: \n&nbsp;&nbsp;
+       CpBaseSettingView object created successfully.\n 
+ */
+void TestCpBaseSettingView::testCpBaseSettingViewWithNullPointer()
+    {
+    CpBaseSettingView * pView = new CpBaseSettingView(0);
+    QVERIFY( pView != 0 );
+    
+    HbDataForm *pForm = new HbDataForm(0);
+    pView->setWidget(pForm);
+    HbDataForm *pForm1 = qobject_cast<HbDataForm *>(pView->widget());
+    QVERIFY( pForm1 != 0);
+    QVERIFY( pForm1 == pForm );
+    
+    delete pView;
+    pView = 0;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: CpBaseSettingView() \n&nbsp;
+   2. Function Descrition: \n&nbsp;&nbsp;
+       2.1 Create CpBaseSettingView object with a widget pointer.\n &nbsp;&nbsp;
+       2.2 verify widget object is set correctly.\n &nbsp;&nbsp;
+       2.3 delete the object.\n &nbsp;
+   3. Input Parameters: \n&nbsp;
+       @param: widget pointer. \n
+   4. Expected result: \n&nbsp;&nbsp;
+       CpBaseSettingView object created successfully.\n 
+ */
+void TestCpBaseSettingView::testCpBaseSettingViewWithPushButtonWidget()
+    {
+    HbPushButton *widget = new HbPushButton();
+    QVERIFY(widget != 0);
+    
+    CpBaseSettingView *pView1 = new CpBaseSettingView(widget);
+    QVERIFY(pView1!=0);
+    
+    HbPushButton *button = qobject_cast<HbPushButton *>(pView1->widget());
+    QVERIFY(button != 0);
+    QVERIFY(button == widget);
+    
+    delete pView1;
+    pView1 = 0;    
+    }
+
+/*!
+ * Test protected close() function, must be called in derived class
+ */
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: close() \n&nbsp;
+   2. Function Descrition: \n&nbsp;&nbsp;
+       2.1 Declare a derived class, MyCpBaseSettingView, create a MyCpBaseSettingView object with default constructor.\n &nbsp;&nbsp;
+       2.2 call close().\n &nbsp;&nbsp;
+       2.3 delete the object.\n &nbsp;
+   3. Input Parameters: \n&nbsp;
+       @param: 0\n
+   4. Expected result: \n&nbsp;&nbsp;
+       view closed.\n 
+ */
+void TestCpBaseSettingView::testCloseWithoutParam()
+    {
+    MyCpBaseSettingView * pMyView = new MyCpBaseSettingView();
+    QVERIFY( pMyView != 0 );
+    HbDataForm *pForm = new HbDataForm(0);
+    pMyView->setWidget(pForm);
+    HbDataForm *pForm1 = qobject_cast<HbDataForm *>(pMyView->widget());
+    QVERIFY( pForm1 != 0);
+    QVERIFY( pForm1 == pForm );
+    
+    pMyView->close();
+    
+    delete pMyView;
+    pMyView = 0;
+    }
+
+void TestCpBaseSettingView::testPrivateFunc()
+    {
+    MyCpBaseSettingView * pMyView = new MyCpBaseSettingView();
+    QVERIFY( pMyView != 0 );
+    pMyView->testprivate();
+    
+    delete pMyView;
+    pMyView = 0;
+    }
+
+QTEST_MAIN(TestCpBaseSettingView)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cpbasesettingview/src/ut_cpbasesettingview.h	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,48 @@
+/*
+* 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:  
+*       test application for qt control panel public apis.
+*/
+
+#ifndef UT_CP_BASE_SETTING_VIEW_H
+#define UT_CP_BASE_SETTING_VIEW_H
+
+#include <QObject>
+
+class TestCpBaseSettingView : public QObject
+{
+    Q_OBJECT
+    
+private slots:
+    void initTestCase();
+    void cleanupTestCase();
+    
+//public slots:
+    /*!
+     * Test case 1 for constructor of class CpBaseSettingView
+     */
+    void testCpBaseSettingViewWithNullPointer();
+    /*!
+     * Test case 2 for constructor of class CpBaseSettingView
+     */
+    void testCpBaseSettingViewWithPushButtonWidget();
+    /*!
+     * Test case for protected close() function
+     */
+    void testCloseWithoutParam();
+    
+    void testPrivateFunc();
+};
+
+#endif // UT_CP_BASE_SETTING_VIEW_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cpbasesettingview/ut_cpbasesettingview.pri	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,26 @@
+#
+# 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: 
+#
+
+HEADERS   += src/ut_cpbasesettingview.h \
+	src/mycpbasesettingview.h
+	
+SOURCES   += src/ut_cpbasesettingview.cpp \
+    src/mycpbasesettingview.cpp
+
+INCLUDEPATH += . \
+							 src/\
+							 ../../../src/inc \
+							 ../../../controlpanel_plat/inc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cpbasesettingview/ut_cpbasesettingview.pro	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,25 @@
+#
+# 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: 
+#
+
+TEMPLATE = app
+TARGET = ut_cpbasesettingview
+
+include (../ut_common.pri)
+include (ut_cpbasesettingview.pri)
+
+symbian: { 
+    TARGET.UID3 = 0xEE3E465B
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cpdataformbuttonentryviewitem/src/mycpdataformbuttonentryviewitem.cpp	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,67 @@
+/*
+* 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:  
+*       test application for qt control panel public apis.
+*/
+
+#include "mycpdataformbuttonentryviewitem.h"
+
+/*!
+    \class MyCpDataFormButtonEntryViewItem
+    \brief The MyCpDataFormButtonEntryViewItem class is designed for the unit testing for the protected member functions in CpDataFormButtonEntryViewItem class.
+ */
+
+/*!
+ * Default constructor
+ */
+MyCpDataFormButtonEntryViewItem::MyCpDataFormButtonEntryViewItem(QGraphicsItem *parent) : CpDataFormButtonEntryViewItem(parent)
+    {
+    
+    }
+
+/*!
+ * Copy constructor
+ */
+MyCpDataFormButtonEntryViewItem::MyCpDataFormButtonEntryViewItem(const MyCpDataFormButtonEntryViewItem& other) :
+CpDataFormButtonEntryViewItem(other)
+    {
+    
+    }
+
+/*!
+ * This is designed for testing of the copy assignment operator = in class CpDataFormButtonEntryViewItem,
+ * that operator was declared as protected.
+ * the detection of self assignment was removed to enable the detection in base class implementation executed.
+ */
+MyCpDataFormButtonEntryViewItem& MyCpDataFormButtonEntryViewItem::operator=(const MyCpDataFormButtonEntryViewItem& other)
+    {
+//    if (&other == this)
+//        {
+//        return *this;
+//        }
+    
+    CpDataFormButtonEntryViewItem::operator=(other);
+    
+    return *this;
+    }
+
+/*!
+ * this is also for protected member functions testing, call base class implematation directly.
+ */
+HbWidget * MyCpDataFormButtonEntryViewItem::createCustomWidget()
+    {
+    return CpDataFormButtonEntryViewItem::createCustomWidget();
+    }
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cpdataformbuttonentryviewitem/src/mycpdataformbuttonentryviewitem.h	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,36 @@
+/*
+* 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:  
+*       test application for qt control panel public apis.
+*/
+
+#ifndef _MY_CP_DATAFORM_BUTTONENTRY_VIEWITEM_H_
+#define _MY_CP_DATAFORM_BUTTONENTRY_VIEWITEM_H_
+
+#include "cpdataformbuttonentryviewitem.h"
+
+#include <QObject>
+
+class MyCpDataFormButtonEntryViewItem : public QObject, public CpDataFormButtonEntryViewItem
+    {
+public:
+    MyCpDataFormButtonEntryViewItem(QGraphicsItem *parent = 0);
+    MyCpDataFormButtonEntryViewItem(const MyCpDataFormButtonEntryViewItem& other);
+    
+    MyCpDataFormButtonEntryViewItem& operator=(const MyCpDataFormButtonEntryViewItem& other);
+    
+    HbWidget * createCustomWidget();
+    };
+
+#endif /* _MY_CP_DATAFORM_BUTTONENTRY_VIEWITEM_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cpdataformbuttonentryviewitem/src/ut_cpdataformbuttonentryviewitem.cpp	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,291 @@
+/*
+* 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:  
+*       test application for qt control panel public apis.
+*/
+#include "ut_cpdataformbuttonentryviewitem.h"
+
+#include "cpdataformbuttonentryviewitem.h"
+#include "mycpdataformbuttonentryviewitem.h"
+#include "cpbasesettingview.h"
+
+#include <QtTest/QtTest>
+#include <HbMainWindow>
+#include <hbdataform.h>
+#include <cppluginutility.h>
+#include <hbdataformmodel.h>
+#include <cpsettingformentryitemdata.h>
+#include <cpsettingformentryitemdataimpl.h>
+
+/*!
+    \class TestCpDataFormButtonEntryViewItem
+    \brief The TestCpDataFormButtonEntryViewItem class is designed for the unit testing for CpDataFormButtonEntryViewItem class.
+    This unit test is supported by QTest.
+    There are total 8 test cases in this unit.
+ */
+
+void TestCpDataFormButtonEntryViewItem::initTestCase()
+    {
+    mainWindow = 0;
+    }
+
+void TestCpDataFormButtonEntryViewItem::cleanupTestCase()
+    {
+    delete mainWindow;
+    
+    //if delete mainwindow, test app will be freezing
+    QCoreApplication::processEvents();
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: CpDataFormButtonEntryViewItem() \n&nbsp;
+   2. Function Descrition: \n &nbsp;&nbsp;
+       2.1 Create CpDataFormButtonEntryViewItem object with a HbDataForm pointer.\n &nbsp;&nbsp;
+       2.2 verify object created successfully.\n &nbsp;&nbsp;
+       2.3 delete the object.\n &nbsp;
+   3. Input Parameters: \n&nbsp;
+       @param: HbDataForm pointer.\n
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpDataFormButtonEntryViewItem::testCpDataFormButtonEntryViewItemWithDataFormParent()
+    {
+    HbDataForm * form = new HbDataForm();
+    QVERIFY( form != 0 );
+    
+    int count0 = form->itemPrototypes().count();
+    CpPluginUtility::addCpItemPrototype(form);
+    int count1 = form->itemPrototypes().count();
+    QVERIFY( count0 + 2 == count1 );
+    
+    CpDataFormButtonEntryViewItem * item = new CpDataFormButtonEntryViewItem(form);
+    QVERIFY(item != 0);
+        
+    delete item;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: CpDataFormButtonEntryViewItem() \n&nbsp;
+   2. Function Descrition: \n &nbsp;&nbsp;
+       2.1 Create CpDataFormButtonEntryViewItem object with a 0 pointer.\n &nbsp;&nbsp;
+       2.2 verify object created successfully.\n &nbsp;&nbsp;
+       2.3 delete the object.\n &nbsp;
+   3. Input Parameters:  \n&nbsp;
+       @param: 0 pointer.\n
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpDataFormButtonEntryViewItem::testCpDataFormButtonEntryViewItemWithNullParent()
+    {
+    CpDataFormButtonEntryViewItem * item = new CpDataFormButtonEntryViewItem();
+    QVERIFY(item != 0);
+    
+    delete item;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: CpDataFormButtonEntryViewItem(const CpDataFormButtonEntryViewItem &ohter) \n&nbsp;
+   2. Function Descrition: \n &nbsp;&nbsp;
+       2.1 Create CpDataFormButtonEntryViewItem object with another CpDataFormButtonEntryViewItem object.\n &nbsp;&nbsp;
+       2.2 verify object created successfully.\n &nbsp;&nbsp;
+       2.3 delete the object.\n &nbsp;
+   3. Input Parameters:  \n&nbsp;
+       @param: CpDataFormButtonEntryViewItem object.\n
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpDataFormButtonEntryViewItem::testCpDataFormButtonEntryViewItemWithCopyConstructor()
+    {
+    MyCpDataFormButtonEntryViewItem * item1 = new MyCpDataFormButtonEntryViewItem();
+    QVERIFY( item1 != 0 );
+    
+    MyCpDataFormButtonEntryViewItem * item2 = new MyCpDataFormButtonEntryViewItem(*item1);
+    QVERIFY( item2 != 0 );
+    
+    delete item1;
+    delete item2;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name:\n&nbsp;&nbsp;
+       HbAbstractViewItem *createItem();\n&nbsp;
+   2. Function Descrition: \n &nbsp;&nbsp;
+       2.1 Create CpDataFormButtonEntryViewItem object.\n &nbsp;&nbsp;
+       2.2 verify object created successfully.\n &nbsp;&nbsp;
+       2.3 call createItem() to create a HbAbstractViewItem object.\n&nbsp;&nbsp;
+       2.4 verify the object is not 0.\n&nbsp;&nbsp;
+       2.5 delete both objects.\n &nbsp;
+   3. Input Parameters: \n&nbsp;
+       @param: none.\n
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpDataFormButtonEntryViewItem::testCreateItemWithDataForm()
+    {
+    HbDataForm * form = new HbDataForm();
+    QVERIFY( form != 0 );
+    
+    int count0 = form->itemPrototypes().count();
+    CpPluginUtility::addCpItemPrototype(form);
+    int count1 = form->itemPrototypes().count();
+    QVERIFY( count0 + 2 == count1 );
+    
+    CpDataFormButtonEntryViewItem * item = new CpDataFormButtonEntryViewItem(form);
+    QVERIFY(item != 0);
+    
+    HbAbstractViewItem * pvItem1 = item->createItem();
+    QVERIFY(pvItem1 != 0);
+    
+    delete pvItem1;
+    delete item;
+    delete form;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name:\n&nbsp;&nbsp;
+       HbAbstractViewItem *createItem();\n&nbsp;
+   2. Function Descrition: \n &nbsp;&nbsp;
+       2.1 Create CpDataFormButtonEntryViewItem object.\n &nbsp;&nbsp;
+       2.2 verify object created successfully.\n &nbsp;&nbsp;
+       2.3 call createItem() to create a HbAbstractViewItem object.\n&nbsp;&nbsp;
+       2.4 verify the object is not 0.\n&nbsp;&nbsp;
+       2.5 delete both objects.\n &nbsp;
+   3. Input Parameters: \n&nbsp;
+       @param: none.\n
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpDataFormButtonEntryViewItem::testCreateItemNoDataForm()
+    {
+    CpDataFormButtonEntryViewItem * item = new CpDataFormButtonEntryViewItem();
+    QVERIFY(item != 0);
+    
+    HbAbstractViewItem * pvItem1 = item->createItem();
+    QVERIFY(pvItem1 != 0);
+    
+    delete pvItem1;
+    delete item;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name:\n&nbsp;&nbsp;
+       CpDataFormButtonEntryViewItem &operator = (const CpDataFormButtonEntryViewItem &ohter);\n\n&nbsp;
+       
+   2. Function Descrition: \n &nbsp;&nbsp;
+       2.1 Create CpDataFormButtonEntryViewItem object.\n &nbsp;&nbsp;
+       2.2 verify object created successfully.\n &nbsp;&nbsp;
+       2.3 assign this object to another object.\n&nbsp;&nbsp;
+       2.4 delete object.\n\n &nbsp;
+       
+   3. Input Parameters: \n\n&nbsp;
+       @param: none.\n
+   
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpDataFormButtonEntryViewItem::testAssignmentOperatorWithOtherObject()
+    {
+    MyCpDataFormButtonEntryViewItem * item1 = new MyCpDataFormButtonEntryViewItem();
+    QVERIFY(item1 != 0);
+    
+    MyCpDataFormButtonEntryViewItem item2;
+    
+    item2 = *item1;
+    
+    delete item1;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name:\n&nbsp;&nbsp;
+       CpDataFormButtonEntryViewItem &operator = (const CpDataFormButtonEntryViewItem &ohter);\n\n&nbsp;
+       
+   2. Function Descrition: \n &nbsp;&nbsp;
+       2.1 Create CpDataFormButtonEntryViewItem object.\n &nbsp;&nbsp;
+       2.2 verify object created successfully.\n &nbsp;&nbsp;
+       2.3 assign this object to itself.\n&nbsp;&nbsp;
+       2.4 delete object.\n\n &nbsp;
+       
+   3. Input Parameters: \n\n&nbsp;
+       @param: none.\n
+   
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpDataFormButtonEntryViewItem::testAssignmentOperatorBySelf()
+    {
+    MyCpDataFormButtonEntryViewItem * item1 = new MyCpDataFormButtonEntryViewItem();
+    QVERIFY(item1 != 0);
+    
+    *item1 = *item1;
+    
+    delete item1;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name:\n&nbsp;&nbsp;
+       HbWidget *createCustomWidget();
+       
+   2. Function Descrition: \n &nbsp;&nbsp;
+       
+   3. Input Parameters: \n\n&nbsp;
+       @param: none.\n
+   
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpDataFormButtonEntryViewItem::testCreateCustomedWidgetWithDataForm()
+    {
+    HbDataForm * form = new HbDataForm();
+    QVERIFY( form != 0 );
+    
+    int count0 = form->itemPrototypes().count();
+    CpPluginUtility::addCpItemPrototype(form);
+    int count1 = form->itemPrototypes().count();
+    QVERIFY( count0 + 2 == count1 );
+        
+    CpSettingFormEntryItemDataImpl<CpBaseSettingView> *pdataimp1 = new CpSettingFormEntryItemDataImpl<CpBaseSettingView>( CpSettingFormEntryItemData::ButtonEntryItem, form, "text", "description" );
+    QVERIFY( pdataimp1 !=0 );
+    
+    HbDataFormModel * model = new HbDataFormModel;
+    QVERIFY( model != 0 );
+    
+    model->appendDataFormItem(pdataimp1);
+    form->setModel(model);
+    
+    mainWindow = new HbMainWindow;
+    QVERIFY( mainWindow != 0 );
+    
+    CpBaseSettingView *mainView = new CpBaseSettingView(form);
+    QVERIFY( mainView != 0 );
+    
+    QObject::connect(mainView,SIGNAL(aboutToClose()),qApp,SLOT(quit()));
+    HbView * view = mainWindow->addView(mainView);
+    QVERIFY( view != 0 );
+    
+    mainWindow->setCurrentView(mainView);
+    HbView * curView = mainWindow->currentView();
+    QVERIFY( curView == mainView );
+    
+    mainWindow->show();
+    }
+
+QTEST_MAIN(TestCpDataFormButtonEntryViewItem)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cpdataformbuttonentryviewitem/src/ut_cpdataformbuttonentryviewitem.h	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,50 @@
+/*
+* 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:  
+*       test application for qt control panel public apis.
+*/
+
+#ifndef TEST_CP_DATAFORM_BUTTONENTRY_VIEWITEM_H
+#define TEST_CP_DATAFORM_BUTTONENTRY_VIEWITEM_H
+
+#include <QObject>
+
+class HbMainWindow;
+
+class TestCpDataFormButtonEntryViewItem : public QObject
+{
+    Q_OBJECT
+    
+private slots:
+    void initTestCase();
+    void cleanupTestCase();
+
+//public slots:
+    void testCpDataFormButtonEntryViewItemWithDataFormParent();
+    void testCpDataFormButtonEntryViewItemWithNullParent();
+    void testCpDataFormButtonEntryViewItemWithCopyConstructor();
+    
+    void testCreateItemWithDataForm();
+    void testCreateItemNoDataForm();
+    
+    void testAssignmentOperatorWithOtherObject();
+    void testAssignmentOperatorBySelf();
+    
+    void testCreateCustomedWidgetWithDataForm();
+    
+private:
+    HbMainWindow* mainWindow;
+};
+
+#endif // TEST_CP_DATAFORM_BUTTONENTRY_VIEWITEM_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cpdataformbuttonentryviewitem/ut_cpdataformbuttonentryviewitem.pri	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,29 @@
+#
+# 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: 
+#
+
+HEADERS   += src/ut_cpdataformbuttonentryviewitem.h \
+	src/mycpdataformbuttonentryviewitem.h \
+	../../../src/cpframework/src/cpdataformbuttonentryviewitem.h \
+	
+SOURCES   += src/ut_cpdataformbuttonentryviewitem.cpp \
+    src/mycpdataformbuttonentryviewitem.cpp \
+    ../../../src/cpframework/src/cpdataformbuttonentryviewitem.cpp \
+
+INCLUDEPATH += . \
+	 src/\
+	 ../../../src/inc \
+	 ../../../controlpanel_plat/inc \
+	 ../../../src/cpframework/src 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cpdataformbuttonentryviewitem/ut_cpdataformbuttonentryviewitem.pro	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,25 @@
+#
+# 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: 
+#
+
+TEMPLATE = app
+TARGET = ut_cpdataformbuttonentryviewitem 
+
+include (../ut_common.pri)
+include (ut_cpdataformbuttonentryviewitem.pri)
+
+symbian: { 
+    TARGET.UID3 = 0xE43C01BC
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cpdataformlistentryviewitem/src/mycpdataformlistentryviewitem.cpp	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,51 @@
+/*
+* 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:  
+*       test application for qt control panel public apis.
+*/
+
+#include "mycpdataformlistentryviewitem.h"
+
+#include <QtTest/QtTest>
+
+/*!
+    \class MyCpDataFormListEntryViewItem
+    \brief The MyCpDataFormListEntryViewItem class is designed for the unit testing for the protected member functions in CpDataFormListEntryViewItem class.
+ */
+
+/*!
+ * Default constructor
+ */
+MyCpDataFormListEntryViewItem::MyCpDataFormListEntryViewItem(QGraphicsItem *parent) : CpDataFormListEntryViewItem(parent)
+    {
+    
+    }
+
+/*!
+ * this is also for protected member functions testing, call base class implematation directly.
+ */
+HbWidget * MyCpDataFormListEntryViewItem::createCustomWidget()
+    {
+    return CpDataFormListEntryViewItem::createCustomWidget();
+    }
+
+void MyCpDataFormListEntryViewItem::pressStateChanged(bool pressed, bool animate)
+    {
+    CpDataFormListEntryViewItem::pressStateChanged(pressed, animate);
+    }
+
+void MyCpDataFormListEntryViewItem::gestureEvent(QGestureEvent *event)
+    {
+    CpDataFormListEntryViewItem::gestureEvent(event);
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cpdataformlistentryviewitem/src/mycpdataformlistentryviewitem.h	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,38 @@
+/*
+* 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:  
+*       test application for qt control panel public apis.
+*/
+
+#ifndef _MY_CP_DATAFORM_LISTENTRY_VIEWITEM_H_
+#define _MY_CP_DATAFORM_LISTENTRY_VIEWITEM_H_
+
+#include "cpdataformlistentryviewitem.h"
+
+#include <QObject>
+
+class MyCpDataFormListEntryViewItem : public QObject, public CpDataFormListEntryViewItem
+    {
+public:
+    MyCpDataFormListEntryViewItem(QGraphicsItem *parent = 0);
+    
+    virtual HbWidget * createCustomWidget();
+    virtual void pressStateChanged(bool pressed, bool animate);
+#ifdef HB_GESTURE_FW
+    //from HbWidgetBase
+    virtual void gestureEvent(QGestureEvent *event);
+#endif
+    };
+
+#endif /* _MY_CP_DATAFORM_LISTENTRY_VIEWITEM_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cpdataformlistentryviewitem/src/ut_cpdataformlistentryviewitem.cpp	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,242 @@
+/*
+* 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:  
+*       test application for qt control panel public apis.
+*/
+
+#include "ut_cpdataformlistentryviewitem.h"
+
+#include "cpdataformlistentryviewitem.h"
+#include "CpSettingFormEntryItemDataImpl.h"
+#include "mycpdataformlistentryviewitem.h"
+
+#include <QtTest/QtTest>
+#include <HbMainWindow>
+#include <hbdataform.h>
+#include <hbdataformmodel.h>
+#include <hbpushbutton.h>
+#include <cppluginutility.h>
+#include <cpbasesettingview.h>
+
+/*!
+    \class TestCpDataFormListEntryViewItem
+    \brief The TestCpDataFormListEntryViewItem class is designed for the unit testing for CpDataFormListEntryViewItem class.
+    This unit test is supported by QTest.
+    There are total 6 test cases in this unit.
+ */
+
+void TestCpDataFormListEntryViewItem::initTestCase()
+    {
+    mainWindow = 0;
+    }
+
+void TestCpDataFormListEntryViewItem::cleanupTestCase()
+    {
+    delete mainWindow;
+    
+    //if delete mainwindow, test app will be freezing
+    QCoreApplication::processEvents();
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: CpDataFormListEntryViewItem() \n&nbsp;
+   2. Function Descrition: \n &nbsp;&nbsp;
+       2.1 Create CpDataFormListEntryViewItem object with a HbDataForm pointer.\n &nbsp;&nbsp;
+       2.2 verify object created successfully.\n &nbsp;&nbsp;
+       2.3 delete the object.\n &nbsp;
+   3. Input Parameters: \n&nbsp;
+       @param: HbDataForm pointer.\n
+       
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpDataFormListEntryViewItem::testCpDataFormListEntryViewItemWithDataForm()
+    {
+    HbDataForm * form = new HbDataForm();
+    QVERIFY( form != 0 );
+    
+    int count0 = form->itemPrototypes().count();
+    CpPluginUtility::addCpItemPrototype(form);
+    int count1 = form->itemPrototypes().count();
+    QVERIFY( count0 + 2 == count1 );
+    
+    CpDataFormListEntryViewItem * item = new CpDataFormListEntryViewItem(form);
+    QVERIFY(item != 0);
+        
+    delete form;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: CpDataFormListEntryViewItem() \n&nbsp;
+   2. Function Descrition: \n &nbsp;&nbsp;
+       2.1 Create CpDataFormListEntryViewItem object with a 0 pointer.\n &nbsp;&nbsp;
+       2.2 verify object created successfully.\n &nbsp;&nbsp;
+       2.3 delete the object.\n &nbsp;
+   3. Input Parameters: \n&nbsp;
+       @param: HbDataForm pointer.\n
+       
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpDataFormListEntryViewItem::testCpDataFormListEntryViewItemWithNullPointer()
+    {
+    CpDataFormListEntryViewItem * item = new CpDataFormListEntryViewItem();
+    QVERIFY(item != 0);
+    
+    delete item;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name:\n&nbsp;&nbsp;
+       HbAbstractViewItem *createItem();\n&nbsp;
+   2. Function Descrition: \n &nbsp;&nbsp;
+       2.1 Create CpDataFormListEntryViewItem object.\n &nbsp;&nbsp;
+       2.2 verify object created successfully.\n &nbsp;&nbsp;
+       2.3 call createItem() to create a HbAbstractViewItem object.\n&nbsp;&nbsp;
+       2.4 verify the object is not 0.\n&nbsp;&nbsp;
+       2.5 delete both objects.\n &nbsp;
+   3. Input Parameters: \n&nbsp;
+       @param: none.\n
+       
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpDataFormListEntryViewItem::testCreateItemNoDataForm()
+    {
+    CpDataFormListEntryViewItem * item = new CpDataFormListEntryViewItem();
+    QVERIFY(item != 0);
+    
+    HbAbstractViewItem * item1 = item->createItem();
+    QVERIFY(item1 != 0);
+    
+    delete item1;
+    delete item;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name:\n&nbsp;&nbsp;
+       HbAbstractViewItem *createItem();\n&nbsp;
+   2. Function Descrition: \n &nbsp;&nbsp;
+       2.1 Create CpDataFormListEntryViewItem object.\n &nbsp;&nbsp;
+       2.2 verify object created successfully.\n &nbsp;&nbsp;
+       2.3 call createItem() to create a HbAbstractViewItem object.\n&nbsp;&nbsp;
+       2.4 verify the object is not 0.\n&nbsp;&nbsp;
+       2.5 delete both objects.\n &nbsp;
+   3. Input Parameters: \n&nbsp;
+       @param: none.\n
+       
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpDataFormListEntryViewItem::testCreateItemWithDataForm()
+    {
+    HbDataForm * form = new HbDataForm();
+    QVERIFY( form != 0 );
+    
+    CpDataFormListEntryViewItem * item = new CpDataFormListEntryViewItem(form);
+    QVERIFY(item != 0);
+    
+    HbAbstractViewItem * item1 = item->createItem();
+    QVERIFY(item1 != 0);
+    
+    delete item;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: CanSetModelIndex();\n&nbsp;&nbsp;
+       
+   2. Function Descrition: \n &nbsp;&nbsp;
+
+   3. Input Parameters: \n&nbsp;
+       @param: none.\n
+       
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpDataFormListEntryViewItem::testCanSetModelIndexWithDataForm()
+    {
+    HbDataForm * form = new HbDataForm();
+    QVERIFY( form != 0 );
+    
+    int count0 = form->itemPrototypes().count();
+    CpPluginUtility::addCpItemPrototype(form);
+    int count1 = form->itemPrototypes().count();
+    QVERIFY( count0 + 2 == count1 );
+        
+    CpSettingFormEntryItemDataImpl<CpBaseSettingView> *pdataimp1 = new CpSettingFormEntryItemDataImpl<CpBaseSettingView>( CpSettingFormEntryItemData::ListEntryItem, form, "text", "description" );
+    QVERIFY( pdataimp1 !=0 );
+    
+    HbDataFormModel * model = new HbDataFormModel;
+    QVERIFY( model != 0 );
+    
+    model->appendDataFormItem(pdataimp1);
+    form->setModel(model);
+    form->show();
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;&nbsp;
+      HbWidget* createCustomWidget();
+       
+   2. Function Descrition: \n &nbsp;&nbsp;
+
+   3. Input Parameters: \n&nbsp;
+       @param: none.\n
+       
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpDataFormListEntryViewItem::testCreateCustomedWidgetNoParam()
+    {
+    HbDataForm * form = new HbDataForm();
+    QVERIFY( form != 0 );
+    
+    int count0 = form->itemPrototypes().count();
+    CpPluginUtility::addCpItemPrototype(form);
+    int count1 = form->itemPrototypes().count();
+    QVERIFY( count0 + 2 == count1 );
+        
+    CpSettingFormEntryItemDataImpl<CpBaseSettingView> *pdataimp1 = new CpSettingFormEntryItemDataImpl<CpBaseSettingView>( CpSettingFormEntryItemData::ListEntryItem, form, "text", "description" );
+    QVERIFY( pdataimp1 !=0 );
+    
+    HbDataFormModel * model = new HbDataFormModel;
+    QVERIFY( model != 0 );
+    
+    model->appendDataFormItem(pdataimp1);
+    form->setModel(model);
+    
+    mainWindow = new HbMainWindow;
+    QVERIFY( mainWindow != 0 );
+    
+    CpBaseSettingView *mainView = new CpBaseSettingView(form);
+    QVERIFY( mainView != 0 );
+    
+    QObject::connect(mainView,SIGNAL(aboutToClose()),qApp,SLOT(quit()));
+    HbView * view = mainWindow->addView(mainView);
+    QVERIFY( view != 0 );
+    
+    mainWindow->setCurrentView(mainView);
+    HbView * curView = mainWindow->currentView();
+    QVERIFY( curView == mainView );
+    
+    mainWindow->show();
+    }
+
+QTEST_MAIN(TestCpDataFormListEntryViewItem)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cpdataformlistentryviewitem/src/ut_cpdataformlistentryviewitem.h	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,45 @@
+/*
+* 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:  
+*       test application for qt control panel public apis.
+*/
+
+#ifndef TEST_CP_DATAFORM_LISTENTRY_VIEWITEM_H
+#define TEST_CP_DATAFORM_LISTENTRY_VIEWITEM_H
+
+#include <QObject>
+
+class HbMainWindow;
+
+class TestCpDataFormListEntryViewItem : public QObject
+{
+    Q_OBJECT
+    
+private slots:
+    void initTestCase();
+    void cleanupTestCase();
+    
+//public slots:
+    void testCpDataFormListEntryViewItemWithDataForm();
+    void testCpDataFormListEntryViewItemWithNullPointer();
+    void testCreateItemNoDataForm();
+    void testCreateItemWithDataForm();
+    void testCanSetModelIndexWithDataForm();
+    void testCreateCustomedWidgetNoParam();
+    
+private:
+    HbMainWindow* mainWindow;
+};
+
+#endif // TEST_CP_DATAFORM_LISTENTRY_VIEWITEM_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cpdataformlistentryviewitem/ut_cpdataformlistentryviewitem.pri	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,29 @@
+#
+# 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: 
+#
+
+HEADERS   += src/ut_cpdataformlistentryviewitem.h \
+	src/mycpdataformlistentryviewitem.h \
+	../../../src/cpframework/src/cpdataformlistentryviewitem.h \
+	
+SOURCES   += src/ut_cpdataformlistentryviewitem.cpp \
+    src/mycpdataformlistentryviewitem.cpp \
+    ../../../src/cpframework/src/cpdataformlistentryviewitem.cpp \
+
+INCLUDEPATH += . \
+	 src/\
+	 ../../../src/inc \
+	 ../../../controlpanel_plat/inc \
+	 ../../../src/cpframework/src 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cpdataformlistentryviewitem/ut_cpdataformlistentryviewitem.pro	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,25 @@
+#
+# 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: 
+#
+
+TEMPLATE = app
+TARGET = ut_cpdataformlistentryviewitem 
+
+include (../ut_common.pri)
+include (ut_cpdataformlistentryviewitem.pri)
+
+symbian: { 
+    TARGET.UID3 = 0xE93910F0
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cpitemdatahelper/src/ut_cpitemdatahelper.cpp	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,753 @@
+/*
+* 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:  
+*       test application for qt control panel public apis.
+*/
+
+#include "ut_cpitemdatahelper.h"
+
+#include <cpitemdatahelper.h>
+#include <QtTest/QtTest>
+#include <hbdataformmodel.h>
+#include <hbdataform.h>
+#include <hbdataformviewitem.h>
+#include <QModelIndex>
+
+/*!
+    \class TestCpItemDataHelper
+    \brief The TestCpItemDataHelper class is designed for the unit testing for CpItemDataHelper class.
+    This unit test is supported by QTest.
+    There are total 21 test cases in this unit.
+ */
+
+void TestCpItemDataHelper::initTestCase()
+    {
+    }
+
+void TestCpItemDataHelper::cleanupTestCase()
+    {
+    QCoreApplication::processEvents();
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: CpItemDataHelper() \n&nbsp;
+   2. Function Descrition: \n &nbsp;&nbsp;
+       2.1 Create CpItemDataHelper object with a 0 pointer.\n &nbsp;&nbsp;
+       2.2 verify object created successfully.\n &nbsp;&nbsp;
+       2.3 delete the object.\n &nbsp;
+   3. Input Parameters: \n&nbsp;
+       @param: none.\n
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpItemDataHelper::testCpItemDataHelperWithNullPointer()
+    {
+    CpItemDataHelper *pHelper = new CpItemDataHelper();
+    QVERIFY(pHelper != 0);
+    
+    delete pHelper;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: CpItemDataHelper() \n&nbsp;
+   2. Function Descrition: \n &nbsp;&nbsp;
+       2.1 Create CpItemDataHelper object with a HbDataForm pointer.\n &nbsp;&nbsp;
+       2.2 verify object created successfully.\n &nbsp;&nbsp;
+       2.3 delete the object.\n &nbsp;
+   3. Input Parameters: valid HbDataForm object pointer. \n&nbsp;
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpItemDataHelper::testCpItemDataHelperWithDataForm()
+    {
+    HbDataForm* form = new HbDataForm();
+    QVERIFY(form != 0);
+    
+    HbDataFormModel *model = new HbDataFormModel();
+    QVERIFY(model != 0);
+    HbDataFormModelItem *general = model->appendDataFormPage(QString("General"));
+    QVERIFY(general != 0);
+    
+    form->setModel(model);
+    
+    CpItemDataHelper *pHelper = new CpItemDataHelper(form);
+    QVERIFY(pHelper != 0);
+    
+    delete pHelper;
+    delete form;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: bindToForm() \n&nbsp;
+   2. Function Descrition: \n &nbsp;&nbsp;
+       2.1 Create CpItemDataHelper object with a 0 pointer.\n &nbsp;&nbsp;
+       2.2 call bindToForm later.\n &nbsp;&nbsp;
+       2.3 delete the object.\n &nbsp;
+   3. Input Parameters: 0/HbDataForm object pointer. \n&nbsp;
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpItemDataHelper::testBindToFormWithDataForm()
+    {
+    HbDataForm* form = new HbDataForm();
+    QVERIFY(form != 0);
+    HbDataFormModel *model = new HbDataFormModel();
+    QVERIFY(model != 0);
+    HbDataFormModelItem *general = model->appendDataFormPage(QString("General"));
+    QVERIFY(general != 0);
+    
+    form->setModel(model);
+    
+    CpItemDataHelper *pHelper = new CpItemDataHelper();
+    QVERIFY(pHelper != 0);
+
+    //to increase the branch coverage
+    pHelper->bindToForm(form);
+    pHelper->bindToForm(form);
+    pHelper->bindToForm(0);
+    pHelper->bindToForm(form);
+    
+    delete pHelper;
+    delete form;
+    }
+    
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: addItemPrototype() \n&nbsp;
+   2. Function Descrition: \n &nbsp;&nbsp;
+       2.1 Create CpItemDataHelper object with a 0 pointer.\n &nbsp;&nbsp;
+       2.2 call addItemPrototype, provide 0 pointer.\n &nbsp;&nbsp;
+       2.3 delete the object.\n &nbsp;
+   3. Input Parameters: 0. \n&nbsp;
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpItemDataHelper::testAddItemPrototypeWithNullPointer1()
+    {
+    HbDataForm* form = new HbDataForm();
+    QVERIFY(form != 0);
+    HbDataFormModel *model = new HbDataFormModel();
+    QVERIFY(model != 0);
+    HbDataFormModelItem *general = model->appendDataFormPage(QString("General"));
+    QVERIFY(general != 0);
+    
+    form->setModel(model);
+    
+    CpItemDataHelper *pHelper = new CpItemDataHelper();
+    QVERIFY(pHelper != 0);
+    
+    int count1 = form->itemPrototypes().count();
+    HbDataFormViewItem * pitem1 = 0;
+    //pass 0 proto type
+    pHelper->addItemPrototype(pitem1);
+    int count2 = form->itemPrototypes().count();
+    QVERIFY(count1 == count2);
+    
+    delete pHelper;
+    delete form;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: addItemPrototype() \n&nbsp;
+   2. Function Descrition: \n &nbsp;&nbsp;
+   3. Input Parameters: HbDataFormViewItem object pointer. \n&nbsp;
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpItemDataHelper::testAddItemPrototypeWithViewItem1()
+    {
+    HbDataForm* form = new HbDataForm();
+    QVERIFY(form != 0);
+    HbDataFormModel *model = new HbDataFormModel();
+    QVERIFY(model != 0);
+    HbDataFormModelItem *general = model->appendDataFormPage(QString("General"));
+    QVERIFY(general != 0);
+    
+    form->setModel(model);
+    
+    CpItemDataHelper *pHelper = new CpItemDataHelper();
+    QVERIFY(pHelper != 0);
+    
+    int count1 = form->itemPrototypes().count();
+    HbDataFormViewItem * pitem1 = new HbDataFormViewItem();
+    //pass 0 proto type
+    pHelper->addItemPrototype(pitem1);
+    int count2 = form->itemPrototypes().count();
+    QVERIFY(count1 == count2);
+    
+    pHelper->bindToForm(form);
+    int count3 = form->itemPrototypes().count();
+    QVERIFY(count1 + 1 == count3);
+    
+    delete pHelper;
+    delete form;
+    }
+
+/*!
+ * Create CpItemDataHelper instance, call addItemPrototype with 0
+ */
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: addItemPrototype() \n&nbsp;
+   2. Function Descrition: \n &nbsp;&nbsp;
+   3. Input Parameters: 0 pointer. \n&nbsp;
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpItemDataHelper::testAddItemPrototypeWithNullPointer2()
+    {
+    HbDataForm* form = new HbDataForm();
+    QVERIFY(form != 0);
+    HbDataFormModel *model = new HbDataFormModel();
+    QVERIFY(model != 0);
+    HbDataFormModelItem *general = model->appendDataFormPage(QString("General"));
+    QVERIFY(general != 0);
+    
+    form->setModel(model);
+    
+    CpItemDataHelper *pHelper = new CpItemDataHelper(form);
+    QVERIFY(pHelper != 0);
+    
+    int count1 = form->itemPrototypes().count();
+    HbDataFormViewItem * pitem1 = 0;
+    //pass 0 proto type
+    pHelper->addItemPrototype(pitem1);
+    int count2 = form->itemPrototypes().count();
+    QVERIFY(count1 == count2);
+    
+    delete pHelper;
+    delete form;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: addItemPrototype() \n&nbsp;
+   2. Function Descrition: \n &nbsp;&nbsp;
+   3. Input Parameters: HbDataFormViewItem object pointer. \n&nbsp;
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpItemDataHelper::testAddItemPrototypeWithViewItem2()
+    {
+    HbDataForm* form = new HbDataForm();
+    QVERIFY(form != 0);
+    HbDataFormModel *model = new HbDataFormModel();
+    QVERIFY(model != 0);
+    HbDataFormModelItem *general = model->appendDataFormPage(QString("General"));
+    QVERIFY(general != 0);
+    
+    form->setModel(model);
+    
+    CpItemDataHelper *pHelper = new CpItemDataHelper();
+    QVERIFY(pHelper != 0);
+    
+    pHelper->bindToForm(form);
+    
+    int count1 = form->itemPrototypes().count();
+    HbDataFormViewItem * pitem1 = new HbDataFormViewItem();
+    //pass 0 proto type
+    pHelper->addItemPrototype(pitem1);
+    int count2 = form->itemPrototypes().count();
+    QVERIFY(count1 + 1 == count2);
+    
+    delete pHelper;
+    delete form;
+    }
+    
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: addConnection(HbDataFormModelItem *item,
+        const char *signal,
+        QObject *receiver,
+        const char *method) \n&nbsp;
+   2. Function Descrition: \n &nbsp;&nbsp;
+   3. Input Parameters: \n&nbsp;
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpItemDataHelper::testAddConnectionWithnoDataForm()
+    {
+    HbDataForm* form = new HbDataForm();
+    QVERIFY(form != 0);
+    HbDataFormModel *model = new HbDataFormModel();
+    QVERIFY(model != 0);
+    HbDataFormModelItem *general = model->appendDataFormPage(QString("General"));
+    QVERIFY(general != 0);
+    
+    form->setModel(model);
+    
+    CpItemDataHelper *pHelper = new CpItemDataHelper();
+    QVERIFY(pHelper != 0);
+    
+    pHelper->addConnection( general, "hello", form, "hello");
+    
+    delete pHelper;
+    delete form;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: addConnection(HbDataFormModelItem *item,
+        const char *signal,
+        QObject *receiver,
+        const char *method) \n&nbsp;
+   2. Function Descrition: \n &nbsp;&nbsp;
+   3. Input Parameters: \n&nbsp;
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpItemDataHelper::testAddConnectionWithDataForm()
+    {
+    HbDataForm* form = new HbDataForm();
+    QVERIFY(form != 0);
+    HbDataFormModel *model = new HbDataFormModel();
+    QVERIFY(model != 0);
+    HbDataFormModelItem *general = model->appendDataFormPage(QString("General"));
+    QVERIFY(general != 0);
+    
+    form->setModel(model);
+    
+    CpItemDataHelper *pHelper = new CpItemDataHelper(form);
+    QVERIFY(pHelper != 0);
+    
+    pHelper->addConnection( general, "hello", form, "hello");
+    
+    delete pHelper;
+    delete form;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: removeConnection(HbDataFormModelItem *item,
+        const char *signal,
+        QObject *receiver,
+        const char *method) \n&nbsp;
+   2. Function Descrition: \n &nbsp;&nbsp;
+   3. Input Parameters: \n&nbsp;
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpItemDataHelper::testRemoveConnectionNoDataForm()
+    {
+    HbDataForm* form = new HbDataForm();
+    QVERIFY(form != 0);
+    HbDataFormModel *model = new HbDataFormModel();
+    QVERIFY(model != 0);
+    HbDataFormModelItem *general = model->appendDataFormPage(QString("General"));
+    QVERIFY(general != 0);
+    
+    form->setModel(model);
+    
+    CpItemDataHelper *pHelper = new CpItemDataHelper();
+    QVERIFY(pHelper != 0);
+    
+    pHelper->addConnection( general, "hello", form, "hello");
+    pHelper->removeConnection(general,"hello", form, "hello");
+    
+    delete pHelper;
+    delete form;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: removeConnection(HbDataFormModelItem *item,
+        const char *signal,
+        QObject *receiver,
+        const char *method) \n&nbsp;
+   2. Function Descrition: \n &nbsp;&nbsp;
+   3. Input Parameters: \n&nbsp;
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpItemDataHelper::testRemoveConnectionWithDataForm()
+    {
+    HbDataForm* form = new HbDataForm();
+    QVERIFY(form != 0);
+    HbDataFormModel *model = new HbDataFormModel();
+    QVERIFY(model != 0);
+    HbDataFormModelItem *general = model->appendDataFormPage(QString("General"));
+    QVERIFY(general != 0);
+    
+    form->setModel(model);
+    
+    CpItemDataHelper *pHelper = new CpItemDataHelper(form);
+    QVERIFY(pHelper != 0);
+    
+    pHelper->addConnection( general, "hello", form, "hello");
+    pHelper->removeConnection(general,"hello", form, "hello");
+    
+    delete pHelper;
+    delete form;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: connectToForm(const char *signal,
+        QObject *receiver,
+        const char *method) \n&nbsp;
+   2. Function Descrition: \n &nbsp;&nbsp;
+   3. Input Parameters: \n&nbsp;
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpItemDataHelper::testConnectToFormNoDataForm()
+    {
+    HbDataForm* form = new HbDataForm();
+    QVERIFY(form != 0);
+    HbDataFormModel *model = new HbDataFormModel();
+    QVERIFY(model != 0);
+    HbDataFormModelItem *general = model->appendDataFormPage(QString("General"));
+    QVERIFY(general != 0);
+    
+    form->setModel(model);
+    
+    CpItemDataHelper *pHelper = new CpItemDataHelper();
+    QVERIFY(pHelper != 0);
+    
+    pHelper->connectToForm("hello", form, "hello");
+    
+    delete pHelper;
+    delete form;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: connectToForm(const char *signal,
+        QObject *receiver,
+        const char *method) \n&nbsp;
+   2. Function Descrition: \n &nbsp;&nbsp;
+   3. Input Parameters: \n&nbsp;
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpItemDataHelper::testConnectToFormWithDataForm()
+    {
+    HbDataForm* form = new HbDataForm();
+    QVERIFY(form != 0);
+    HbDataFormModel *model = new HbDataFormModel();
+    QVERIFY(model != 0);
+    HbDataFormModelItem *general = model->appendDataFormPage(QString("General"));
+    QVERIFY(general != 0);
+    
+    form->setModel(model);
+    
+    CpItemDataHelper *pHelper = new CpItemDataHelper(form);
+    QVERIFY(pHelper != 0);
+    
+    pHelper->connectToForm("hello", form, "hello");
+    
+    delete pHelper;
+    delete form;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: disconnectFromForm(const char *signal,
+        QObject *receiver,
+        const char *method) \n&nbsp;
+   2. Function Descrition: \n &nbsp;&nbsp;
+   3. Input Parameters: \n&nbsp;
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpItemDataHelper::testDisconnectToFormNoDataForm()
+    {
+    HbDataForm* form = new HbDataForm();
+    QVERIFY(form != 0);
+    HbDataFormModel *model = new HbDataFormModel();
+    QVERIFY(model != 0);
+    HbDataFormModelItem *general = model->appendDataFormPage(QString("General"));
+    QVERIFY(general != 0);
+    
+    form->setModel(model);
+    
+    CpItemDataHelper *pHelper = new CpItemDataHelper();
+    QVERIFY(pHelper != 0);
+    
+    pHelper->connectToForm("hello", form, "hello");
+    pHelper->disconnectFromForm("hello", form, "hello");
+    
+    delete pHelper;
+    delete form;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: disconnectFromForm(const char *signal,
+        QObject *receiver,
+        const char *method) \n&nbsp;
+   2. Function Descrition: \n &nbsp;&nbsp;
+   3. Input Parameters: \n&nbsp;
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpItemDataHelper::testDisconnectToFormWithDataForm()
+    {
+    HbDataForm* form = new HbDataForm();
+    QVERIFY(form != 0);
+    HbDataFormModel *model = new HbDataFormModel();
+    QVERIFY(model != 0);
+    HbDataFormModelItem *general = model->appendDataFormPage(QString("General"));
+    QVERIFY(general != 0);
+    
+    form->setModel(model);
+    
+    CpItemDataHelper *pHelper = new CpItemDataHelper(form);
+    QVERIFY(pHelper != 0);
+    
+    pHelper->connectToForm("hello", form, "hello");
+    pHelper->disconnectFromForm("hello", form, "hello");
+    
+    delete pHelper;
+    delete form;
+    delete model;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: HbWidget *widgetFromModelIndex(const QModelIndex &index); \n&nbsp;
+   2. Function Descrition: \n &nbsp;&nbsp;
+   3. Input Parameters: QModelIndex object. \n&nbsp;
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpItemDataHelper::testWidgetFromModelIndexWithDataForm()
+    {
+    HbDataForm* form = new HbDataForm();
+    QVERIFY( form != 0 );
+    
+    HbDataFormModel *model = new HbDataFormModel();
+    QVERIFY( model != 0 );
+    
+    HbDataFormModelItem *general = model->appendDataFormItem(HbDataFormModelItem::TextItem, QString("General"));
+    QVERIFY( general != 0 );
+    
+    HbDataFormModelItem *special = model->appendDataFormItem(HbDataFormModelItem::SliderItem, QString("Special"));
+    QVERIFY( special != 0 );
+    
+    CpItemDataHelper *phelper = new CpItemDataHelper(form);
+    QVERIFY( phelper != 0 );
+    
+    form->setModel(model);
+    
+    QModelIndex index = model->indexFromItem(special);
+    
+    HbWidget * widget = phelper->widgetFromModelIndex(index);
+    QVERIFY( widget != 0 );
+    QVERIFY( widget->type() == Hb::ItemType_Slider );
+    
+    delete phelper;
+    delete form;
+    delete model;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: HbWidget *widgetFromModelIndex(const QModelIndex &index); \n&nbsp;
+   2. Function Descrition: \n &nbsp;&nbsp;
+   3. Input Parameters: QModelIndex object. \n&nbsp;
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpItemDataHelper::testWidgetFromModelIndexNoDataForm()
+    {
+    HbDataForm* form = new HbDataForm();
+    QVERIFY( form != 0 );
+    
+    HbDataFormModel *model = new HbDataFormModel();
+    QVERIFY( model != 0 );
+    
+    HbDataFormModelItem *general = model->appendDataFormItem(HbDataFormModelItem::SliderItem, QString("General"));
+    QVERIFY( general != 0 );
+    
+    form->setModel(model);
+    
+    CpItemDataHelper *phelper = new CpItemDataHelper();
+    QVERIFY( phelper != 0 );
+    
+    QModelIndex index = model->indexFromItem(general);
+    HbWidget * widget = phelper->widgetFromModelIndex(index);
+    QVERIFY( widget == 0 );
+    
+    phelper->bindToForm(form);
+    HbWidget * widget1 = phelper->widgetFromModelIndex(index);
+    QVERIFY( widget1 != 0 );
+    QVERIFY( widget1->type() == Hb::ItemType_Slider );
+    
+    delete phelper;
+    delete form;
+    delete model;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: HbWidget *widgetFromModelIndex(const QModelIndex &index); \n&nbsp;
+   2. Function Descrition: \n &nbsp;&nbsp;
+   3. Input Parameters: QModelIndex object. \n&nbsp;
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpItemDataHelper::testWidgetFromModelIndexWithDataFormBinded()
+    {
+    HbDataForm* form = new HbDataForm();
+    QVERIFY( form != 0 );
+    
+    HbDataFormModel *model = new HbDataFormModel();
+    QVERIFY( model != 0 );
+    
+    HbDataFormModelItem *general = model->appendDataFormItem(HbDataFormModelItem::SliderItem, QString("General"));
+    QVERIFY( general != 0 );
+    
+    HbDataFormModelItem * general1 = new HbDataFormModelItem();
+    QVERIFY( general1 != 0 );
+    
+    form->setModel(model);
+    
+    CpItemDataHelper *phelper = new CpItemDataHelper(form);
+    QVERIFY( phelper != 0 );
+    
+    QModelIndex index = model->indexFromItem(general1);
+    HbWidget * widget = phelper->widgetFromModelIndex(index);
+    QVERIFY( widget == 0 );
+    
+    phelper->bindToForm(form);
+    HbWidget * widget1 = phelper->widgetFromModelIndex(index);
+    QVERIFY( widget1 == 0 );
+    
+    delete phelper;
+    delete form;
+    delete model;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: HbDataFormModelItem *modelItemFromModelIndex(const QModelIndex &index); \n&nbsp;
+   2. Function Descrition: \n &nbsp;&nbsp;
+   3. Input Parameters: QModelIndex object. \n&nbsp;
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpItemDataHelper::testModelItemFromModelIndexWithDataForm()
+    {
+    HbDataForm* form = new HbDataForm();
+    QVERIFY( form != 0 );
+    
+    HbDataFormModel *model = new HbDataFormModel();
+    QVERIFY( model != 0 );
+    
+    HbDataFormModelItem *general = model->appendDataFormItem(HbDataFormModelItem::TextItem, QString("General"));
+    QVERIFY( general != 0 );
+    
+    HbDataFormModelItem *special = model->appendDataFormItem(HbDataFormModelItem::SliderItem, QString("Special"));
+    QVERIFY( special != 0 );
+    
+    CpItemDataHelper *phelper = new CpItemDataHelper(form);
+    QVERIFY( phelper != 0 );
+    
+    form->setModel(model);
+    
+    QModelIndex index = model->indexFromItem(special);
+    
+    HbDataFormModelItem * item = phelper->modelItemFromModelIndex(index);
+    QVERIFY( item != 0 );
+    QVERIFY( item->type() == HbDataFormModelItem::SliderItem );
+    
+    delete phelper;
+    delete form;
+    delete model;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: HbDataFormModelItem *modelItemFromModelIndex(const QModelIndex &index); \n&nbsp;
+   2. Function Descrition: \n &nbsp;&nbsp;
+   3. Input Parameters: QModelIndex object. \n&nbsp;
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpItemDataHelper::testModelItemFromModelIndexNoDataForm()
+    {
+    HbDataForm* form = new HbDataForm();
+    QVERIFY( form != 0 );
+    
+    HbDataFormModel *model = new HbDataFormModel();
+    QVERIFY( model != 0 );
+    
+    HbDataFormModelItem *general = model->appendDataFormItem(HbDataFormModelItem::SliderItem, QString("General"));
+    QVERIFY( general != 0 );
+    
+    form->setModel(model);
+    
+    CpItemDataHelper *phelper = new CpItemDataHelper();
+    QVERIFY( phelper != 0 );
+    
+    QModelIndex index = model->indexFromItem(general);
+    HbDataFormModelItem * item = phelper->modelItemFromModelIndex(index);
+    QVERIFY( item == 0 );
+    
+    phelper->bindToForm(form);
+    
+    HbDataFormModelItem * item1 = phelper->modelItemFromModelIndex(index);
+    QVERIFY( item1 != 0 );
+    QVERIFY( item1->type() == HbDataFormModelItem::SliderItem );
+    
+    delete phelper;
+    delete form;
+    delete model;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: HbDataFormModelItem *modelItemFromModelIndex(const QModelIndex &index); \n&nbsp;
+   2. Function Descrition: \n &nbsp;&nbsp;
+   3. Input Parameters: QModelIndex object. \n&nbsp;
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpItemDataHelper::testModelItemFromModelIndexWithModel()
+    {
+    HbDataForm* form = new HbDataForm();
+    QVERIFY( form != 0 );
+    
+    HbDataFormModel *model = new HbDataFormModel();
+    QVERIFY( model != 0 );
+    
+    HbDataFormModelItem *general = model->appendDataFormItem(HbDataFormModelItem::SliderItem, QString("General"));
+    QVERIFY( general != 0 );
+    
+    HbDataFormModelItem * general1 = new HbDataFormModelItem();
+    QVERIFY( general1 != 0 );
+    
+    CpItemDataHelper *phelper = new CpItemDataHelper(form);
+    QVERIFY( phelper != 0 );
+    
+    QModelIndex index = model->indexFromItem(general1);
+    HbDataFormModelItem * item = phelper->modelItemFromModelIndex(index);
+    QVERIFY( item == 0 );
+
+    form->setModel(model);
+    
+    HbDataFormModelItem * item1 = phelper->modelItemFromModelIndex(index);
+    QVERIFY( item1 == 0 );
+    
+    delete phelper;
+    delete form;
+    delete model;
+    }
+
+QTEST_MAIN(TestCpItemDataHelper)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cpitemdatahelper/src/ut_cpitemdatahelper.h	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,63 @@
+/*
+* 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:  
+*       test application for qt control panel public apis.
+*/
+
+#ifndef TEST_CP_ITEM_DATA_HELPER_H
+#define TEST_CP_ITEM_DATA_HELPER_H
+
+#include <QObject>
+
+class TestCpItemDataHelper : public QObject
+{
+    Q_OBJECT
+    
+private slots:
+    void initTestCase();
+    void cleanupTestCase();
+
+//public slots:
+    void testCpItemDataHelperWithNullPointer();
+    void testCpItemDataHelperWithDataForm();
+    
+    void testBindToFormWithDataForm();
+    
+    void testAddItemPrototypeWithNullPointer1();
+    void testAddItemPrototypeWithViewItem1();
+    void testAddItemPrototypeWithNullPointer2();
+    void testAddItemPrototypeWithViewItem2();
+    
+    void testAddConnectionWithnoDataForm();
+    void testAddConnectionWithDataForm();
+    
+    void testRemoveConnectionNoDataForm();
+    void testRemoveConnectionWithDataForm();
+    
+    void testConnectToFormNoDataForm();
+    void testConnectToFormWithDataForm();
+    
+    void testDisconnectToFormNoDataForm();
+    void testDisconnectToFormWithDataForm();
+    
+    void testWidgetFromModelIndexWithDataForm();
+    void testWidgetFromModelIndexNoDataForm();
+    void testWidgetFromModelIndexWithDataFormBinded();
+    
+    void testModelItemFromModelIndexWithDataForm();
+    void testModelItemFromModelIndexNoDataForm();
+    void testModelItemFromModelIndexWithModel();
+};
+
+#endif // TEST_CP_ITEM_DATA_HELPER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cpitemdatahelper/ut_cpitemdatahelper.pri	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,24 @@
+#
+# 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: 
+#
+
+HEADERS += src/ut_cpitemdatahelper.h
+
+SOURCES += src/ut_cpitemdatahelper.cpp 
+
+INCLUDEPATH += . \
+							 src/\
+							 ../../../src/inc \
+							 ../../../controlpanel_plat/inc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cpitemdatahelper/ut_cpitemdatahelper.pro	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,25 @@
+#
+# 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: 
+#
+
+TEMPLATE = app
+TARGET = ut_cpitemdatahelper
+
+include (../ut_common.pri)
+include (ut_cpitemdatahelper.pri)
+
+symbian: { 
+    TARGET.UID3 = 0xE1FF1D09
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cppluginlauncher/src/ut_cppluginlauncher.cpp	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,135 @@
+/*
+* 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:  
+*       test application for qt control panel public apis.
+*/
+
+#include "ut_cppluginlauncher.h"
+
+#include "cppluginlauncher.h"
+#include "cpbasesettingview.h"
+
+#include <QtTest/QtTest>
+#include <hbdataform.h>
+#include <hbpushbutton.h>
+#include <HbMainWindow>
+
+/*!
+    \class TestCpPluginLauncher
+    \brief The TestCpPluginLauncher class is designed for the unit testing for CpPluginLauncher class.
+    This unit test is supported by QTest.
+    There are total 3 test cases in this unit.
+ */
+
+void TestCpPluginLauncher::initTestCase()
+    {
+    mainWindow = new HbMainWindow;
+    mainWindow->show();
+    }
+
+void TestCpPluginLauncher::cleanupTestCase()
+    {
+    delete mainWindow;
+    
+    //if delete mainwindow, test app will be freezing
+    QCoreApplication::processEvents();
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;
+        static CpBaseSettingView* launchSettingView(const QString &pluginFile,const QVariant &hint = QVariant());&nbsp;
+
+   2. Function Descrition: \n &nbsp;&nbsp;
+       2.1 Create view object by call launchSettingView().\n &nbsp;&nbsp;
+       2.2 emit signal to CpBaseSettingView object.\n &nbsp;&nbsp;
+       
+   3. Input Parameters: \n&nbsp;
+       QString &pluginFile: plugin file path, either relative or absolute.\n&nbsp;&nbsp;
+       QVariant &hint: hint string, for example, "profile_view".\n&nbsp;&nbsp;
+   
+   4. Expected result: \n&nbsp;&nbsp;
+       CpBaseSettingView object created successfully, signal emit out to view object processed correctly.\n 
+ */
+void TestCpPluginLauncher::testLaunchSettingViewWithCorrectProfileName()
+    {
+    CpBaseSettingView * pView1 = CpPluginLauncher::launchSettingView("testplugin.cpcfg", "profile_view");
+    QVERIFY(pView1 != 0);
+    
+    CpBaseSettingView * pView2 = CpPluginLauncher::launchSettingView("testplugin.cpcfg", "profile_view");
+    QVERIFY(pView2 != 0);
+    
+    QObject::connect(this, SIGNAL(connectAboutToClose()), pView1, SIGNAL(aboutToClose()));
+    emit connectAboutToClose();
+    
+    QObject::connect(this, SIGNAL(connectAboutToClose()), pView2, SIGNAL(aboutToClose()));
+    emit connectAboutToClose();
+    emit connectAboutToClose();
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;
+        static CpBaseSettingView* launchSettingView(const QString &pluginFile,const QVariant &hint = QVariant());&nbsp;
+
+   2. Function Descrition: \n &nbsp;&nbsp;
+       2.1 Create view object by call launchSettingView().\n &nbsp;&nbsp;
+       2.2 emit signal to CpBaseSettingView object.\n &nbsp;&nbsp;
+       
+   3. Input Parameters: \n&nbsp;
+       QString &pluginFile: plugin file path, either relative or absolute.\n&nbsp;&nbsp;
+       QVariant &hint: hint string, for example, "profile_view".\n&nbsp;&nbsp;
+   
+   4. Expected result: \n&nbsp;&nbsp;
+       CpBaseSettingView object created successfully, signal emit out to view object processed correctly.\n 
+ */
+void TestCpPluginLauncher::testLaunchSettingViewWithWrongProfileName()
+    {
+    CpBaseSettingView * pView1 = CpPluginLauncher::launchSettingView("testplugin.cpcfg", "myprofile_view");
+    QVERIFY(pView1 == 0);
+    
+    CpBaseSettingView * pView2 = CpPluginLauncher::launchSettingView("testplugin.cpcfg", "myprofile_view");
+    QVERIFY(pView2 == 0);
+    
+    QObject::connect(this, SIGNAL(connectAboutToClose()), pView1, SIGNAL(aboutToClose()));
+    emit connectAboutToClose();
+    
+    QObject::connect(this, SIGNAL(connectAboutToClose()), pView2, SIGNAL(aboutToClose()));
+    emit connectAboutToClose();
+    emit connectAboutToClose();
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;
+        static CpBaseSettingView* launchSettingView(const QString &pluginFile,const QVariant &hint = QVariant());&nbsp;
+
+   2. Function Descrition: \n &nbsp;&nbsp;
+       2.1 Create view object by call launchSettingView().\n &nbsp;&nbsp;
+       2.2 emit signal to CpBaseSettingView object.\n &nbsp;&nbsp;
+       
+   3. Input Parameters: \n&nbsp;
+       QString &pluginFile: plugin file path, either relative or absolute.\n&nbsp;&nbsp;
+       QVariant &hint: hint string, for example, "profile_view".\n&nbsp;&nbsp;
+   
+   4. Expected result: \n&nbsp;&nbsp;
+       CpBaseSettingView object created successfully, signal emit out to view object processed correctly.\n 
+ */
+void TestCpPluginLauncher::testLaunchSettingViewWithEmptyParam()
+    {
+    CpBaseSettingView * pView1 = CpPluginLauncher::launchSettingView("", "");
+    QVERIFY(pView1 == 0);
+    }
+
+QTEST_MAIN(TestCpPluginLauncher)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cppluginlauncher/src/ut_cppluginlauncher.h	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,45 @@
+/*
+* 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:  
+*       test application for qt control panel public apis.
+*/
+
+#ifndef UT_CP_PLUGIN_LAUNCHER_H
+#define UT_CP_PLUGIN_LAUNCHER_H
+
+#include <QObject>
+
+class HbMainWindow;
+
+class TestCpPluginLauncher : public QObject
+{
+    Q_OBJECT
+    
+signals:
+    void connectAboutToClose();
+    
+private slots:
+    void initTestCase();
+    void cleanupTestCase();
+
+//public slots:
+    void testLaunchSettingViewWithCorrectProfileName();
+    void testLaunchSettingViewWithWrongProfileName();
+    void testLaunchSettingViewWithEmptyParam();
+    
+private:
+    HbMainWindow* mainWindow;
+};
+
+#endif // UT_CP_PLUGIN_LAUNCHER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cppluginlauncher/ut_cppluginlauncher.pri	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,24 @@
+#
+# 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: 
+#
+
+HEADERS   += src/ut_cppluginlauncher.h
+	
+SOURCES   += src/ut_cppluginlauncher.cpp
+
+INCLUDEPATH += . \
+							 src/\
+							 ../../../src/inc \
+							 ../../../controlpanel_plat/inc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cppluginlauncher/ut_cppluginlauncher.pro	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,40 @@
+#
+# 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: 
+#
+
+TEMPLATE = app
+TARGET = ut_cppluginlauncher 
+
+include (../ut_common.pri)
+include (ut_cppluginlauncher.pri)
+
+symbian: { 
+    TARGET.UID3 = 0xEEB2ED33
+}
+
+symbian*: {
+	deploy.path = C:
+	
+    testplugindll.sources = testplugin.dll
+    testplugindll.path = /sys/bin
+	
+    testpluginconfig.sources = ../testplugin/data/testplugin.cpcfg
+    testpluginconfig.path = /resource/qt/plugins/controlpanel/config
+	
+	testpluginstub.sources = ../testplugin/qmakepluginstubs/testplugin.qtplugin
+    testpluginstub.path = /resource/qt/plugins/controlpanel
+	
+    DEPLOYMENT += testplugindll testpluginconfig testpluginstub
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cppluginloader/src/ut_cppluginloader.cpp	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,130 @@
+/*
+* 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:  
+*       test application for qt control panel public apis.
+*/
+
+#include "ut_cppluginloader.h"
+#include "cppluginloader.h"
+
+#include <QtTest/QtTest>
+
+
+/*!
+    \class TestCpPluginLoader
+    \brief The TestCpPluginLoader class is designed for the unit testing for CpPluginLoader class.
+    This unit test is supported by QTest.
+    There are total 6 test cases in this unit.
+ */
+
+void TestCpPluginLoader::initTestCase()
+    {
+    }
+
+void TestCpPluginLoader::cleanupTestCase()
+    {
+    QCoreApplication::processEvents();
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: loadCpPluginInterface() \n&nbsp;
+   2. Function Descrition: \n &nbsp;&nbsp;
+        load a plugin file, which is derived from CpPluginInterface class.\n&nbsp;
+   3. Input Parameters: cpcfg file name. \n&nbsp;
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpPluginLoader::testLoadCpPluginInterfaceWithCpcfgFilename()
+    {
+    CpPluginInterface * plugin = CpPluginLoader::loadCpPluginInterface("testplugin.cpcfg");
+    QVERIFY(plugin != 0);
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: loadCpPluginInterface() \n&nbsp;
+   2. Function Descrition: \n &nbsp;&nbsp;
+        load a plugin file, which is derived from CpPluginInterface class.\n&nbsp;
+   3. Input Parameters: absolute path of cpcfg file name. \n&nbsp;
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpPluginLoader::testLoadCpPluginInterfaceWithAbsoluteQtpluginPath()
+    {
+    CpPluginInterface * plugin = CpPluginLoader::loadCpPluginInterface("/resource/qt/plugins/controlpanel/testplugin.qtplugin");
+    QVERIFY(plugin != 0);
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: loadCpPluginInterface() \n&nbsp;
+   2. Function Descrition: \n &nbsp;&nbsp;
+        load a plugin file, which is derived from CpPluginInterface class.\n&nbsp;
+   3. Input Parameters: qtplugin file name. \n&nbsp;
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpPluginLoader::testLoadCpPluginInterfaceWithQtpluginFilename()
+    {
+    CpPluginInterface * plugin = CpPluginLoader::loadCpPluginInterface("testplugin.qtplugin");
+    QVERIFY(plugin != 0);
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: loadCpLauncherInterface() \n&nbsp;
+   2. Function Descrition: \n &nbsp;&nbsp;
+        load a plugin file, which is derived from CpLauncherInterface class.\n&nbsp;
+   3. Input Parameters: defined cpcfg file name. \n&nbsp;
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpPluginLoader::testLoadCpLauncherInterfaceWithCpcfgFilename()
+    {
+    CpLauncherInterface * plugin = CpPluginLoader::loadCpLauncherInterface("testplugin.cpcfg");
+    QVERIFY(plugin != 0);
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: loadCpLauncherInterface() \n&nbsp;
+   2. Function Descrition: \n &nbsp;&nbsp;
+        load a plugin file, which is derived from CpLauncherInterface class.\n&nbsp;
+   3. Input Parameters: absolute path of a user defined qtplugin file name. \n&nbsp;
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpPluginLoader::testLoadCpLauncherInterfaceWithAbsoluteQtpluginFilename()
+    {
+    CpLauncherInterface * plugin = CpPluginLoader::loadCpLauncherInterface("/resource/qt/plugins/controlpanel/testplugin.qtplugin");
+    QVERIFY(plugin != 0);
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: loadCpLauncherInterface() \n&nbsp;
+   2. Function Descrition: \n &nbsp;&nbsp;
+        load a plugin file, which is derived from CpLauncherInterface class.\n&nbsp;
+   3. Input Parameters: qtplugin file name. \n&nbsp;
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpPluginLoader::testLoadCpLauncherInterfaceWithQtpluginFilename()
+    {
+    CpLauncherInterface * plugin = CpPluginLoader::loadCpLauncherInterface("testplugin.qtplugin");
+    QVERIFY(plugin != 0);
+    }
+
+QTEST_APPLESS_MAIN(TestCpPluginLoader)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cppluginloader/src/ut_cppluginloader.h	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,42 @@
+/*
+* 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:  
+*       test application for qt control panel public apis.
+*/
+
+#ifndef UT_CP_PLUGIN_LOADER_H
+#define UT_CP_PLUGIN_LOADER_H
+
+#include <QObject>
+
+class TestCpPluginLoader : public QObject
+{
+    Q_OBJECT
+    
+private slots:
+    void initTestCase();
+    void cleanupTestCase();
+    
+//public slots:
+    void testLoadCpPluginInterfaceWithCpcfgFilename();
+    void testLoadCpPluginInterfaceWithAbsoluteQtpluginPath();
+    void testLoadCpPluginInterfaceWithQtpluginFilename();
+    
+    void testLoadCpLauncherInterfaceWithCpcfgFilename();
+    void testLoadCpLauncherInterfaceWithAbsoluteQtpluginFilename();
+    void testLoadCpLauncherInterfaceWithQtpluginFilename();
+    
+};
+
+#endif // UT_CP_PLUGIN_LOADER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cppluginloader/ut_cppluginloader.pri	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,24 @@
+#
+# 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: 
+#
+
+HEADERS   += src/ut_cppluginloader.h
+	
+SOURCES   += src/ut_cppluginloader.cpp
+
+INCLUDEPATH += . \
+							 src/\
+							 ../../../src/inc \
+							 ../../../controlpanel_plat/inc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cppluginloader/ut_cppluginloader.pro	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,41 @@
+#
+# 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: 
+#
+
+TEMPLATE = app
+TARGET = ut_cppluginloader 
+
+include (../ut_common.pri)
+include (ut_cppluginloader.pri)
+
+symbian: { 
+    TARGET.UID3 = 0xEC9347EF
+}
+
+symbian*: {
+	deploy.path = C:
+	
+    testplugindll.sources = testplugin.dll
+    testplugindll.path = /sys/bin
+	
+    testpluginconfig.sources = ../testplugin/data/testplugin.cpcfg
+    testpluginconfig.path = /resource/qt/plugins/controlpanel/config
+	
+	testpluginstub.sources = ../testplugin/qmakepluginstubs/testplugin.qtplugin
+    testpluginstub.path = /resource/qt/plugins/controlpanel
+	
+    DEPLOYMENT += testplugindll testpluginconfig testpluginstub
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cppluginutility/src/ut_cppluginutility.cpp	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,79 @@
+/*
+* 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:  
+*       test application for qt control panel public apis.
+*/
+
+#include "ut_cppluginutility.h"
+
+#include <QtTest/QtTest>
+#include <hbdataform.h>
+#include <cppluginutility.h>
+
+/*!
+    \class TestCpPluginUtility
+    \brief This class is used for the unit test for class CpPluginUtility.\n
+      CpPluginUtility class is a utility class used to provide method to add 2 two new customed prototype into the HbDataForm object. \n
+      This unit test is supported by QTest.
+      There are total 2 test cases in this unit.
+ */
+
+void TestCpPluginUtility::initTestCase()
+    {
+    }
+
+void TestCpPluginUtility::cleanupTestCase()
+    {
+    QCoreApplication::processEvents();
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: addCpItemPrototype() \n&nbsp;
+   2. Function Descrition: \n &nbsp;&nbsp;
+        add 2 new prototype to a HbDataForm object.\n&nbsp;
+   3. Input Parameters: \n&nbsp;
+       @param: HbDataForm *settingForm\n
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpPluginUtility::testAddCpItemPrototypeWithDataForm()
+    {
+    HbDataForm * settingForm = new HbDataForm();
+    QVERIFY(settingForm != 0);
+    
+    int count0 = settingForm->itemPrototypes().count();
+    CpPluginUtility::addCpItemPrototype(settingForm);
+    int count1 = settingForm->itemPrototypes().count();
+    QVERIFY(count0 + 2 == count1);
+    
+    delete settingForm;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: addCpItemPrototype() \n&nbsp;
+   2. Function Descrition: \n &nbsp;&nbsp;
+        add 2 new prototype to a HbDataForm object.\n&nbsp;
+   3. Input Parameters: \n&nbsp;
+       @param: 0.\n
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpPluginUtility::testAddCpItemPrototypeWithNullPointer()
+    {
+    CpPluginUtility::addCpItemPrototype(0);
+    }
+
+QTEST_MAIN(TestCpPluginUtility)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cppluginutility/src/ut_cppluginutility.h	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,36 @@
+/*
+* 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:  
+*       test application for qt control panel public apis.
+*/
+
+#ifndef TEST_CP_PLUGIN_UTILITY_H
+#define TEST_CP_PLUGIN_UTILITY_H
+
+#include <QObject>
+
+class TestCpPluginUtility : public QObject
+{
+    Q_OBJECT
+    
+private slots:
+    void initTestCase();
+    void cleanupTestCase();
+    
+//public slots:
+    void testAddCpItemPrototypeWithDataForm();
+    void testAddCpItemPrototypeWithNullPointer();
+};
+
+#endif // TEST_CP_PLUGIN_UTILITY_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cppluginutility/ut_cppluginutility.pri	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,24 @@
+#
+# 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: 
+#
+
+HEADERS   += src/ut_cppluginutility.h
+	
+SOURCES   += src/ut_cppluginutility.cpp 
+
+INCLUDEPATH += . \
+							 src/\
+							 ../../../src/inc \
+							 ../../../controlpanel_plat/inc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cppluginutility/ut_cppluginutility.pro	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,27 @@
+#
+# 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: 
+#
+
+TEMPLATE = app
+TARGET = ut_cppluginutility 
+
+include (../ut_common.pri)
+include (ut_cppluginutility.pri)
+
+symbian: { 
+    TARGET.UID3 = 0xE0AAA260
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cpsettingformentryitemdata/src/MyCpSettingFormEntryItemData.cpp	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,32 @@
+/*
+* 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:  
+*       test application for qt control panel public apis.
+*/
+
+#include "mycpsettingformentryitemdata.h"
+
+/*!
+    \class MyCpSettingFormEntryItemData
+    \brief The MyCpSettingFormEntryItemData class is designed for the unit testing for the protected member functions in CpSettingFormEntryItemData class.
+ */
+
+/*!
+ * This is designed to test one constructor in CpSettingFormEntryItemData class.
+ */
+MyCpSettingFormEntryItemData::MyCpSettingFormEntryItemData(const HbDataFormModelItem *parent /*= 0*/) :
+CpSettingFormEntryItemData(parent)
+    {
+    
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cpsettingformentryitemdata/src/MyCpSettingFormEntryItemData.h	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,28 @@
+/*
+* 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:  
+*       test application for qt control panel public apis.
+*/
+
+#include "cpsettingformentryitemdata.h"
+#include <cpbasesettingview.h>
+
+class MyCpSettingFormEntryItemData : public CpSettingFormEntryItemData
+    {
+public:
+    explicit MyCpSettingFormEntryItemData(const HbDataFormModelItem *parent = 0);
+    
+    virtual CpBaseSettingView *createSettingView() const
+    { return new CpBaseSettingView(); }
+    };
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cpsettingformentryitemdata/src/ut_cpsettingformentryitemdata.cpp	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,926 @@
+/*
+* 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:  
+*       test application for qt control panel public apis.
+*/
+
+#include "ut_cpsettingformentryitemdata.h"
+
+#include "mycpsettingformentryitemdata.h"
+
+#include <cpsettingformentryitemdata.h>
+#include <cpsettingformentryitemdataimpl.h>
+#include <cpitemdatahelper.h>
+#include <cpbasesettingview.h>
+#include <QtTest/QtTest>
+#include <hbdataform.h>
+#include <hbpushbutton.h>
+#include <hbicon.h>
+
+/*!
+    \class TestCpSettingFormEntryItemData
+    \brief This class is used for the unit test for class CpSettingFormEntryItemData.\n
+      CpSettingFormEntryItemData class is used for access to a control panel setting form entry item data, \n
+      this class has a pure virtual member function, so it is not allowed to create instance directly, instead of that, \n
+      developer should a template class CpSettingFormEntryItemDataImpl to create new instance of CpSettingFormEntryItemData.\n
+      This unit test is supported by QTest.\n
+      There are total 18 test cases in this unit.\n 
+ */
+
+void TestCpSettingFormEntryItemData::initTestCase()
+    {
+
+    }
+
+void TestCpSettingFormEntryItemData::cleanupTestCase()
+    {
+    QCoreApplication::processEvents();
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;&nbsp;
+         CpSettingFormEntryItemDataImpl(CpItemDataHelper &itemDataHelper,
+            const QString &text = QString(),
+            const QString &description = QString(),
+            const HbIcon &icon = HbIcon(),
+            const HbDataFormModelItem *parent = 0) : 
+            CpSettingFormEntryItemData(itemDataHelper,text,description,icon,parent);\n&nbsp;
+   2. Function Descrition: \n &nbsp;&nbsp;
+        \n&nbsp;
+   3. Input Parameters: \n&nbsp;&nbsp;
+       CpItemDataHelper &itemDataHelper\n&nbsp;&nbsp;
+       QString &text\n&nbsp;&nbsp;
+       QString &description\n&nbsp;&nbsp;
+       HbIcon &icon\n&nbsp;&nbsp;
+       HbDataFormModelItem *parent\n&nbsp;
+       
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpSettingFormEntryItemData::testCpSettingFormEntryItemDataWithHelperNoForm()
+    {
+    CpItemDataHelper *pHelper1 = new CpItemDataHelper();
+    QVERIFY( pHelper1 != 0 );
+    
+    CpSettingFormEntryItemDataImpl<CpBaseSettingView> *pdataimp1 = new CpSettingFormEntryItemDataImpl<CpBaseSettingView>( *pHelper1, "text", "description"  );
+    QVERIFY( pdataimp1 !=0 );
+    QString strtxt1 = "input texts";
+    pdataimp1->setText(strtxt1);
+    QVERIFY( pdataimp1->text() == strtxt1 );
+    
+    QString strDes1 = "input descriptions";
+    pdataimp1->setDescription(strDes1);
+    QVERIFY( pdataimp1->description() == strDes1);
+    
+    QString strIconName1 = "input iconname";
+    pdataimp1->setIconName(strIconName1);
+    QVERIFY( pdataimp1->iconName() == strIconName1);
+    
+    HbIcon itemIcon1(QString(""));
+    pdataimp1->setEntryItemIcon(itemIcon1);
+    QVERIFY( pdataimp1->entryItemIcon() == itemIcon1);
+    
+    delete pdataimp1;
+    delete pHelper1;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;&nbsp;
+         CpSettingFormEntryItemDataImpl(CpItemDataHelper &itemDataHelper,
+            const QString &text = QString(),
+            const QString &description = QString(),
+            const HbIcon &icon = HbIcon(),
+            const HbDataFormModelItem *parent = 0) : 
+            CpSettingFormEntryItemData(itemDataHelper,text,description,icon,parent);\n&nbsp;
+   2. Function Descrition: \n &nbsp;&nbsp;
+        \n&nbsp;
+   3. Input Parameters: \n&nbsp;&nbsp;
+       CpItemDataHelper &itemDataHelper\n&nbsp;&nbsp;
+       QString &text\n&nbsp;&nbsp;
+       QString &description\n&nbsp;&nbsp;
+       HbIcon &icon\n&nbsp;&nbsp;
+       HbDataFormModelItem *parent\n&nbsp;
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpSettingFormEntryItemData::testCpSettingFormEntryItemDataWithHelperAndForm()
+    {
+    HbDataForm *pForm2 = new HbDataForm(0);
+    QVERIFY(pForm2 != 0);
+    
+    CpItemDataHelper *pHelper2 = new CpItemDataHelper(pForm2);
+    QVERIFY( pHelper2 != 0 );
+    
+    CpSettingFormEntryItemDataImpl<CpBaseSettingView> *pdataimp2 = new CpSettingFormEntryItemDataImpl<CpBaseSettingView>( *pHelper2, "text", "description"  );
+    QVERIFY( pdataimp2 !=0 );
+    QString strtxt2 = "input texts";
+    pdataimp2->setText(strtxt2);
+    QVERIFY( pdataimp2->text() == strtxt2 );
+    
+    QString strDes2 = "input descriptions";
+    pdataimp2->setDescription(strDes2);
+    QVERIFY( pdataimp2->description() == strDes2);
+    
+    delete pdataimp2;
+    delete pHelper2;
+    delete pForm2;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;&nbsp;
+         CpSettingFormEntryItemDataImpl(HbDataForm *dataForm,
+            const QString &text = QString(),
+            const QString &description = QString(),
+            const HbIcon &icon = HbIcon(),
+            const HbDataFormModelItem *parent = 0) : 
+            CpSettingFormEntryItemData(dataForm,text,description,icon,parent);\n&nbsp;
+   2. Function Descrition: \n &nbsp;&nbsp;
+        \n&nbsp;
+   3. Input Parameters: \n&nbsp;&nbsp;
+       HbDataForm *dataForm\n&nbsp;&nbsp;
+       QString &text\n&nbsp;&nbsp;
+       QString &description\n&nbsp;&nbsp;
+       HbIcon &icon\n&nbsp;&nbsp;
+       HbDataFormModelItem *parent\n&nbsp;
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpSettingFormEntryItemData::testCpSettingFormEntryItemDataWithForm()
+    {
+    HbDataForm * pForm1 = new HbDataForm();
+    QVERIFY(pForm1 != 0);
+    
+    CpSettingFormEntryItemDataImpl<CpBaseSettingView> *pdataimp1 = new CpSettingFormEntryItemDataImpl<CpBaseSettingView>( pForm1, "text", "description" );
+    QVERIFY( pdataimp1 !=0 );
+    QString strtxt1 = "input texts";
+    pdataimp1->setText(strtxt1);
+    QVERIFY( pdataimp1->text() == strtxt1 );
+    
+    QString strDes1 = "input descriptions";
+    pdataimp1->setDescription(strDes1);
+    QVERIFY( pdataimp1->description() == strDes1);
+    
+    QString strIconName1 = "input iconname";
+    pdataimp1->setIconName(strIconName1);
+    QVERIFY( pdataimp1->iconName() == strIconName1);
+    
+    HbIcon itemIcon1(QString(""));
+    pdataimp1->setEntryItemIcon(itemIcon1);
+    QVERIFY( pdataimp1->entryItemIcon() == itemIcon1);
+    
+    delete pdataimp1;
+    delete pForm1;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;&nbsp;
+         CpSettingFormEntryItemDataImpl(
+            EntryItemType type,
+            CpItemDataHelper &itemDataHelper,
+            const QString &text = QString(),
+            const QString &description = QString(),
+            const QString &icon = QString(),
+            const HbDataFormModelItem *parent = 0) : 
+            CpSettingFormEntryItemData(type,itemDataHelper,text,description,icon,parent);\n&nbsp;
+            
+   2. Function Descrition: \n &nbsp;&nbsp;
+        \n&nbsp;
+   3. Input Parameters: \n&nbsp;&nbsp;
+       EntryItemType type\n&nbsp;&nbsp;
+       CpItemDataHelper &itemDataHelper\n&nbsp;&nbsp;
+       QString &text\n&nbsp;&nbsp;
+       QString &description\n&nbsp;&nbsp;
+       HbIcon &icon\n&nbsp;&nbsp;
+       HbDataFormModelItem *parent\n&nbsp;
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpSettingFormEntryItemData::testCpSettingFormEntryItemDataWithListTypeAndForm()
+    {
+    HbDataForm * pForm1 = new HbDataForm();
+    QVERIFY(pForm1 != 0);
+    
+    CpSettingFormEntryItemDataImpl<CpBaseSettingView> *pdataimp1 = new CpSettingFormEntryItemDataImpl<CpBaseSettingView>( CpSettingFormEntryItemData::ListEntryItem, pForm1, "text", "description" );
+    QVERIFY( pdataimp1 !=0 );
+    QString strtxt1 = "input texts";
+    pdataimp1->setText(strtxt1);
+    QVERIFY( pdataimp1->text() == strtxt1 );
+    
+    QString strDes1 = "input descriptions";
+    pdataimp1->setDescription(strDes1);
+    QVERIFY( pdataimp1->description() == strDes1);
+    
+    QString strIconName1 = "input iconname";
+    pdataimp1->setIconName(strIconName1);
+    QVERIFY( pdataimp1->iconName() == strIconName1);
+    
+    HbIcon itemIcon1(QString(""));
+    pdataimp1->setEntryItemIcon(itemIcon1);
+    QVERIFY( pdataimp1->entryItemIcon() == itemIcon1);
+    
+    delete pdataimp1;
+    delete pForm1;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;&nbsp;
+         CpSettingFormEntryItemDataImpl(
+            EntryItemType type,
+            HbDataForm *dataForm,
+            const QString &text = QString(),
+            const QString &description = QString(),
+            const QString &icon = QString(),
+            const HbDataFormModelItem *parent = 0) : 
+            CpSettingFormEntryItemData(type,dataForm,text,description,icon,parent);\n&nbsp;
+            
+   2. Function Descrition: \n &nbsp;&nbsp;
+        \n&nbsp;
+   3. Input Parameters: \n&nbsp;&nbsp;
+       EntryItemType type\n&nbsp;&nbsp;
+       HbDataForm *dataForm\n&nbsp;&nbsp;
+       QString &text\n&nbsp;&nbsp;
+       QString &description\n&nbsp;&nbsp;
+       HbIcon &icon\n&nbsp;&nbsp;
+       HbDataFormModelItem *parent\n&nbsp;
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpSettingFormEntryItemData::testCpSettingFormEntryItemDataWithButtonTypeAndForm()
+    {
+    HbDataForm * pForm1 = new HbDataForm();
+    QVERIFY(pForm1 != 0);
+    
+    CpSettingFormEntryItemDataImpl<CpBaseSettingView> *pdataimp1 = new CpSettingFormEntryItemDataImpl<CpBaseSettingView>( CpSettingFormEntryItemData::ButtonEntryItem, pForm1, "text", "description" );
+    QVERIFY( pdataimp1 !=0 );
+    QString strtxt1 = "input texts";
+    pdataimp1->setText(strtxt1);
+    QVERIFY( pdataimp1->text() == strtxt1 );
+    
+    QString strDes1 = "input descriptions";
+    pdataimp1->setDescription(strDes1);
+    QVERIFY( pdataimp1->description() == strDes1);
+    
+    QString strIconName1 = "input iconname";
+    pdataimp1->setIconName(strIconName1);
+    QVERIFY( pdataimp1->iconName() == strIconName1);
+    
+    HbIcon itemIcon1(QString(""));
+    pdataimp1->setEntryItemIcon(itemIcon1);
+    QVERIFY( pdataimp1->entryItemIcon() == itemIcon1);
+    
+    delete pdataimp1;
+    delete pForm1;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;&nbsp;
+         CpSettingFormEntryItemDataImpl(
+            EntryItemType type,
+            HbDataForm *dataForm,
+            const QString &text = QString(),
+            const QString &description = QString(),
+            const QString &icon = QString(),
+            const HbDataFormModelItem *parent = 0) : 
+            CpSettingFormEntryItemData(type,dataForm,text,description,icon,parent);\n&nbsp;
+            
+   2. Function Descrition: \n &nbsp;&nbsp;
+        \n&nbsp;
+   3. Input Parameters: \n&nbsp;&nbsp;
+       EntryItemType type\n&nbsp;&nbsp;
+       HbDataForm *dataForm\n&nbsp;&nbsp;
+       QString &text\n&nbsp;&nbsp;
+       QString &description\n&nbsp;&nbsp;
+       HbIcon &icon\n&nbsp;&nbsp;
+       HbDataFormModelItem *parent\n&nbsp;
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpSettingFormEntryItemData::testCpSettingFormEntryItemData005()
+    {
+    HbDataForm * pForm1 = new HbDataForm();
+    QVERIFY(pForm1 != 0);
+    
+    CpSettingFormEntryItemDataImpl<CpBaseSettingView> *pdataimp1 = new CpSettingFormEntryItemDataImpl<CpBaseSettingView>( CpSettingFormEntryItemData::ListEntryItem, pForm1, "text", "description" );
+    QVERIFY( pdataimp1 !=0 );
+    QString strtxt1 = "input texts";
+    pdataimp1->setText(strtxt1);
+    QVERIFY( pdataimp1->text() == strtxt1 );
+    
+    QString strDes1 = "input descriptions";
+    pdataimp1->setDescription(strDes1);
+    QVERIFY( pdataimp1->description() == strDes1);
+
+    QString strIconName1 = "input iconname";
+    pdataimp1->setIconName(strIconName1);
+    QVERIFY( pdataimp1->iconName() == strIconName1);
+    
+    HbIcon itemIcon1(QString(""));
+    pdataimp1->setEntryItemIcon(itemIcon1);
+    QVERIFY( pdataimp1->entryItemIcon() == itemIcon1);
+    
+    delete pdataimp1;
+    delete pForm1;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;&nbsp;
+         CpSettingFormEntryItemDataImpl(
+            EntryItemType type,
+            HbDataForm *dataForm,
+            const QString &text = QString(),
+            const QString &description = QString(),
+            const QString &icon = QString(),
+            const HbDataFormModelItem *parent = 0) : 
+            CpSettingFormEntryItemData(type,dataForm,text,description,icon,parent);\n&nbsp;
+            
+   2. Function Descrition: \n &nbsp;&nbsp;
+        \n&nbsp;
+   3. Input Parameters: \n&nbsp;&nbsp;
+       EntryItemType type\n&nbsp;&nbsp;
+       HbDataForm *dataForm\n&nbsp;&nbsp;
+       QString &text\n&nbsp;&nbsp;
+       QString &description\n&nbsp;&nbsp;
+       HbIcon &icon\n&nbsp;&nbsp;
+       HbDataFormModelItem *parent\n&nbsp;
+       
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpSettingFormEntryItemData::testCpSettingFormEntryItemData005a()
+    {
+    HbDataForm * pForm1 = new HbDataForm();
+    QVERIFY(pForm1 != 0);
+    
+    CpSettingFormEntryItemDataImpl<CpBaseSettingView> *pdataimp1 = new CpSettingFormEntryItemDataImpl<CpBaseSettingView>( CpSettingFormEntryItemData::ButtonEntryItem, pForm1, "text", "description" );
+    QVERIFY( pdataimp1 !=0 );
+    QString strtxt1 = "input texts";
+    pdataimp1->setText(strtxt1);
+    QVERIFY( pdataimp1->text() == strtxt1 );
+    
+    QString strDes1 = "input descriptions";
+    pdataimp1->setDescription(strDes1);
+    QVERIFY( pdataimp1->description() == strDes1);
+
+    QString strIconName1 = "input iconname";
+    pdataimp1->setIconName(strIconName1);
+    QVERIFY( pdataimp1->iconName() == strIconName1);
+    
+    HbIcon itemIcon1(QString(""));
+    pdataimp1->setEntryItemIcon(itemIcon1);
+    QVERIFY( pdataimp1->entryItemIcon() == itemIcon1);
+    
+    delete pdataimp1;
+    delete pForm1;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;&nbsp;
+         CpSettingFormEntryItemDataImpl(
+            EntryItemType type,
+            CpItemDataHelper &itemDataHelper,
+            const QString &text = QString(),
+            const QString &description = QString(),
+            const QString &icon = QString(),
+            const HbDataFormModelItem *parent = 0) : 
+            CpSettingFormEntryItemData(type,itemDataHelper,text,description,icon,parent);\n&nbsp;
+            
+   2. Function Descrition: \n &nbsp;&nbsp;
+        \n&nbsp;
+   3. Input Parameters: \n&nbsp;&nbsp;
+       EntryItemType type\n&nbsp;&nbsp;
+       CpItemDataHelper &itemDataHelper\n&nbsp;&nbsp;
+       QString &text\n&nbsp;&nbsp;
+       QString &description\n&nbsp;&nbsp;
+       HbIcon &icon\n&nbsp;&nbsp;
+       HbDataFormModelItem *parent\n&nbsp;
+       
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpSettingFormEntryItemData::testCpSettingFormEntryItemDataWithListTypeAndHelper()
+    {
+    CpItemDataHelper *pHelper1 = new CpItemDataHelper();
+    QVERIFY(pHelper1 != 0);
+    
+    CpSettingFormEntryItemDataImpl<CpBaseSettingView> *pdataimp1 = new CpSettingFormEntryItemDataImpl<CpBaseSettingView>( CpSettingFormEntryItemData::ListEntryItem, *pHelper1, "text", "description" );
+    QVERIFY( pdataimp1 !=0 );
+    QString strtxt1 = "input texts";
+    pdataimp1->setText(strtxt1);
+    QVERIFY( pdataimp1->text() == strtxt1 );
+    
+    QString strDes1 = "input descriptions";
+    pdataimp1->setDescription(strDes1);
+    QVERIFY( pdataimp1->description() == strDes1);
+    
+    QString strIconName1 = "input iconname";
+    pdataimp1->setIconName(strIconName1);
+    QVERIFY( pdataimp1->iconName() == strIconName1);
+    
+    HbIcon itemIcon1(QString(""));
+    pdataimp1->setEntryItemIcon(itemIcon1);
+    QVERIFY( pdataimp1->entryItemIcon() == itemIcon1);
+    
+    delete pdataimp1;
+    delete pHelper1;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;&nbsp;
+         CpSettingFormEntryItemDataImpl(
+            EntryItemType type,
+            CpItemDataHelper &itemDataHelper,
+            const QString &text = QString(),
+            const QString &description = QString(),
+            const QString &icon = QString(),
+            const HbDataFormModelItem *parent = 0) : 
+            CpSettingFormEntryItemData(type,itemDataHelper,text,description,icon,parent);\n&nbsp;
+            
+   2. Function Descrition: \n &nbsp;&nbsp;
+        \n&nbsp;
+   3. Input Parameters: \n&nbsp;&nbsp;
+       EntryItemType type\n&nbsp;&nbsp;
+       CpItemDataHelper &itemDataHelper\n&nbsp;&nbsp;
+       QString &text\n&nbsp;&nbsp;
+       QString &description\n&nbsp;&nbsp;
+       HbIcon &icon\n&nbsp;&nbsp;
+       HbDataFormModelItem *parent\n&nbsp;
+       
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpSettingFormEntryItemData::testCpSettingFormEntryItemDataWithButtonTypeAndHelper()
+    {
+    CpItemDataHelper *pHelper1 = new CpItemDataHelper();
+    QVERIFY(pHelper1 != 0);
+    
+    CpSettingFormEntryItemDataImpl<CpBaseSettingView> *pdataimp1 = new CpSettingFormEntryItemDataImpl<CpBaseSettingView>( CpSettingFormEntryItemData::ButtonEntryItem, *pHelper1, "text", "description" );
+    QVERIFY( pdataimp1 !=0 );
+    QString strtxt1 = "input texts";
+    pdataimp1->setText(strtxt1);
+    QVERIFY( pdataimp1->text() == strtxt1 );
+    
+    QString strDes1 = "input descriptions";
+    pdataimp1->setDescription(strDes1);
+    QVERIFY( pdataimp1->description() == strDes1);
+    
+    QString strIconName1 = "input iconname";
+    pdataimp1->setIconName(strIconName1);
+    QVERIFY( pdataimp1->iconName() == strIconName1);
+    
+    HbIcon itemIcon1(QString(""));
+    pdataimp1->setEntryItemIcon(itemIcon1);
+    QVERIFY( pdataimp1->entryItemIcon() == itemIcon1);
+    
+    delete pdataimp1;
+    delete pHelper1;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;&nbsp;
+         CpSettingFormEntryItemDataImpl(
+            EntryItemType type,
+            CpItemDataHelper &itemDataHelper,
+            const QString &text = QString(),
+            const QString &description = QString(),
+            const QString &icon = QString(),
+            const HbDataFormModelItem *parent = 0) : 
+            CpSettingFormEntryItemData(type,itemDataHelper,text,description,icon,parent);\n&nbsp;
+            
+   2. Function Descrition: \n &nbsp;&nbsp;
+        \n&nbsp;
+   3. Input Parameters: \n&nbsp;&nbsp;
+       EntryItemType type\n&nbsp;&nbsp;
+       CpItemDataHelper &itemDataHelper\n&nbsp;&nbsp;
+       QString &text\n&nbsp;&nbsp;
+       QString &description\n&nbsp;&nbsp;
+       HbIcon &icon\n&nbsp;&nbsp;
+       HbDataFormModelItem *parent\n&nbsp;
+       
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpSettingFormEntryItemData::testCpSettingFormEntryItemDataWithListTypeAndHelperForm()
+    {
+    HbDataForm * pForm1 = new HbDataForm();
+    QVERIFY(pForm1 != 0);
+    
+    CpItemDataHelper *pHelper1 = new CpItemDataHelper(pForm1);
+    QVERIFY(pHelper1 != 0);
+    
+    CpSettingFormEntryItemDataImpl<CpBaseSettingView> *pdataimp1 = new CpSettingFormEntryItemDataImpl<CpBaseSettingView>( CpSettingFormEntryItemData::ListEntryItem, *pHelper1, "text", "description" );
+    QVERIFY( pdataimp1 !=0 );
+    QString strtxt1 = "input texts";
+    pdataimp1->setText(strtxt1);
+    QVERIFY( pdataimp1->text() == strtxt1 );
+    
+    QString strDes1 = "input descriptions";
+    pdataimp1->setDescription(strDes1);
+    QVERIFY( pdataimp1->description() == strDes1);
+    
+    QString strIconName1 = "input iconname";
+    pdataimp1->setIconName(strIconName1);
+    QVERIFY( pdataimp1->iconName() == strIconName1);
+    
+    HbIcon itemIcon1(QString(""));
+    pdataimp1->setEntryItemIcon(itemIcon1);
+    QVERIFY( pdataimp1->entryItemIcon() == itemIcon1);
+    
+    delete pdataimp1;
+    delete pHelper1;
+    delete pForm1;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;&nbsp;
+         CpSettingFormEntryItemDataImpl(
+            EntryItemType type,
+            CpItemDataHelper &itemDataHelper,
+            const QString &text = QString(),
+            const QString &description = QString(),
+            const QString &icon = QString(),
+            const HbDataFormModelItem *parent = 0) : 
+            CpSettingFormEntryItemData(type,itemDataHelper,text,description,icon,parent);\n&nbsp;
+            
+   2. Function Descrition: \n &nbsp;&nbsp;
+        \n&nbsp;
+   3. Input Parameters: \n&nbsp;&nbsp;
+       EntryItemType type\n&nbsp;&nbsp;
+       CpItemDataHelper &itemDataHelper\n&nbsp;&nbsp;
+       QString &text\n&nbsp;&nbsp;
+       QString &description\n&nbsp;&nbsp;
+       HbIcon &icon\n&nbsp;&nbsp;
+       HbDataFormModelItem *parent\n&nbsp;
+       
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpSettingFormEntryItemData::testCpSettingFormEntryItemDataWithButtonTypeAndHelperForm()
+    {
+    HbDataForm * pForm1 = new HbDataForm();
+    QVERIFY(pForm1 != 0);
+    
+    CpItemDataHelper *pHelper1 = new CpItemDataHelper(pForm1);
+    QVERIFY(pHelper1 != 0);
+    
+    CpSettingFormEntryItemDataImpl<CpBaseSettingView> *pdataimp1 = new CpSettingFormEntryItemDataImpl<CpBaseSettingView>( CpSettingFormEntryItemData::ButtonEntryItem, *pHelper1, "text", "description" );
+    QVERIFY( pdataimp1 !=0 );
+    QString strtxt1 = "input texts";
+    pdataimp1->setText(strtxt1);
+    QVERIFY( pdataimp1->text() == strtxt1 );
+    
+    QString strDes1 = "input descriptions";
+    pdataimp1->setDescription(strDes1);
+    QVERIFY( pdataimp1->description() == strDes1);
+    
+    QString strIconName1 = "input iconname";
+    pdataimp1->setIconName(strIconName1);
+    QVERIFY( pdataimp1->iconName() == strIconName1);
+    
+    HbIcon itemIcon1(QString(""));
+    pdataimp1->setEntryItemIcon(itemIcon1);
+    QVERIFY( pdataimp1->entryItemIcon() == itemIcon1);
+    
+    delete pdataimp1;
+    delete pHelper1;
+    delete pForm1;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;&nbsp;
+         CpSettingFormEntryItemDataImpl(HbDataForm *dataForm,
+            const QString &text = QString(),
+            const QString &description = QString(),
+            const HbIcon &icon = HbIcon(),
+            const HbDataFormModelItem *parent = 0) : 
+            CpSettingFormEntryItemData(dataForm,text,description,icon,parent);\n&nbsp;
+            
+   2. Function Descrition: \n &nbsp;&nbsp;
+        \n&nbsp;
+   3. Input Parameters: \n&nbsp;&nbsp;
+       HbDataForm *dataForm\n&nbsp;&nbsp;
+       QString &text\n&nbsp;&nbsp;
+       QString &description\n&nbsp;&nbsp;
+       HbIcon &icon\n&nbsp;&nbsp;
+       HbDataFormModelItem *parent\n&nbsp;
+       
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpSettingFormEntryItemData::testCpSettingFormEntryItemDataWithFormParam()
+    {
+    HbDataForm * form = new HbDataForm();
+    QVERIFY(form != 0);
+    
+    CpSettingFormEntryItemDataImpl<CpBaseSettingView> *pdataimp1 = new CpSettingFormEntryItemDataImpl<CpBaseSettingView>(form);
+    QVERIFY( pdataimp1 !=0 );
+    QString strtxt1 = "input texts";
+    pdataimp1->setText(strtxt1);
+    QVERIFY( pdataimp1->text() == strtxt1 );
+    
+    QString strDes1 = "input descriptions";
+    pdataimp1->setDescription(strDes1);
+    QVERIFY( pdataimp1->description() == strDes1);
+    delete pdataimp1;
+    delete form;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;&nbsp;
+         CpSettingFormEntryItemDataImpl(CpItemDataHelper &itemDataHelper,
+            const QString &text = QString(),
+            const QString &description = QString(),
+            const HbIcon &icon = HbIcon(),
+            const HbDataFormModelItem *parent = 0) : 
+            CpSettingFormEntryItemData(itemDataHelper,text,description,icon,parent);\n&nbsp;
+            
+   2. Function Descrition: \n &nbsp;&nbsp;
+        \n&nbsp;
+   3. Input Parameters: \n&nbsp;&nbsp;
+       CpItemDataHelper &itemDataHelper\n&nbsp;&nbsp;
+       QString &text\n&nbsp;&nbsp;
+       QString &description\n&nbsp;&nbsp;
+       HbIcon &icon\n&nbsp;&nbsp;
+       HbDataFormModelItem *parent\n&nbsp;
+       
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpSettingFormEntryItemData::testCpSettingFormEntryItemDataWithHelperParam()
+    {
+    CpItemDataHelper *pHelper1 = new CpItemDataHelper();
+    QVERIFY(pHelper1 != 0);
+    
+    CpSettingFormEntryItemDataImpl<CpBaseSettingView> *pdataimp1 = new CpSettingFormEntryItemDataImpl<CpBaseSettingView>(*pHelper1);
+    QVERIFY( pdataimp1 !=0 );
+    QString strtxt1 = "input texts";
+    pdataimp1->setText(strtxt1);
+    QVERIFY( pdataimp1->text() == strtxt1 );
+    
+    QString strDes1 = "input descriptions";
+    pdataimp1->setDescription(strDes1);
+    QVERIFY( pdataimp1->description() == strDes1);
+    delete pdataimp1;
+    delete pHelper1;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;&nbsp;
+         CpSettingFormEntryItemDataImpl(CpItemDataHelper &itemDataHelper,
+            const QString &text = QString(),
+            const QString &description = QString(),
+            const HbIcon &icon = HbIcon(),
+            const HbDataFormModelItem *parent = 0) : 
+            CpSettingFormEntryItemData(itemDataHelper,text,description,icon,parent);\n&nbsp;
+            
+   2. Function Descrition: \n &nbsp;&nbsp;
+        \n&nbsp;
+   3. Input Parameters: \n&nbsp;&nbsp;
+       CpItemDataHelper &itemDataHelper\n&nbsp;&nbsp;
+       QString &text\n&nbsp;&nbsp;
+       QString &description\n&nbsp;&nbsp;
+       HbIcon &icon\n&nbsp;&nbsp;
+       HbDataFormModelItem *parent\n&nbsp;
+       
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpSettingFormEntryItemData::testCpSettingFormEntryItemDataWithHelperForm()
+    {
+    HbDataForm * pForm1 = new HbDataForm();
+    QVERIFY(pForm1 != 0);
+    
+    CpItemDataHelper *pHelper1 = new CpItemDataHelper(pForm1);
+    QVERIFY(pHelper1 != 0);
+    
+    CpSettingFormEntryItemDataImpl<CpBaseSettingView> *pdataimp1 = new CpSettingFormEntryItemDataImpl<CpBaseSettingView>(*pHelper1);
+    QVERIFY( pdataimp1 !=0 );
+    QString strtxt1 = "input texts";
+    pdataimp1->setText(strtxt1);
+    QVERIFY( pdataimp1->text() == strtxt1 );
+    
+    QString strDes1 = "input descriptions";
+    pdataimp1->setDescription(strDes1);
+    QVERIFY( pdataimp1->description() == strDes1);
+    delete pdataimp1;
+    delete pHelper1;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;&nbsp;
+         CpSettingFormEntryItemDataImpl(
+            EntryItemType type,
+            CpItemDataHelper &itemDataHelper,
+            const QString &text = QString(),
+            const QString &description = QString(),
+            const QString &icon = QString(),
+            const HbDataFormModelItem *parent = 0) : 
+            CpSettingFormEntryItemData(type,itemDataHelper,text,description,icon,parent);\n&nbsp;
+            
+   2. Function Descrition: \n &nbsp;&nbsp;
+        \n&nbsp;
+   3. Input Parameters: \n&nbsp;&nbsp;
+       EntryItemType type\n&nbsp;&nbsp;
+       CpItemDataHelper &itemDataHelper\n&nbsp;&nbsp;
+       QString &text\n&nbsp;&nbsp;
+       QString &description\n&nbsp;&nbsp;
+       HbIcon &icon\n&nbsp;&nbsp;
+       HbDataFormModelItem *parent\n&nbsp;
+       
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpSettingFormEntryItemData::testCpSettingFormEntryItemDataWithListTypeNullPointer()
+    {
+    HbDataForm * pForm1 = new HbDataForm();
+    QVERIFY(pForm1 != 0);
+    
+    CpSettingFormEntryItemDataImpl<CpBaseSettingView> *pdataimp1 = new CpSettingFormEntryItemDataImpl<CpBaseSettingView>( CpSettingFormEntryItemData::ListEntryItem, 0, "text", "description" );
+    QVERIFY( pdataimp1 !=0 );
+    QString strtxt1 = "input texts";
+    pdataimp1->setText(strtxt1);
+    QVERIFY( pdataimp1->text() == strtxt1 );
+    
+    QString strDes1 = "input descriptions";
+    pdataimp1->setDescription(strDes1);
+    QVERIFY( pdataimp1->description() == strDes1);
+    delete pdataimp1;
+    delete pForm1;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;&nbsp;
+         CpSettingFormEntryItemDataImpl(
+            EntryItemType type,
+            CpItemDataHelper &itemDataHelper,
+            const QString &text = QString(),
+            const QString &description = QString(),
+            const QString &icon = QString(),
+            const HbDataFormModelItem *parent = 0) : 
+            CpSettingFormEntryItemData(type,itemDataHelper,text,description,icon,parent);\n&nbsp;
+            
+   2. Function Descrition: \n &nbsp;&nbsp;
+        \n&nbsp;
+   3. Input Parameters: \n&nbsp;&nbsp;
+       EntryItemType type\n&nbsp;&nbsp;
+       CpItemDataHelper &itemDataHelper\n&nbsp;&nbsp;
+       QString &text\n&nbsp;&nbsp;
+       QString &description\n&nbsp;&nbsp;
+       HbIcon &icon\n&nbsp;&nbsp;
+       HbDataFormModelItem *parent\n&nbsp;
+       
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpSettingFormEntryItemData::testCpSettingFormEntryItemDataWithButtonTypeNullPointer()
+    {
+    HbDataForm * pForm1 = new HbDataForm();
+    QVERIFY(pForm1 != 0);
+    
+    CpSettingFormEntryItemDataImpl<CpBaseSettingView> *pdataimp1 = new CpSettingFormEntryItemDataImpl<CpBaseSettingView>( CpSettingFormEntryItemData::ButtonEntryItem, 0, "text", "description" );
+    QVERIFY( pdataimp1 !=0 );
+    QString strtxt1 = "input texts";
+    pdataimp1->setText(strtxt1);
+    QVERIFY( pdataimp1->text() == strtxt1 );
+    
+    QString strDes1 = "input descriptions";
+    pdataimp1->setDescription(strDes1);
+    QVERIFY( pdataimp1->description() == strDes1);
+    delete pdataimp1;
+    delete pForm1;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;&nbsp;
+         CpSettingFormEntryItemDataImpl(
+            EntryItemType type,
+            CpItemDataHelper &itemDataHelper,
+            const QString &text = QString(),
+            const QString &description = QString(),
+            const QString &icon = QString(),
+            const HbDataFormModelItem *parent = 0) : 
+            CpSettingFormEntryItemData(type,itemDataHelper,text,description,icon,parent);\n&nbsp;
+            
+   2. Function Descrition: \n &nbsp;&nbsp;
+        \n&nbsp;
+   3. Input Parameters: \n&nbsp;&nbsp;
+       EntryItemType type\n&nbsp;&nbsp;
+       CpItemDataHelper &itemDataHelper\n&nbsp;&nbsp;
+       QString &text\n&nbsp;&nbsp;
+       QString &description\n&nbsp;&nbsp;
+       HbIcon &icon\n&nbsp;&nbsp;
+       HbDataFormModelItem *parent\n&nbsp;
+       
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpSettingFormEntryItemData::testCpSettingFormEntryItemDataWithInvalidTypeNullPointer()
+    {
+    HbDataForm * pForm1 = new HbDataForm();
+    QVERIFY(pForm1 != 0);
+    
+    CpSettingFormEntryItemDataImpl<CpBaseSettingView> *pdataimp1 = new CpSettingFormEntryItemDataImpl<CpBaseSettingView>( CpSettingFormEntryItemData::ButtonEntryItem, 0, "text", "description" );
+    QVERIFY( pdataimp1 !=0 );
+    QString strtxt1 = "input texts";
+    pdataimp1->setText(strtxt1);
+    QVERIFY( pdataimp1->text() == strtxt1 );
+    
+    QString strDes1 = "input descriptions";
+    pdataimp1->setDescription(strDes1);
+    QVERIFY( pdataimp1->description() == strDes1);
+    delete pdataimp1;
+    delete pForm1;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;&nbsp;
+         CpSettingFormEntryItemData(const HbDataFormModelItem *parent);\n&nbsp;
+            
+   2. Function Descrition: \n &nbsp;&nbsp;
+        \n&nbsp;
+   3. Input Parameters: \n&nbsp;&nbsp;
+       HbDataFormModelItem *parent\n&nbsp;
+       
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpSettingFormEntryItemData::testCpSettingFormEntryItemDataWithParentParam()
+    {
+    MyCpSettingFormEntryItemData * item = new MyCpSettingFormEntryItemData(0);
+    QVERIFY(item != 0);
+    
+    delete item;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;&nbsp;
+         onLaunchView();\n&nbsp;
+            
+   2. Function Descrition: \n &nbsp;&nbsp;
+        \n&nbsp;
+   3. Input Parameters: \n&nbsp;&nbsp;
+       QString &text\n&nbsp;&nbsp;
+       QString &description\n&nbsp;&nbsp;
+       HbIcon &icon\n&nbsp;&nbsp;
+       HbDataFormModelItem *parent\n&nbsp;
+       
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpSettingFormEntryItemData::testOnLaunchViewNoParam()
+    {
+    HbDataForm *pForm2 = new HbDataForm(0);
+    QVERIFY(pForm2 != 0);
+    
+    CpItemDataHelper *pHelper2 = new CpItemDataHelper(pForm2);
+    QVERIFY( pHelper2 != 0 );
+    
+    CpSettingFormEntryItemDataImpl<CpBaseSettingView> *pdataimp2 = new CpSettingFormEntryItemDataImpl<CpBaseSettingView>( *pHelper2, "text", "description"  );
+    QVERIFY( pdataimp2 !=0 );
+    
+    pdataimp2->onLaunchView();
+    pdataimp2->onLaunchView();
+    
+    QString strtxt2 = "input texts";
+    pdataimp2->setText(strtxt2);
+    QVERIFY( pdataimp2->text() == strtxt2 );
+    
+    QString strDes2 = "input descriptions";
+    pdataimp2->setDescription(strDes2);
+    QVERIFY( pdataimp2->description() == strDes2);
+    
+    delete pdataimp2;
+    delete pHelper2;
+    delete pForm2;
+    }
+
+QTEST_MAIN(TestCpSettingFormEntryItemData)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cpsettingformentryitemdata/src/ut_cpsettingformentryitemdata.h	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,54 @@
+/*
+* 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:  
+*       test application for qt control panel public apis.
+*/
+
+#ifndef UT_CP_SETTING_FORM_ENTRY_ITEM_DATA_H
+#define UT_CP_SETTING_FORM_ENTRY_ITEM_DATA_H
+
+#include <QObject>
+
+class TestCpSettingFormEntryItemData : public QObject
+{
+    Q_OBJECT
+    
+private slots:
+    void initTestCase();
+    void cleanupTestCase();
+
+//public slots:
+    void testCpSettingFormEntryItemDataWithHelperNoForm();
+    void testCpSettingFormEntryItemDataWithHelperAndForm();
+    void testCpSettingFormEntryItemDataWithForm();
+    void testCpSettingFormEntryItemDataWithListTypeAndForm();
+    void testCpSettingFormEntryItemDataWithButtonTypeAndForm();
+    void testCpSettingFormEntryItemData005();
+    void testCpSettingFormEntryItemData005a();
+    void testCpSettingFormEntryItemDataWithListTypeAndHelper();
+    void testCpSettingFormEntryItemDataWithButtonTypeAndHelper();
+    void testCpSettingFormEntryItemDataWithListTypeAndHelperForm();
+    void testCpSettingFormEntryItemDataWithButtonTypeAndHelperForm();
+    void testCpSettingFormEntryItemDataWithFormParam();
+    void testCpSettingFormEntryItemDataWithHelperParam();
+    void testCpSettingFormEntryItemDataWithHelperForm();
+    void testCpSettingFormEntryItemDataWithListTypeNullPointer();
+    void testCpSettingFormEntryItemDataWithButtonTypeNullPointer();
+    void testCpSettingFormEntryItemDataWithInvalidTypeNullPointer();
+    void testCpSettingFormEntryItemDataWithParentParam();
+    
+    void testOnLaunchViewNoParam();
+};
+
+#endif // UT_CP_SETTING_FORM_ENTRY_ITEM_DATA_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cpsettingformentryitemdata/ut_cpsettingformentryitemdata.pri	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,26 @@
+#
+# 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: 
+#
+
+HEADERS   += src/ut_cpsettingformentryitemdata.h \
+			src/mycpsettingformentryitemdata.h
+	
+SOURCES   += src/ut_cpsettingformentryitemdata.cpp \
+    src/mycpsettingformentryitemdata.cpp
+
+INCLUDEPATH += . \
+	 src/\
+	 ../../../src/inc \
+	 ../../../controlpanel_plat/inc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cpsettingformentryitemdata/ut_cpsettingformentryitemdata.pro	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,25 @@
+#
+# 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: 
+#
+
+TEMPLATE = app
+TARGET = ut_cpsettingformentryitemdata 
+
+include (../ut_common.pri)
+include (ut_cpsettingformentryitemdata.pri)
+
+symbian: { 
+    TARGET.UID3 = 0xEF97598F
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cpsettingformitemdata/src/ut_cpsettingformitemdata.cpp	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,335 @@
+/*
+* 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:  
+*       test application for qt control panel public apis.
+*/
+
+#include "ut_cpsettingformitemdata.h"
+
+#include <cpsettingformitemdata.h>
+#include <QtTest/QtTest>
+
+/*!
+    \class TestCpSettingFormItemData
+    \brief This class is used for the unit test for class CpSettingFormItemData.\n
+      CpSettingFormItemData class is derived from HbDataFormModelItem, customed model item for control panel.\n
+      This unit test is supported by QTest.\n
+      There are total 11 test cases in this unit.\n 
+ */
+
+void TestCpSettingFormItemData::initTestCase()
+    {
+    }
+
+void TestCpSettingFormItemData::cleanupTestCase()
+    {
+    QCoreApplication::processEvents();
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;&nbsp;
+      CpSettingFormItemData(HbDataFormModelItem::DataItemType type,
+        const QString &label,
+        const HbDataFormModelItem *parent = 0);\n&nbsp;
+            
+   2. Function Descrition: \n &nbsp;&nbsp;
+        Construct a new CpSettingFormItemData with the given type,label and parent.\n&nbsp;
+   3. Input Parameters: \n&nbsp;&nbsp;
+           HbDataFormModelItem::DataItemType type\n&nbsp;&nbsp;
+           QString &label\n&nbsp;&nbsp;
+           HbDataFormModelItem *parent\n&nbsp;
+       
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpSettingFormItemData::testCpSettingFormItemDataWithTypeTextItem()
+    {
+    CpSettingFormItemData *pdata = new CpSettingFormItemData( HbDataFormModelItem::TextItem, "label" );
+    QVERIFY( pdata !=0 );
+    QVERIFY( pdata->type() == HbDataFormModelItem::TextItem );
+    QVERIFY( pdata->label() == "label");
+    
+    delete pdata;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;&nbsp;
+      CpSettingFormItemData(HbDataFormModelItem::DataItemType type,
+        const QString &label,
+        const HbDataFormModelItem *parent = 0);\n&nbsp;
+            
+   2. Function Descrition: \n &nbsp;&nbsp;
+        Construct a new CpSettingFormItemData with the given type,label and parent.\n&nbsp;
+   3. Input Parameters: \n&nbsp;&nbsp;
+           HbDataFormModelItem::DataItemType type\n&nbsp;&nbsp;
+           QString &label\n&nbsp;&nbsp;
+           HbDataFormModelItem *parent\n&nbsp;
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpSettingFormItemData::testCpSettingFormItemDataWithTypeSliderItem()
+    {
+    CpSettingFormItemData *pdata = new CpSettingFormItemData( HbDataFormModelItem::SliderItem, "label" );
+    QVERIFY( pdata !=0 );
+    QVERIFY( pdata->type() == HbDataFormModelItem::SliderItem );
+    QVERIFY( pdata->label() == "label");
+    
+    delete pdata;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;&nbsp;
+      CpSettingFormItemData(HbDataFormModelItem::DataItemType type,
+        const QString &label,
+        const HbDataFormModelItem *parent = 0);\n&nbsp;
+            
+   2. Function Descrition: \n &nbsp;&nbsp;
+        Construct a new CpSettingFormItemData with the given type,label and parent.\n&nbsp;
+   3. Input Parameters: \n&nbsp;&nbsp;
+           HbDataFormModelItem::DataItemType type\n&nbsp;&nbsp;
+           QString &label\n&nbsp;&nbsp;
+           HbDataFormModelItem *parent\n&nbsp;
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpSettingFormItemData::testCpSettingFormItemDataWithTypeVolumeSliderItem()
+    {
+    CpSettingFormItemData * pdata = new CpSettingFormItemData( HbDataFormModelItem::VolumeSliderItem, "label" );
+    QVERIFY( pdata !=0 );
+    QVERIFY( pdata->type() == HbDataFormModelItem::VolumeSliderItem );
+    QVERIFY( pdata->label() == "label");
+    
+    delete pdata;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;&nbsp;
+      CpSettingFormItemData(HbDataFormModelItem::DataItemType type,
+        const QString &label,
+        const HbDataFormModelItem *parent = 0);\n&nbsp;
+            
+   2. Function Descrition: \n &nbsp;&nbsp;
+        Construct a new CpSettingFormItemData with the given type,label and parent.\n&nbsp;
+   3. Input Parameters: \n&nbsp;&nbsp;
+           HbDataFormModelItem::DataItemType type\n&nbsp;&nbsp;
+           QString &label\n&nbsp;&nbsp;
+           HbDataFormModelItem *parent\n&nbsp;
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpSettingFormItemData::testCpSettingFormItemDataWithTypeCheckBoxItem()
+    {
+    CpSettingFormItemData * pdata = new CpSettingFormItemData( HbDataFormModelItem::CheckBoxItem, "label" );
+    QVERIFY( pdata !=0 );
+    QVERIFY( pdata->type() == HbDataFormModelItem::CheckBoxItem );
+    QVERIFY( pdata->label() == "label");
+    
+    delete pdata;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;&nbsp;
+      CpSettingFormItemData(HbDataFormModelItem::DataItemType type,
+        const QString &label,
+        const HbDataFormModelItem *parent = 0);\n&nbsp;
+            
+   2. Function Descrition: \n &nbsp;&nbsp;
+        Construct a new CpSettingFormItemData with the given type,label and parent.\n&nbsp;
+   3. Input Parameters: \n&nbsp;&nbsp;
+           HbDataFormModelItem::DataItemType type\n&nbsp;&nbsp;
+           QString &label\n&nbsp;&nbsp;
+           HbDataFormModelItem *parent\n&nbsp;
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpSettingFormItemData::testCpSettingFormItemDataWithTypeToggleValueItem()
+    {
+    CpSettingFormItemData * pdata = new CpSettingFormItemData( HbDataFormModelItem::ToggleValueItem, "label" );
+    QVERIFY( pdata !=0 );
+    QVERIFY( pdata->type() == HbDataFormModelItem::ToggleValueItem );
+    QVERIFY( pdata->label() == "label");
+    
+    delete pdata;
+    }
+    
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;&nbsp;
+      CpSettingFormItemData(HbDataFormModelItem::DataItemType type,
+        const QString &label,
+        const HbDataFormModelItem *parent = 0);\n&nbsp;
+            
+   2. Function Descrition: \n &nbsp;&nbsp;
+        Construct a new CpSettingFormItemData with the given type,label and parent.\n&nbsp;
+   3. Input Parameters: \n&nbsp;&nbsp;
+           HbDataFormModelItem::DataItemType type\n&nbsp;&nbsp;
+           QString &label\n&nbsp;&nbsp;
+           HbDataFormModelItem *parent\n&nbsp;
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpSettingFormItemData::testCpSettingFormItemDataWithTypeRadioButtonListItem()
+    {
+    CpSettingFormItemData * pdata = new CpSettingFormItemData( HbDataFormModelItem::RadioButtonListItem, "label" );
+    QVERIFY( pdata !=0 );
+    QVERIFY( pdata->type() == HbDataFormModelItem::RadioButtonListItem );
+    QVERIFY( pdata->label() == "label");
+    
+    delete pdata;
+    }
+    
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;&nbsp;
+      CpSettingFormItemData(HbDataFormModelItem::DataItemType type,
+        const QString &label,
+        const HbDataFormModelItem *parent = 0);\n&nbsp;
+            
+   2. Function Descrition: \n &nbsp;&nbsp;
+        Construct a new CpSettingFormItemData with the given type,label and parent.\n&nbsp;
+   3. Input Parameters: \n&nbsp;&nbsp;
+           HbDataFormModelItem::DataItemType type\n&nbsp;&nbsp;
+           QString &label\n&nbsp;&nbsp;
+           HbDataFormModelItem *parent\n&nbsp;
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpSettingFormItemData::testCpSettingFormItemDataWithTypeMultiselectionItem()
+    {
+    CpSettingFormItemData * pdata = new CpSettingFormItemData( HbDataFormModelItem::MultiselectionItem, "label" );
+    QVERIFY( pdata !=0 );
+    QVERIFY( pdata->type() == HbDataFormModelItem::MultiselectionItem );
+    QVERIFY( pdata->label() == "label");
+    
+    delete pdata;
+    }
+    
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;&nbsp;
+      CpSettingFormItemData(HbDataFormModelItem::DataItemType type,
+        const QString &label,
+        const HbDataFormModelItem *parent = 0);\n&nbsp;
+            
+   2. Function Descrition: \n &nbsp;&nbsp;
+        Construct a new CpSettingFormItemData with the given type,label and parent.\n&nbsp;
+   3. Input Parameters: \n&nbsp;&nbsp;
+           HbDataFormModelItem::DataItemType type\n&nbsp;&nbsp;
+           QString &label\n&nbsp;&nbsp;
+           HbDataFormModelItem *parent\n&nbsp;
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpSettingFormItemData::testCpSettingFormItemDataWithTypeComboBoxItem()
+    {
+    CpSettingFormItemData * pdata = new CpSettingFormItemData( HbDataFormModelItem::ComboBoxItem, "label" );
+    QVERIFY( pdata !=0 );
+    QVERIFY( pdata->type() == HbDataFormModelItem::ComboBoxItem );
+    QVERIFY( pdata->label() == "label");
+    
+    delete pdata;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;&nbsp;
+      CpSettingFormItemData(HbDataFormModelItem::DataItemType type,
+        const QString &label,
+        const HbDataFormModelItem *parent = 0);\n&nbsp;
+            
+   2. Function Descrition: \n &nbsp;&nbsp;
+        Construct a new CpSettingFormItemData with the given type,label and parent.\n&nbsp;
+   3. Input Parameters: \n&nbsp;&nbsp;
+           HbDataFormModelItem::DataItemType type\n&nbsp;&nbsp;
+           QString &label\n&nbsp;&nbsp;
+           HbDataFormModelItem *parent\n&nbsp;
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpSettingFormItemData::testCpSettingFormItemDataWithParent()
+    {
+    CpSettingFormItemData * pdata = new CpSettingFormItemData( HbDataFormModelItem::SliderItem, "parent", 0 );
+    QVERIFY( pdata !=0 );
+    QVERIFY( pdata->type() == HbDataFormModelItem::SliderItem );
+
+    CpSettingFormItemData * cdata = new CpSettingFormItemData( HbDataFormModelItem::TextItem, "label", pdata);
+    QVERIFY( cdata != 0 );
+    QVERIFY( cdata->type() == HbDataFormModelItem::TextItem );
+    
+    delete pdata;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;&nbsp;
+      CpSettingFormItemData(HbDataFormModelItem::DataItemType type,
+        const QString &label,
+        const HbDataFormModelItem *parent = 0);\n&nbsp;
+            
+   2. Function Descrition: \n &nbsp;&nbsp;
+        Construct a new CpSettingFormItemData with the given type,label and parent.\n&nbsp;
+   3. Input Parameters: \n&nbsp;&nbsp;
+           HbDataFormModelItem::DataItemType type\n&nbsp;&nbsp;
+           QString &label\n&nbsp;&nbsp;
+           HbDataFormModelItem *parent\n&nbsp;
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpSettingFormItemData::testCpSettingFormItemDataNoParameter()
+    {
+    CpSettingFormItemData * pdata = new CpSettingFormItemData();
+    QVERIFY( pdata !=0 );
+    pdata->setType(HbDataFormModelItem::SliderItem);
+    pdata->setLabel("label");
+    
+    QVERIFY( pdata->type() == HbDataFormModelItem::SliderItem );
+    delete pdata;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;&nbsp;
+      CpSettingFormItemData(HbDataFormModelItem::DataItemType type,
+        const QString &label,
+        const HbDataFormModelItem *parent = 0);\n&nbsp;
+            
+   2. Function Descrition: \n &nbsp;&nbsp;
+        Construct a new CpSettingFormItemData with the given type,label and parent.\n&nbsp;
+   3. Input Parameters: \n&nbsp;&nbsp;
+           HbDataFormModelItem::DataItemType type\n&nbsp;&nbsp;
+           QString &label\n&nbsp;&nbsp;
+           HbDataFormModelItem *parent\n&nbsp;
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpSettingFormItemData::testCpSettingFormItemDataWithParentNoType()
+    {
+    CpSettingFormItemData * pdata = new CpSettingFormItemData( HbDataFormModelItem::SliderItem, "parent", 0 );
+    QVERIFY( pdata !=0 );
+    QVERIFY( pdata->type() == HbDataFormModelItem::SliderItem );
+
+    CpSettingFormItemData * cdata = new CpSettingFormItemData(pdata);
+    QVERIFY( cdata != 0 );
+    cdata->setType(HbDataFormModelItem::TextItem);
+    QVERIFY( cdata->type() == HbDataFormModelItem::TextItem );
+    
+    delete pdata;
+    }
+
+QTEST_APPLESS_MAIN(TestCpSettingFormItemData)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cpsettingformitemdata/src/ut_cpsettingformitemdata.h	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,45 @@
+/*
+* 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:  
+*       test application for qt control panel public apis.
+*/
+
+#ifndef TEST_CP_SETTING_FORM_ITEM_DATA_H
+#define TEST_CP_SETTING_FORM_ITEM_DATA_H
+
+#include <QObject>
+
+class TestCpSettingFormItemData : public QObject
+{
+    Q_OBJECT
+    
+private slots:
+    void initTestCase();
+    void cleanupTestCase();
+    
+//public slots:
+    void testCpSettingFormItemDataWithTypeTextItem();
+    void testCpSettingFormItemDataWithTypeSliderItem();
+    void testCpSettingFormItemDataWithTypeVolumeSliderItem();
+    void testCpSettingFormItemDataWithTypeCheckBoxItem();
+    void testCpSettingFormItemDataWithTypeToggleValueItem();
+    void testCpSettingFormItemDataWithTypeRadioButtonListItem();
+    void testCpSettingFormItemDataWithTypeMultiselectionItem();
+    void testCpSettingFormItemDataWithTypeComboBoxItem();
+    void testCpSettingFormItemDataWithParent();
+    void testCpSettingFormItemDataNoParameter();
+    void testCpSettingFormItemDataWithParentNoType();
+};
+
+#endif // TEST_CP_SETTING_FORM_ITEM_DATA_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cpsettingformitemdata/ut_cpsettingformitemdata.pri	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,23 @@
+#
+# 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: 
+#
+
+HEADERS   += src/ut_cpsettingformitemdata.h
+SOURCES   += src/ut_cpsettingformitemdata.cpp 
+
+INCLUDEPATH += . \
+							 src/\
+							 ../../../src/inc \
+							 ../../../controlpanel_plat/inc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cpsettingformitemdata/ut_cpsettingformitemdata.pro	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,25 @@
+#
+# 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: 
+#
+
+TEMPLATE = app
+TARGET = ut_cpsettingformitemdata 
+
+include (../ut_common.pri)
+include (ut_cpsettingformitemdata.pri)
+
+symbian: { 
+    TARGET.UID3 = 0xEA4617EA
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cputility/src/ut_cputility.cpp	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,190 @@
+/*
+* 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:  
+*       test application for qt control panel public apis.
+*/
+#include "ut_cputility.h"
+#include "cputility.h"
+
+#include <QtTest/QtTest>
+
+/*!
+    \class TestCpUtility
+    \brief This class is used for the unit test for class CpUtility.\n
+      CpUtility class is an utility class to provide functionalities about drive and dir related processing.\n
+      This unit test is supported by QTest.\n
+      There are total 6 test cases in this unit.\n 
+ */
+
+void TestCpUtility::initTestCase()
+    {
+    }
+
+void TestCpUtility::cleanupTestCase()
+    {
+    QCoreApplication::processEvents();
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;&nbsp;
+      static CpUtility::drives();\n&nbsp;
+            
+   2. Function Descrition: \n &nbsp;&nbsp;
+        Get and store driver letter into QStringList object, using QDir::drives().\n&nbsp;
+   3. Input Parameters: none.\n&nbsp;&nbsp;
+       
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpUtility::testDrivesOnce()
+    {
+    QStringList strListDrives = CpUtility::drives();
+    QVERIFY(!strListDrives.isEmpty());
+    
+    verifyDrivesList(strListDrives);
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;&nbsp;
+      static CpUtility::drives();\n&nbsp;
+            
+   2. Function Descrition: \n &nbsp;&nbsp;
+        Get and store driver letter into QStringList object, using QDir::drives().\n&nbsp;
+   3. Input Parameters: none.\n&nbsp;&nbsp;
+       
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpUtility::testDrivesRepeatTwice()
+    {
+    QStringList strListDrives1 = CpUtility::drives();
+    QVERIFY(!strListDrives1.isEmpty());
+    
+    verifyDrivesList(strListDrives1);
+    
+    QStringList strListDrives2 = CpUtility::drives();
+    QVERIFY(!strListDrives2.isEmpty());
+    
+    verifyDrivesList(strListDrives2);
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;&nbsp;
+      static CpUtility::pluginDirectories();\n&nbsp;
+            
+   2. Function Descrition: \n &nbsp;&nbsp;
+        Get and store plugin directories into QStringList object.\n&nbsp;
+   3. Input Parameters: none.\n&nbsp;&nbsp;
+       
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpUtility::testPluginDirectoriesOnce()
+    {
+    QStringList strListDirs = CpUtility::pluginDirectories();
+    QVERIFY(!strListDirs.isEmpty());
+    
+    verifyDirectoriesList(strListDirs);
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;&nbsp;
+      static CpUtility::pluginDirectories();\n&nbsp;
+            
+   2. Function Descrition: \n &nbsp;&nbsp;
+        Get and store plugin directories into QStringList object.\n&nbsp;
+   3. Input Parameters: none.\n&nbsp;&nbsp;
+       
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpUtility::testPluginDirectoriesRepeatTwice()
+    {
+    QStringList strListDirs1 = CpUtility::pluginDirectories();
+    QVERIFY(!strListDirs1.isEmpty());
+    
+    verifyDirectoriesList(strListDirs1);
+    
+    QStringList strListDirs2 = CpUtility::pluginDirectories();
+    QVERIFY(!strListDirs2.isEmpty());
+    
+    verifyDirectoriesList(strListDirs2);
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;&nbsp;
+      static CpUtility::configFileDirectories();\n&nbsp;
+            
+   2. Function Descrition: \n &nbsp;&nbsp;
+        Get and store cpcfg file directories into QStringList object.\n&nbsp;
+   3. Input Parameters: none.\n&nbsp;&nbsp;
+       
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpUtility::testConfigFileDirectoriesOnce()
+    {
+    QStringList strListConfigDirs = CpUtility::configFileDirectories();
+    QVERIFY(!strListConfigDirs.isEmpty());
+    
+    verifyConfigFileDirectories(strListConfigDirs);
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;&nbsp;
+      static CpUtility::configFileDirectories();\n&nbsp;
+            
+   2. Function Descrition: \n &nbsp;&nbsp;
+        Get and store cpcfg file directories into QStringList object.\n&nbsp;
+   3. Input Parameters: none.\n&nbsp;&nbsp;
+       
+   4. Expected result: \n&nbsp;&nbsp;
+       case run without verify failed.\n 
+ */
+void TestCpUtility::testConfigFileDirectoriesRepeatTwice()
+    {
+    QStringList strListConfigDirs1 = CpUtility::configFileDirectories();
+    QVERIFY(!strListConfigDirs1.isEmpty());
+    
+    verifyConfigFileDirectories(strListConfigDirs1);
+    
+    QStringList strListConfigDirs2 = CpUtility::configFileDirectories();
+    QVERIFY(!strListConfigDirs2.isEmpty());
+    
+    verifyConfigFileDirectories(strListConfigDirs2);
+    }
+
+void TestCpUtility::verifyDrivesList(const QStringList &strList)
+    {
+    QVERIFY( strList.contains("C:", Qt::CaseInsensitive) );
+    QVERIFY( strList.contains("Z:", Qt::CaseInsensitive) );
+    }
+
+void TestCpUtility::verifyDirectoriesList(const QStringList &strList)
+    {
+    QVERIFY( strList.contains(QString("C:/resource/qt/plugins/controlpanel") + QDir::separator(), Qt::CaseInsensitive));
+    }
+
+void TestCpUtility::verifyConfigFileDirectories(const QStringList &strList)
+    {
+    QVERIFY( strList.contains(QString("C:/resource/qt/plugins/controlpanel/config") + QDir::separator(), Qt::CaseInsensitive));
+    }
+
+QTEST_APPLESS_MAIN(TestCpUtility)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cputility/src/ut_cputility.h	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,47 @@
+/*
+* 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:  
+*       test application for qt control panel public apis.
+*/
+
+#ifndef TEST_CP_UTILITY_H
+#define TEST_CP_UTILITY_H
+
+#include <QObject>
+
+class TestCpUtility : public QObject
+{
+    Q_OBJECT
+    
+private slots:
+    void initTestCase();
+    void cleanupTestCase();
+    
+//public slots:
+    void testDrivesOnce();
+    void testDrivesRepeatTwice();
+    
+    void testPluginDirectoriesOnce();
+    void testPluginDirectoriesRepeatTwice();
+    
+    void testConfigFileDirectoriesOnce();
+    void testConfigFileDirectoriesRepeatTwice();
+    
+private:
+    void verifyDrivesList(const QStringList &strList);
+    void verifyDirectoriesList(const QStringList &strList);
+    void verifyConfigFileDirectories(const QStringList &strList);
+};
+
+#endif // TEST_CP_PLUGIN_UTILITY_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cputility/ut_cputility.pri	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,27 @@
+#
+# 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: 
+#
+
+HEADERS   += src/ut_cputility.h \
+	../../../src/cpframework/src/cputility.h \
+	
+SOURCES   += src/ut_cputility.cpp \
+    ../../../src/cpframework/src/cputility.cpp
+
+INCLUDEPATH += . \
+	 src/\
+	 ../../../src/inc \
+	 ../../../controlpanel_plat/inc \
+	 ../../../src/cpframework/src 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cputility/ut_cputility.pro	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,25 @@
+#
+# 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: 
+#
+
+TEMPLATE = app
+TARGET = ut_cputility 
+
+include (../ut_common.pri)
+include (ut_cputility.pri)
+
+symbian: { 
+    TARGET.UID3 = 0xE98BA02A
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cpviewlauncher/src/ut_cpviewlauncher.cpp	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,173 @@
+/*
+* 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:  
+*       test application for qt control panel public apis.
+*/
+#include "ut_cpviewlauncher.h"
+
+#include "cpviewlauncher.h"
+#include "cpbasesettingview.h"
+
+#include <QtTest/QtTest>
+#include <hbdataform.h>
+#include <hbpushbutton.h>
+#include <HbMainWindow>
+#include <QSignalSpy>
+#include <QList>
+
+/*!
+    \class TestCpViewLauncher
+    \brief This class is used for the unit test for class CpViewLauncher.\n
+      CpViewLauncher class is used for add a HbView into current HbMainWindow, \n
+      and set the new added HbView instance as current view object, then completed \n
+      related signal/slot setting.\n 
+      This unit test is supported by QTest.\n
+      There are total 3 test cases in this unit.\n
+ */
+
+/*!
+ * init function called by QTest framework.
+ */
+void TestCpViewLauncher::initTestCase()
+    {
+    }
+
+/*!
+ * cleanup function used by QTest framework.
+ */
+void TestCpViewLauncher::cleanupTestCase()
+    {
+    QCoreApplication::processEvents();
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;&nbsp;
+      static void launchView(HbView *view);\n&nbsp;
+            
+   2. Function Descrition: \n &nbsp;&nbsp;
+        Launch an exist CpBaseSettingView object, add the CpBaseSettingView object into HbMainWindow.\n&nbsp;
+   3. Input Parameters: \n&nbsp;&nbsp;
+       @param: HbView *view\n
+       
+   4. Expected result: \n&nbsp;&nbsp;
+       View can't be launched for there is no HbMainWindow created.\n 
+ */
+void TestCpViewLauncher::testLaunchViewNoMainWindow()
+    {
+    CpBaseSettingView * pView1 = new CpBaseSettingView(0);
+    QVERIFY( pView1 != 0 );
+    HbDataForm *pForm = new HbDataForm(0);
+    QVERIFY( pForm != 0 );
+    
+    pView1->setWidget(pForm);
+    HbDataForm *pForm1 = qobject_cast<HbDataForm *>(pView1->widget());
+    QVERIFY( pForm1 != 0);
+    QVERIFY( pForm1 == pForm );
+    
+    CpBaseSettingView * pView2 = new CpBaseSettingView(pForm);
+    QVERIFY( pView2 != 0 );
+    
+    QObject::connect(this, SIGNAL(callAboutToClose()), pView1, SIGNAL(aboutToClose()));
+    QObject::connect(this, SIGNAL(callAboutToClose()), pView2, SIGNAL(aboutToClose()));
+
+    CpViewLauncher::launchView(pView1);
+    CpViewLauncher::launchView(pView2);
+    
+    emit callAboutToClose();
+    emit callAboutToClose();
+    
+    delete pView1;
+    delete pView2;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;&nbsp;
+      static void launchView(HbView *view);\n&nbsp;
+            
+   2. Function Descrition: \n &nbsp;&nbsp;
+       Launch an exist CpBaseSettingView object, add the CpBaseSettingView object into HbMainWindow.\n&nbsp;
+   3. Pre-condition: \n &nbsp;&nbsp;
+       HbMainWindow object created correctly.
+   
+   4. Input: a pointer to CpBaseSettingView object\n&nbsp;&nbsp;
+       @param: HbView *view\n
+       
+   5. Expected result: \n&nbsp;&nbsp;
+       View launched successfully.\n 
+ */
+void TestCpViewLauncher::testLaunchViewWithMainWindow()
+    {
+    mainWindow = new HbMainWindow;
+    QVERIFY( mainWindow != 0 );
+    
+    mainWindow->show();
+    
+    CpBaseSettingView * pView1 = new CpBaseSettingView(0);
+    QVERIFY( pView1 != 0 );
+    HbDataForm *pForm = new HbDataForm(0);
+    QVERIFY( pForm != 0 );
+    
+    pView1->setWidget(pForm);
+    HbDataForm *pForm1 = qobject_cast<HbDataForm *>(pView1->widget());
+    QVERIFY( pForm1 != 0);
+    QVERIFY( pForm1 == pForm );
+    
+    CpBaseSettingView * pView2 = new CpBaseSettingView(pForm);
+    QVERIFY( pView2 != 0 );
+    
+    QObject::connect(this, SIGNAL(callAboutToClose()), pView1, SIGNAL(aboutToClose()));
+    QObject::connect(this, SIGNAL(callAboutToClose()), pView2, SIGNAL(aboutToClose()));
+    
+    QObject::connect(this, SIGNAL(callAboutToClose()), qApp, SLOT(quit()));
+    
+    CpViewLauncher::launchView(pView1);
+    CpViewLauncher::launchView(pView2);
+    
+    emit callAboutToClose();
+    emit callAboutToClose();
+    
+    delete mainWindow;
+    mainWindow = 0;
+    }
+
+/*!
+ * Test Case Description:\n &nbsp;
+ * 1. Fucntion Name: \n&nbsp;&nbsp;
+      static void launchView(HbView *view);\n&nbsp;
+            
+   2. Function Descrition: \n &nbsp;&nbsp;
+        Launch an exist CpBaseSettingView object, add the CpBaseSettingView object into HbMainWindow.\n&nbsp;
+   3. Input Parameters: \n&nbsp;&nbsp;
+       @param: 0\n
+   4. Expected result: \n&nbsp;&nbsp;
+       launchView do nothing for the 0 parameter.\n 
+ */
+void TestCpViewLauncher::testLaunchViewNoView()
+    {
+    HbPushButton *widget = new HbPushButton();
+    QVERIFY(widget != 0);
+    CpBaseSettingView *pView1 = new CpBaseSettingView(widget);
+    QVERIFY(pView1!=0);
+    HbPushButton *button = qobject_cast<HbPushButton *>(pView1->widget());
+    QVERIFY(button != 0);
+    QVERIFY(button == widget);
+    
+    CpViewLauncher::launchView(0);
+    
+    delete pView1;
+    }
+
+QTEST_MAIN(TestCpViewLauncher)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cpviewlauncher/src/ut_cpviewlauncher.h	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,45 @@
+/*
+* 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:  
+*       test application for qt control panel public apis.
+*/
+
+#ifndef UT_CP_VIEW_LAUNCHER_H
+#define UT_CP_VIEW_LAUNCHER_H
+
+#include <QObject>
+
+class HbMainWindow;
+
+class TestCpViewLauncher : public QObject
+{
+    Q_OBJECT
+    
+signals:
+    void callAboutToClose();
+    
+private slots:
+    void initTestCase();
+    void cleanupTestCase();
+    
+//public slots:
+    void testLaunchViewNoMainWindow();
+    void testLaunchViewWithMainWindow();
+    void testLaunchViewNoView();
+    
+private:
+    HbMainWindow* mainWindow;
+};
+
+#endif // UT_CP_VIEW_LAUNCHER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cpviewlauncher/ut_cpviewlauncher.pri	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,26 @@
+#
+# 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: 
+#
+
+HEADERS   += src/ut_cpviewlauncher.h \
+	../../../src/cpframework/src/cpviewlauncher.h
+	
+SOURCES   += src/ut_cpviewlauncher.cpp \
+    ../../../src/cpframework/src/cpviewlauncher.cpp
+
+INCLUDEPATH += . \
+							 src/\
+							 ../../../src/inc \
+							 ../../../controlpanel_plat/inc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/tsrc/unit/ut_cpviewlauncher/ut_cpviewlauncher.pro	Tue Aug 24 10:30:25 2010 +0800
@@ -0,0 +1,25 @@
+#
+# 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: 
+#
+
+TEMPLATE = app
+TARGET = ut_cpviewlauncher 
+
+include (../ut_common.pri)
+include (ut_cpviewlauncher.pri)
+
+symbian: { 
+    TARGET.UID3 = 0xEF52815A
+}
--- a/gsprofilesrv_plat/profiles_engine_api/inc/ProfileInternal.hrh	Fri Jun 25 17:09:30 2010 +0800
+++ b/gsprofilesrv_plat/profiles_engine_api/inc/ProfileInternal.hrh	Tue Aug 24 10:30:25 2010 +0800
@@ -85,7 +85,7 @@
     EProfileInformationVibra   = 0x00000020
     };
 
-// Since 10.1
+// Deprecated Since 10.1
 enum TProfileMasterVolume
     {
     EProfileMasterVolumeSoft = 1,
Binary file profilesservices/ProfileEngine/conf/profilesengine.confml has changed