201035
authorhgs
Thu, 02 Sep 2010 17:14:05 +0800
changeset 55 4c15d9aa2384
parent 47 dbe66a66f6a9
child 62 531951b2e59a
201035
controlpanel/conf/bld.inf
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/cpsettingformentryitemdata.h
controlpanel/controlpanel_plat/inc/cpsettingformentryitemdataimpl.h
controlpanel/controlpanel_plat/inc/cpsettingformitemdata.h
controlpanel/controlpanel_plat/inc/logger.h
controlpanel/controlpanel_plat/inc/loggerglobal.h
controlpanel/controlpanel_plat/inc/logoutput.h
controlpanel/controlpanel_plat/inc/logoutputfactory.h
controlpanel/rom/bld.inf
controlpanel/rom/controlpanel.iby
controlpanel/src/cpframework/bwins/cpframeworku.def
controlpanel/src/cpframework/cpframework.pri
controlpanel/src/cpframework/cpframework.pro
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.pri
controlpanel/src/logger/logger.pro
controlpanel/src/logger/logger_export.pri
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
ftuwizardmodel/bwins/ftuwizardmodelu.def
ftuwizardmodel/eabi/ftuwizardmodelu.def
ftuwizardmodel/ftuwizardmodel.pro
gsprofilesrv_plat/controlpanel_api/controlpanel_api.pri
gsprofilesrv_plat/controlpanel_api/controlpanel_api.pro
gsprofilesrv_plat/controlpanel_api/inc/cpbasepath.h
gsprofilesrv_plat/controlpanel_api/inc/cpbasesettingview.h
gsprofilesrv_plat/controlpanel_api/inc/cpglobal.h
gsprofilesrv_plat/controlpanel_api/inc/cpitemdatahelper.h
gsprofilesrv_plat/controlpanel_api/inc/cplauncherinterface.h
gsprofilesrv_plat/controlpanel_api/inc/cplogger.h
gsprofilesrv_plat/controlpanel_api/inc/cpplugininterface.h
gsprofilesrv_plat/controlpanel_api/inc/cppluginlauncher.h
gsprofilesrv_plat/controlpanel_api/inc/cppluginloader.h
gsprofilesrv_plat/controlpanel_api/inc/cppluginutility.h
gsprofilesrv_plat/controlpanel_api/inc/cpsettingformentryitemdata.h
gsprofilesrv_plat/controlpanel_api/inc/cpsettingformentryitemdataimpl.h
gsprofilesrv_plat/controlpanel_api/inc/cpsettingformitemdata.h
gsprofilesrv_plat/controlpanel_api/inc/logger.h
gsprofilesrv_plat/controlpanel_api/inc/loggerglobal.h
gsprofilesrv_plat/controlpanel_api/inc/logoutput.h
gsprofilesrv_plat/controlpanel_api/inc/logoutputfactory.h
gsprofilesrv_plat/controlpanel_api/logger_api.pri
gsprofilesrv_plat/gsprofilesrv_plat.pro
gsprofilesrv_pub/profiles_engine_wrapper_api/tsrc/BC/ProfilesEngineWrapperAPI/src/ProEngWrapAPIBlocks.cpp
layers.sysdef.xml
package_definition.xml
package_map.xml
profilesservices/ProfileEngine/EngSrc/CProfileEngineImpl.cpp
profilesservices/ProfileEngine/EngSrc/CProfileTonesImpl.cpp
profilesservices/ProfileEngine/WrapperSrc/CProEngToneSettingsImpl.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/conf/bld.inf	Thu Sep 02 17:14:05 2010 +0800
@@ -0,0 +1,50 @@
+/*
+* ==============================================================================
+*  Name        : bld.inf
+*  Part of     :
+*  Description : This is a top level bld file to generate all libraries.
+*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
+*
+* This library is free software; you can redistribute it and/or
+* modify it under the terms of the GNU Lesser General Public
+* License as published by the Free Software Foundation; either
+* version 2 of the License, or (at your option) any later version.
+*
+* This library is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this library; if not, write to the
+* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+* Boston, MA 02111-1307, USA.
+*
+* Description:  This file provides the information required for building
+*
+*/
+
+
+#include <platform_paths.hrh>
+
+PRJ_EXPORTS
+
+
+s60settingsuis.confml           MW_LAYER_CONFML(s60settingsuis.confml) 
+s60settingsuis_101F877A.crml 	  MW_LAYER_CRML(s60settingsuis_101f877a.crml) 
+s60settingsuis_101F877B.crml 	  MW_LAYER_CRML(s60settingsuis_101f877b.crml) 
+s60settingsuis_101F877C.crml 	  MW_LAYER_CRML(s60settingsuis_101f877c.crml) 
+s60settingsuis_101F877E.crml 	  MW_LAYER_CRML(s60settingsuis_101f877e.crml) 
+s60settingsuis_101F877F.crml 	  MW_LAYER_CRML(s60settingsuis_101f877f.crml) 
+s60settingsuis_101F883B.crml 	  MW_LAYER_CRML(s60settingsuis_101f883b.crml) 
+s60settingsuis_101F8751.crml 	  MW_LAYER_CRML(s60settingsuis_101f8751.crml) 
+s60settingsuis_101F8780.crml 	  MW_LAYER_CRML(s60settingsuis_101f8780.crml) 
+s60settingsuis_101F8781.crml 	  MW_LAYER_CRML(s60settingsuis_101f8781.crml) 
+s60settingsuis_101F8782.crml 	  MW_LAYER_CRML(s60settingsuis_101f8782.crml) 
+s60settingsuis_101F8831.crml 	  MW_LAYER_CRML(s60settingsuis_101f8831.crml) 
+s60settingsuis_1000A82B.crml 	  MW_LAYER_CRML(s60settingsuis_1000a82b.crml) 
+s60settingsuis_1020720A.crml 	  MW_LAYER_CRML(s60settingsuis_1020720a.crml) 
+s60settingsuis_1028239D.crml 	  MW_LAYER_CRML(s60settingsuis_1028239d.crml) 
+s60settingsuis_2002120B.crml 	  MW_LAYER_CRML(s60settingsuis_2002120b.crml)
+
--- a/controlpanel/controlpanel_plat/inc/controlpanel_plat.pri	Thu Aug 05 11:11:52 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +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: 
-#
-
-PLATFORM_HEADERS += $$PWD/cpglobal.h \
-	$$PWD/cpbasepath.h \
-    $$PWD/cpplugininterface.h \
-    $$PWD/cppluginplatinterface.h \
-    $$PWD/cpsettingformitemdata.h \
-    $$PWD/cppluginlauncher.h \
-    $$PWD/cpbasesettingview.h \
-    $$PWD/cpitemdatahelper.h \
-    $$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 
-    
-HEADERS += $$PLATFORM_HEADERS
\ No newline at end of file
--- a/controlpanel/controlpanel_plat/inc/cpbasepath.h	Thu Aug 05 11:11:52 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +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 CPBASEPATH_H
-#define CPBASEPATH_H
-
-#include <QLatin1String>
-
-#ifdef Q_OS_SYMBIAN
-        #define CP_PLUGIN_PATH QLatin1String("/resource/qt/plugins/controlpanel")
-        #define CP_PLUGIN_CONFIG_PATH QLatin1String("/resource/qt/plugins/controlpanel/config")
-#else 
-    #ifdef _DEBUG
-        #define CP_PLUGIN_PATH QLatin1String("/ControlPanel/debug/bin")
-        #define CP_PLUGIN_CONFIG_PATH QLatin1String("/ControlPanel/debug/bin/config")
-    #else
-        #define CP_PLUGIN_PATH QLatin1String("/ControlPanel/release/bin")
-        #define CP_PLUGIN_CONFIG_PATH QLatin1String("/ControlPanel/release/bin/config")
-    #endif
-#endif 
-
-
-#endif  //CPBASEPATH_H
-
-//End of File
-
--- a/controlpanel/controlpanel_plat/inc/cpbasesettingview.h	Thu Aug 05 11:11:52 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +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 CPBASESETTINGVIEW_H
-#define CPBASESETTINGVIEW_H
-
-#include "cpglobal.h"
-#include <hbview.h>
-
-class QVariant;
-class QModelIndex;
-class HbDataForm;
-class CpBaseSettingViewPrivate;
-class CpItemDataHelper;
-
-class CP_EXPORT CpBaseSettingView : public HbView
-{
-    Q_OBJECT
-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();
-protected:
-    virtual void close();
-private:
-    Q_DISABLE_COPY(CpBaseSettingView)
-    Q_DECLARE_PRIVATE_D(d_ptr, CpBaseSettingView)
-    Q_PRIVATE_SLOT(d_func(), void _q_softkeyClicked())
-private:
-    CpBaseSettingViewPrivate *d_ptr;
-    friend class CpBaseSettingViewPrivate;
-};
-
-#endif /* CPBASESETTINGVIEW_H */
--- a/controlpanel/controlpanel_plat/inc/cpglobal.h	Thu Aug 05 11:11:52 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +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 CP_GLOBAL_H
-#define CP_GLOBAL_H
-
-#include <QtGlobal>
-
-#ifdef BUILD_CP_FRAMEWORK
-    #define CP_EXPORT Q_DECL_EXPORT
-#else
-    #define CP_EXPORT Q_DECL_IMPORT
-#endif
-
-#endif
--- a/controlpanel/controlpanel_plat/inc/cpitemdatahelper.h	Thu Aug 05 11:11:52 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +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 CP_ITEM_DATA_HELPER_H
-#define CP_ITEM_DATA_HELPER_H
-
-#include <QObject>
-#include <cpglobal.h>
-
-class QObject;
-class HbWidget;
-class QModelIndex;
-class HbDataForm;
-class HbAbstractViewItem;
-class HbDataFormModelItem;
-class CpItemDataHelperPrivate;
-
-class CP_EXPORT CpItemDataHelper : public QObject
-{
-	Q_OBJECT
-public:
-    explicit CpItemDataHelper(HbDataForm *form = 0);
-    virtual ~CpItemDataHelper();
-
-	void bindToForm(HbDataForm *form);
-
-	void addItemPrototype(HbAbstractViewItem *prototype);
-
-    void addConnection(HbDataFormModelItem *item,
-        const char *signal,
-        QObject *receiver,
-        const char *method);
-
-    void removeConnection(HbDataFormModelItem *item,
-        const char *signal,
-        QObject *receiver,
-        const char *method);
-
-    void connectToForm(const char *signal,
-        QObject *receiver,
-        const char *method);
-
-    void disconnectFromForm(const char *signal,
-        QObject *receiver,
-        const char *method);
-
-    HbWidget *widgetFromModelIndex(const QModelIndex &index);
-    
-    HbDataFormModelItem *modelItemFromModelIndex(const QModelIndex &index);
-   
-private:
-    CpItemDataHelperPrivate *d;
-};
-
-#endif
--- a/controlpanel/controlpanel_plat/inc/cplauncherinterface.h	Thu Aug 05 11:11:52 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 CPLAUNCHERINTERFACE_H
-#define CPLAUNCHERINTERFACE_H
-
-#include <QtPlugin>
-#include <QList>
-
-/*!
-    \class CpLauncherInterface
-    \brief The class CpLauncherInterface defines an interface for plugins which can be launched a specific view from outside controlpanel application.
- */
-
-class QVariant;
-class CpBaseSettingView;
-
-class CpLauncherInterface
-{
-public:
-    /*!
-     Destructor of CpLauncherInterface.
-     */
-    virtual ~CpLauncherInterface()
-    {
-    }
-    
-    /*!
-     Create a CpBaseSettingView by the parameter hint.
-     */
-    virtual CpBaseSettingView *createSettingView(const QVariant &hint) const = 0;
-};
-
-Q_DECLARE_INTERFACE(CpLauncherInterface, "com.nokia.controlpanel.launcher.interface/1.0");
-
-#endif /* CPLAUNCHERINTERFACE_H */
--- a/controlpanel/controlpanel_plat/inc/cplogger.h	Thu Aug 05 11:11:52 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +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 CPLOGGER_H
-#define CPLOGGER_H
-
-
-/* 
-    config file path :/logconf/controlpanellog.conf
-
-    Format:
-
-    [CpFramework]
-    logdatetime = 1
-    logloggername = 1
-    datetimeformat = hh:mm:ss:zzz
-    output = debugoutput fileoutput
-    fileoutput/logfile = C:/data/logs/cpframework.log
-    fileoutput/truncate = 1
-    
-    [CpPerformance]
-    logdatetime = 1
-    datetimeformat = hh:mm:ss:zzz
-    output = fileoutput
-    fileoutput/logfile = C:/data/logs/cpperformance.log
-    fileoutput/truncate = 1
-*/
-
-#include <QLatin1String>
-#include <logger.h>
-
-/*
- make CPFW_LOG work
-*/
-
-//#define ENABLE_CPFW_LOG
-
-/*
- make CPPERF_LOG work
-*/
-
-//#define ENABLE_CPPERF_LOG
-
-#define CPFW_LOGGER_NAME       QLatin1String("CpFramework")
-#define CPPERF_LOGGER_NAME     QLatin1String("CpPerformance")
-
-#define CP_LOGGER_CONFIG_PATH QLatin1String(":/logconf/controlpanellog.conf")
-
-#ifdef ENABLE_CPFW_LOG
-    #define CPFW_LOG(str)   Logger::instance(CPFW_LOGGER_NAME)->log(str);
-#else
-    #define CPFW_LOG(str)
-#endif
-
-#ifdef ENABLE_CPPERF_LOG
-    #define CPPERF_LOG(str) Logger::instance(CPPERF_LOGGER_NAME)->log(str);
-#else
-    #define CPPERF_LOG(str)
-#endif
-
-#endif /* CPLOGGER_H */
--- a/controlpanel/controlpanel_plat/inc/cpplugininterface.h	Thu Aug 05 11:11:52 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +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 CPPLUGININTERFACE_H
-#define CPPLUGININTERFACE_H
-
-#include <QtPlugin>
-#include <QList>
-
-/*!
-    \class CpPluginInterface
-    \brief The class CpPluginInterface is an interface for plugins which can be displayed in control panel application. 
- */
-
-class CpSettingFormItemData;
-class CpItemDataHelper;
-
-class CpPluginInterface
-{
-public:
-    /*!
-     Destructor of CpPluginInterface.
-     */
-    virtual ~CpPluginInterface()
-    {
-    }
-    
-    /*!
-     Create a data form mode item, by which the control panel framework can build a data form model.
-     */
-    virtual QList<CpSettingFormItemData*> createSettingFormItemData(CpItemDataHelper &itemDataHelper) const = 0;
-};
-
-Q_DECLARE_INTERFACE(CpPluginInterface, "com.nokia.controlpanel.plugin.interface/1.0");
-
-#endif /* CPPLUGININTERFACE_H */
--- a/controlpanel/controlpanel_plat/inc/cppluginlauncher.h	Thu Aug 05 11:11:52 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +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:  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
-*
-*/
-
-#ifndef CPPLUGINLAUNCHER_H
-#define CPPLUGINLAUNCHER_H
-
-#include "cpglobal.h"
-#include <QVariant>
-
-class QString;
-class CpBaseSettingView;
-
-class CP_EXPORT CpPluginLauncher
-{
-public:
-	/*  OLD Interface - Deprecated! */
-    static bool launchCpPluginView(const QString &pluginFile,int index = 0);
-    
-    /*  */
-	static CpBaseSettingView* launchSettingView(const QString &pluginFile,const QVariant &hint = QVariant());
-};
-
-#endif /* CPPLUGINLAUNCHER_H */
--- a/controlpanel/controlpanel_plat/inc/cppluginloader.h	Thu Aug 05 11:11:52 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +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 CPPLUGINLOADER_H
-#define CPPLUGINLOADER_H
-
-#include <cpglobal.h>
-#include <QList>
-
-class QString;
-class CpPluginInterface;
-class CpLauncherInterface;
-class CpPluginPlatInterface;
-
-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*/
-    static CpPluginInterface     *loadCpPluginInterface(const QString &pluginFile);
-    static CpLauncherInterface   *loadCpLauncherInterface(const QString &pluginFile);
-};
-
-#endif /* CPPLUGINLOADER_H */
--- a/controlpanel/controlpanel_plat/inc/cppluginplatinterface.h	Thu Aug 05 11:11:52 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	Thu Aug 05 11:11:52 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +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 CP_PLUGINUTILITY_H
-#define CP_PLUGINUTILITY_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);
-};
-
-#endif
--- a/controlpanel/controlpanel_plat/inc/cpsettingformentryitemdata.h	Thu Aug 05 11:11:52 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +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 CPSETTINGFORMENTRYITEMDATA_H
-#define CPSETTINGFORMENTRYITEMDATA_H
-
-#include <cpglobal.h>
-#include <QObject>
-#include <cpsettingformitemdata.h>
-#include <hbicon.h>
-
-class CpItemDataHelper;
-class CpBaseSettingView;
-class HbDataForm;
-class QModelIndex;
-class CpSettingFormEntryItemDataPrivate;
-
-class CP_EXPORT CpSettingFormEntryItemData : public CpSettingFormItemData 
-{
-	Q_OBJECT
-public:
-	enum EntryItemType {
-	    ListEntryItem   = HbDataFormModelItem::CustomItemBase + 1,
-	    ButtonEntryItem = HbDataFormModelItem::CustomItemBase + 2
-	};
-
-	explicit CpSettingFormEntryItemData(const HbDataFormModelItem *parent = 0);
-
-	explicit CpSettingFormEntryItemData(
-	        CpItemDataHelper &itemDataHelper,
-			const QString &text = QString(),
-	        const QString &description = QString(),
-			const HbIcon &icon = HbIcon(),
-			const HbDataFormModelItem *parent = 0);	 
-
-	explicit CpSettingFormEntryItemData(
-	        HbDataForm *dataForm,
-			const QString &text = QString(),
-	        const QString &description = QString(),
-			const HbIcon &icon = HbIcon(),
-			const HbDataFormModelItem *parent = 0);	
-	
-    explicit CpSettingFormEntryItemData(
-            EntryItemType type,
-            CpItemDataHelper &itemDataHelper,
-            const QString &text = QString(),
-            const QString &description = QString(),
-            const QString &iconName = QString(),
-            const HbDataFormModelItem *parent = 0);  
-    
-    explicit CpSettingFormEntryItemData(
-            EntryItemType type,
-            HbDataForm *dataForm,
-            const QString &text = QString(),
-            const QString &description = QString(),
-            const QString &iconName = QString(),
-            const HbDataFormModelItem *parent = 0); 
-
-	virtual ~CpSettingFormEntryItemData();	
-	
-	QString text() const;
-	void setText(const QString &text);
-	
-	QString description() const;
-	void setDescription(const QString &description);
-
-	QString iconName() const;
-	void setIconName(const QString &icon);
-	
-	HbIcon entryItemIcon() const;
-	void setEntryItemIcon(const HbIcon &icon);
-		
-public slots:
-	virtual void onLaunchView();
-private:
-	virtual CpBaseSettingView *createSettingView() const = 0;
-private:
-    Q_DISABLE_COPY(CpSettingFormEntryItemData)
-    Q_DECLARE_PRIVATE_D(d_ptr, CpSettingFormEntryItemData)
-    Q_PRIVATE_SLOT(d_func(), void _q_itemPressed(const QModelIndex &index))
-    Q_PRIVATE_SLOT(d_func(), void _q_itemActivated(const QModelIndex &index))
-private:
-	CpSettingFormEntryItemDataPrivate *d_ptr;
-};
-
-#endif  //CPSETTINGFORMENTRYITEMDATA_H
--- a/controlpanel/controlpanel_plat/inc/cpsettingformentryitemdataimpl.h	Thu Aug 05 11:11:52 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,91 +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 CP_SETTINGFORM_ENTRY_ITEM_DATA_IMPL_H
-#define CP_SETTINGFORM_ENTRY_ITEM_DATA_IMPL_H
-
-#include "cpsettingformentryitemdata.h"
-
-
-/*!
-    \class CpSettingFormEntryItemDataImpl
-    \brief The template class CpSettingFormEntryItemDataImpl provide a defaut implementation of CpSettingFormEntryItemData. 
-    By implementing pure virtual function CpSettingFormEntryItemData::createSettingView.
- */
-class CpItemDataHelper;
-template<typename PLUGIN_VIEW>
-class CpSettingFormEntryItemDataImpl : public CpSettingFormEntryItemData
-{
-public:
-
-    /*!
-        Construct a new CpSettingFormEntryItemDataImpl with the given text,description and parent.
-    */
-    explicit 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)
-    { }
-
-	/*!
-        Construct a new CpSettingFormEntryItemDataImpl with the given text,description and parent.
-    */
-	explicit 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)
-
-	{ }
-	
-    explicit 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)
-    { }
-    
-    explicit 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)
-    { }
-
-    /*!
-         Destructor.
-    */
-    virtual ~CpSettingFormEntryItemDataImpl()
-    { }
-    
-    /*!
-         Implement CpSettingFormEntryItemData::createSettingView
-    */
-    virtual CpBaseSettingView *createSettingView() const
-    { return new PLUGIN_VIEW(); }
-};
-
-#endif  // CP_SETTINGFORM_ENTRY_ITEM_DATA_IMPL_H
--- a/controlpanel/controlpanel_plat/inc/cpsettingformitemdata.h	Thu Aug 05 11:11:52 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +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:  
-*						This class is a control panel defined HbDataFormModelItem,
-*					
-*						
-*/
-#ifndef CP_SETTING_FORM_ITEM_DATA_H
-#define CP_SETTING_FORM_ITEM_DATA_H
-
-#include <cpglobal.h>
-#include <hbdataformmodelitem.h>
-#include <QObject>
-#include <QVariant>
-
-class QString;
-class CpItemDataHelper;
-class CpSettingFormItemDataPrivate;
-
-class CP_EXPORT CpSettingFormItemData : public QObject, public HbDataFormModelItem
-{
-	Q_OBJECT
-public:
-	CpSettingFormItemData(HbDataFormModelItem::DataItemType type,
-		const QString &label,
-		const HbDataFormModelItem *parent = 0);
-	CpSettingFormItemData(const HbDataFormModelItem *parent = 0);
-	virtual ~CpSettingFormItemData();
-private:
-	CpSettingFormItemDataPrivate *d_ptr; //reservered
-};
-
-
-#endif
--- a/controlpanel/controlpanel_plat/inc/logger.h	Thu Aug 05 11:11:52 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +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 LOGGER_H
-#define LOGGER_H
-
-#include <QObject>
-#include <QSettings>
-#include <loggerglobal.h>
-
-class LogOutput;
-class QSettings;
-class LoggerPrivate;
-
-/*
-
-configuration format:
-
-    [myapplog]
-    logDateTime = 1
-    logLoggerName = 1
-    output = debugoutput consoleoutput fileoutput
-    fileoutput/logfile = C:/data/log/myapp.log
-    fileoutput/truncate = 1
-
-code examples:
-
-    QSettings settings("myapp.ini",QSettings::IniFormat);
-    Logger::instance("myapplog")->configure(settings);
-    Logger::instance("myapplog")->log("Hello world!");
-
-*/
-
-class LOGGER_EXPORT Logger : public QObject
-{
-    Q_OBJECT
-    Q_PROPERTY(bool logDateTime READ logDateTime WRITE setLogDateTime)
-    Q_PROPERTY(bool logLoggerName READ logLoggerName WRITE setLogLoggerName)
-    Q_PROPERTY(QString dateTimeFormat READ dateTimeFormat WRITE setDateTimeFormat)
-public:
-    static Logger *instance(const QString &name);	
-    static void close(const QString &name);
-    static void closeAll();
-public:
-    virtual ~Logger();
-
-    void log(const QString &log);
-
-    void configure(const QString &configFile,QSettings::Format format = QSettings::NativeFormat);
-
-    void configure(QSettings &settings);
-
-    bool addLogOutput(LogOutput *output);
-
-    void removeLogOutput(LogOutput *output);
-
-    LogOutput *logOutput(const QString &name);
-
-    void clearAllLogOutput();
-
-    QString name() const;
-
-    bool logDateTime() const;
-    void setLogDateTime(bool on);
-
-    bool logLoggerName() const;
-    void setLogLoggerName(bool on);
-
-    QString dateTimeFormat() const;
-    void setDateTimeFormat(const QString &format);
-private:
-    explicit Logger(const QString &name = QString(),QObject *parent = 0);
-    LoggerPrivate *d_ptr;
-};
-
-#endif //LOGGER_H
--- a/controlpanel/controlpanel_plat/inc/loggerglobal.h	Thu Aug 05 11:11:52 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +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 LOGGERGLOBAL_H
-#define LOGGERGLOBAL_H
-
-#include <QtGlobal>
-
-#ifdef BUILD_LOGGER_DLL
-    #define LOGGER_EXPORT Q_DECL_EXPORT
-#else
-    #define LOGGER_EXPORT Q_DECL_IMPORT
-#endif
-
-#define LINE_SEPERATOR              QLatin1String("\r\n");
-
-#define SETTINGS_SECTION_SEPERATOR  QLatin1String("/")
-
-//following strings can be used in configuration file to specify logger's properties
-//refer to logger.h
-#define LOGGER_LOGDATETIME          QLatin1String("logdatetime")
-#define LOGGER_LOGLOGGERNAME        QLatin1String("logloggername")
-#define LOGGER_DATETIMEFORMAT       QLatin1String("datetimeformat")
-#define LOGGER_OUTPUT               QLatin1String("output")
-
-#define DEBUGOUTPUT_NAME            QLatin1String("debugoutput")
-#define CONSOLEOUTPUT_NAME          QLatin1String("consoleoutput")
-#define FILEOUTPUT_NAME             QLatin1String("fileoutput")
-    #define FILEOUTPUT_LOGFILE      QLatin1String("logfile")
-    #define FILEOUTPUT_TRUNCATE     QLatin1String("truncate")
-
-#endif //LOGGERGLOBAL_H
--- a/controlpanel/controlpanel_plat/inc/logoutput.h	Thu Aug 05 11:11:52 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 LOGOUTPUT_H
-#define LOGOUTPUT_H
-
-#include <loggerglobal.h>
-#include <QObject>
-
-class QString;
-class QSettings;
-class Logger;
-
-class LogOutputPrivate;
-class LOGGER_EXPORT LogOutput : public QObject
-{
-    Q_OBJECT
-    Q_PROPERTY(QString name READ name WRITE setName)
-public:
-    virtual ~LogOutput();
-    virtual void output(const QString &log) = 0;
-    virtual bool init() = 0;
-    bool load(QSettings &settings);
-
-    Logger *parentLogger();
-    void setParentLogger(Logger *parentLogger);
-
-    QString name() const;
-    void setName(const QString &name);
-private:
-    virtual bool doLoad(QSettings &settings) = 0;
-protected:
-    LogOutput(Logger *parentLogger = 0);
-private:
-    LogOutputPrivate *d_ptr;
-};
-
-#endif //LOGOUTPUT_H
--- a/controlpanel/controlpanel_plat/inc/logoutputfactory.h	Thu Aug 05 11:11:52 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +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 LOGOUTPUTFACTORY_H
-#define LOGOUTPUTFACTORY_H
-
-class LogOutput;
-class QVariant;
-class QString;
-
-#include <QHash>
-#include <loggerglobal.h>
-
-class LOGGER_EXPORT LogOutputFactory
-{
-public:
-    typedef LogOutput* (*CREATE_ENTRY)();
-    static LogOutput *createLogOutput(const QString &name);
-    static LogOutput *createLogOutput(const QString &name,const QHash<QString,QVariant> &properties);
-    static void addCreateLogOutputEntry(const QString &name,CREATE_ENTRY entry); 
-};
-
-class LogOutputCreateEntryRegister
-{
-public:
-    LogOutputCreateEntryRegister(const QString &name,LogOutputFactory::CREATE_ENTRY entry) {
-        LogOutputFactory::addCreateLogOutputEntry(name,entry);
-    }
-};
-
-#define REGISTER_OUTPUT_LOG(name,Class) \
-    static LogOutput *create##Class() { \
-        LogOutput *output = new Class(); \
-        output->setName(name); \
-        return output; \
-    } \
-    LogOutputCreateEntryRegister the##Class##EntryRegister(name,create##Class);
-
-#endif //LOGOUTPUTFACTORY_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/rom/bld.inf	Thu Sep 02 17:14:05 2010 +0800
@@ -0,0 +1,33 @@
+/*
+* ==============================================================================
+*  Name        : bld.inf
+*  Part of     :
+*  Description : This is a top level bld file to generate all libraries.
+*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
+*
+* This library is free software; you can redistribute it and/or
+* modify it under the terms of the GNU Lesser General Public
+* License as published by the Free Software Foundation; either
+* version 2 of the License, or (at your option) any later version.
+*
+* This library is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this library; if not, write to the
+* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+* Boston, MA 02111-1307, USA.
+*
+* Description : This is a top level bld file to export the data and ROM files
+*
+*/
+
+
+#include <platform_paths.hrh>
+
+PRJ_EXPORTS
+
+controlpanel.iby CORE_MW_LAYER_IBY_EXPORT_PATH(controlpanel.iby)
--- a/controlpanel/rom/controlpanel.iby	Thu Aug 05 11:11:52 2010 +0800
+++ b/controlpanel/rom/controlpanel.iby	Thu Sep 02 17:14:05 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	Thu Aug 05 11:11:52 2010 +0800
+++ b/controlpanel/src/cpframework/bwins/cpframeworku.def	Thu Sep 02 17:14:05 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.pri	Thu Aug 05 11:11:52 2010 +0800
+++ b/controlpanel/src/cpframework/cpframework.pri	Thu Sep 02 17:14:05 2010 +0800
@@ -15,7 +15,19 @@
 # Description: cpframework source files
 #
 
-HEADERS += src/cpviewlauncher.h \
+HEADERS += ../../../gsprofilesrv_plat/controlpanel_api/inc/cpglobal.h \
+           ../../../gsprofilesrv_plat/controlpanel_api/inc/cpbasepath.h \
+           ../../../gsprofilesrv_plat/controlpanel_api/inc/cpplugininterface.h \
+           ../../../gsprofilesrv_plat/controlpanel_api/inc/cpsettingformitemdata.h \
+           ../../../gsprofilesrv_plat/controlpanel_api/inc/cppluginlauncher.h \
+           ../../../gsprofilesrv_plat/controlpanel_api/inc/cpbasesettingview.h  \
+           ../../../gsprofilesrv_plat/controlpanel_api/inc/cpitemdatahelper.h \
+           ../../../gsprofilesrv_plat/controlpanel_api/inc/cpsettingformentryitemdata.h \
+           ../../../gsprofilesrv_plat/controlpanel_api/inc/cpsettingformentryitemdataimpl.h \
+           ../../../gsprofilesrv_plat/controlpanel_api/inc/cppluginloader.h \
+           ../../../gsprofilesrv_plat/controlpanel_api/inc/cppluginutility.h \
+           ../../../gsprofilesrv_plat/controlpanel_api/inc/cplauncherinterface.h \
+           src/cpviewlauncher.h \
            src/cpbasesettingview_p.h \
            src/cpwatchdog.h \
            src/cputility.h \
--- a/controlpanel/src/cpframework/cpframework.pro	Thu Aug 05 11:11:52 2010 +0800
+++ b/controlpanel/src/cpframework/cpframework.pro	Thu Sep 02 17:14:05 2010 +0800
@@ -18,9 +18,7 @@
 TARGET = cpframework
 
 include ( ../common.pri )
-include ( ../logger/logger.pri)
 include ( ./cpframework.pri )
-include ( ../../controlpanel_plat/inc/controlpanel_plat.pri )
 
 RESOURCES += cpframework.qrc
 
@@ -29,27 +27,8 @@
 }
 
 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
     
-    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)
-    
--- a/controlpanel/src/cpframework/eabi/cpframeworku.def	Thu Aug 05 11:11:52 2010 +0800
+++ b/controlpanel/src/cpframework/eabi/cpframeworku.def	Thu Sep 02 17:14:05 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	Thu Aug 05 11:11:52 2010 +0800
+++ b/controlpanel/src/cpframework/resources/widgetml/cpdataformlistentryviewitem.css	Thu Sep 02 17:14:05 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	Thu Aug 05 11:11:52 2010 +0800
+++ b/controlpanel/src/cpframework/resources/widgetml/cpdataformlistentryviewitem.widgetml	Thu Sep 02 17:14:05 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	Thu Aug 05 11:11:52 2010 +0800
+++ b/controlpanel/src/cpframework/src/cpbasesettingview.cpp	Thu Sep 02 17:14:05 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	Thu Aug 05 11:11:52 2010 +0800
+++ b/controlpanel/src/cpframework/src/cpbasesettingview_p.cpp	Thu Sep 02 17:14:05 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	Thu Aug 05 11:11:52 2010 +0800
+++ b/controlpanel/src/cpframework/src/cpbasesettingview_p.h	Thu Sep 02 17:14:05 2010 +0800
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  
+* Description:  Private implementaion for CpBaseSettingView
 *
 */
 #ifndef CPBASESETTINGVIEW_P_H
--- a/controlpanel/src/cpframework/src/cpdataformbuttonentryviewitem.cpp	Thu Aug 05 11:11:52 2010 +0800
+++ b/controlpanel/src/cpframework/src/cpdataformbuttonentryviewitem.cpp	Thu Sep 02 17:14:05 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	Thu Aug 05 11:11:52 2010 +0800
+++ b/controlpanel/src/cpframework/src/cpdataformbuttonentryviewitem.h	Thu Sep 02 17:14:05 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	Thu Aug 05 11:11:52 2010 +0800
+++ b/controlpanel/src/cpframework/src/cpdataformlistentryviewitem.cpp	Thu Sep 02 17:14:05 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	Thu Aug 05 11:11:52 2010 +0800
+++ b/controlpanel/src/cpframework/src/cpdataformlistentryviewitem.h	Thu Sep 02 17:14:05 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	Thu Aug 05 11:11:52 2010 +0800
+++ b/controlpanel/src/cpframework/src/cpitemdatahelper.cpp	Thu Sep 02 17:14:05 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	Thu Aug 05 11:11:52 2010 +0800
+++ b/controlpanel/src/cpframework/src/cppluginlauncher.cpp	Thu Sep 02 17:14:05 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	Thu Aug 05 11:11:52 2010 +0800
+++ b/controlpanel/src/cpframework/src/cppluginloader.cpp	Thu Sep 02 17:14:05 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	Thu Aug 05 11:11:52 2010 +0800
+++ b/controlpanel/src/cpframework/src/cppluginutility.cpp	Thu Sep 02 17:14:05 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	Thu Aug 05 11:11:52 2010 +0800
+++ b/controlpanel/src/cpframework/src/cpsettingformentryitemdata.cpp	Thu Sep 02 17:14:05 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	Thu Aug 05 11:11:52 2010 +0800
+++ b/controlpanel/src/cpframework/src/cpsettingformentryitemdata_p.cpp	Thu Sep 02 17:14:05 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	Thu Aug 05 11:11:52 2010 +0800
+++ b/controlpanel/src/cpframework/src/cpsettingformentryitemdata_p.h	Thu Sep 02 17:14:05 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	Thu Aug 05 11:11:52 2010 +0800
+++ b/controlpanel/src/cpframework/src/cpsettingformitemdata.cpp	Thu Sep 02 17:14:05 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	Thu Aug 05 11:11:52 2010 +0800
+++ b/controlpanel/src/cpframework/src/cputility.cpp	Thu Sep 02 17:14:05 2010 +0800
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  
+* Description:  Utility class for cpframework.
 *
 */
 #include "cputility.h"
--- a/controlpanel/src/cpframework/src/cputility.h	Thu Aug 05 11:11:52 2010 +0800
+++ b/controlpanel/src/cpframework/src/cputility.h	Thu Sep 02 17:14:05 2010 +0800
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  
+* Description:  Utility class for cpframework.
 *
 */
 #ifndef CP_UTILITY_H
--- a/controlpanel/src/cpframework/src/cpviewlauncher.cpp	Thu Aug 05 11:11:52 2010 +0800
+++ b/controlpanel/src/cpframework/src/cpviewlauncher.cpp	Thu Sep 02 17:14:05 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	Thu Aug 05 11:11:52 2010 +0800
+++ b/controlpanel/src/cpframework/src/cpviewlauncher.h	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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
+
--- a/controlpanel/src/logger/logger.pri	Thu Aug 05 11:11:52 2010 +0800
+++ b/controlpanel/src/logger/logger.pri	Thu Sep 02 17:14:05 2010 +0800
@@ -14,5 +14,11 @@
 # Description: controlpanel project - common qmake settings
 #
 
-HEADERS += $$PWD/src/*.h
+HEADERS += $$PWD/src/*.h \
+           ../../../gsprofilesrv_plat/controlpanel_api/inc/logger.h  \
+           ../../../gsprofilesrv_plat/controlpanel_api/inc/loggerglobal.h \
+           ../../../gsprofilesrv_plat/controlpanel_api/inc/logoutput.h  \
+           ../../../gsprofilesrv_plat/controlpanel_api/inc/logoutputfactory.h \
+           ../../../gsprofilesrv_plat/controlpanel_api/inc/cplogger.h  
+           
 SOURCES += $$PWD/src/*.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanel/src/logger/logger.pro	Thu Sep 02 17:14:05 2010 +0800
@@ -0,0 +1,28 @@
+#
+# 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)
+
+symbian: { 
+    TARGET.UID3 = 0x20028734
+}
+
+DEFINES += BUILD_LOGGER_DLL
+    
--- a/controlpanel/src/logger/logger_export.pri	Thu Aug 05 11:11:52 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +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: controlpanel project - common qmake settings
-#
-
-symbian: {  
-    # export headers to mw
-    EXPORT_PLATFORM_CPLOGGER_HEADERS += \
-                             ../../controlpanel_plat/inc/logger.h \
-                             ../../controlpanel_plat/inc/logoutput.h \
-                             ../../controlpanel_plat/inc/loggerglobal.h \
-                             ../../controlpanel_plat/inc/logoutputfactory.h \
-                             ../../controlpanel_plat/inc/cplogger.h
-    
-    loggers.sources = $$EXPORT_PLATFORM_CPLOGGER_HEADERS
-    for(logger, loggers.sources):BLD_INF_RULES.prj_exports += "./$$logger $$MW_LAYER_PLATFORM_EXPORT_PATH(cplogger/$$basename(logger))"
-}
\ No newline at end of file
--- a/controlpanel/src/logger/src/logger.cpp	Thu Aug 05 11:11:52 2010 +0800
+++ b/controlpanel/src/logger/src/logger.cpp	Thu Sep 02 17:14:05 2010 +0800
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  
+* Description:  This class provide log functionality.
 *
 */
 #include <logger.h>
--- a/controlpanel/src/logger/src/logoutput.cpp	Thu Aug 05 11:11:52 2010 +0800
+++ b/controlpanel/src/logger/src/logoutput.cpp	Thu Sep 02 17:14:05 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	Thu Aug 05 11:11:52 2010 +0800
+++ b/controlpanel/src/logger/src/logoutputfactory.cpp	Thu Sep 02 17:14:05 2010 +0800
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  
+* Description:  Factory class to create LogOutput.
 *
 */
 #include <logoutputfactory.h>
--- a/controlpanel/src/logger/src/logoutputimpl.cpp	Thu Aug 05 11:11:52 2010 +0800
+++ b/controlpanel/src/logger/src/logoutputimpl.cpp	Thu Sep 02 17:14:05 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	Thu Aug 05 11:11:52 2010 +0800
+++ b/controlpanel/src/src.pro	Thu Sep 02 17:14:05 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	Thu Aug 05 11:11:52 2010 +0800
+++ b/controlpanel/tsrc/tsrc.pro	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 2010 +0800
@@ -0,0 +1,31 @@
+#
+# 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 += .
+
+symbian {
+    INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE
+    INCLUDEPATH += $$MW_LAYER_PLATFORM_EXPORT_PATH(cplogger)
+}
+							 
+LIBS += -lcpframework -lcplogger
--- a/controlpanel/tsrc/unit/ut_cpapi/runtest.bat	Thu Aug 05 11:11:52 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Aug 05 11:11:52 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	Thu Aug 05 11:11:52 2010 +0800
+++ b/controlpanel/tsrc/unit/ut_cpapi/src/ut_cpapi.cpp	Thu Sep 02 17:14:05 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	Thu Aug 05 11:11:52 2010 +0800
+++ b/controlpanel/tsrc/unit/ut_cpapi/src/ut_cpapi.h	Thu Sep 02 17:14:05 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	Thu Aug 05 11:11:52 2010 +0800
+++ b/controlpanel/tsrc/unit/ut_cpapi/ut_cpapi.pro	Thu Sep 02 17:14:05 2010 +0800
@@ -1,51 +1,62 @@
-#
 # 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
-							 
-LIBS += -lcpframework
+INCLUDEPATH += src/ \
+               ../../../src/inc \
+               ../../../controlpanel_plat/inc
+               
+include (../ut_common.pri)
 
 # 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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	Thu Sep 02 17:14:05 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
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ftuwizardmodel/bwins/ftuwizardmodelu.def	Thu Sep 02 17:14:05 2010 +0800
@@ -0,0 +1,23 @@
+EXPORTS
+	?trUtf8@FtuWizard@@SA?AVQString@@PBD0@Z @ 1 NONAME ; class QString FtuWizard::trUtf8(char const *, char const *)
+	?qt_metacall@FtuWizard@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2 NONAME ; int FtuWizard::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?tr@FtuWizard@@SA?AVQString@@PBD0H@Z @ 3 NONAME ; class QString FtuWizard::tr(char const *, char const *, int)
+	?staticMetaObject@FtuWizard@@2UQMetaObject@@B @ 4 NONAME ; struct QMetaObject const FtuWizard::staticMetaObject
+	?overlayAdded@FtuWizard@@IAEXPAV1@PAVQGraphicsWidget@@@Z @ 5 NONAME ; void FtuWizard::overlayAdded(class FtuWizard *, class QGraphicsWidget *)
+	?shutdownCompleted@FtuWizard@@IAEXPAV1@@Z @ 6 NONAME ; void FtuWizard::shutdownCompleted(class FtuWizard *)
+	?qt_metacast@FtuWizard@@UAEPAXPBD@Z @ 7 NONAME ; void * FtuWizard::qt_metacast(char const *)
+	?overlayRemoved@FtuWizard@@IAEXPAV1@PAVQGraphicsWidget@@@Z @ 8 NONAME ; void FtuWizard::overlayRemoved(class FtuWizard *, class QGraphicsWidget *)
+	?metaObject@FtuWizard@@UBEPBUQMetaObject@@XZ @ 9 NONAME ; struct QMetaObject const * FtuWizard::metaObject(void) const
+	?tr@FtuWizard@@SA?AVQString@@PBD0@Z @ 10 NONAME ; class QString FtuWizard::tr(char const *, char const *)
+	?getStaticMetaObject@FtuWizard@@SAABUQMetaObject@@XZ @ 11 NONAME ; struct QMetaObject const & FtuWizard::getStaticMetaObject(void)
+	?progressUpdated@FtuWizard@@IAEXPAV1@_NH@Z @ 12 NONAME ; void FtuWizard::progressUpdated(class FtuWizard *, bool, int)
+	?viewChanged@FtuWizard@@IAEXPAV1@PAVQGraphicsWidget@@@Z @ 13 NONAME ; void FtuWizard::viewChanged(class FtuWizard *, class QGraphicsWidget *)
+	?updateMainMenu@FtuWizard@@IAEXPAV1@PAVHbMenu@@@Z @ 14 NONAME ; void FtuWizard::updateMainMenu(class FtuWizard *, class HbMenu *)
+	??1FtuWizard@@UAE@XZ @ 15 NONAME ; FtuWizard::~FtuWizard(void)
+	??_EFtuWizard@@UAE@I@Z @ 16 NONAME ; FtuWizard::~FtuWizard(unsigned int)
+	?wizardDeactivated@FtuWizard@@IAEXPAV1@@Z @ 17 NONAME ; void FtuWizard::wizardDeactivated(class FtuWizard *)
+	?wizardInitialized@FtuWizard@@IAEXPAV1@_N@Z @ 18 NONAME ; void FtuWizard::wizardInitialized(class FtuWizard *, bool)
+	??0FtuWizard@@IAE@XZ @ 19 NONAME ; FtuWizard::FtuWizard(void)
+	?infoTextUpdated@FtuWizard@@IAEXPAV1@VQString@@@Z @ 20 NONAME ; void FtuWizard::infoTextUpdated(class FtuWizard *, class QString)
+	?trUtf8@FtuWizard@@SA?AVQString@@PBD0H@Z @ 21 NONAME ; class QString FtuWizard::trUtf8(char const *, char const *, int)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ftuwizardmodel/eabi/ftuwizardmodelu.def	Thu Sep 02 17:14:05 2010 +0800
@@ -0,0 +1,18 @@
+EXPORTS
+	_ZN9FtuWizard11qt_metacallEN11QMetaObject4CallEiPPv @ 1 NONAME
+	_ZN9FtuWizard11qt_metacastEPKc @ 2 NONAME
+	_ZN9FtuWizard11viewChangedEPS_P15QGraphicsWidget @ 3 NONAME
+	_ZN9FtuWizard12overlayAddedEPS_P15QGraphicsWidget @ 4 NONAME
+	_ZN9FtuWizard14overlayRemovedEPS_P15QGraphicsWidget @ 5 NONAME
+	_ZN9FtuWizard14updateMainMenuEPS_P6HbMenu @ 6 NONAME
+	_ZN9FtuWizard15infoTextUpdatedEPS_7QString @ 7 NONAME
+	_ZN9FtuWizard15progressUpdatedEPS_bi @ 8 NONAME
+	_ZN9FtuWizard16staticMetaObjectE @ 9 NONAME DATA 16
+	_ZN9FtuWizard17shutdownCompletedEPS_ @ 10 NONAME
+	_ZN9FtuWizard17wizardDeactivatedEPS_ @ 11 NONAME
+	_ZN9FtuWizard17wizardInitializedEPS_b @ 12 NONAME
+	_ZN9FtuWizard19getStaticMetaObjectEv @ 13 NONAME
+	_ZNK9FtuWizard10metaObjectEv @ 14 NONAME
+	_ZTI9FtuWizard @ 15 NONAME
+	_ZTV9FtuWizard @ 16 NONAME
+
--- a/ftuwizardmodel/ftuwizardmodel.pro	Thu Aug 05 11:11:52 2010 +0800
+++ b/ftuwizardmodel/ftuwizardmodel.pro	Thu Sep 02 17:14:05 2010 +0800
@@ -52,11 +52,11 @@
 #deployment configuration, deploy as a dll.
 symbian {
     deploy_ftuwizardmodel.sources = ftuwizardmodel.dll
-    deploy_ftuwizardmodel.path = \sys\bin
+    deploy_ftuwizardmodel.path = /sys/bin
     DEPLOYMENT += deploy_ftuwizardmodel
     BLD_INF_RULES.prj_exports += \
      "rom/ftuwizardmodel.iby  CORE_MW_LAYER_IBY_EXPORT_PATH(ftuwizardmodel.iby)"
 }
 
 #ONLY FOR DEVELOPMENT! REMOVE THIS BEFORE EACH HS_Domain RELEASE!
-symbian: MMP_RULES += EXPORTUNFROZEN
+symbian:MMP_RULES += SMPSAFE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gsprofilesrv_plat/controlpanel_api/controlpanel_api.pri	Thu Sep 02 17:14:05 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: 
+#
+
+CONTROLPANEL_PLAT_HEADERS += \
+    inc/cpglobal.h \
+    inc/cpbasepath.h \
+    inc/cpplugininterface.h \
+    inc/cpsettingformitemdata.h \
+    inc/cppluginlauncher.h \
+    inc/cpbasesettingview.h \
+    inc/cpitemdatahelper.h \
+    inc/cpsettingformentryitemdata.h \
+    inc/cpsettingformentryitemdataimpl.h \
+    inc/cppluginloader.h \
+    inc/cppluginutility.h \
+    inc/cplauncherinterface.h 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gsprofilesrv_plat/controlpanel_api/controlpanel_api.pro	Thu Sep 02 17:14:05 2010 +0800
@@ -0,0 +1,37 @@
+#
+# 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 = subdirs
+
+SYMBIAN_PLATFORMS = WINSCW ARMV5
+
+CONFIG += ordered
+
+include ( controlpanel_api.pri )
+include ( logger_api.pri )
+
+symbian: {  
+    BLD_INF_RULES.prj_exports += "$${LITERAL_HASH}include <platform_paths.hrh>" 
+      
+    #exports controlpanel header files
+    headers.sources = $$CONTROLPANEL_PLAT_HEADERS
+    for(header, headers.sources):BLD_INF_RULES.prj_exports += "./$$header $$MW_LAYER_PLATFORM_EXPORT_PATH($$basename(header))"
+    
+    #exports logger header files
+    headers.sources = $$CONTROLPANEL_LOG_PLAT_HEADERS
+    for(header, headers.sources):BLD_INF_RULES.prj_exports += "./$$header $$MW_LAYER_PLATFORM_EXPORT_PATH(cplogger/$$basename(header))"
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gsprofilesrv_plat/controlpanel_api/inc/cpbasepath.h	Thu Sep 02 17:14:05 2010 +0800
@@ -0,0 +1,44 @@
+/*
+* 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:  Common path definitions for controlpanel
+*
+*/
+
+#ifndef CPBASEPATH_H
+#define CPBASEPATH_H
+
+#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")
+#else 
+    #ifdef _DEBUG
+        #define CP_PLUGIN_PATH QLatin1String("/ControlPanel/debug/bin")
+        #define CP_PLUGIN_CONFIG_PATH QLatin1String("/ControlPanel/debug/bin/config")
+    #else
+        #define CP_PLUGIN_PATH QLatin1String("/ControlPanel/release/bin")
+        #define CP_PLUGIN_CONFIG_PATH QLatin1String("/ControlPanel/release/bin/config")
+    #endif
+#endif 
+
+
+#endif  //CPBASEPATH_H
+
+//End of File
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gsprofilesrv_plat/controlpanel_api/inc/cpbasesettingview.h	Thu Sep 02 17:14:05 2010 +0800
@@ -0,0 +1,49 @@
+/*
+* 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:  Base class for controlpane plugin views.
+*
+*/
+#ifndef CPBASESETTINGVIEW_H
+#define CPBASESETTINGVIEW_H
+
+#include "cpglobal.h"
+#include <hbview.h>
+
+class QVariant;
+class QModelIndex;
+class HbDataForm;
+class CpBaseSettingViewPrivate;
+class CpItemDataHelper;
+
+class CP_EXPORT CpBaseSettingView : public HbView
+{
+    Q_OBJECT
+public:
+	explicit CpBaseSettingView(QGraphicsWidget *widget = 0, QGraphicsItem *parent = 0);
+    virtual ~CpBaseSettingView();    
+signals:
+    void returnValueDelivered(const QVariant &returnValue);
+    void aboutToClose();
+protected:
+    virtual void close();
+private:
+    Q_DISABLE_COPY(CpBaseSettingView)
+    Q_DECLARE_PRIVATE_D(d_ptr, CpBaseSettingView)
+    Q_PRIVATE_SLOT(d_func(), void _q_softkeyClicked())
+private:
+    CpBaseSettingViewPrivate *d_ptr;
+    friend class CpBaseSettingViewPrivate;
+};
+
+#endif /* CPBASESETTINGVIEW_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gsprofilesrv_plat/controlpanel_api/inc/cpglobal.h	Thu Sep 02 17:14:05 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:  Common definitions for controlpanel
+*
+*/
+
+#ifndef CPGLOBAL_H
+#define CPGLOBAL_H
+
+#include <QtGlobal>
+
+#ifdef BUILD_CP_FRAMEWORK
+    #define CP_EXPORT Q_DECL_EXPORT
+#else
+    #define CP_EXPORT Q_DECL_IMPORT
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gsprofilesrv_plat/controlpanel_api/inc/cpitemdatahelper.h	Thu Sep 02 17:14:05 2010 +0800
@@ -0,0 +1,68 @@
+/*
+* 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:  Helper class by which a plugin can communicate with the associated dataform.
+*
+*/
+#ifndef CPITEMDATAHELPER_H
+#define CPITEMDATAHELPER_H
+
+#include <QObject>
+#include <cpglobal.h>
+
+class QObject;
+class HbWidget;
+class QModelIndex;
+class HbDataForm;
+class HbAbstractViewItem;
+class HbDataFormModelItem;
+class CpItemDataHelperPrivate;
+
+class CP_EXPORT CpItemDataHelper : public QObject
+{
+	Q_OBJECT
+public:
+    explicit CpItemDataHelper(HbDataForm *form = 0);
+    virtual ~CpItemDataHelper();
+
+	void bindToForm(HbDataForm *form);
+
+	void addItemPrototype(HbAbstractViewItem *prototype);
+
+    void addConnection(HbDataFormModelItem *item,
+        const char *signal,
+        QObject *receiver,
+        const char *method);
+
+    void removeConnection(HbDataFormModelItem *item,
+        const char *signal,
+        QObject *receiver,
+        const char *method);
+
+    void connectToForm(const char *signal,
+        QObject *receiver,
+        const char *method);
+
+    void disconnectFromForm(const char *signal,
+        QObject *receiver,
+        const char *method);
+
+    HbWidget *widgetFromModelIndex(const QModelIndex &index);
+    
+    HbDataFormModelItem *modelItemFromModelIndex(const QModelIndex &index);
+   
+private:
+    CpItemDataHelperPrivate *d;
+};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gsprofilesrv_plat/controlpanel_api/inc/cplauncherinterface.h	Thu Sep 02 17:14:05 2010 +0800
@@ -0,0 +1,93 @@
+/*
+* 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:  Interface for controlpanel plugins, with this interface client application can launch a view from outside of controlpanel application.
+*
+*/
+
+
+#ifndef CPLAUNCHERINTERFACE_H
+#define CPLAUNCHERINTERFACE_H
+
+#include <QtPlugin>
+#include <QList>
+
+/*!
+    \class CpLauncherInterface
+    \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;
+class CpBaseSettingView;
+
+class CpLauncherInterface
+{
+public:
+    /*!
+     Destructor of CpLauncherInterface.
+     */
+    virtual ~CpLauncherInterface()
+    {
+    }
+    
+    /*!
+     Create a CpBaseSettingView by the parameter hint.
+     */
+    virtual CpBaseSettingView *createSettingView(const QVariant &hint) const = 0;
+};
+
+Q_DECLARE_INTERFACE(CpLauncherInterface, "com.nokia.controlpanel.launcher.interface/1.0");
+
+#endif /* CPLAUNCHERINTERFACE_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gsprofilesrv_plat/controlpanel_api/inc/cplogger.h	Thu Sep 02 17:14:05 2010 +0800
@@ -0,0 +1,76 @@
+/*
+* 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:  Log utility for controlpanel framework.
+*
+*/
+#ifndef CPLOGGER_H
+#define CPLOGGER_H
+
+
+/* 
+    config file path :/logconf/controlpanellog.conf
+
+    Format:
+
+    [CpFramework]
+    logdatetime = 1
+    logloggername = 1
+    datetimeformat = hh:mm:ss:zzz
+    output = debugoutput fileoutput
+    fileoutput/logfile = C:/data/logs/cpframework.log
+    fileoutput/truncate = 1
+    
+    [CpPerformance]
+    logdatetime = 1
+    datetimeformat = hh:mm:ss:zzz
+    output = fileoutput
+    fileoutput/logfile = C:/data/logs/cpperformance.log
+    fileoutput/truncate = 1
+*/
+
+#include <QLatin1String>
+#include <logger.h>
+
+/*
+ define ENABLE_CPFW_LOG to  make CPFW_LOG work
+*/
+
+//#define ENABLE_CPFW_LOG
+
+/*
+ define ENABLE_CPPERF_LOG to make CPPERF_LOG work
+*/
+
+//#define ENABLE_CPPERF_LOG
+
+#define CPFW_LOGGER_NAME       QLatin1String("CpFramework")
+#define CPPERF_LOGGER_NAME     QLatin1String("CpPerformance")
+
+#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 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
+    #define CPPERF_LOG(str) Logger::instance(CPPERF_LOGGER_NAME)->log(str);
+#else
+    #define CPPERF_LOG(str)
+#endif
+
+#endif /* CPLOGGER_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gsprofilesrv_plat/controlpanel_api/inc/cpplugininterface.h	Thu Sep 02 17:14:05 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:  Interface for controlpanel plugins.
+*
+*/
+
+#ifndef CPPLUGININTERFACE_H
+#define CPPLUGININTERFACE_H
+
+#include <QtPlugin>
+#include <QList>
+
+/*!
+    \class CpPluginInterface
+    \brief The class CpPluginInterface is an interface for controlpanel plugins.
+ */
+
+class CpSettingFormItemData;
+class CpItemDataHelper;
+
+class CpPluginInterface
+{
+public:
+    /*!
+     Destructor of CpPluginInterface.
+     */
+    virtual ~CpPluginInterface()
+    {
+    }
+    
+    /*!
+     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;
+};
+
+Q_DECLARE_INTERFACE(CpPluginInterface, "com.nokia.controlpanel.plugin.interface/1.0");
+
+#endif /* CPPLUGININTERFACE_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gsprofilesrv_plat/controlpanel_api/inc/cppluginlauncher.h	Thu Sep 02 17:14:05 2010 +0800
@@ -0,0 +1,33 @@
+/*
+* 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: Launch controlpanel plugin setting view in client process.
+*
+*/
+
+#ifndef CPPLUGINLAUNCHER_H
+#define CPPLUGINLAUNCHER_H
+
+#include "cpglobal.h"
+#include <QVariant>
+
+class QString;
+class CpBaseSettingView;
+
+class CP_EXPORT CpPluginLauncher
+{
+public:    
+	static CpBaseSettingView* launchSettingView(const QString &pluginFile,const QVariant &hint = QVariant());
+};
+
+#endif /* CPPLUGINLAUNCHER_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gsprofilesrv_plat/controlpanel_api/inc/cppluginloader.h	Thu Sep 02 17:14:05 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:  Utility class to load a CpPluginInterface or CpLauncherInterface from a controlpanel plugin file.
+*
+*/
+
+#ifndef CPPLUGINLOADER_H
+#define CPPLUGINLOADER_H
+
+#include <cpglobal.h>
+#include <QList>
+
+class QString;
+class CpPluginInterface;
+class CpLauncherInterface;
+class CpPluginPlatInterface;
+
+class CP_EXPORT CpPluginLoader
+{
+public:        
+    static CpPluginInterface     *loadCpPluginInterface(const QString &pluginFile);
+    static CpLauncherInterface   *loadCpLauncherInterface(const QString &pluginFile);
+};
+
+#endif /* CPPLUGINLOADER_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gsprofilesrv_plat/controlpanel_api/inc/cppluginutility.h	Thu Sep 02 17:14:05 2010 +0800
@@ -0,0 +1,31 @@
+/*
+* 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:  Utility class for controlpanel plugins.
+*
+*/
+
+#ifndef CPPLUGINUTILITY_H
+#define CPPLUGINUTILITY_H
+
+#include <cpglobal.h>
+
+class HbDataForm;
+
+class CP_EXPORT CpPluginUtility
+{
+public:
+    static void addCpItemPrototype(HbDataForm *settingForm);
+};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gsprofilesrv_plat/controlpanel_api/inc/cpsettingformentryitemdata.h	Thu Sep 02 17:14:05 2010 +0800
@@ -0,0 +1,100 @@
+/*
+* 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 CPSETTINGFORMENTRYITEMDATA_H
+#define CPSETTINGFORMENTRYITEMDATA_H
+
+#include <cpglobal.h>
+#include <QObject>
+#include <cpsettingformitemdata.h>
+#include <hbicon.h>
+
+class CpItemDataHelper;
+class CpBaseSettingView;
+class HbDataForm;
+class QModelIndex;
+class CpSettingFormEntryItemDataPrivate;
+
+class CP_EXPORT CpSettingFormEntryItemData : public CpSettingFormItemData 
+{
+	Q_OBJECT
+public:
+	enum EntryItemType {
+	    ListEntryItem   = HbDataFormModelItem::CustomItemBase + 1,
+	    ButtonEntryItem = HbDataFormModelItem::CustomItemBase + 2
+	};
+
+	explicit CpSettingFormEntryItemData(const HbDataFormModelItem *parent = 0);
+
+	explicit CpSettingFormEntryItemData(
+	        CpItemDataHelper &itemDataHelper,
+			const QString &text = QString(),
+	        const QString &description = QString(),
+			const HbIcon &icon = HbIcon(),
+			const HbDataFormModelItem *parent = 0);	 
+
+	explicit CpSettingFormEntryItemData(
+	        HbDataForm *dataForm,
+			const QString &text = QString(),
+	        const QString &description = QString(),
+			const HbIcon &icon = HbIcon(),
+			const HbDataFormModelItem *parent = 0);	
+	
+    explicit CpSettingFormEntryItemData(
+            EntryItemType type,
+            CpItemDataHelper &itemDataHelper,
+            const QString &text = QString(),
+            const QString &description = QString(),
+            const QString &iconName = QString(),
+            const HbDataFormModelItem *parent = 0);  
+    
+    explicit CpSettingFormEntryItemData(
+            EntryItemType type,
+            HbDataForm *dataForm,
+            const QString &text = QString(),
+            const QString &description = QString(),
+            const QString &iconName = QString(),
+            const HbDataFormModelItem *parent = 0); 
+
+	virtual ~CpSettingFormEntryItemData();	
+	
+	QString text() const;
+	void setText(const QString &text);
+	
+	QString description() const;
+	void setDescription(const QString &description);
+
+	QString iconName() const;
+	void setIconName(const QString &icon);
+	
+	HbIcon entryItemIcon() const;
+	void setEntryItemIcon(const HbIcon &icon);
+		
+public slots:
+	virtual void onLaunchView();
+private:
+	virtual CpBaseSettingView *createSettingView() const = 0;
+private:
+    Q_DISABLE_COPY(CpSettingFormEntryItemData)
+    Q_DECLARE_PRIVATE_D(d_ptr, CpSettingFormEntryItemData)
+    Q_PRIVATE_SLOT(d_func(), void _q_itemPressed(const QModelIndex &index))
+    Q_PRIVATE_SLOT(d_func(), void _q_itemActivated(const QModelIndex &index))
+private:
+	CpSettingFormEntryItemDataPrivate *d_ptr;
+};
+
+#endif  //CPSETTINGFORMENTRYITEMDATA_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gsprofilesrv_plat/controlpanel_api/inc/cpsettingformentryitemdataimpl.h	Thu Sep 02 17:14:05 2010 +0800
@@ -0,0 +1,97 @@
+/*
+* 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 CPSETTINGFORMENTRYITEMDATAIMPL_H
+#define CPSETTINGFORMENTRYITEMDATAIMPL_H
+
+#include "cpsettingformentryitemdata.h"
+
+
+/*!
+    \class CpSettingFormEntryItemDataImpl
+    \brief The template class CpSettingFormEntryItemDataImpl provide a defaut implementation of CpSettingFormEntryItemData. 
+    By implementing pure virtual function CpSettingFormEntryItemData::createSettingView.
+ */
+class CpItemDataHelper;
+template<typename PLUGIN_VIEW>
+class CpSettingFormEntryItemDataImpl : public CpSettingFormEntryItemData
+{
+public:
+
+    /*!
+        Construct a new CpSettingFormEntryItemDataImpl with the given text,description and parent.
+    */
+    explicit 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)
+    { }
+
+	/*!
+        Construct a new CpSettingFormEntryItemDataImpl with the given text,description and parent.
+    */
+	explicit 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)
+
+	{ }
+	
+	/*!
+	    Construct a new CpSettingFormEntryItemData with the given type, text, description, icon name, and parent.
+	*/
+    explicit 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)
+    { }
+    
+    /*!
+        Construct a new CpSettingFormEntryItemData with the given type, text, description, icon name, and parent.
+    */
+    explicit 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)
+    { }
+
+    /*!
+         Destructor.
+    */
+    virtual ~CpSettingFormEntryItemDataImpl()
+    { }
+    
+    /*!
+         Implement CpSettingFormEntryItemData::createSettingView
+    */
+    virtual CpBaseSettingView *createSettingView() const
+    { return new PLUGIN_VIEW(); }
+};
+
+#endif  // CP_SETTINGFORM_ENTRY_ITEM_DATA_IMPL_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gsprofilesrv_plat/controlpanel_api/inc/cpsettingformitemdata.h	Thu Sep 02 17:14:05 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:  
+*						This class is a control panel defined HbDataFormModelItem
+*					
+*						
+*/
+#ifndef CPSETTINGFORMITEMDATA_H
+#define CPSETTINGFORMITEMDATA_H
+
+#include <cpglobal.h>
+#include <hbdataformmodelitem.h>
+#include <QObject>
+#include <QVariant>
+
+class QString;
+class CpItemDataHelper;
+class CpSettingFormItemDataPrivate;
+
+class CP_EXPORT CpSettingFormItemData : public QObject, public HbDataFormModelItem
+{
+	Q_OBJECT
+public:
+	CpSettingFormItemData(HbDataFormModelItem::DataItemType type,
+		const QString &label,
+		const HbDataFormModelItem *parent = 0);
+	CpSettingFormItemData(const HbDataFormModelItem *parent = 0);
+	virtual ~CpSettingFormItemData();
+private:
+	CpSettingFormItemDataPrivate *d_ptr; //reservered
+};
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gsprofilesrv_plat/controlpanel_api/inc/logger.h	Thu Sep 02 17:14:05 2010 +0800
@@ -0,0 +1,126 @@
+/*
+* 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:  This class provide log functionality.
+*
+*/
+
+#ifndef LOGGER_H
+#define LOGGER_H
+
+#include <QObject>
+#include <QSettings>
+#include <loggerglobal.h>
+
+class LogOutput;
+class QSettings;
+class LoggerPrivate;
+
+/*
+
+configuration format:
+
+    [myapplog]
+    logDateTime = 1
+    logLoggerName = 1
+    datetimeformat = hh:mm:ss
+    output = debugoutput consoleoutput fileoutput
+    fileoutput/logfile = C:/data/log/myapp.log
+    fileoutput/truncate = 1
+
+code examples:
+
+    QSettings settings("myapp.ini",QSettings::IniFormat);
+    Logger::instance("myapplog")->configure(settings);
+    Logger::instance("myapplog")->log("Hello world!");
+
+*/
+
+class LOGGER_EXPORT Logger : public QObject
+{
+    Q_OBJECT
+    Q_PROPERTY(bool logDateTime READ logDateTime WRITE setLogDateTime)
+    Q_PROPERTY(bool logLoggerName READ logLoggerName WRITE setLogLoggerName)
+    Q_PROPERTY(QString dateTimeFormat READ dateTimeFormat WRITE setDateTimeFormat)
+public:
+    static Logger *instance(const QString &name);	
+    static void close(const QString &name);
+    static void closeAll();
+public:
+    virtual ~Logger();
+
+    void log(const QString &log);
+
+    void configure(const QString &configFile,QSettings::Format format = QSettings::NativeFormat);
+
+    void configure(QSettings &settings);
+
+    bool addLogOutput(LogOutput *output);
+
+    void removeLogOutput(LogOutput *output);
+
+    LogOutput *logOutput(const QString &name);
+
+    void clearAllLogOutput();
+
+    QString name() const;
+
+    bool logDateTime() const;
+    void setLogDateTime(bool on);
+
+    bool logLoggerName() const;
+    void setLogLoggerName(bool on);
+
+    QString dateTimeFormat() const;
+    void setDateTimeFormat(const QString &format);
+private:
+    explicit Logger(const QString &name = QString(),QObject *parent = 0);
+    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/gsprofilesrv_plat/controlpanel_api/inc/loggerglobal.h	Thu Sep 02 17:14:05 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:  Common definitions for log.
+*
+*/
+#ifndef LOGGERGLOBAL_H
+#define LOGGERGLOBAL_H
+
+#include <QtGlobal>
+
+#ifdef BUILD_LOGGER_DLL
+    #define LOGGER_EXPORT Q_DECL_EXPORT
+#else
+    #define LOGGER_EXPORT Q_DECL_IMPORT
+#endif
+
+#define LINE_SEPERATOR              QLatin1String("\r\n");
+
+#define SETTINGS_SECTION_SEPERATOR  QLatin1String("/")
+
+//following strings can be used in configuration file to specify logger's properties
+//refer to logger.h
+#define LOGGER_LOGDATETIME          QLatin1String("logdatetime")
+#define LOGGER_LOGLOGGERNAME        QLatin1String("logloggername")
+#define LOGGER_DATETIMEFORMAT       QLatin1String("datetimeformat")
+#define LOGGER_OUTPUT               QLatin1String("output")
+
+#define DEBUGOUTPUT_NAME            QLatin1String("debugoutput")
+#define CONSOLEOUTPUT_NAME          QLatin1String("consoleoutput")
+#define FILEOUTPUT_NAME             QLatin1String("fileoutput")
+    #define FILEOUTPUT_LOGFILE      QLatin1String("logfile")
+    #define FILEOUTPUT_TRUNCATE     QLatin1String("truncate")
+
+#endif //LOGGERGLOBAL_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gsprofilesrv_plat/controlpanel_api/inc/logoutput.h	Thu Sep 02 17:14:05 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:  An interface to output log string.
+*
+*/
+#ifndef LOGOUTPUT_H
+#define LOGOUTPUT_H
+
+#include <loggerglobal.h>
+#include <QObject>
+
+class QString;
+class QSettings;
+class Logger;
+
+class LogOutputPrivate;
+class LOGGER_EXPORT LogOutput : public QObject
+{
+    Q_OBJECT
+    Q_PROPERTY(QString name READ name WRITE setName)
+public:
+    virtual ~LogOutput();
+    virtual void output(const QString &log) = 0;
+    virtual bool init() = 0;
+    bool load(QSettings &settings);
+
+    Logger *parentLogger();
+    void setParentLogger(Logger *parentLogger);
+
+    QString name() const;
+    void setName(const QString &name);
+private:
+    virtual bool doLoad(QSettings &settings) = 0;
+protected:
+    LogOutput(Logger *parentLogger = 0);
+private:
+    LogOutputPrivate *d_ptr;
+};
+
+#endif //LOGOUTPUT_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gsprofilesrv_plat/controlpanel_api/inc/logoutputfactory.h	Thu Sep 02 17:14:05 2010 +0800
@@ -0,0 +1,52 @@
+/*
+* 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:  Factory class to create LogOutput.
+*
+*/
+#ifndef LOGOUTPUTFACTORY_H
+#define LOGOUTPUTFACTORY_H
+
+class LogOutput;
+class QVariant;
+class QString;
+
+#include <QHash>
+#include <loggerglobal.h>
+
+class LOGGER_EXPORT LogOutputFactory
+{
+public:
+    typedef LogOutput* (*CREATE_ENTRY)();
+    static LogOutput *createLogOutput(const QString &name);
+    static LogOutput *createLogOutput(const QString &name,const QHash<QString,QVariant> &properties);
+    static void addCreateLogOutputEntry(const QString &name,CREATE_ENTRY entry); 
+};
+
+class LogOutputCreateEntryRegister
+{
+public:
+    LogOutputCreateEntryRegister(const QString &name,LogOutputFactory::CREATE_ENTRY entry) {
+        LogOutputFactory::addCreateLogOutputEntry(name,entry);
+    }
+};
+
+#define REGISTER_OUTPUT_LOG(name,Class) \
+    static LogOutput *create##Class() { \
+        LogOutput *output = new Class(); \
+        output->setName(name); \
+        return output; \
+    } \
+    LogOutputCreateEntryRegister the##Class##EntryRegister(name,create##Class);
+
+#endif //LOGOUTPUTFACTORY_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gsprofilesrv_plat/controlpanel_api/logger_api.pri	Thu Sep 02 17:14:05 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: 
+#
+
+CONTROLPANEL_LOG_PLAT_HEADERS += \
+    inc/logger.h \
+    inc/loggerglobal.h \
+    inc/logoutput.h \
+    inc/logoutputfactory.h \
+    inc/cplogger.h 
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gsprofilesrv_plat/gsprofilesrv_plat.pro	Thu Sep 02 17:14:05 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: 
+#
+
+TEMPLATE = subdirs
+
+SYMBIAN_PLATFORMS = WINSCW ARMV5
+
+CONFIG += ordered
+
+SUBDIRS += controlpanel_api ftuwizardmodel_api
+
+symbian: {
+    :BLD_INF_RULES.prj_mmpfiles += $$LITERAL_HASH"include \"./profiles_engine_api/group/bld.inf\""
+    :BLD_INF_RULES.prj_mmpfiles += $$LITERAL_HASH"include \"./settings_uis_cenrep_collection_api/group/bld.inf\""
+}
+
--- a/gsprofilesrv_pub/profiles_engine_wrapper_api/tsrc/BC/ProfilesEngineWrapperAPI/src/ProEngWrapAPIBlocks.cpp	Thu Aug 05 11:11:52 2010 +0800
+++ b/gsprofilesrv_pub/profiles_engine_wrapper_api/tsrc/BC/ProfilesEngineWrapperAPI/src/ProEngWrapAPIBlocks.cpp	Thu Sep 02 17:14:05 2010 +0800
@@ -358,11 +358,27 @@
     CleanupStack::PushL( observer );
 
     MProEngProfile* generalProfile = engine->ProfileLC( EProfileGeneralId );
-    MProEngToneSettings& ts2( generalProfile->ToneSettings() );
+//    MProEngToneSettings& ts2( generalProfile->ToneSettings() );
     TRAP_IGNORE( 
             nh->RequestProfileNotificationsL( *observer,
                                                    EProfileGeneralId ) );
-    ts2.SetVibratingAlert( !ts2.VibratingAlert() );
+    //ts2.SetVibratingAlert( !ts2.VibratingAlert() );
+    MProEngTones& pt = generalProfile->ProfileTones();
+    const TDesC& emailAlertTone = pt.EmailAlertTone();
+    _LIT( KFile1, "z:\\data\\sounds\\digital\\alarm.aac" );
+    _LIT( KFile2, "z:\\data\\sounds\\digital\\Buzzer.aac" );
+
+    TBuf<100> buf1(KFile1);
+    TBuf<100> buf2(KFile2);
+    
+    if ( emailAlertTone.Compare( buf1 ) )
+        {
+        TRAP_IGNORE( pt.SetEmailAlertToneL(buf1));
+        }
+    else 
+        {
+        TRAP_IGNORE(pt.SetEmailAlertToneL(buf2));
+        }
     generalProfile->CommitChangeL();
     iSchedulerUtility->Start();
     CleanupStack::PopAndDestroy(); // generalProfile
@@ -394,15 +410,29 @@
     CProEngVTObserver* observer = new ( ELeave ) CProEngVTObserver(*iSchedulerUtility);
     CleanupStack::PushL( observer );
     MProEngProfile* generalProfile = engine->ProfileLC( EProfileGeneralId );
-    MProEngToneSettings& ts2( generalProfile->ToneSettings() );
+//    MProEngToneSettings& ts2( generalProfile->ToneSettings() );
     TRAP_IGNORE( 
             nh->RequestProfileNotificationsL( *observer,
                                                    EProfileGeneralId ) );
-    ts2.SetVibratingAlert( !ts2.VibratingAlert() );
+    MProEngTones& pt = generalProfile->ProfileTones();
+    const TDesC& emailAlertTone = pt.EmailAlertTone();
+    _LIT( KFile1, "z:\\data\\sounds\\digital\\alarm.aac" );
+    _LIT( KFile2, "z:\\data\\sounds\\digital\\Buzzer.aac" );
+
+    TBuf<100> buf1(KFile1);
+    TBuf<100> buf2(KFile2);
+    
+    if ( emailAlertTone.Compare( buf1 ) )
+        {
+        TRAP_IGNORE( pt.SetEmailAlertToneL(buf1));
+        }
+    else 
+        {
+        TRAP_IGNORE(pt.SetEmailAlertToneL(buf2));
+        }
     generalProfile->CommitChangeL();
     iSchedulerUtility->Start();
-    //CSchedulerUtility::InstanceL()->Start(); // observer stops this
-    nh->CancelProfileNotifications( EProfileMeetingId );
+    nh->CancelProfileNotifications( EProfileGeneralId );
     CleanupStack::PopAndDestroy(); // generalProfile
     CleanupStack::PopAndDestroy( observer );
     CleanupStack::PopAndDestroy( wrapper );
--- a/layers.sysdef.xml	Thu Aug 05 11:11:52 2010 +0800
+++ b/layers.sysdef.xml	Thu Sep 02 17:14:05 2010 +0800
@@ -7,8 +7,9 @@
   <systemModel>
     <layer name="bldfirst_mw_layer">
       <module name="gsprofilesrv">
-      	<unit name="ftuwizardmodel_api" unitID="ftuwizardmodel_api" mrp="" bldFile="&layer_real_source_path;/gsprofilesrv_plat/ftuwizardmodel_api" proFile="ftuwizardmodel_api.pro" qmakeArgs="-r -config rom"/>
-	      <unit name="ftuwizardmodel" unitID="ftuwizardmodel" mrp="" bldFile="&layer_real_source_path;/ftuwizardmodel" proFile="ftuwizardmodel.pro" qmakeArgs="-r -config rom"/>
+        <unit name="ftuwizardmodel_api" unitID="ftuwizardmodel_api" mrp="" bldFile="&layer_real_source_path;/gsprofilesrv_plat/ftuwizardmodel_api" proFile="ftuwizardmodel_api.pro" qmakeArgs="-r -config rom"/>
+        <unit name="ftuwizardmodel" unitID="ftuwizardmodel" mrp="" bldFile="&layer_real_source_path;/ftuwizardmodel" proFile="ftuwizardmodel.pro" qmakeArgs="-r -config rom"/>
+        <unit name="controlpanel_api" unitID="controlpanel_api" mrp="" bldFile="&layer_real_source_path;/gsprofilesrv_plat/controlpanel_api" proFile="controlpanel_api.pro" qmakeArgs="-r -config rom"/>
         <unit name="gsprofilesrv" unitID="presdo.gsprofilesrv" bldFile="&layer_real_source_path;/group" mrp="" />
       </module>
     </layer>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/package_definition.xml	Thu Sep 02 17:14:05 2010 +0800
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<SystemDefinition schema="3.0.0" xmlns:qt="http://www.nokia.com/qt">
+ <package id="gsprofilesrv" name="General Settings and Profiles Services" levels="system plugin framework server generic specific">
+  <collection id="gsprofilesrv_pub" name="GS and Profiles Services Public Interfaces" level="specific">
+   <component id="profiles_engine_active_profile_settings_api" name="Profiles Engine Active Profile Settings API" class="api" filter="s60">
+    <meta rel="Api" href="gsprofilesrv_pub/profiles_engine_active_profile_settings_api/profiles_engine_active_profile_settings_api.metaxml"/>
+    <unit bldFile="gsprofilesrv_pub/profiles_engine_active_profile_settings_api/group"/>
+   </component>
+   <component id="profiles_engine_wrapper_api" name="Profiles Engine Wrapper API" class="api" filter="s60">
+    <meta rel="Api" href="gsprofilesrv_pub/profiles_engine_wrapper_api/profiles_engine_wrapper_api.metaxml"/>
+    <unit bldFile="gsprofilesrv_pub/profiles_engine_wrapper_api/group"/>
+   </component>
+  </collection>
+  <collection id="gsprofilesrv_plat" name="GS and Profiles Services Platform Interfaces" level="specific">
+   <component id="ftuwizardmodel_api" name="FTU Wizard Model API" filter="bldfirst,s60" class="api">
+      <unit bldFile="gsprofilesrv_plat/ftuwizardmodel_api" qt:proFile="ftuwizardmodel_api.pro" qt:qmakeArgs="-r -config rom"/>
+   </component>
+   <component id="profiles_engine_api" name="Profiles Engine API" class="api" filter="bldfirst,s60">
+    <meta rel="Api" href="gsprofilesrv_plat/profiles_engine_api/profiles_engine_api.metaxml"/>
+    <unit bldFile="gsprofilesrv_plat/profiles_engine_api/group"/>
+   </component>
+   <component id="settings_uis_cenrep_collection_api" name="Settings UIs CenRep Collection API" class="api" filter="bldfirst,s60">
+    <meta rel="Api" href="gsprofilesrv_plat/settings_uis_cenrep_collection_api/settings_uis_cenrep_collection_api.metaxml"/>
+    <unit bldFile="gsprofilesrv_plat/settings_uis_cenrep_collection_api/group"/>
+   </component>
+   <component id="controlpanel_api" name="Control panel api" class="api" filter="bldfirst,s60">
+    <unit bldFile="gsprofilesrv_plat/controlpanel_api" qt:qmakeArgs="-r -config rom" qt:proFile="controlpanel_api.pro"/>
+   </component>
+  </collection>
+  <collection id="ftuwizardmodel" name="FTU Wizard Model" level="generic">
+    <component id="ftuwizardmodel_build" name="FTU Wizardmodel Build" filter="s60,bldfirst">
+     <unit bldFile="ftuwizardmodel" qt:proFile="ftuwizardmodel.pro" qt:qmakeArgs="-r -config rom"/>
+    </component>
+  </collection>
+  <collection id="controlpanel" name="Control Panel" level="generic">
+   <component id="controlpanel_test" name="Control Panel Test" filter="s60,test,qt_unit_test">
+      <meta rel="testbuild">
+       <group name="controlpanel_tests"/>
+      </meta>
+      <unit bldFile="controlpanel/tsrc" qt:proFile="tsrc.pro"/> 
+   </component> 
+   <component id="controlpanel_rom" name="Control Panel ROM" filter="s60" class="config">
+	  <unit bldFile="controlpanel/rom"/>
+   </component>
+   <component id="controlpanel_config" name="Control Panel Config" filter="s60" class="config" introduced="^4">
+	  <unit bldFile="controlpanel/conf"/>
+   </component>
+   <component id="controlpanel_source" name="Control Panel Source" filter="s60">
+	  <unit bldFile="controlpanel/src" qt:qmakeArgs="-r -config rom" qt:proFile="src.pro"/>
+   </component>
+  </collection>
+  <collection id="profilesservices" name="Profiles Services" level="server">
+   <component id="profileengine" filter="s60" name="Profile Engine" introduced="9.1">
+    <unit bldFile="profilesservices/profileengine/group"/>
+   </component>
+  </collection>
+ </package>
+</SystemDefinition>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/package_map.xml	Thu Sep 02 17:14:05 2010 +0800
@@ -0,0 +1,1 @@
+<PackageMap root="sf" layer="mw"/>
--- a/profilesservices/ProfileEngine/EngSrc/CProfileEngineImpl.cpp	Thu Aug 05 11:11:52 2010 +0800
+++ b/profilesservices/ProfileEngine/EngSrc/CProfileEngineImpl.cpp	Thu Sep 02 17:14:05 2010 +0800
@@ -1241,10 +1241,22 @@
 void CProfileEngineImpl::SetSilenceModeL( TBool aSilenceMode )
     {
     User::LeaveIfError( iCenRep->Set( KProEngSilenceMode, aSilenceMode ? 1 : 0 ) );
+    //Also set profiles' ring type to silence
+    TInt countOfProfiles = iProfileLocalisedNames->MdcaCount();
     
-    //Send event through P&S
-    CreatePubSubKeysIfNeededL();
-    PublishChangeL( KProEngActiveProfileModified );
+    for (TInt i = 0; i < countOfProfiles; ++i) 
+        {
+        const MProfileName* profileName = iProfileLocalisedNames->ProfileName(i);
+        if (profileName) 
+            {
+            MProfileExtended2* profile = Profile2LC(profileName->Id());      
+            TProfileToneSettings setToneSettings = profile->ProfileSetTones().SetToneSettings();
+            setToneSettings.iRingingType = aSilenceMode ? EProfileRingingTypeSilent : EProfileRingingTypeRinging;
+            CommitChange2L(*profile);
+            CleanupStack::PopAndDestroy();
+            }
+        
+        }
     }
 
 //  End of File
--- a/profilesservices/ProfileEngine/EngSrc/CProfileTonesImpl.cpp	Thu Aug 05 11:11:52 2010 +0800
+++ b/profilesservices/ProfileEngine/EngSrc/CProfileTonesImpl.cpp	Thu Sep 02 17:14:05 2010 +0800
@@ -142,14 +142,6 @@
             aProfileId ), value ) );
     iProfileToneSettings.iRingingType = TProfileRingingType( value );
     
-    //Since 10.1, check if silence mode
-    User::LeaveIfError(
-            aCenRep.Get( KProEngSilenceMode , value) );
-    if ( value )
-    	{
-		iProfileToneSettings.iRingingType = EProfileRingingTypeSilent;
-    	}
-    
     User::LeaveIfError(
             aCenRep.Get( ProfileEngUtils::ResolveKey( KProEngKeypadVolume,
             aProfileId ), value ) );
--- a/profilesservices/ProfileEngine/WrapperSrc/CProEngToneSettingsImpl.cpp	Thu Aug 05 11:11:52 2010 +0800
+++ b/profilesservices/ProfileEngine/WrapperSrc/CProEngToneSettingsImpl.cpp	Thu Sep 02 17:14:05 2010 +0800
@@ -116,14 +116,10 @@
 // CProEngToneSettingsImpl::
 // -----------------------------------------------------------------------------
 //
-TInt CProEngToneSettingsImpl::SetRingingType( TProfileRingingType aRingingType )
+TInt CProEngToneSettingsImpl::SetRingingType( TProfileRingingType /*aRingingType*/ )
     {
-    if( iModifiableFlags & EProfileFlagRingingType )
-        {
-        iToneSettings.iRingingType = aRingingType;
-        return KErrNone;
-        }
-    return KErrAccessDenied;
+    // since 10.1, ring type can't be set by user
+    return KErrNotSupported;
     }
 
 // -----------------------------------------------------------------------------