201019
authorhgs
Fri, 14 May 2010 13:21:08 +0800
changeset 19 36aa4756ee82
parent 12 624337f114fe
child 20 22d3abee08da
201019
controlpanelplugins/themeplugin/src/cpthemechanger.cpp
controlpanelplugins/themeplugin/src/cpthemechanger.h
controlpanelplugins/themeplugin/src/cpthemechanger_p.cpp
controlpanelplugins/themeplugin/src/cpthemechanger_p.h
controlpanelplugins/themeplugin/src/cpthemeclient_p.cpp
controlpanelplugins/themeplugin/src/cpthemeclient_p.h
controlpanelplugins/themeplugin/src/cpthemeclientqt_p.cpp
controlpanelplugins/themeplugin/src/cpthemeclientqt_p.h
controlpanelplugins/themeplugin/src/cpthemeclientsymbian_p.cpp
controlpanelplugins/themeplugin/src/cpthemeclientsymbian_p.h
controlpanelplugins/themeplugin/src/cpthemecommon_p.h
controlpanelplugins/themeplugin/src/cpthemecontrol.cpp
controlpanelplugins/themeplugin/src/cpthemecontrol.h
controlpanelplugins/themeplugin/src/cpthemelistview.cpp
controlpanelplugins/themeplugin/src/cpthemeplugin.cpp
controlpanelplugins/themeplugin/src/cpthemeplugin.h
controlpanelplugins/themeplugin/src/cpthemepreview.cpp
controlpanelplugins/themeplugin/src/cpthemepreview.h
controlpanelplugins/themeplugin/src/cpthemesymbiancommon_p.h
controlpanelui/examples/examples.pro
controlpanelui/examples/pluginlauncherclient/pluginlauncherclient.pri
controlpanelui/examples/pluginlauncherclient/pluginlauncherclient.pro
controlpanelui/examples/pluginlauncherclient/src/main.cpp
controlpanelui/examples/pluginlauncherclient/src/mainview.cpp
controlpanelui/examples/pluginlauncherclient/src/mainview.h
controlpanelui/examples/rom/controlpanel_examples.iby
controlpanelui/examples/viewplugin/src/cpsampleview.cpp
controlpanelui/rom/controlpanelui.iby
controlpanelui/rom/controlpanelui_resources.iby
controlpanelui/src/bwins/cpcategorymodelu.def
controlpanelui/src/bwins/cpprofilewrapperu.def
controlpanelui/src/bwins/cpringtoneviewu.def
controlpanelui/src/cpapplication/cpapplication.pri
controlpanelui/src/cpapplication/data/mainview.cpcfg
controlpanelui/src/cpapplication/src/cpmainview.cpp
controlpanelui/src/cpapplication/src/cpmainview.h
controlpanelui/src/cpapplication/src/cpmainwindow.cpp
controlpanelui/src/cpapplication/src/cpmainwindow.h
controlpanelui/src/cpapplication/src/main.cpp
controlpanelui/src/cpcategorymodel/cpcategorymodel.pri
controlpanelui/src/cpcategorymodel/src/cpcategorymodelutility.cpp
controlpanelui/src/cpcategorymodel/src/cpcategorymodelutility.h
controlpanelui/src/cpcategorymodel/src/cpcategorysettingformitemdata.cpp
controlpanelui/src/cpcategorymodel/src/cpcategorysettingformmodel.cpp
controlpanelui/src/cpcategorymodel/src/cpplaceholderitemdata.cpp
controlpanelui/src/cpcategorymodel/src/cpplaceholderitemdata.h
controlpanelui/src/cpcategorymodel/src/cptaskexecutor.cpp
controlpanelui/src/cpcategorymodel/src/cputility.cpp
controlpanelui/src/cpcategorymodel/src/cputility.h
controlpanelui/src/cpplugins/cpplugins.pro
controlpanelui/src/cpplugins/devicelockplugin/devicelockplugin.pri
controlpanelui/src/cpplugins/devicelockplugin/devicelockplugin.pro
controlpanelui/src/cpplugins/devicelockplugin/src/cpdevicelockplugin.cpp
controlpanelui/src/cpplugins/devicelockplugin/src/cpdevicelockplugin.h
controlpanelui/src/cpplugins/devicelockplugin/src/cpdevicelockpluginview.cpp
controlpanelui/src/cpplugins/devicelockplugin/src/cpdevicelockpluginview.h
controlpanelui/src/cpplugins/devicelockplugin/src/cpremotelockdataformviewitem.cpp
controlpanelui/src/cpplugins/devicelockplugin/src/cpremotelockdataformviewitem.h
controlpanelui/src/cpplugins/deviceplugin/data/cpdeviceplugin.cpcfg
controlpanelui/src/cpplugins/keytouchfdbkplugin/keytouchfdbkplugin.pri
controlpanelui/src/cpplugins/keytouchfdbkplugin/keytouchfdbkplugin.pro
controlpanelui/src/cpplugins/keytouchfdbkplugin/src/cpkeyscreenconstants.h
controlpanelui/src/cpplugins/keytouchfdbkplugin/src/cpkeyscreenmodel.cpp
controlpanelui/src/cpplugins/keytouchfdbkplugin/src/cpkeyscreenmodel.h
controlpanelui/src/cpplugins/keytouchfdbkplugin/src/cpkeyscreenmodel_p.cpp
controlpanelui/src/cpplugins/keytouchfdbkplugin/src/cpkeyscreenmodel_p.h
controlpanelui/src/cpplugins/keytouchfdbkplugin/src/cpkeyscreenplugin.cpp
controlpanelui/src/cpplugins/keytouchfdbkplugin/src/cpkeyscreenplugin.h
controlpanelui/src/cpplugins/keytouchfdbkplugin/src/cpkeyscreenview.cpp
controlpanelui/src/cpplugins/keytouchfdbkplugin/src/cpkeyscreenview.h
controlpanelui/src/cpplugins/keytouchfdbkplugin/src/cpkeytouchfdbkplugin.cpp
controlpanelui/src/cpplugins/keytouchfdbkplugin/src/cpkeytouchfdbkplugin.h
controlpanelui/src/cpplugins/keytouchfdbkplugin/src/cpktfdbkview.cpp
controlpanelui/src/cpplugins/keytouchfdbkplugin/src/cpktfdbkview.h
controlpanelui/src/cpplugins/personalizationplugin/data/cppersonalizationplugin.cpcfg
controlpanelui/src/cpplugins/personalizationplugin/personalizationplugin.pri
controlpanelui/src/cpplugins/personalizationplugin/personalizationplugin.pro
controlpanelui/src/cpplugins/personalizationplugin/src/cpmastervolumeslider.cpp
controlpanelui/src/cpplugins/personalizationplugin/src/cpmastervolumeslider.h
controlpanelui/src/cpplugins/personalizationplugin/src/cppersonalizationadvanceview.cpp
controlpanelui/src/cpplugins/personalizationplugin/src/cppersonalizationentryitemdata.cpp
controlpanelui/src/cpplugins/personalizationplugin/src/cppersonalizationentryitemdata.h
controlpanelui/src/cpplugins/personalizationplugin/src/cppersonalizationgroupitemdata.cpp
controlpanelui/src/cpplugins/personalizationplugin/src/cppersonalizationplugin.cpp
controlpanelui/src/cpplugins/personalizationplugin/src/cppersonalizationplugin.h
controlpanelui/src/cpplugins/personalizationplugin/src/cpprofilenameeditdialog.cpp
controlpanelui/src/cpplugins/personalizationplugin/src/cpprofilesettingform.cpp
controlpanelui/src/cpplugins/personalizationplugin/src/cpprofilesettingform.h
controlpanelui/src/cpplugins/pincodeplugin/pincodeplugin.pri
controlpanelui/src/cpplugins/pincodeplugin/pincodeplugin.pro
controlpanelui/src/cpplugins/pincodeplugin/src/cppincodeplugin.cpp
controlpanelui/src/cpplugins/pincodeplugin/src/cppincodeplugin.h
controlpanelui/src/cpplugins/pincodeplugin/src/cppincodepluginview.cpp
controlpanelui/src/cpplugins/pincodeplugin/src/cppincodepluginview.h
controlpanelui/src/cpplugins/privacyplugin/data/cpprivacyplugin.cpcfg
controlpanelui/src/cpplugins/profileactivatorplugin/src/cpprofileactivatordialog.cpp
controlpanelui/src/cpplugins/profileactivatorplugin/src/cpprofileactivatordialog.h
controlpanelui/src/cpplugins/profileactivatorplugin/src/cpprofileactivatorentryitem.cpp
controlpanelui/src/cpplugins/profileactivatorplugin/src/cpprofileactivatorentryitem.h
controlpanelui/src/cpplugins/ringtoneplugin/ringtoneplugin.pro
controlpanelui/src/cpplugins/ringtoneplugin/src/cppersonalizationentryitemdata.cpp
controlpanelui/src/cpplugins/ringtoneplugin/src/cppersonalizationentryitemdata.h
controlpanelui/src/cpplugins/volumeplugin/src/cpmastervolumeslider.cpp
controlpanelui/src/cpplugins/volumeplugin/src/cpmastervolumeslider.h
controlpanelui/src/cpplugins/volumeplugin/src/cppersonalizationcustomviewitem.cpp
controlpanelui/src/cpplugins/volumeplugin/src/cppersonalizationcustomviewitem.h
controlpanelui/src/cpplugins/volumeplugin/src/cpvolumecontroller.cpp
controlpanelui/src/cpplugins/volumeplugin/src/cpvolumecontroller.h
controlpanelui/src/cpplugins/volumeplugin/src/cpvolumegroupitemdata.cpp
controlpanelui/src/cpplugins/volumeplugin/src/cpvolumegroupitemdata.h
controlpanelui/src/cpplugins/volumeplugin/volumeplugin.pro
controlpanelui/src/cpprofilewrapper/src/cpprofilemodel.cpp
controlpanelui/src/cpprofilewrapper/src/cpprofilemodel_p.cpp
controlpanelui/src/cpprofilewrapper/src/cpprofilemodel_p.h
controlpanelui/src/cpprofilewrapper/src/cpprofilemodel_win_p.cpp
controlpanelui/src/cpringtoneview/cpringtoneview.pro
controlpanelui/src/cpringtoneview/ringtoneview.pri
controlpanelui/src/cpringtoneview/src/cpringtoneview.cpp
controlpanelui/src/cpserviceprovider/service_conf.xml
controlpanelui/src/cpserviceprovider/src/cplauncherservice.cpp
controlpanelui/src/cpserviceprovider/src/cplauncherservice.h
controlpanelui/src/cpserviceprovider/src/cpservicemainwindow.cpp
controlpanelui/src/cpserviceprovider/src/cpservicemainwindow.h
controlpanelui/src/cpserviceprovider/src/main.cpp
controlpanelui/src/eabi/cpcategorymodelu.def
controlpanelui/src/eabi/cpprofilewrapperu.def
controlpanelui/src/eabi/cpringtoneviewu.def
controlpanelui/src/inc/cpevent.h
controlpanelui/src/inc/cpprofilemodel.h
controlpanelui/src/inc/cpringtoneview.h
controlpanelui/src/inc/cptaskexecutor.h
controlpanelui/src/inc/cpuids.h
controlpanelui/src/inc/inc.pri
controlpanelui/src/inc/ringtoneviewdef.h
controlpanelui/src/seccodeui/seccodeui.pri
controlpanelui/src/seccodeui/seccodeui.pro
controlpanelui/src/seccodeui/src/seccodeedit.cpp
controlpanelui/src/seccodeui/src/seccodeedit.h
controlpanelui/src/seccodeui/src/seccodeeditdataformviewitem.cpp
controlpanelui/src/seccodeui/src/seccodeeditdataformviewitem.h
controlpanelui/src/seccodeui/src/seccodemodel.cpp
controlpanelui/src/seccodeui/src/seccodemodel.h
controlpanelui/src/seccodeui/src/seccodemodel_p.h
controlpanelui/src/seccodeui/src/seccodemodel_symbian.cpp
controlpanelui/src/seccodeui/src/seccodemodel_win.cpp
controlpanelui/src/seccodeui/src/seccodesettings.cpp
controlpanelui/src/seccodeui/src/seccodesettings.h
controlpanelui/src/seccodeui/src/seccodeuiglobal.h
controlpanelui/src/seccodeui/src/seccodeuiutility.cpp
controlpanelui/src/seccodeui/src/seccodeuiutility.h
controlpanelui/src/src.pro
controlpanelui/src/tonefetcher/common.pri
controlpanelui/src/tonefetcher/inc/tonefetcherutils.cpp
controlpanelui/src/tonefetcher/inc/tonefetcherutils.h
controlpanelui/src/tonefetcher/rom/rom.pri
controlpanelui/src/tonefetcher/rom/tonefetcher.iby
controlpanelui/src/tonefetcher/service_conf.xml
controlpanelui/src/tonefetcher/src/main.cpp
controlpanelui/src/tonefetcher/src/tonefetcher.cpp
controlpanelui/src/tonefetcher/src/tonefetcher.h
controlpanelui/src/tonefetcher/src/tonefetchermainwindow.cpp
controlpanelui/src/tonefetcher/src/tonefetchermainwindow.h
controlpanelui/src/tonefetcher/src/tonefetchermodel.cpp
controlpanelui/src/tonefetcher/src/tonefetchermodel.h
controlpanelui/src/tonefetcher/src/tonefetcherview.cpp
controlpanelui/src/tonefetcher/src/tonefetcherview.h
controlpanelui/src/tonefetcher/src/tonefetcherwidget.cpp
controlpanelui/src/tonefetcher/src/tonefetcherwidget.h
controlpanelui/src/tonefetcher/tonefetcher.pri
controlpanelui/src/tonefetcher/tonefetcher.pro
controlpanelui/src/tonefetcher/tonefetcherengine/private/symbian/tonepreviewprivate.cpp
controlpanelui/src/tonefetcher/tonefetcherengine/private/symbian/tonepreviewprivate.h
controlpanelui/src/tonefetcher/tonefetcherengine/private/symbian/toneselectionengine_p.cpp
controlpanelui/src/tonefetcher/tonefetcherengine/private/symbian/toneselectionengine_p.h
controlpanelui/src/tonefetcher/tonefetcherengine/tonefetcherengine.cpp
controlpanelui/src/tonefetcher/tonefetcherengine/tonefetcherengine.h
controlpanelui/src/tonefetcher/tsrc/main.cpp
controlpanelui/src/tonefetcher/tsrc/rom/rom.pri
controlpanelui/src/tonefetcher/tsrc/rom/tonetestapp.iby
controlpanelui/src/tonefetcher/tsrc/tonetestapp.cpp
controlpanelui/src/tonefetcher/tsrc/tonetestapp.h
controlpanelui/src/tonefetcher/tsrc/tonetestapp.pro
--- a/controlpanelplugins/themeplugin/src/cpthemechanger.cpp	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelplugins/themeplugin/src/cpthemechanger.cpp	Fri May 14 13:21:08 2010 +0800
@@ -1,20 +1,19 @@
 /*
-* Copyright (c) 2008-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:  Implementation of the HbThemeChanger class
+ * 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 "cpthemechanger.h"
 #include "cpthemechanger_p.h"
@@ -47,19 +46,10 @@
 QAbstractItemModel& CpThemeChanger::model()
 {
     Q_D(CpThemeChanger);
-
+   
     return d->model;
 }
 
-/*! 
-  Provide a list of currently available themes.
-*/
-const QList<CpThemeChanger::ThemeInfo> CpThemeChanger::themes() const
-{
-    Q_D(const CpThemeChanger);
-
-    return d->themes();
-}
 
 /*!
   Creates a connection to the theme server for the purpose of 
--- a/controlpanelplugins/themeplugin/src/cpthemechanger.h	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelplugins/themeplugin/src/cpthemechanger.h	Fri May 14 13:21:08 2010 +0800
@@ -1,20 +1,19 @@
 /*
-* Copyright (c) 2008-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:  HbThemeChanger class definition
-*
-*/
-
+ * 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 CPTHEMECHANGER_H
 #define CPTHEMECHANGER_H
@@ -56,7 +55,6 @@
         LandscapePreviewRole
     };
     
-    const QList<ThemeInfo> themes() const;
     QAbstractItemModel& model();
 
     const ThemeInfo& currentTheme() const;
--- a/controlpanelplugins/themeplugin/src/cpthemechanger_p.cpp	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelplugins/themeplugin/src/cpthemechanger_p.cpp	Fri May 14 13:21:08 2010 +0800
@@ -1,25 +1,26 @@
 /*
-* Copyright (c) 2008-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:  Private implementation of the theme changer.
+ * 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 "cpthemechanger.h"
 #include "cpthemechanger_p.h"
 #include <QStringList>
 #include <QSettings>
 #include <QFileSystemWatcher>
+#include <QPixmap>
 #include <QSizeF>
 #include <hbicon.h>
 #include <hbinstance.h>
@@ -37,9 +38,7 @@
     static const char* KThemePathKey = "HB_THEMES_DIR";
 #endif
 
-    static const QString KDefaultTheme = "hbdefault";
-    static const char* KSettingsCategory = "currenttheme";
-    static const bool KDefaultPreviewAvailable = true;
+    static const QString KDefaultTheme = "hbdefault";   
 }
 
 CpThemeChangerPrivate::CpThemeChangerPrivate(CpThemeChanger* qq):
@@ -76,8 +75,12 @@
     #endif
 
     // Get our current state
-    QSettings settings(QLatin1String(ORGANIZATION), QLatin1String(THEME_COMPONENT));
-    mCurrentTheme.name = settings.value(KSettingsCategory).toString();
+    if (HbInstance::instance()) {
+        HbTheme *hbTheme = HbInstance::instance()->theme();
+        if (hbTheme) {
+            mCurrentTheme.name = hbTheme->name();
+        }
+    }
     updateThemeList(mCurrentTheme.name);
 
     // Watch for changes to the theme directory in flash.
@@ -154,35 +157,32 @@
                     iniSetting.beginGroup("Icon Theme");
                     QString hidden = iniSetting.value("Hidden").toString();
                     QString name = iniSetting.value("Name").toString();
-                    QString iconPath = iniSetting.value("PreviewIconPath").toString();
+                    QString iconPath = iniSetting.value("PreviewThumbnailPath").toString();
+                    QString previewPathPrt = iniSetting.value("PreviewIconPath_prt").toString();
+                    QString previewPathLsc = iniSetting.value("PreviewIconPath_lsc").toString();
                     if (name.isEmpty()) {
                         continue;
                     }
-                    if (!KDefaultPreviewAvailable && iconPath.isEmpty())
-                    {
-                        continue;
-                    }
+                    
                     QString fullPathToIcon(iconThemePath.path() + iconPath);
-                    // Don't treat this as a theme unless it's got a preview.
-                    if (!QFileInfo(fullPathToIcon).exists() && !KDefaultPreviewAvailable) {
-                        continue;
-                    }
-                    if(iconPath.isEmpty()){
+                    
+                    if(iconPath.isEmpty()|| !QFileInfo(fullPathToIcon).exists()){
                         
-                        //if no preview graphics path specified,look for the background graphic.
-                        //first look in /scalable folder.  if not there, look in pixmap folder.
-                    
                         //Set thumbnail
                         if(QFileInfo(fullPathToIcon + "/scalable/qtg_graf_theme_preview_thumbnail.svg").exists()){
                             nameIconPair.icon = HbIcon(fullPathToIcon + "/scalable/qtg_graf_theme_preview_thumbnail.svg");
                         }else if(QFileInfo(fullPathToIcon + "/scalable/qtg_graf_screen_bg_prt.svg").exists()){
-                            nameIconPair.icon = HbIcon(fullPathToIcon + "/scalable/qtg_graf_screen_bg_prt.svg");
-                            qreal width = nameIconPair.icon.width();
-                            nameIconPair.icon.setHeight(width);
+                            QPixmap px(fullPathToIcon + "/scalable/qtg_graf_screen_bg_prt.svg");
+                            QIcon scaledIcon(px.scaled(QSize(64, 64)));
+                            nameIconPair.icon = HbIcon(scaledIcon);
+                            nameIconPair.icon.setIconName(fullPathToIcon + "/scalable/qtg_graf_screen_bg_prt.svg");
+                           
                         } else if(QFileInfo(fullPathToIcon + "/pixmap/qtg_graf_screen_bg_prt.png").exists()){
-                            nameIconPair.icon = HbIcon(fullPathToIcon + "/pixmap/qtg_graf_screen_bg_prt.png");
-                            qreal width = nameIconPair.icon.width();
-                            nameIconPair.icon.setHeight(width);
+                            QPixmap px(fullPathToIcon + "/pixmap/qtg_graf_screen_bg_prt.png");
+                            QIcon scaledIcon(px.scaled(QSize(64, 64)));
+                            nameIconPair.icon = HbIcon(scaledIcon);
+                            nameIconPair.icon.setIconName(fullPathToIcon + "/scalable/qtg_graf_screen_bg_prt.png");
+                          
                         } else{
                             nameIconPair.icon = HbIcon(":/image/themePreview.svg");
                         }
@@ -190,26 +190,42 @@
                         nameIconPair.icon = HbIcon(fullPathToIcon);
                     }
                     
-                    //set portrait preview
-                    if(QFileInfo(fullPathToIcon + "/scalable/qtg_graf_theme_preview_prt.svg").exists()){
-                        nameIconPair.portraitPreviewIcon = HbIcon(fullPathToIcon + "/scalable/qtg_graf_theme_preview_prt.svg");
-                    }else if(QFileInfo(fullPathToIcon + "/scalable/qtg_graf_screen_bg_prt.svg").exists()){
-                        nameIconPair.portraitPreviewIcon = HbIcon(fullPathToIcon + "/scalable/qtg_graf_screen_bg_prt.svg");
-                    } else if(QFileInfo(fullPathToIcon + "/pixmap/qtg_graf_screen_bg_prt.png").exists()){
-                        nameIconPair.portraitPreviewIcon = HbIcon(fullPathToIcon + "/pixmap/qtg_graf_screen_bg_prt.png");
-                    } else{
-                        nameIconPair.portraitPreviewIcon = HbIcon(":/image/themePreview.svg");
+                    //Portrait preview
+                    QString fullPathToPreviewPrt = (iconThemePath.path() + previewPathPrt );
+                    
+                    if(previewPathPrt.isEmpty() || !QFileInfo(fullPathToPreviewPrt).exists()) {
+                    
+                        if(QFileInfo(fullPathToPreviewPrt + "/scalable/qtg_graf_theme_preview_prt.svg").exists()){
+                            nameIconPair.portraitPreviewIcon = HbIcon(fullPathToPreviewPrt + "/scalable/qtg_graf_theme_preview_prt.svg");
+                        }else if(QFileInfo(fullPathToPreviewPrt + "/scalable/qtg_graf_screen_bg_prt.svg").exists()){
+                            nameIconPair.portraitPreviewIcon = HbIcon(fullPathToPreviewPrt + "/scalable/qtg_graf_screen_bg_prt.svg");
+                        } else if(QFileInfo(fullPathToPreviewPrt + "/pixmap/qtg_graf_screen_bg_prt.png").exists()){
+                            nameIconPair.portraitPreviewIcon = HbIcon(fullPathToPreviewPrt + "/pixmap/qtg_graf_screen_bg_prt.png");
+                        } else{
+                            nameIconPair.portraitPreviewIcon = HbIcon(":/image/themePreview.svg");
+                        }
+                    }
+                    else {
+                        nameIconPair.portraitPreviewIcon = HbIcon(fullPathToPreviewPrt);
                     }
                     
-                    //set landscape preview
-                    if(QFileInfo(fullPathToIcon + "/scalable/qtg_graf_theme_preview_lsc.svg").exists()){
-                        nameIconPair.landscapePreviewIcon = HbIcon(fullPathToIcon + "/scalable/qtg_graf_theme_preview_lsc.svg");
-                    }else if(QFileInfo(fullPathToIcon + "/scalable/qtg_graf_screen_bg_lsc.svg").exists()){
-                        nameIconPair.landscapePreviewIcon = HbIcon(fullPathToIcon + "/scalable/qtg_graf_screen_bg_lsc.svg");
-                    } else if(QFileInfo(fullPathToIcon + "/pixmap/qtg_graf_screen_bg_lsc.png").exists()){
-                        nameIconPair.landscapePreviewIcon = HbIcon(fullPathToIcon + "/pixmap/qtg_graf_screen_bg_lsc.png");
-                    } else{
-                        nameIconPair.landscapePreviewIcon = HbIcon(":/image/themePreview.svg");
+                    //Landscape preview
+                    QString fullPathToPreviewLsc = (iconThemePath.path() + previewPathLsc );
+                                    
+                    if(previewPathLsc.isEmpty() || !QFileInfo(fullPathToPreviewLsc).exists()) {
+                                
+                        if(QFileInfo(fullPathToPreviewLsc + "/scalable/qtg_graf_theme_preview_lsc.svg").exists()){
+                            nameIconPair.landscapePreviewIcon = HbIcon(fullPathToPreviewLsc + "/scalable/qtg_graf_theme_preview_lsc.svg");
+                        }else if(QFileInfo(fullPathToPreviewLsc + "/scalable/qtg_graf_screen_bg_lsc.svg").exists()){
+                            nameIconPair.landscapePreviewIcon = HbIcon(fullPathToPreviewLsc + "/scalable/qtg_graf_screen_bg_lsc.svg");
+                        } else if(QFileInfo(fullPathToPreviewLsc + "/pixmap/qtg_graf_screen_bg_lsc.png").exists()){
+                            nameIconPair.landscapePreviewIcon = HbIcon(fullPathToPreviewLsc + "/pixmap/qtg_graf_screen_bg_lsc.png");
+                        } else{
+                            nameIconPair.landscapePreviewIcon = HbIcon(":/image/themePreview.svg");
+                        }
+                    }
+                    else {
+                        nameIconPair.landscapePreviewIcon = HbIcon(fullPathToPreviewLsc);
                     }
                 
                     nameIconPair.name = name;
@@ -236,21 +252,23 @@
             }
         }
     }
-    // Include default
-    CpThemeChanger::ThemeInfo def;
-    def.name = KDefaultTheme;
-    def.icon = HbIcon(":/image/themePreview.svg");
-    themeList.append(def);
+    
     if (mCurrentTheme.name == KDefaultTheme)
     {
-        mCurrentTheme = def;
+        // Include default
+         CpThemeChanger::ThemeInfo def;
+         def.name = KDefaultTheme;
+         def.icon = HbIcon(":/image/themePreview.svg");
+         themeList.append(def);
+  
+         mCurrentTheme = def;
     }
 
 }
 
 const QList<CpThemeChanger::ThemeInfo>& CpThemeChangerPrivate::themes() const
 {
-    return themeList;
+   return themeList;
 }
 
 bool CpThemeChangerPrivate::connectToServer()
@@ -289,7 +307,7 @@
     if (exists) {
         result = themeClient->changeTheme(newTheme);
 		updateThemeList(newTheme);
-}
+    }
     return result;
 }
 
--- a/controlpanelplugins/themeplugin/src/cpthemechanger_p.h	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelplugins/themeplugin/src/cpthemechanger_p.h	Fri May 14 13:21:08 2010 +0800
@@ -1,20 +1,19 @@
 /*
-* Copyright (c) 2008-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:  HbThemeChangerPrivate class definition
-*
-*/
-
+ * 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 HBTHEMECHANGER_P_H
 #define HBTHEMECHANGER_P_H
@@ -71,8 +70,6 @@
     const QList<CpThemeChanger::ThemeInfo>& themes() const;
     void updateThemeList(const QString& currentThemeName = QString());
 
-    const QStringList directories() const;
-
     const CpThemeChanger::ThemeInfo& currentTheme() const;
     int indexOf(const CpThemeChanger::ThemeInfo& theme) const;
 
--- a/controlpanelplugins/themeplugin/src/cpthemeclient_p.cpp	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelplugins/themeplugin/src/cpthemeclient_p.cpp	Fri May 14 13:21:08 2010 +0800
@@ -1,20 +1,19 @@
 /*
-* Copyright (c) 2008-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: 
-*
-*/
-
+ * 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 "cpthemeclient_p.h"
 
--- a/controlpanelplugins/themeplugin/src/cpthemeclient_p.h	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelplugins/themeplugin/src/cpthemeclient_p.h	Fri May 14 13:21:08 2010 +0800
@@ -1,19 +1,19 @@
 /*
-* Copyright (c) 2008-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: 
-*
-*/
+ * 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 CPTHEMECLIENT_P_H
 #define CPTHEMECLIENT_P_H
--- a/controlpanelplugins/themeplugin/src/cpthemeclientqt_p.cpp	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelplugins/themeplugin/src/cpthemeclientqt_p.cpp	Fri May 14 13:21:08 2010 +0800
@@ -1,20 +1,19 @@
 /*
-* Copyright (c) 2008-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: 
-*
-*/
-
+ * 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 "cpthemeclientqt_p.h"
 #include <QLocalSocket>
@@ -25,11 +24,7 @@
 #include <QDir>
 
 #include <hbinstance.h>
-// TODO Do we need these?
-//#include <hbtheme_p.h>
-//#include <hbtheme.h>
-//#include <hbevent.h>
-//#include "hbthemecommon_p.h"
+
 
 #define WAIT_TIME_TO_CONNECT_TO_SERVER 500
 #define WAIT_TIME_TO_START_SERVER 5000
--- a/controlpanelplugins/themeplugin/src/cpthemeclientqt_p.h	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelplugins/themeplugin/src/cpthemeclientqt_p.h	Fri May 14 13:21:08 2010 +0800
@@ -1,20 +1,19 @@
 /*
-* Copyright (c) 2008-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: 
-*
-*/
-
+ * 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 CPTHEMECLIENTQT_P_H
 #define CPTHEMECLIENTQT_P_H
--- a/controlpanelplugins/themeplugin/src/cpthemeclientsymbian_p.cpp	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelplugins/themeplugin/src/cpthemeclientsymbian_p.cpp	Fri May 14 13:21:08 2010 +0800
@@ -1,35 +1,29 @@
 /*
-* Copyright (c) 2008-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: 
-*
-*/
-
+ * 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 "cpthemeclientsymbian_p.h"
 #include "cpthemesymbiancommon_p.h"
+#include <e32property.h>
 
-#include <QFile>
-#include <QDebug>
-#include <QTime>
-
-const TUint KDefaultMessageSlots = 4;
 
 /**
 * constructor
 */
-CpThemeClientPrivate::CpThemeClientPrivate():
-    clientConnected(false)
+CpThemeClientPrivate::CpThemeClientPrivate()
 {
 }
 
@@ -40,11 +34,7 @@
 */
 bool CpThemeClientPrivate::connectToServer()
 {
-   
-    TInt error; 
-    
-    error = CreateSession(KThemeServerName, Version(), KDefaultMessageSlots);
-    return( clientConnected = (KErrNone == error ) );
+    return true;
 }
 
 /**
@@ -52,19 +42,7 @@
 */
 bool CpThemeClientPrivate::isConnected()
 {
-    return connected;
-}
-
-
-
-/**
-Returns the version number
-*/  
-TVersion CpThemeClientPrivate::Version(void) const
-{
-    return(TVersion(KThemeServerMajorVersionNumber,
-                    KThemeServerMinorVersionNumber,
-                    KThemeServerBuildVersionNumber));
+    return true;
 }
 
 /**
@@ -72,53 +50,6 @@
  */
 CpThemeClientPrivate::~CpThemeClientPrivate()
 {
-    RSessionBase::Close();
-}
-
-/**
- * StartServer
- */
-TInt CpThemeClientPrivate::StartServer()
-{
-    TFindServer findThemeServer(KThemeServerName);
-    TFullName name;
-    if ( KErrNone == findThemeServer.Next( name ) ) {
-        // Server already running
-        return KErrNone;
-    }
-    return CreateServerProcess();
-}
-
-/**
- * CreateServerProcess
- */
-TInt CpThemeClientPrivate::CreateServerProcess()
-{
-    TInt result;
-    const TUid KServerUid2={0x100039CE};
-    const TUidType serverUid( KNullUid, KServerUid2, KServerUid3 );
-    RProcess server;
-    _LIT(KThemeServerExe,"hbthemeserver.exe");
-    
-    result = server.Create( KThemeServerExe, KNullDesC, EOwnerProcess );
-    
-    if (KErrNone != result) {
-        return  result; 
-    }
-    else {
-        TRequestStatus status;
-        server.Rendezvous(status);
-        if (status!=KRequestPending) {
-            server.Kill(0); // abort startup
-        }
-        else {
-            server.Resume(); // logon OK - start the server
-        }
-        User::WaitForRequest(status);// wait for start or death
-        server.Close();
-        connected == status.Int() == KErrNone ? true : false;
-        return status.Int(); // return the error
-    }
 }
 
 /**
@@ -126,8 +57,16 @@
  */
 bool CpThemeClientPrivate::changeTheme(const QString& aString )
 {
-    TPtrC themeName(reinterpret_cast<const TUint16 *>(aString.constData()));
-    TIpcArgs args(&themeName);
-    TInt err = SendReceive(EThemeSelection, args);
-    return KErrNone == err;
+    TInt err = KErrGeneral;
+    RProperty themeRequestProp;
+    
+    User::LeaveIfError( themeRequestProp.Attach( KServerUid3, KNewThemeForThemeChanger ) );
+    
+    TBuf<256> newThemenameChangeRequest;
+    _LIT(KThemeRequestFormatter, "%d:%S");
+    TBuf<256> newThemename(aString.utf16());
+    newThemenameChangeRequest.Format( KThemeRequestFormatter, EThemeSelection, &newThemename);
+    err = themeRequestProp.Set(newThemenameChangeRequest);
+    themeRequestProp.Close();
+    return (err == KErrNone);
 }
--- a/controlpanelplugins/themeplugin/src/cpthemeclientsymbian_p.h	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelplugins/themeplugin/src/cpthemeclientsymbian_p.h	Fri May 14 13:21:08 2010 +0800
@@ -1,61 +1,40 @@
 /*
-* Copyright (c) 2008-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: 
-*
-*/
-
+ * 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 CPTHEMECLIENTSYMBIAN_P_H
 #define CPTHEMECLIENTSYMBIAN_P_H
 
-
-#include <QIcon>
-// TODO Do we need this?
-//#include "hbthemecommon_p.h"
-//ToDo: replace this with forward declaration
+#include <QString>
 #if !defined(__E32BASE_H__)
 #include <e32base.h>
 #endif
 
-class CThemeListenerPrivate;
-class QSizeF;
-class HbEffectFxmlData;
-struct MeshItem;
-
-class CpThemeClientPrivate : public RSessionBase
+class CpThemeClientPrivate
 {
 public:
     CpThemeClientPrivate();
 
     bool connectToServer();
+    
+    bool changeTheme(const QString& newtheme);
+    
     bool isConnected();
 
-    bool changeTheme(const QString& newtheme);
     ~CpThemeClientPrivate();
-    
-public:
-    bool clientConnected;
-
-private:
-    TVersion Version() const;
-    TInt StartServer();
-    TInt CreateServerProcess();
-    
-private:
-    CThemeListenerPrivate *themelistener;
-    QString themeName;
-    bool connected;
 };
 
 #endif /* CPTHEMECLIENTSYMBIAN_P_H */
--- a/controlpanelplugins/themeplugin/src/cpthemecommon_p.h	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelplugins/themeplugin/src/cpthemecommon_p.h	Fri May 14 13:21:08 2010 +0800
@@ -1,20 +1,19 @@
 /*
-* Copyright (c) 2008-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: 
-*
-*/
-
+ * 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 HBTHEMECOMMON_P_H
 #define HBTHEMECOMMON_P_H
--- a/controlpanelplugins/themeplugin/src/cpthemecontrol.cpp	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelplugins/themeplugin/src/cpthemecontrol.cpp	Fri May 14 13:21:08 2010 +0800
@@ -34,6 +34,8 @@
 #include <QStandardItem>
 #include <QTranslator>
 #include <QSortFilterProxyModel>
+#include <QDebug>
+#include <QThread>
 
 #include <hbmainwindow.h>
 #include <hbinstance.h>
@@ -65,7 +67,8 @@
     mThemePreview(0), 
     mThemeChanger(0),
     mListModel(0),
-    mSortModel(0)
+    mSortModel(0),
+    mIdleTimer(0)
 {
     mThemeChanger = new CpThemeChanger();
    
@@ -75,7 +78,11 @@
     QString path = "Z:/resource/qt/translations/";
     translator->load("control_panel_" + lang, path);
     qApp->installTranslator(translator);
-
+    
+    mIdleTimer = new QTimer(this);
+    connect(mIdleTimer, SIGNAL(timeout()), this, SLOT(themeChangeTimeout()));
+    connect(hbInstance->theme(),SIGNAL(changeFinished()), this, SLOT(themeChangeFinished()));
+   
 }
 
 
@@ -229,6 +236,7 @@
     success = mThemeChanger->connectToServer();
     
     if (success) {
+        QThread::currentThread()->setPriority(QThread::HighPriority);  
         mThemeChanger->changeTheme(theme);
         emit themeUpdated(mThemeChanger->currentTheme().name, mThemeChanger->currentTheme().icon);
     }
@@ -279,6 +287,20 @@
     mThemeListView->closeView();
 }
 
+void CpThemeControl::themeChangeTimeout()
+{
+    //qDebug() << "ThemeChangeTimeout " ;
+    mIdleTimer->stop();
+    QThread::currentThread()->setPriority(QThread::NormalPriority);    
+        
+}
+
+void CpThemeControl::themeChangeFinished()
+{
+    //qDebug() << "ThemeChangeFinished " ;
+    mIdleTimer->start(0);
+}
+
 /*!
  * Private function that sets the current index of theme list view to indicate
  * the active theme.
--- a/controlpanelplugins/themeplugin/src/cpthemecontrol.h	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelplugins/themeplugin/src/cpthemecontrol.h	Fri May 14 13:21:08 2010 +0800
@@ -20,6 +20,7 @@
 
 #include <QObject>
 #include <QList>
+#include <QTimer>
 
 #include "cpthemechanger.h"
 #include <hbicon.h>
@@ -55,6 +56,8 @@
     void previewClosed();
     void themeApplied(const QString& theme);
     void themeListClosed();
+    void themeChangeTimeout();
+    void themeChangeFinished();
 
 private:
     void createThemeList();
@@ -67,6 +70,7 @@
     CpThemeChanger* mThemeChanger;
     QAbstractItemModel* mListModel;
     QSortFilterProxyModel* mSortModel;
+    QTimer* mIdleTimer;
 };
 
 #endif //CPTHEMECONTROL_H
--- a/controlpanelplugins/themeplugin/src/cpthemelistview.cpp	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelplugins/themeplugin/src/cpthemelistview.cpp	Fri May 14 13:21:08 2010 +0800
@@ -1,20 +1,19 @@
 /*
-* Copyright (c) 2008-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:  
-*
-*/
-
+ * 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 <QGraphicsLinearLayout>
--- a/controlpanelplugins/themeplugin/src/cpthemeplugin.cpp	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelplugins/themeplugin/src/cpthemeplugin.cpp	Fri May 14 13:21:08 2010 +0800
@@ -41,7 +41,8 @@
 /*!
     create the control panel entry item data for Theme settins.
 */
-CpSettingFormItemData *CpThemePlugin::createSettingFormItemData(CpItemDataHelper &itemDataHelper) const
+
+QList<CpSettingFormItemData*> CpThemePlugin::createSettingFormItemData(CpItemDataHelper &itemDataHelper) const
 {
 
     //create a cpthemepluginentryitemdata with default values and return it.
@@ -50,7 +51,7 @@
         tr("Theme"),
         tr("Theme Name"),
         HbIcon(":/image/qgn_menu_note.svg"));
-	return entryItem;
+        return QList<CpSettingFormItemData*>() << entryItem;
 }
 
 Q_EXPORT_PLUGIN2(cpthemeplugin, CpThemePlugin);
--- a/controlpanelplugins/themeplugin/src/cpthemeplugin.h	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelplugins/themeplugin/src/cpthemeplugin.h	Fri May 14 13:21:08 2010 +0800
@@ -19,16 +19,16 @@
 #define	CPTHEMEPLUGIN_H
 
 #include <qobject.h>
-#include <cppluginplatinterface.h>
+#include <cpplugininterface.h>
 
-class CpThemePlugin : public QObject, public CpPluginPlatInterface
+class CpThemePlugin : public QObject, public CpPluginInterface
 {
     Q_OBJECT
-    Q_INTERFACES(CpPluginPlatInterface)
+    Q_INTERFACES(CpPluginInterface)
 public:
     CpThemePlugin();
     virtual ~CpThemePlugin();
-    virtual CpSettingFormItemData *createSettingFormItemData(CpItemDataHelper &itemDataHelper) const;
+    virtual QList<CpSettingFormItemData*> createSettingFormItemData(CpItemDataHelper &itemDataHelper) const;
 };
 
 #endif	//CPTHEMEPLUGIN_H
--- a/controlpanelplugins/themeplugin/src/cpthemepreview.cpp	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelplugins/themeplugin/src/cpthemepreview.cpp	Fri May 14 13:21:08 2010 +0800
@@ -18,7 +18,7 @@
 #include <QString>
 #include <QGraphicsPixmapItem>
 #include <QGraphicsLinearLayout>
-
+#include <QDebug>
 #include <hbaction.h>
 #include <hbtoolbar.h>
 #include <hbicon.h>
@@ -42,7 +42,8 @@
 CpThemePreview::CpThemePreview(const CpThemeChanger::ThemeInfo& theme, QGraphicsItem *parent) :
      HbView(parent), 
      mTheme(theme),
-     mSoftKeyBackAction(0)
+     mSoftKeyBackAction(0),
+     mPreviewIcon(0)
 {
     
     //Create the layout and add heading and and preview icon to the layout.
@@ -77,16 +78,18 @@
 
     QObject::connect( cancelAction, SIGNAL(triggered()), 
                       this, SIGNAL(aboutToClose()));
-
-    HbIconItem* layoutItem;
-    //layout->addItem(&HbIconItem(mTheme.icon, this ));
+    
+    QObject::connect( mainWindow(), SIGNAL(orientationChanged(Qt::Orientation)),
+                      this, SLOT(previewOrientationChanged(Qt::Orientation)));
+       
+   
     if(mainWindow()->orientation() == Qt::Horizontal) {
-        layoutItem = new HbIconItem(mTheme.landscapePreviewIcon, this);
+        mPreviewIcon = new HbIconItem(mTheme.landscapePreviewIcon, this);
     }
     else {
-        layoutItem = new HbIconItem(mTheme.portraitPreviewIcon, this);
+        mPreviewIcon = new HbIconItem(mTheme.portraitPreviewIcon, this);
     }
-    layout->addItem(layoutItem);
+    layout->addItem(mPreviewIcon);
     layout->setAlignment(layout->itemAt(0), Qt::AlignTop);
     
     setToolBar(mToolBar);
@@ -94,7 +97,7 @@
 
     //Setup the Back button action and set softkey. Back button 
     //takes the user to the theme list view.
-    mSoftKeyBackAction = new HbAction(Hb::BackAction, this);
+    mSoftKeyBackAction = new HbAction(Hb::BackNaviAction, this);
     QObject::connect(mSoftKeyBackAction, SIGNAL(triggered()), 
             this, SIGNAL(aboutToClose()) );
 
@@ -140,3 +143,29 @@
     emit applyTheme(mTheme.name);
 }
 
+/*! 
+ *  Slot to handle landscape/portrait orientation change to use the
+ *  right graphics.
+ */
+void CpThemePreview::previewOrientationChanged(Qt::Orientation orientation)
+{
+   
+    QGraphicsLinearLayout* previewLayout = dynamic_cast<QGraphicsLinearLayout*>(layout());
+   
+    if(mPreviewIcon == dynamic_cast<HbIconItem*>(previewLayout->itemAt(1)) ) {
+        previewLayout->removeAt(1);
+        delete mPreviewIcon;
+        mPreviewIcon = 0;
+        
+        if(orientation == Qt::Horizontal) {
+            mPreviewIcon = new HbIconItem(mTheme.landscapePreviewIcon, this);
+        }
+        else {
+            mPreviewIcon = new HbIconItem(mTheme.portraitPreviewIcon, this);
+        }
+        
+        previewLayout->addItem(mPreviewIcon);
+    }
+    
+}
+    
--- a/controlpanelplugins/themeplugin/src/cpthemepreview.h	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelplugins/themeplugin/src/cpthemepreview.h	Fri May 14 13:21:08 2010 +0800
@@ -48,10 +48,13 @@
 
 public slots:
     void themeSelected();
+    void previewOrientationChanged(Qt::Orientation orientation);
 
 private:
     CpThemeChanger::ThemeInfo mTheme;
     HbAction* mSoftKeyBackAction;
+    HbIconItem* mPreviewIcon;
+
 };
 
 #endif //CPTHEMEPREVIEW_H
--- a/controlpanelplugins/themeplugin/src/cpthemesymbiancommon_p.h	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelplugins/themeplugin/src/cpthemesymbiancommon_p.h	Fri May 14 13:21:08 2010 +0800
@@ -1,20 +1,19 @@
 /*
-* Copyright (c) 2008-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: 
-*
-*/
-
+ * 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 HBTHEMESYMBIANCOMMON_P_H
 #define HBTHEMESYMBIANCOMMON_P_H
@@ -53,6 +52,8 @@
 // server name
 _LIT(KThemeServerName,"hbthemeserver");
 const TUid KServerUid3={0x20022E82};
+// Common unique ID for Pub/Sub
+const TInt KNewThemeForThemeChanger = 9;
 
 // A version must be specifyed when creating a session with the server
 
--- a/controlpanelui/examples/examples.pro	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/examples/examples.pro	Fri May 14 13:21:08 2010 +0800
@@ -15,7 +15,9 @@
 #
 
 TEMPLATE = subdirs
-SUBDIRS = groupplugin/groupplugin.pro viewplugin/viewplugin.pro themeplugin/themeplugin.pro
+SUBDIRS = groupplugin/groupplugin.pro \
+          viewplugin/viewplugin.pro \
+          pluginlauncherclient/pluginlauncherclient.pro
 CONFIG += ordered
 
 include (rom/rom.pri)
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/examples/pluginlauncherclient/pluginlauncherclient.pri	Fri May 14 13:21:08 2010 +0800
@@ -0,0 +1,18 @@
+#
+# 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: cpframework source files
+#
+
+HEADERS += src/*.h
+SOURCES += src/*.cpp
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/examples/pluginlauncherclient/pluginlauncherclient.pro	Fri May 14 13:21:08 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: cpframework source files
+#
+
+TEMPLATE = app
+TARGET = CpPluginLauncherClient
+DEPENDPATH += .
+INCLUDEPATH += .
+
+include (pluginlauncherclient.pri)
+
+CONFIG += hb
+
+MOC_DIR = moc
+OBJECT_DIR = obj
+RCC_DIR = rcc
+
+symbian {
+    INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE
+    INCLUDEPATH += $$MW_LAYER_PLATFORM_EXPORT_PATH(cplogger)
+    TARGET.CAPABILITY = ALL -TCB
+    TARGET.EPOCALLOWDLLDATA = 1
+}
+
+LIBS += -lxqservice -lcpframework
+symbian::TARGET::UID3 = 0X2002873A
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/examples/pluginlauncherclient/src/main.cpp	Fri May 14 13:21:08 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:  
+*
+*/
+
+#include <hbapplication.h>
+#include <QDir>
+#include <hbmainwindow.h>
+#include <hbstyleloader.h>
+#include <cpbasepath.h>
+#include "mainview.h"
+
+int main(int argc, char **argv)
+{
+    HbApplication app(argc, argv);
+    
+    HbStyleLoader::registerFilePath(CP_RESOURCE_PATH + QDir::separator() + WIDGETML_SUB_PATH);
+    
+    HbMainWindow mainWindow;
+    MainView *mainView = new MainView();
+    mainWindow.addView(mainView);
+    mainWindow.show();
+    
+    return app.exec();
+}
+
+//End of File
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/examples/pluginlauncherclient/src/mainview.cpp	Fri May 14 13:21:08 2010 +0800
@@ -0,0 +1,101 @@
+/*
+* 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 "mainview.h"
+#include <hbmenu.h>
+#include <hbaction.h>
+#include <qcoreapplication.h>
+#include <cppluginlauncher.h>
+#include <QStringList>
+#include <cpbasesettingview.h>
+#include <hbmessagebox.h>
+#include <xqaiwrequest.h>
+#include <XQServiceRequest.h>
+
+MainView::MainView(QGraphicsItem *parent/* = 0*/)
+: HbView(parent)
+{
+	init();
+}
+
+MainView::~MainView()
+{
+
+}
+
+void MainView::init()
+{
+  setTitle(tr("CpPlugin Launcher"));  
+  
+  HbMenu *menu = new HbMenu();
+  setMenu(menu);
+  
+  HbAction *action = menu->addAction(tr("Launch View(in process)"));
+  connect(action, SIGNAL(triggered()), this, SLOT(launchInProcessProfileView()));
+
+  action = menu->addAction(tr("Launch View(QtHighway)"));
+  connect(action, SIGNAL(triggered()), this, SLOT(launchQtHighwayProfileView()));
+}
+
+void MainView::launchInProcessProfileView()
+{
+    CpBaseSettingView *settingView = CpPluginLauncher::launchSettingView("cppersonalizationplugin.dll","profile_view");
+    if (settingView) {
+        connect(settingView,SIGNAL(returnValueDelivered(QVariant)),this,SLOT(handleReturnValue(QVariant)));
+    }
+}
+
+void MainView::launchQtHighwayProfileView()
+{
+    XQAiwRequest *request = mAppMgr.create("com.nokia.symbian.ICpPluginLauncher", "launchSettingView(QString,QVariant)", true);
+
+    if (!request)
+    {
+        return;
+    }
+    else
+    {
+        connect(request, SIGNAL(requestOk(QVariant)), SLOT(handleReturnValue(QVariant)));
+        connect(request, SIGNAL(requestError(int,QString)), SLOT(handleError(int,QString)));
+    }
+
+
+    // Set arguments for request 
+    QList<QVariant> args;
+    args << QVariant( "cppersonalizationplugin.dll" );
+    args << QVariant ( "profile_view" );
+    request->setArguments(args);
+
+    // Make the request
+    if (!request->send())
+    {
+        //report error     
+    }
+    
+    delete request;
+}
+
+void MainView::handleReturnValue(const QVariant &returnValue)
+{
+    HbMessageBox::information( QString("Return value:") + returnValue.toString());
+}
+
+void MainView::handleError(int errorCode,const QString &errorMessage)
+{
+    HbMessageBox::information( QString("handle error:") + errorMessage);
+}
+
+//End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/examples/pluginlauncherclient/src/mainview.h	Fri May 14 13:21:08 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:  
+*
+*/
+#ifndef MAINVIEW_H
+#define MAINVIEW_H
+
+#include <hbview.h>
+#include <xqappmgr.h>
+
+class MainView : public HbView
+{
+	Q_OBJECT
+public:
+    explicit MainView(QGraphicsItem *parent = 0);
+    virtual ~MainView();
+private:
+	void init();
+private slots:
+    void launchInProcessProfileView();
+    void launchQtHighwayProfileView();   
+    void handleReturnValue(const QVariant &returnValue);
+    void handleError(int errorCode,const QString &errorMessage);
+private:
+    Q_DISABLE_COPY(MainView)
+private:
+    XQApplicationManager mAppMgr;
+};
+
+#endif
--- a/controlpanelui/examples/rom/controlpanel_examples.iby	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/examples/rom/controlpanel_examples.iby	Fri May 14 13:21:08 2010 +0800
@@ -16,6 +16,10 @@
 *
 */
 
+file=ABI_DIR\BUILD_DIR\CpPluginLauncherClient.exe         			 SHARED_LIB_DIR\CpPluginLauncherClient.exe 
+CP_UPGRADABLE_APP_REG_RSC(CpPluginLauncherClient)    
+S60_APP_RESOURCE(CpPluginLauncherClient)   
+
 file=ABI_DIR\BUILD_DIR\cpgroupplugin.dll   SHARED_LIB_DIR\cpgroupplugin.dll
 file=ABI_DIR\BUILD_DIR\cpviewplugin.dll    SHARED_LIB_DIR\cpviewplugin.dll
 
--- a/controlpanelui/examples/viewplugin/src/cpsampleview.cpp	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/examples/viewplugin/src/cpsampleview.cpp	Fri May 14 13:21:08 2010 +0800
@@ -29,7 +29,7 @@
     mCheckBoxItem(0)
 
 {
-    HbDataForm *form = settingForm();
+    HbDataForm *form = qobject_cast<HbDataForm*>(widget());
     if (form) {
         HbDataFormModel *model = new HbDataFormModel;
         
--- a/controlpanelui/rom/controlpanelui.iby	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/rom/controlpanelui.iby	Fri May 14 13:21:08 2010 +0800
@@ -25,12 +25,15 @@
 
 file=ABI_DIR\BUILD_DIR\controlpanel.exe         			 SHARED_LIB_DIR\controlpanel.exe 
 CP_UPGRADABLE_APP_REG_RSC(controlpanel)    
-S60_APP_RESOURCE(controlpanel)   
 
+file=ABI_DIR\BUILD_DIR\cpserviceprovider.exe         			 SHARED_LIB_DIR\cpserviceprovider.exe 
+CP_UPGRADABLE_APP_REG_RSC(cpserviceprovider)    
 
 file=ABI_DIR\BUILD_DIR\cpcategorymodel.dll			  	 SHARED_LIB_DIR\cpcategorymodel.dll
 file=ABI_DIR\BUILD_DIR\seccodeui.dll                 SHARED_LIB_DIR\seccodeui.dll
 file=ABI_DIR\BUILD_DIR\cpprofilewrapper.dll           SHARED_LIB_DIR\cpprofilewrapper.dll
+file=ABI_DIR\BUILD_DIR\cpringtoneview.dll           SHARED_LIB_DIR\cpringtoneview.dll 
+
 
 file=ABI_DIR\BUILD_DIR\cppersonalizationplugin.dll           SHARED_LIB_DIR\cppersonalizationplugin.dll
 file=ABI_DIR\BUILD_DIR\cpcommunicationplugin.dll             SHARED_LIB_DIR\cpcommunicationplugin.dll
--- a/controlpanelui/rom/controlpanelui_resources.iby	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/rom/controlpanelui_resources.iby	Fri May 14 13:21:08 2010 +0800
@@ -24,5 +24,6 @@
 data=DATAZ_\QT_TRANSLATIONS_DIR\control_panel.qm QT_TRANSLATIONS_DIR\control_panel.qm
 data=DATAZ_\APP_RESOURCE_DIR\ControlPanel.RSC APP_RESOURCE_DIR\ControlPanel.rsc
 
+data=DATAZ_\APP_RESOURCE_DIR\cpserviceprovider.RSC APP_RESOURCE_DIR\cpserviceprovider.rsc
 
 #endif // CONTROLPANELUI_RESOURCES
\ No newline at end of file
--- a/controlpanelui/src/bwins/cpcategorymodelu.def	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/bwins/cpcategorymodelu.def	Fri May 14 13:21:08 2010 +0800
@@ -1,33 +1,53 @@
 EXPORTS
-	?qt_metacall@CpCategorySettingFormModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1 NONAME ; int CpCategorySettingFormModel::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?qt_metacall@CpCategorySettingFormItemData@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2 NONAME ; int CpCategorySettingFormItemData::qt_metacall(enum QMetaObject::Call, int, void * *)
-	??1CpCategorySettingFormModel@@UAE@XZ @ 3 NONAME ; CpCategorySettingFormModel::~CpCategorySettingFormModel(void)
-	?qt_metacast@CpCategorySettingFormModel@@UAEPAXPBD@Z @ 4 NONAME ; void * CpCategorySettingFormModel::qt_metacast(char const *)
+	?stop@CpTaskExecutor@@QAEXXZ @ 1 NONAME ; void CpTaskExecutor::stop(void)
+	?tr@CpTaskExecutor@@SA?AVQString@@PBD0@Z @ 2 NONAME ; class QString CpTaskExecutor::tr(char const *, char const *)
+	?getStaticMetaObject@CpTaskExecutor@@SAABUQMetaObject@@XZ @ 3 NONAME ; struct QMetaObject const & CpTaskExecutor::getStaticMetaObject(void)
+	??1CpCategorySettingFormModel@@UAE@XZ @ 4 NONAME ; CpCategorySettingFormModel::~CpCategorySettingFormModel(void)
 	?beforeLoadingConfigPlugins@CpCategorySettingFormItemData@@EAEXAAVCpItemDataHelper@@@Z @ 5 NONAME ; void CpCategorySettingFormItemData::beforeLoadingConfigPlugins(class CpItemDataHelper &)
-	?afterLoadingConfigPlugins@CpCategorySettingFormModel@@EAEXAAVCpItemDataHelper@@@Z @ 6 NONAME ; void CpCategorySettingFormModel::afterLoadingConfigPlugins(class CpItemDataHelper &)
-	?trUtf8@CpCategorySettingFormModel@@SA?AVQString@@PBD0H@Z @ 7 NONAME ; class QString CpCategorySettingFormModel::trUtf8(char const *, char const *, int)
-	??0CpCategorySettingFormModel@@QAE@ABVQString@@@Z @ 8 NONAME ; CpCategorySettingFormModel::CpCategorySettingFormModel(class QString const &)
-	?trUtf8@CpCategorySettingFormItemData@@SA?AVQString@@PBD0@Z @ 9 NONAME ; class QString CpCategorySettingFormItemData::trUtf8(char const *, char const *)
-	?tr@CpCategorySettingFormModel@@SA?AVQString@@PBD0@Z @ 10 NONAME ; class QString CpCategorySettingFormModel::tr(char const *, char const *)
-	?tr@CpCategorySettingFormItemData@@SA?AVQString@@PBD0@Z @ 11 NONAME ; class QString CpCategorySettingFormItemData::tr(char const *, char const *)
-	?getStaticMetaObject@CpCategorySettingFormModel@@SAABUQMetaObject@@XZ @ 12 NONAME ; struct QMetaObject const & CpCategorySettingFormModel::getStaticMetaObject(void)
-	?getStaticMetaObject@CpCategorySettingFormItemData@@SAABUQMetaObject@@XZ @ 13 NONAME ; struct QMetaObject const & CpCategorySettingFormItemData::getStaticMetaObject(void)
-	?initialize@CpCategorySettingFormModel@@UAEXAAVCpItemDataHelper@@@Z @ 14 NONAME ; void CpCategorySettingFormModel::initialize(class CpItemDataHelper &)
-	?initialize@CpCategorySettingFormItemData@@QAEXAAVCpItemDataHelper@@@Z @ 15 NONAME ; void CpCategorySettingFormItemData::initialize(class CpItemDataHelper &)
-	?tr@CpCategorySettingFormItemData@@SA?AVQString@@PBD0H@Z @ 16 NONAME ; class QString CpCategorySettingFormItemData::tr(char const *, char const *, int)
-	??0CpCategorySettingFormItemData@@QAE@W4DataItemType@HbDataFormModelItem@@ABVQString@@1PBV2@@Z @ 17 NONAME ; CpCategorySettingFormItemData::CpCategorySettingFormItemData(enum HbDataFormModelItem::DataItemType, class QString const &, class QString const &, class HbDataFormModelItem const *)
-	??1CpCategorySettingFormItemData@@UAE@XZ @ 18 NONAME ; CpCategorySettingFormItemData::~CpCategorySettingFormItemData(void)
-	?beforeLoadingConfigPlugins@CpCategorySettingFormModel@@EAEXAAVCpItemDataHelper@@@Z @ 19 NONAME ; void CpCategorySettingFormModel::beforeLoadingConfigPlugins(class CpItemDataHelper &)
-	?trUtf8@CpCategorySettingFormModel@@SA?AVQString@@PBD0@Z @ 20 NONAME ; class QString CpCategorySettingFormModel::trUtf8(char const *, char const *)
-	?trUtf8@CpCategorySettingFormItemData@@SA?AVQString@@PBD0H@Z @ 21 NONAME ; class QString CpCategorySettingFormItemData::trUtf8(char const *, char const *, int)
-	?staticMetaObject@CpCategorySettingFormModel@@2UQMetaObject@@B @ 22 NONAME ; struct QMetaObject const CpCategorySettingFormModel::staticMetaObject
-	?afterLoadingConfigPlugins@CpCategorySettingFormItemData@@EAEXAAVCpItemDataHelper@@@Z @ 23 NONAME ; void CpCategorySettingFormItemData::afterLoadingConfigPlugins(class CpItemDataHelper &)
-	?metaObject@CpCategorySettingFormModel@@UBEPBUQMetaObject@@XZ @ 24 NONAME ; struct QMetaObject const * CpCategorySettingFormModel::metaObject(void) const
-	?tr@CpCategorySettingFormModel@@SA?AVQString@@PBD0H@Z @ 25 NONAME ; class QString CpCategorySettingFormModel::tr(char const *, char const *, int)
-	?staticMetaObject@CpCategorySettingFormItemData@@2UQMetaObject@@B @ 26 NONAME ; struct QMetaObject const CpCategorySettingFormItemData::staticMetaObject
-	?metaObject@CpCategorySettingFormItemData@@UBEPBUQMetaObject@@XZ @ 27 NONAME ; struct QMetaObject const * CpCategorySettingFormItemData::metaObject(void) const
-	??0CpCategorySettingFormItemData@@QAE@ABVQString@@PBVHbDataFormModelItem@@@Z @ 28 NONAME ; CpCategorySettingFormItemData::CpCategorySettingFormItemData(class QString const &, class HbDataFormModelItem const *)
-	??_ECpCategorySettingFormModel@@UAE@I@Z @ 29 NONAME ; CpCategorySettingFormModel::~CpCategorySettingFormModel(unsigned int)
-	??_ECpCategorySettingFormItemData@@UAE@I@Z @ 30 NONAME ; CpCategorySettingFormItemData::~CpCategorySettingFormItemData(unsigned int)
-	?qt_metacast@CpCategorySettingFormItemData@@UAEPAXPBD@Z @ 31 NONAME ; void * CpCategorySettingFormItemData::qt_metacast(char const *)
+	?trUtf8@CpCategorySettingFormModel@@SA?AVQString@@PBD0H@Z @ 6 NONAME ; class QString CpCategorySettingFormModel::trUtf8(char const *, char const *, int)
+	??0CpCategorySettingFormModel@@QAE@ABVQString@@@Z @ 7 NONAME ; CpCategorySettingFormModel::CpCategorySettingFormModel(class QString const &)
+	?staticMetaObject@CpTaskExecutor@@2UQMetaObject@@B @ 8 NONAME ; struct QMetaObject const CpTaskExecutor::staticMetaObject
+	??_ECpTaskExecutor@@UAE@I@Z @ 9 NONAME ; CpTaskExecutor::~CpTaskExecutor(unsigned int)
+	?trUtf8@CpTaskExecutor@@SA?AVQString@@PBD0H@Z @ 10 NONAME ; class QString CpTaskExecutor::trUtf8(char const *, char const *, int)
+	?trUtf8@CpCategorySettingFormItemData@@SA?AVQString@@PBD0@Z @ 11 NONAME ; class QString CpCategorySettingFormItemData::trUtf8(char const *, char const *)
+	?tr@CpCategorySettingFormModel@@SA?AVQString@@PBD0@Z @ 12 NONAME ; class QString CpCategorySettingFormModel::tr(char const *, char const *)
+	?tr@CpCategorySettingFormItemData@@SA?AVQString@@PBD0@Z @ 13 NONAME ; class QString CpCategorySettingFormItemData::tr(char const *, char const *)
+	?getStaticMetaObject@CpCategorySettingFormModel@@SAABUQMetaObject@@XZ @ 14 NONAME ; struct QMetaObject const & CpCategorySettingFormModel::getStaticMetaObject(void)
+	?destroyGlobalInstance@CpTaskExecutor@@SAXXZ @ 15 NONAME ; void CpTaskExecutor::destroyGlobalInstance(void)
+	?initialize@CpCategorySettingFormModel@@UAEXAAVCpItemDataHelper@@@Z @ 16 NONAME ; void CpCategorySettingFormModel::initialize(class CpItemDataHelper &)
+	?initialize@CpCategorySettingFormItemData@@QAEXAAVCpItemDataHelper@@@Z @ 17 NONAME ; void CpCategorySettingFormItemData::initialize(class CpItemDataHelper &)
+	?tr@CpTaskExecutor@@SA?AVQString@@PBD0H@Z @ 18 NONAME ; class QString CpTaskExecutor::tr(char const *, char const *, int)
+	??0CpTaskExecutor@@QAE@PAVQObject@@@Z @ 19 NONAME ; CpTaskExecutor::CpTaskExecutor(class QObject *)
+	?tr@CpCategorySettingFormItemData@@SA?AVQString@@PBD0H@Z @ 20 NONAME ; class QString CpCategorySettingFormItemData::tr(char const *, char const *, int)
+	?qt_metacast@CpTaskExecutor@@UAEPAXPBD@Z @ 21 NONAME ; void * CpTaskExecutor::qt_metacast(char const *)
+	??1CpCategorySettingFormItemData@@UAE@XZ @ 22 NONAME ; CpCategorySettingFormItemData::~CpCategorySettingFormItemData(void)
+	?beforeLoadingConfigPlugins@CpCategorySettingFormModel@@EAEXAAVCpItemDataHelper@@@Z @ 23 NONAME ; void CpCategorySettingFormModel::beforeLoadingConfigPlugins(class CpItemDataHelper &)
+	??1CpTaskExecutor@@UAE@XZ @ 24 NONAME ; CpTaskExecutor::~CpTaskExecutor(void)
+	?createCpPluginItemData@@YAHPAVCpCreatePluginItemDataEvent@@@Z @ 25 NONAME ; int createCpPluginItemData(class CpCreatePluginItemDataEvent *)
+	?trUtf8@CpCategorySettingFormModel@@SA?AVQString@@PBD0@Z @ 26 NONAME ; class QString CpCategorySettingFormModel::trUtf8(char const *, char const *)
+	?staticMetaObject@CpCategorySettingFormModel@@2UQMetaObject@@B @ 27 NONAME ; struct QMetaObject const CpCategorySettingFormModel::staticMetaObject
+	?qt_metacall@CpTaskExecutor@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 28 NONAME ; int CpTaskExecutor::qt_metacall(enum QMetaObject::Call, int, void * *)
+	??0CpCategorySettingFormItemData@@QAE@ABVQString@@PBVHbDataFormModelItem@@@Z @ 29 NONAME ; CpCategorySettingFormItemData::CpCategorySettingFormItemData(class QString const &, class HbDataFormModelItem const *)
+	?qt_metacast@CpCategorySettingFormItemData@@UAEPAXPBD@Z @ 30 NONAME ; void * CpCategorySettingFormItemData::qt_metacast(char const *)
+	?toFront@CpTaskExecutor@@QAE_NPAVCpTask@@@Z @ 31 NONAME ; bool CpTaskExecutor::toFront(class CpTask *)
+	?qt_metacall@CpCategorySettingFormModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 32 NONAME ; int CpCategorySettingFormModel::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?removeTasks@CpTaskExecutor@@AAEXXZ @ 33 NONAME ; void CpTaskExecutor::removeTasks(void)
+	?qt_metacall@CpCategorySettingFormItemData@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 34 NONAME ; int CpCategorySettingFormItemData::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?qt_metacast@CpCategorySettingFormModel@@UAEPAXPBD@Z @ 35 NONAME ; void * CpCategorySettingFormModel::qt_metacast(char const *)
+	?afterLoadingConfigPlugins@CpCategorySettingFormModel@@EAEXAAVCpItemDataHelper@@@Z @ 36 NONAME ; void CpCategorySettingFormModel::afterLoadingConfigPlugins(class CpItemDataHelper &)
+	?getStaticMetaObject@CpCategorySettingFormItemData@@SAABUQMetaObject@@XZ @ 37 NONAME ; struct QMetaObject const & CpCategorySettingFormItemData::getStaticMetaObject(void)
+	?metaObject@CpTaskExecutor@@UBEPBUQMetaObject@@XZ @ 38 NONAME ; struct QMetaObject const * CpTaskExecutor::metaObject(void) const
+	??0CpCategorySettingFormItemData@@QAE@W4DataItemType@HbDataFormModelItem@@ABVQString@@1PBV2@@Z @ 39 NONAME ; CpCategorySettingFormItemData::CpCategorySettingFormItemData(enum HbDataFormModelItem::DataItemType, class QString const &, class QString const &, class HbDataFormModelItem const *)
+	?trUtf8@CpCategorySettingFormItemData@@SA?AVQString@@PBD0H@Z @ 40 NONAME ; class QString CpCategorySettingFormItemData::trUtf8(char const *, char const *, int)
+	?runTask@CpTaskExecutor@@QAE_NPAVCpTask@@_N@Z @ 41 NONAME ; bool CpTaskExecutor::runTask(class CpTask *, bool)
+	?afterLoadingConfigPlugins@CpCategorySettingFormItemData@@EAEXAAVCpItemDataHelper@@@Z @ 42 NONAME ; void CpCategorySettingFormItemData::afterLoadingConfigPlugins(class CpItemDataHelper &)
+	?metaObject@CpCategorySettingFormModel@@UBEPBUQMetaObject@@XZ @ 43 NONAME ; struct QMetaObject const * CpCategorySettingFormModel::metaObject(void) const
+	?tr@CpCategorySettingFormModel@@SA?AVQString@@PBD0H@Z @ 44 NONAME ; class QString CpCategorySettingFormModel::tr(char const *, char const *, int)
+	?staticMetaObject@CpCategorySettingFormItemData@@2UQMetaObject@@B @ 45 NONAME ; struct QMetaObject const CpCategorySettingFormItemData::staticMetaObject
+	?run@CpTaskExecutor@@MAEXXZ @ 46 NONAME ; void CpTaskExecutor::run(void)
+	?metaObject@CpCategorySettingFormItemData@@UBEPBUQMetaObject@@XZ @ 47 NONAME ; struct QMetaObject const * CpCategorySettingFormItemData::metaObject(void) const
+	?trUtf8@CpTaskExecutor@@SA?AVQString@@PBD0@Z @ 48 NONAME ; class QString CpTaskExecutor::trUtf8(char const *, char const *)
+	??_ECpCategorySettingFormItemData@@UAE@I@Z @ 49 NONAME ; CpCategorySettingFormItemData::~CpCategorySettingFormItemData(unsigned int)
+	??_ECpCategorySettingFormModel@@UAE@I@Z @ 50 NONAME ; CpCategorySettingFormModel::~CpCategorySettingFormModel(unsigned int)
+	?globalInstance@CpTaskExecutor@@SAPAV1@XZ @ 51 NONAME ; class CpTaskExecutor * CpTaskExecutor::globalInstance(void)
 
--- a/controlpanelui/src/bwins/cpprofilewrapperu.def	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/bwins/cpprofilewrapperu.def	Fri May 14 13:21:08 2010 +0800
@@ -2,34 +2,34 @@
 	?setKeyTouchScreenVibra@CpProfileModel@@QAEXHH@Z @ 1 NONAME ; void CpProfileModel::setKeyTouchScreenVibra(int, int)
 	?tr@CpProfileModel@@SA?AVQString@@PBD0H@Z @ 2 NONAME ; class QString CpProfileModel::tr(char const *, char const *, int)
 	?setReminderVibra@CpProfileModel@@QAEXH_N@Z @ 3 NONAME ; void CpProfileModel::setReminderVibra(int, bool)
-	?masterVibra@CpProfileModel@@QBE_NXZ @ 4 NONAME ; bool CpProfileModel::masterVibra(void) const
-	?ringTone@CpProfileModel@@QBE?AVQString@@XZ @ 5 NONAME ; class QString CpProfileModel::ringTone(void) const
-	?qt_metacast@CpProfileModel@@UAEPAXPBD@Z @ 6 NONAME ; void * CpProfileModel::qt_metacast(char const *)
-	?setRingTone@CpProfileModel@@QAEXABVQString@@@Z @ 7 NONAME ; void CpProfileModel::setRingTone(class QString const &)
-	?setReminderTone@CpProfileModel@@QAEXHABVQString@@@Z @ 8 NONAME ; void CpProfileModel::setReminderTone(int, class QString const &)
-	?activeProfileId@CpProfileModel@@QAEHXZ @ 9 NONAME ; int CpProfileModel::activeProfileId(void)
+	?offLineMode@CpProfileModel@@QBE_NXZ @ 4 NONAME ; bool CpProfileModel::offLineMode(void) const
+	?masterVibra@CpProfileModel@@QBE_NXZ @ 5 NONAME ; bool CpProfileModel::masterVibra(void) const
+	?ringTone@CpProfileModel@@QBE?AVQString@@XZ @ 6 NONAME ; class QString CpProfileModel::ringTone(void) const
+	?qt_metacast@CpProfileModel@@UAEPAXPBD@Z @ 7 NONAME ; void * CpProfileModel::qt_metacast(char const *)
+	?setRingTone@CpProfileModel@@QAEXABVQString@@@Z @ 8 NONAME ; void CpProfileModel::setRingTone(class QString const &)
+	?setReminderTone@CpProfileModel@@QAEXHABVQString@@@Z @ 9 NONAME ; void CpProfileModel::setReminderTone(int, class QString const &)
 	?trUtf8@CpProfileModel@@SA?AVQString@@PBD0@Z @ 10 NONAME ; class QString CpProfileModel::trUtf8(char const *, char const *)
-	?profileSettings@CpProfileModel@@QAEHHAAVCpProfileSettings@@@Z @ 11 NONAME ; int CpProfileModel::profileSettings(int, class CpProfileSettings &)
+	?silenceMode@CpProfileModel@@QBE_NXZ @ 11 NONAME ; bool CpProfileModel::silenceMode(void) const
 	?reminderVibra@CpProfileModel@@QBE_NH@Z @ 12 NONAME ; bool CpProfileModel::reminderVibra(int) const
 	?setEmailTone@CpProfileModel@@QAEXHABVQString@@@Z @ 13 NONAME ; void CpProfileModel::setEmailTone(int, class QString const &)
 	?ringAlertVibra@CpProfileModel@@QBE_NH@Z @ 14 NONAME ; bool CpProfileModel::ringAlertVibra(int) const
 	?emailTone@CpProfileModel@@QBE?AVQString@@H@Z @ 15 NONAME ; class QString CpProfileModel::emailTone(int) const
-	?masterVolume@CpProfileModel@@QBEHXZ @ 16 NONAME ; int CpProfileModel::masterVolume(void) const
-	?notificationTone@CpProfileModel@@QBE_NH@Z @ 17 NONAME ; bool CpProfileModel::notificationTone(int) const
-	?tr@CpProfileModel@@SA?AVQString@@PBD0@Z @ 18 NONAME ; class QString CpProfileModel::tr(char const *, char const *)
-	?getStaticMetaObject@CpProfileModel@@SAABUQMetaObject@@XZ @ 19 NONAME ; struct QMetaObject const & CpProfileModel::getStaticMetaObject(void)
-	?keyTouchScreenTone@CpProfileModel@@QBEHH@Z @ 20 NONAME ; int CpProfileModel::keyTouchScreenTone(int) const
-	?setRingTone@CpProfileModel@@QAEXHABVQString@@@Z @ 21 NONAME ; void CpProfileModel::setRingTone(int, class QString const &)
-	?reminderTone@CpProfileModel@@QBE?AVQString@@H@Z @ 22 NONAME ; class QString CpProfileModel::reminderTone(int) const
-	?profileName@CpProfileModel@@QBE?AVQString@@H@Z @ 23 NONAME ; class QString CpProfileModel::profileName(int) const
-	?setKeyTouchScreenTone@CpProfileModel@@QAEXHH@Z @ 24 NONAME ; void CpProfileModel::setKeyTouchScreenTone(int, int)
-	?setMasterVolume@CpProfileModel@@QAEXH@Z @ 25 NONAME ; void CpProfileModel::setMasterVolume(int)
-	?staticMetaObject@CpProfileModel@@2UQMetaObject@@B @ 26 NONAME ; struct QMetaObject const CpProfileModel::staticMetaObject
-	?profileNames@CpProfileModel@@QBE?AVQStringList@@XZ @ 27 NONAME ; class QStringList CpProfileModel::profileNames(void) const
+	?activeProfileId@CpProfileModel@@QBEHXZ @ 16 NONAME ; int CpProfileModel::activeProfileId(void) const
+	?masterVolume@CpProfileModel@@QBEHXZ @ 17 NONAME ; int CpProfileModel::masterVolume(void) const
+	?notificationTone@CpProfileModel@@QBE_NH@Z @ 18 NONAME ; bool CpProfileModel::notificationTone(int) const
+	?tr@CpProfileModel@@SA?AVQString@@PBD0@Z @ 19 NONAME ; class QString CpProfileModel::tr(char const *, char const *)
+	?getStaticMetaObject@CpProfileModel@@SAABUQMetaObject@@XZ @ 20 NONAME ; struct QMetaObject const & CpProfileModel::getStaticMetaObject(void)
+	?keyTouchScreenTone@CpProfileModel@@QBEHH@Z @ 21 NONAME ; int CpProfileModel::keyTouchScreenTone(int) const
+	?setRingTone@CpProfileModel@@QAEXHABVQString@@@Z @ 22 NONAME ; void CpProfileModel::setRingTone(int, class QString const &)
+	?reminderTone@CpProfileModel@@QBE?AVQString@@H@Z @ 23 NONAME ; class QString CpProfileModel::reminderTone(int) const
+	?profileName@CpProfileModel@@QBE?AVQString@@H@Z @ 24 NONAME ; class QString CpProfileModel::profileName(int) const
+	?setKeyTouchScreenTone@CpProfileModel@@QAEXHH@Z @ 25 NONAME ; void CpProfileModel::setKeyTouchScreenTone(int, int)
+	?setMasterVolume@CpProfileModel@@QAEXH@Z @ 26 NONAME ; void CpProfileModel::setMasterVolume(int)
+	?staticMetaObject@CpProfileModel@@2UQMetaObject@@B @ 27 NONAME ; struct QMetaObject const CpProfileModel::staticMetaObject
 	?activateProfile@CpProfileModel@@QAEHH@Z @ 28 NONAME ; int CpProfileModel::activateProfile(int)
-	?setNotificationVibra@CpProfileModel@@QAEXH_N@Z @ 29 NONAME ; void CpProfileModel::setNotificationVibra(int, bool)
-	?setNotificationTone@CpProfileModel@@QAEXH_N@Z @ 30 NONAME ; void CpProfileModel::setNotificationTone(int, bool)
-	?isOffLineMode@CpProfileModel@@QBE_NXZ @ 31 NONAME ; bool CpProfileModel::isOffLineMode(void) const
+	?profileNames@CpProfileModel@@QBE?AVQStringList@@XZ @ 29 NONAME ; class QStringList CpProfileModel::profileNames(void) const
+	?setNotificationVibra@CpProfileModel@@QAEXH_N@Z @ 30 NONAME ; void CpProfileModel::setNotificationVibra(int, bool)
+	?setNotificationTone@CpProfileModel@@QAEXH_N@Z @ 31 NONAME ; void CpProfileModel::setNotificationTone(int, bool)
 	?metaObject@CpProfileModel@@UBEPBUQMetaObject@@XZ @ 32 NONAME ; struct QMetaObject const * CpProfileModel::metaObject(void) const
 	?setRingAlertVibra@CpProfileModel@@QAEXH_N@Z @ 33 NONAME ; void CpProfileModel::setRingAlertVibra(int, bool)
 	??0CpProfileModel@@QAE@PAVQObject@@@Z @ 34 NONAME ; CpProfileModel::CpProfileModel(class QObject *)
@@ -38,17 +38,17 @@
 	?setEmailVibra@CpProfileModel@@QAEXH_N@Z @ 37 NONAME ; void CpProfileModel::setEmailVibra(int, bool)
 	?setOffLineMode@CpProfileModel@@QAEX_N@Z @ 38 NONAME ; void CpProfileModel::setOffLineMode(bool)
 	??1CpProfileModel@@UAE@XZ @ 39 NONAME ; CpProfileModel::~CpProfileModel(void)
-	?isSilenceMode@CpProfileModel@@QBE_NXZ @ 40 NONAME ; bool CpProfileModel::isSilenceMode(void) const
-	?notificationVibra@CpProfileModel@@QBE_NH@Z @ 41 NONAME ; bool CpProfileModel::notificationVibra(int) const
-	?qt_metacall@CpProfileModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 42 NONAME ; int CpProfileModel::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?messageTone@CpProfileModel@@QBE?AVQString@@H@Z @ 43 NONAME ; class QString CpProfileModel::messageTone(int) const
+	?notificationVibra@CpProfileModel@@QBE_NH@Z @ 40 NONAME ; bool CpProfileModel::notificationVibra(int) const
+	?qt_metacall@CpProfileModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 41 NONAME ; int CpProfileModel::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?messageTone@CpProfileModel@@QBE?AVQString@@H@Z @ 42 NONAME ; class QString CpProfileModel::messageTone(int) const
+	?profileSettings@CpProfileModel@@QAEXHAAVCpProfileSettings@@@Z @ 43 NONAME ; void CpProfileModel::profileSettings(int, class CpProfileSettings &)
 	?d_func@CpProfileModel@@ABEPBVCpProfileModelPrivate@@XZ @ 44 NONAME ; class CpProfileModelPrivate const * CpProfileModel::d_func(void) const
 	?setSilenceMode@CpProfileModel@@QAEX_N@Z @ 45 NONAME ; void CpProfileModel::setSilenceMode(bool)
 	?setMessageVibra@CpProfileModel@@QAEXH_N@Z @ 46 NONAME ; void CpProfileModel::setMessageVibra(int, bool)
 	?keyTouchScreenVibra@CpProfileModel@@QBEHH@Z @ 47 NONAME ; int CpProfileModel::keyTouchScreenVibra(int) const
 	?d_func@CpProfileModel@@AAEPAVCpProfileModelPrivate@@XZ @ 48 NONAME ; class CpProfileModelPrivate * CpProfileModel::d_func(void)
-	?messageVibra@CpProfileModel@@QBE_NH@Z @ 49 NONAME ; bool CpProfileModel::messageVibra(int) const
-	?initiationFlag@CpProfileModel@@QAEHXZ @ 50 NONAME ; int CpProfileModel::initiationFlag(void)
+	?initiationFlag@CpProfileModel@@QAEHXZ @ 49 NONAME ; int CpProfileModel::initiationFlag(void)
+	?messageVibra@CpProfileModel@@QBE_NH@Z @ 50 NONAME ; bool CpProfileModel::messageVibra(int) const
 	??_ECpProfileModel@@UAE@I@Z @ 51 NONAME ; CpProfileModel::~CpProfileModel(unsigned int)
 	?ringTone@CpProfileModel@@QBE?AVQString@@H@Z @ 52 NONAME ; class QString CpProfileModel::ringTone(int) const
 	?trUtf8@CpProfileModel@@SA?AVQString@@PBD0H@Z @ 53 NONAME ; class QString CpProfileModel::trUtf8(char const *, char const *, int)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/bwins/cpringtoneviewu.def	Fri May 14 13:21:08 2010 +0800
@@ -0,0 +1,20 @@
+EXPORTS
+	?tr@CpRingToneView@@SA?AVQString@@PBD0@Z @ 1 NONAME ; class QString CpRingToneView::tr(char const *, char const *)
+	?selOK@CpRingToneView@@IAEXABVQString@@@Z @ 2 NONAME ; void CpRingToneView::selOK(class QString const &)
+	??1CpRingToneView@@UAE@XZ @ 3 NONAME ; CpRingToneView::~CpRingToneView(void)
+	?getStaticMetaObject@CpRingToneView@@SAABUQMetaObject@@XZ @ 4 NONAME ; struct QMetaObject const & CpRingToneView::getStaticMetaObject(void)
+	?handleError@CpRingToneView@@AAEXHABVQString@@@Z @ 5 NONAME ; void CpRingToneView::handleError(int, class QString const &)
+	?launchMediaFetcher@CpRingToneView@@AAEXABVQString@@0@Z @ 6 NONAME ; void CpRingToneView::launchMediaFetcher(class QString const &, class QString const &)
+	?onTypeSelected@CpRingToneView@@AAEXPAVHbListWidgetItem@@@Z @ 7 NONAME ; void CpRingToneView::onTypeSelected(class HbListWidgetItem *)
+	?selError@CpRingToneView@@IAEXHABVQString@@@Z @ 8 NONAME ; void CpRingToneView::selError(int, class QString const &)
+	?trUtf8@CpRingToneView@@SA?AVQString@@PBD0H@Z @ 9 NONAME ; class QString CpRingToneView::trUtf8(char const *, char const *, int)
+	?qt_metacall@CpRingToneView@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 10 NONAME ; int CpRingToneView::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?staticMetaObject@CpRingToneView@@2UQMetaObject@@B @ 11 NONAME ; struct QMetaObject const CpRingToneView::staticMetaObject
+	?metaObject@CpRingToneView@@UBEPBUQMetaObject@@XZ @ 12 NONAME ; struct QMetaObject const * CpRingToneView::metaObject(void) const
+	?tr@CpRingToneView@@SA?AVQString@@PBD0H@Z @ 13 NONAME ; class QString CpRingToneView::tr(char const *, char const *, int)
+	??0CpRingToneView@@QAE@PAVQGraphicsItem@@@Z @ 14 NONAME ; CpRingToneView::CpRingToneView(class QGraphicsItem *)
+	??_ECpRingToneView@@UAE@I@Z @ 15 NONAME ; CpRingToneView::~CpRingToneView(unsigned int)
+	?trUtf8@CpRingToneView@@SA?AVQString@@PBD0@Z @ 16 NONAME ; class QString CpRingToneView::trUtf8(char const *, char const *)
+	?handleOk@CpRingToneView@@AAEXABVQVariant@@@Z @ 17 NONAME ; void CpRingToneView::handleOk(class QVariant const &)
+	?qt_metacast@CpRingToneView@@UAEPAXPBD@Z @ 18 NONAME ; void * CpRingToneView::qt_metacast(char const *)
+
--- a/controlpanelui/src/cpapplication/cpapplication.pri	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpapplication/cpapplication.pri	Fri May 14 13:21:08 2010 +0800
@@ -15,8 +15,10 @@
 #
 
 HEADERS += src/cpmainview.h \
+	   src/cpmainwindow.h \
            src/cpmainmodel.h
            
 SOURCES += src/main.cpp \
            src/cpmainview.cpp \
+           src/cpmainwindow.cpp \
            src/cpmainmodel.cpp
\ No newline at end of file
--- a/controlpanelui/src/cpapplication/data/mainview.cpcfg	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpapplication/data/mainview.cpcfg	Fri May 14 13:21:08 2010 +0800
@@ -5,11 +5,7 @@
   	</plugin>
   	<plugin displayname = "Personalization" id = "0X20025FE5" dll = "cppersonalizationplugin.dll">
 	 			<desc></desc>
-  	</plugin>   
-  	
-  	<plugin displayname = "Look &amp; feel" id = "0X20025FE0" dll = "cplookfeelplugin.dll">
-	 			<desc></desc>
-  	</plugin> 
+  	</plugin>  
   	
     <plugin displayname = "Communication" id = "0X20025FDF" dll = "cpcommunicationplugin.dll">
         <desc></desc>
--- a/controlpanelui/src/cpapplication/src/cpmainview.cpp	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpapplication/src/cpmainview.cpp	Fri May 14 13:21:08 2010 +0800
@@ -18,19 +18,21 @@
 #include "cpmainview.h"
 #include "cpmainmodel.h"
 #include <QList>
+#include <hbmainwindow.h>
 #include <hbdataform.h>
 #include <cpitemdatahelper.h>
 #include <cplogger.h>
 
-CpMainView::CpMainView(QGraphicsItem *parent /*= 0*/)
-: CpBaseSettingView(0,parent), mMainModel(0), mItemDataHelper(0)
-{
-	if (HbDataForm *form = settingForm()) {
-        mItemDataHelper = new CpItemDataHelper(form);
-		mMainModel = new CpMainModel;
-        mMainModel->initialize(*mItemDataHelper);
-		form->setModel(mMainModel);
-	}	
+//CpMainView implementation
+CpMainView::CpMainView(HbMainWindow *mainWindow/*= 0*/)
+: CpBaseSettingView(0,0), 
+  mMainModel(0), 
+  mItemDataHelper(0), 
+  mMainWindow(mainWindow)
+{ 
+    //delay loading
+    connect(mMainWindow,SIGNAL(viewReady()),this,SLOT(initializeMainModel()));
+    
 	setTitle( QObject::tr("Control Panel") );	//should use qtTrId("txt_cp_title_control_panel")
 }
 
@@ -48,4 +50,17 @@
     return CpBaseSettingView::event(e);
 }
 
+void CpMainView::initializeMainModel()
+{
+    if (HbDataForm *form = qobject_cast<HbDataForm *>(widget())) {
+        if (!mMainModel) {  
+            mItemDataHelper = new CpItemDataHelper(form);
+            mMainModel = new CpMainModel;
+            mMainModel->initialize(*mItemDataHelper);
+            form->setModel(mMainModel);
+            
+            connect(form,SIGNAL(activated(QModelIndex)),this,SLOT(onDataFormItemActivated(QModelIndex)));
+        }
+    }   
+}
 // End of File
--- a/controlpanelui/src/cpapplication/src/cpmainview.h	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpapplication/src/cpmainview.h	Fri May 14 13:21:08 2010 +0800
@@ -23,19 +23,23 @@
 class HbAbstractViewItem;
 class HbDataFormModelItem;
 class CpItemDataHelper;
+class HbMainWindow;
 
 class CpMainView : public CpBaseSettingView
 {
 	Q_OBJECT
 public:
-    explicit CpMainView(QGraphicsItem *parent = 0);
+    explicit CpMainView(HbMainWindow *mainWindow = 0);
     virtual ~CpMainView();
     bool event(QEvent *e);
+private slots:
+    void initializeMainModel();
 private:
     Q_DISABLE_COPY(CpMainView)
 private:
 	CpMainModel *mMainModel;
     CpItemDataHelper *mItemDataHelper;
+    HbMainWindow *mMainWindow;
 };
 
 #endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/cpapplication/src/cpmainwindow.cpp	Fri May 14 13:21:08 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:  
+*
+*/
+
+#include "cpmainwindow.h"
+#include "cpmainview.h"
+#include <cpplugininterface.h>
+#include <cpcategorysettingformitemdata.h>
+#include <cpbasepath.h>
+#include <hbapplication.h>
+#include <cpevent.h>
+
+//CpMainWindow implementation
+CpMainWindow::CpMainWindow(QWidget *parent /*= 0*/, Hb::WindowFlags windowFlags /*= Hb::WindowFlagNone*/)
+: HbMainWindow(parent,windowFlags)
+{
+}
+
+CpMainWindow::~CpMainWindow()
+{
+    
+}
+
+bool CpMainWindow::event(QEvent *e)
+{
+    if (e->type() == (QEvent::Type)(CpCreatePluginItemDataEvent::CreatePluginItemData)) {
+        CpCreatePluginItemDataEvent *event = static_cast<CpCreatePluginItemDataEvent*>(e);
+        ::createCpPluginItemData(event);
+        e->accept();
+    }
+    return HbMainWindow::event(e);
+}
+
+//End of File
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/cpapplication/src/cpmainwindow.h	Fri May 14 13:21:08 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:  
+*
+*/
+
+#ifndef CPMAINWINDOW_H
+#define CPMAINWINDOW_H
+
+#include <hbmainwindow.h>
+
+class CpMainWindow : public HbMainWindow
+{
+    Q_OBJECT    
+public:
+    explicit CpMainWindow(QWidget *parent = 0, Hb::WindowFlags windowFlags = Hb::WindowFlagNone);
+    ~CpMainWindow();
+public:
+    virtual bool event(QEvent *e);
+};
+
+#endif // CPMAINWINDOW_H
+
+//End of File
+
--- a/controlpanelui/src/cpapplication/src/main.cpp	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpapplication/src/main.cpp	Fri May 14 13:21:08 2010 +0800
@@ -16,14 +16,15 @@
 */
 
 #include <hbapplication.h>
-#include <hbmainwindow.h>
+#include <cpmainwindow.h>
+#include <cpmainview.h>
 #include <hbstyleloader.h>
 #include <QTranslator>
+#include <QLocale>
 #include <QLatin1String>
 #include <QDir>
 #include <cplogger.h>
 #include <cpbasepath.h>
-#include "cpmainview.h"
 
 int main(int argc, char **argv)
 {
@@ -50,11 +51,13 @@
     
     HbStyleLoader::registerFilePath(CP_RESOURCE_PATH + QDir::separator() + WIDGETML_SUB_PATH);
 
-    HbMainWindow mainWindow;
-    CpMainView *mainView = new CpMainView();
-  
-    QObject::connect(mainView,SIGNAL(aboutToClose()),&app, SLOT(quit()));  
+    CpMainWindow mainWindow;
+    
+    CpMainView *mainView = new CpMainView(&mainWindow);
+    QObject::connect(mainView,SIGNAL(aboutToClose()),qApp,SLOT(quit()));
     mainWindow.addView(mainView);
+    mainWindow.setCurrentView(mainView);
+    
     mainWindow.show();
     
     int ret = app.exec();
--- a/controlpanelui/src/cpcategorymodel/cpcategorymodel.pri	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpcategorymodel/cpcategorymodel.pri	Fri May 14 13:21:08 2010 +0800
@@ -16,12 +16,13 @@
 
 HEADERS += $$PWD/src/cpplaceholderitemdata.h \
 		   $$PWD/src/cppluginconfigreader.h \		 
-		   $$PWD/src/cputility.h 
+		   $$PWD/src/cpcategorymodelutility.h 
 
 SOURCES += $$PWD/src/cpcategorysettingformitemdata.cpp \
 		   $$PWD/src/cpcategorysettingformmodel.cpp \
 		   $$PWD/src/cpplaceholderitemdata.cpp \
 		   $$PWD/src/cppluginconfig.cpp \
 		   $$PWD/src/cppluginconfigreader.cpp \
-		   $$PWD/src/cputility.cpp
+		   $$PWD/src/cpcategorymodelutility.cpp \
+		   $$PWD/src/cptaskexecutor.cpp
 					 
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/cpcategorymodel/src/cpcategorymodelutility.cpp	Fri May 14 13:21:08 2010 +0800
@@ -0,0 +1,326 @@
+/*
+* 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 "cpcategorymodelutility.h"
+#include <QString>
+#include <QDir>
+#include <QFileInfo>
+#include <hbinstance.h>
+#include <cpbasepath.h>
+#include <cppluginloader.h>
+#include <cpplugininterface.h>
+#include <cplogger.h>
+#include <cpevent.h>
+#include <cptaskexecutor.h>
+#include <cpsettingformentryitemdata.h>
+#include "cpcategorysettingformitemdata.h"
+#include "cppluginconfigreader.h"
+#include "cpplaceholderitemdata.h"
+
+static HbMainWindow *mainWindow() 
+{
+    QList< HbMainWindow* > mainWindows = hbInstance->allMainWindows();
+    if (!mainWindows.isEmpty()) {
+        return mainWindows.front();
+    }
+    return 0;
+}
+
+
+//#define ASYNC_LOAD_CPPLUGIN
+
+class CpLoadConfigPluginsTask : public CpTask
+{
+public:
+    CpLoadConfigPluginsTask(HbDataFormModelItem *parentItem,
+                            const QString &configFile,
+                            CpItemDataHelper *itemDataHelper,
+                            int startPosition) : 
+                            mParentItem(parentItem),
+                            mConfigFile(configFile),
+                            mItemDataHelper(itemDataHelper),
+                            mStartPosition(startPosition)
+    { 
+        
+    }
+    
+    virtual ~CpLoadConfigPluginsTask()
+    {
+        
+    }
+    
+    virtual void execute(volatile bool *stopped)
+    {
+        if (!mParentItem) {
+            return;
+        }
+        
+        QString configPath(mConfigFile);
+        QFileInfo fi(mConfigFile);
+        //if it is a relative path, search the config file from device drives.
+        if (!fi.isAbsolute()) {
+          QStringList dirs = CpCategoryModelUtility::configFileDirectories();
+          foreach(const QString &dir,dirs) {
+              configPath = dir + fi.fileName();
+              if (QFileInfo(configPath).exists()) {
+                  CPFW_LOG(configPath + " has been found.");
+                  break;      
+              }
+          }
+        }       
+        
+        QList<CpPluginConfig> pluginConfigs = CpPluginConfigReader(configPath).readCpPluginConfigs();
+        
+        int position = mStartPosition;
+        foreach(const CpPluginConfig &pluginConfig, pluginConfigs)  {
+            if (stopped && *stopped) {
+                break;
+            }
+            
+            CPFW_LOG(QLatin1String("Load plugin: ") + pluginConfig.mPluginFile + " from " + configPath);
+
+            CpCreatePluginItemDataEvent *event = new CpCreatePluginItemDataEvent;
+            
+            event->mParentItem     = mParentItem;
+            
+            if (mStartPosition < 0) {
+                event->mItemPosition = mStartPosition; //append
+            }
+            else {
+                event->mItemPosition   = position++;   
+            }
+                        
+            event->mItemDataHelper = mItemDataHelper;
+            
+            event->mDisplayName    = pluginConfig.mDisplayName;
+            event->mDescription    = pluginConfig.mDescription;
+            event->mPluginFile     = pluginConfig.mPluginFile;
+                        
+            //firstly, handle CpPluginInterface
+            if (CpPluginInterface *plugin = CpPluginLoader().loadCpPluginInterface(pluginConfig.mPluginFile)) {
+                CPFW_LOG("Load  root component CpPluginInterface succeed.");
+                event->mPluginInterface = plugin;
+            }
+
+            //post event to main window in main thread
+            QCoreApplication::postEvent(mainWindow(),event);
+            
+        } //end foreach
+        
+    }
+private:
+    HbDataFormModelItem *mParentItem;
+    QString mConfigFile;
+    CpItemDataHelper *mItemDataHelper;
+    int mStartPosition;
+};
+
+void CpCategoryModelUtility::buildConfigPluginItems(HbDataFormModelItem *parent,
+									   const QString &configFile,
+									   CpItemDataHelper &itemDataHelper,
+									   int startPosition)
+{
+#ifdef ASYNC_LOAD_CPPLUGIN
+    CpTaskExecutor::globalInstance()->runTask
+        ( new CpLoadConfigPluginsTask(parent,configFile,&itemDataHelper,startPosition) );
+    
+#else    
+    if (!parent) {
+        return;
+    }
+
+	QString configPath(configFile);
+	QFileInfo fi(configFile);
+    //if it is a relative path, search the config file from device drives.
+	if (!fi.isAbsolute()) {
+		QStringList dirs = CpCategoryModelUtility::configFileDirectories();
+		foreach(const QString &dir,dirs) {
+			configPath = dir + fi.fileName();
+			if (QFileInfo(configPath).exists()) {
+                CPFW_LOG(configPath + " has been found.");
+				break;		
+			}
+		}
+	}
+    	
+    QList<CpPluginConfig> pluginConfigs = CpPluginConfigReader(configPath).readCpPluginConfigs();
+		
+	foreach(const CpPluginConfig &pluginConfig, pluginConfigs)  {
+        CPFW_LOG(QLatin1String("Load plugin: ") + pluginConfig.mPluginFile + " from " + configPath);
+
+		QList<CpSettingFormItemData*> itemDataList;
+		
+        //firstly, handle CpPluginInterface
+		if (CpPluginInterface *plugin = CpPluginLoader().loadCpPluginInterface(pluginConfig.mPluginFile)) {
+            CPFW_LOG("Load  root component CpPluginInterface succeed.");
+			itemDataList = plugin->createSettingFormItemData(itemDataHelper);
+		}
+
+		else {
+            CPFW_LOG(QLatin1String("Load plugin:") + pluginConfig.mPluginFile + QLatin1String(" failed."));
+            #ifdef _DEBUG
+              CPFW_LOG(QLatin1String("***Add a placeholder."));
+              itemDataList.append(new CpPlaceHolderItemData(itemDataHelper,pluginConfig));
+            #endif
+		}
+
+        foreach(CpSettingFormItemData *itemData,itemDataList) {
+            if (itemData) {
+                //append the new created setting form item to its parent item.
+                parent->insertChild(startPosition++,itemData);
+
+                if (CpCategorySettingFormItemData *categoryItemData 
+                    = qobject_cast<CpCategorySettingFormItemData*>(itemData)) {
+                    categoryItemData->initialize(itemDataHelper);
+                }
+
+                //set the text and description from config if it is empty.
+                setEntryItemContentIfEmpty(itemData,pluginConfig.mDisplayName,pluginConfig.mDescription);
+            }
+        } //end foreach
+
+	} //end foreach
+#endif
+	
+}
+
+bool CpCategoryModelUtility::setEntryItemContentIfEmpty(CpSettingFormItemData *itemData, 
+    const QString &displayName,
+    const QString &description)
+{
+    CpSettingFormEntryItemData *entryItemData = qobject_cast< CpSettingFormEntryItemData* > (itemData);
+    if (!entryItemData) {
+        return false;
+    }
+    
+    if (entryItemData->text().isEmpty()) {
+        entryItemData->setText(displayName);
+    }
+    if (entryItemData->description().isEmpty()) {
+        entryItemData->setDescription(description);
+    }
+    if (entryItemData->iconName().isEmpty()) {
+        entryItemData->setIconName(
+                  CP_RESOURCE_PATH
+                  + QDir::separator() 
+                  + ICON_SUB_PATH 
+                  + QDir::separator() 
+                  + QLatin1String("qgn_prop_set_default_sub.svg") );
+    }
+    
+    return true;
+}
+
+QStringList CpCategoryModelUtility::drives()
+{
+	static QStringList drives;
+
+	if (drives.empty()) {
+        CPFW_LOG("device drives:");
+#ifdef WIN32
+		drives.append("C:");
+        CPFW_LOG("C:");
+#else
+		QFileInfoList fileInfoList = QDir::drives();
+		foreach(const QFileInfo &fileInfo,fileInfoList) {
+			QString str = fileInfo.filePath();
+			if (str.length() > 2) {
+				str = str.left(2);
+			}
+			drives.append(str);
+            CPFW_LOG(str);
+		}
+#endif  
+	}
+
+	return drives;
+}
+
+static QStringList directoriesFromAllDrives(const QString &baseDir)
+{
+	QStringList dirs;
+
+	QStringList drives = CpCategoryModelUtility::drives();
+	foreach(const QString &drive,drives) {
+		QString dir = drive + baseDir + QDir::separator();
+		if (QFileInfo(dir).exists()) {
+			dirs.append(dir);
+            CPFW_LOG(dir);
+		}
+	}
+
+	return dirs;
+}
+
+QStringList CpCategoryModelUtility::pluginDirectories()
+{
+	static QStringList dirs;
+	if (dirs.empty()) {
+        CPFW_LOG("ControlPanel plugin derectories:")
+		dirs = directoriesFromAllDrives(CP_PLUGIN_PATH);
+	}
+	return dirs;
+}
+
+QStringList CpCategoryModelUtility::configFileDirectories()
+{
+	static QStringList dirs;
+	if (dirs.empty()) {
+        CPFW_LOG("ControlPanel configuration file derectories:");
+		dirs = directoriesFromAllDrives(CP_PLUGIN_CONFIG_PATH);
+	}
+	return dirs;
+}
+
+CP_CATEGORY_EXPORT int createCpPluginItemData(CpCreatePluginItemDataEvent *event)
+{
+    QList<CpSettingFormItemData*> itemDataList;
+    
+    if (event->mPluginInterface) {
+        itemDataList = event->mPluginInterface->createSettingFormItemData(*(event->mItemDataHelper));
+    }
+    
+    else {
+        #ifdef _DEBUG
+          itemDataList.append(new CpPlaceHolderItemData(*(event->mItemDataHelper),event->mDisplayName,event->mPluginFile));
+        #endif
+    }
+    
+    foreach(CpSettingFormItemData *itemData,itemDataList) {
+        if (itemData) {
+            //append the new created setting form item to its parent item.
+            if (event->mItemPosition < 0) {
+                event->mParentItem->appendChild(itemData);
+            }
+            else {
+                event->mParentItem->insertChild(event->mItemPosition,itemData);
+            }
+
+            if (CpCategorySettingFormItemData *categoryItemData 
+                = qobject_cast<CpCategorySettingFormItemData*>(itemData)) {
+                categoryItemData->initialize(*(event->mItemDataHelper));
+            }
+
+            //set the text and description from config if it is empty.
+            CpCategoryModelUtility::setEntryItemContentIfEmpty(itemData,event->mDisplayName,event->mDescription);
+        }
+    } //end foreach
+       
+    return itemDataList.count();
+}
+
+//End of File
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/cpcategorymodel/src/cpcategorymodelutility.h	Fri May 14 13:21:08 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:  
+*
+*/
+#ifndef CPCATEGORYMODELUTILITY_H
+#define CPCATEGORYMODELUTILITY_H
+
+#include <QString>
+
+class HbDataFormModelItem;
+class CpItemDataHelper;
+class CpSettingFormItemData;
+
+class CpCategoryModelUtility
+{
+public:
+	/*
+		load all controlpanel plugins from configuration file,
+		and create model items form the loaded plugins 
+		and append model items to given parent
+	*/
+	static void buildConfigPluginItems(
+	    HbDataFormModelItem *parent,
+		const QString &configFile,
+		CpItemDataHelper &itemDataHelper,
+		int startPosition);
+		
+	/*
+	  setEntryItemContentIfEmpty
+	 */
+	static bool setEntryItemContentIfEmpty(
+	    CpSettingFormItemData *itemData, 
+	    const QString &displayName,
+	    const QString &description);
+	
+	/*
+		get all physical drives of the devices
+	*/
+	static QStringList drives();
+
+	/*
+		get all controlpanel plugin directories of the device
+	*/
+	static QStringList pluginDirectories();
+
+	/*
+		get all config directories of the device
+	*/
+	static QStringList configFileDirectories();
+
+};
+
+#endif // CPCATEGORYMODELUTILITY_H
+
+//End of File
+
--- a/controlpanelui/src/cpcategorymodel/src/cpcategorysettingformitemdata.cpp	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpcategorymodel/src/cpcategorysettingformitemdata.cpp	Fri May 14 13:21:08 2010 +0800
@@ -16,7 +16,7 @@
 */
 #include "cpcategorysettingformitemdata.h"
 #include <QString>
-#include "cputility.h"
+#include "cpcategorymodelutility.h"
 
 class CpCategorySettingFormItemDataPrivate
 {
@@ -64,13 +64,20 @@
 {
     //avoid to be called twice
     if (!d->mInitialized) {
-        //give derived class a change do their special things before loading config plugins
+        //give derived class a chance do their special things before loading config plugins
         beforeLoadingConfigPlugins(itemDataHelper);
+        
+        int pluginItemStartPosition = childCount();
+        //give derived class a chance do their special things after loading config plugins
+        afterLoadingConfigPlugins(itemDataHelper);
+        
         //load plugins which are configured
-		CpUtility::buildConfigPluginItems(this,d->mConfigFile,itemDataHelper);
-        //give derived class a change do their special things after loading config plugins
-        afterLoadingConfigPlugins(itemDataHelper);
-
+        CpCategoryModelUtility::buildConfigPluginItems(
+		    this,
+		    d->mConfigFile,
+		    itemDataHelper,
+		    pluginItemStartPosition);
+		    
         d->mInitialized = true;
     }
 }
--- a/controlpanelui/src/cpcategorymodel/src/cpcategorysettingformmodel.cpp	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpcategorymodel/src/cpcategorysettingformmodel.cpp	Fri May 14 13:21:08 2010 +0800
@@ -18,7 +18,7 @@
 #include "cpcategorysettingformmodel.h"
 #include <QString>
 
-#include "cputility.h"
+#include "cpcategorymodelutility.h"
 #include <cpitemdatahelper.h>
 
 class CpCategorySettingFormModelPrivate
@@ -55,10 +55,16 @@
     if (!d->mInitialized) {
         //give derived class a change do their special things before loading config plugins
         beforeLoadingConfigPlugins(itemDataHelper);
-        //load plugins which are configured
-		CpUtility::buildConfigPluginItems(invisibleRootItem(),d->mConfigFile,itemDataHelper);
+        
+        int pluginItemStartPosition = invisibleRootItem()->childCount();
         //give derived class a change do their special things after loading config plugins
         afterLoadingConfigPlugins(itemDataHelper);
+        
+        //load plugins which are configured
+        CpCategoryModelUtility::buildConfigPluginItems(invisibleRootItem(),
+		    d->mConfigFile,
+		    itemDataHelper,
+		    pluginItemStartPosition);
 
         d->mInitialized = true;
     }
--- a/controlpanelui/src/cpcategorymodel/src/cpplaceholderitemdata.cpp	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpcategorymodel/src/cpplaceholderitemdata.cpp	Fri May 14 13:21:08 2010 +0800
@@ -29,6 +29,17 @@
 {
 }
 
+CpPlaceHolderItemData::CpPlaceHolderItemData(CpItemDataHelper &itemDataHelper,
+                                            const QString &displayName,
+                                            const QString &pluginFile) 
+                                            : CpSettingFormEntryItemData (
+                                            itemDataHelper,
+                                            displayName,
+                                            pluginFile)
+{
+    
+}
+
 CpPlaceHolderItemData::~CpPlaceHolderItemData()
 {
 }
--- a/controlpanelui/src/cpcategorymodel/src/cpplaceholderitemdata.h	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpcategorymodel/src/cpplaceholderitemdata.h	Fri May 14 13:21:08 2010 +0800
@@ -28,6 +28,7 @@
     Q_OBJECT
 public:
     CpPlaceHolderItemData(CpItemDataHelper &itemDataHelper,const CpPluginConfig &pluginConfig);
+    CpPlaceHolderItemData(CpItemDataHelper &itemDataHelper,const QString &displayName,const QString &pluginFile);
     virtual ~CpPlaceHolderItemData();
 private slots:
 	virtual void onLaunchView();
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/cpcategorymodel/src/cptaskexecutor.cpp	Fri May 14 13:21:08 2010 +0800
@@ -0,0 +1,140 @@
+/*
+* 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 "cptaskexecutor.h"
+#include <QMutexLocker>
+#include <QDebug>
+#include <QtAlgorithms>
+#include <QPointer>
+
+static QPointer<CpTaskExecutor> g_instance;
+
+CpTaskExecutor *CpTaskExecutor::globalInstance()
+{
+    if (!g_instance) {
+        g_instance = new CpTaskExecutor();
+    }
+    return g_instance.data();
+}
+    
+void CpTaskExecutor::destroyGlobalInstance()
+{
+    delete g_instance.data();
+}
+
+CpTaskExecutor::CpTaskExecutor(QObject *parent /*=0*/) 
+: QThread(parent), mStopped(false)
+{
+}
+
+CpTaskExecutor::~CpTaskExecutor()
+{
+    stop();
+}
+
+bool CpTaskExecutor::runTask(CpTask *task,bool append /*= false*/)
+{
+    if (mStopped) {
+        if (isRunning()) {
+            qDebug() << "thread in stopping process...can not run task.\r\n";
+            return false;
+        }
+        mStopped = false;
+    }
+
+    if (task) {
+        {
+            QMutexLocker locker(&mMutex);
+            if (append) {
+                mTasks.append(task);
+            }
+            else {
+                mTasks.insert(0,task);
+            }
+        }
+
+        if (!isRunning()) {
+            qDebug() << "isRunning() == false, call start()\r\n";
+            start();
+        }
+    }
+
+    return true;
+}
+
+void CpTaskExecutor::stop()
+{
+    if (!mStopped && isRunning() ) {
+       mStopped = true;
+       removeTasks();
+       wait(); //wait for finished
+    }
+}
+
+void CpTaskExecutor::removeTasks()
+{
+    QMutexLocker locker(&mMutex);
+    
+    QList<CpTask*>::const_iterator begin(mTasks.begin());
+    QList<CpTask*>::const_iterator end(mTasks.end());
+    for (; begin != end; ++begin) {
+        if ((*begin)->autoDelete()) {
+            delete (*begin);
+        }
+    }
+
+    mTasks.clear();
+}
+
+void CpTaskExecutor::run()
+{
+    while (!mStopped) {
+        CpTask *task = 0;
+        {
+            QMutexLocker locker(&mMutex);
+            if (mTasks.isEmpty()) {
+                break;
+            }
+            task = mTasks.takeFirst();
+        }
+        try {
+            task->execute(&mStopped);
+            task->complete(&mStopped);
+        }catch(...) {
+            qDebug() << "excetion occur when running task\r\n";           
+        }
+
+        if (task->autoDelete()) {
+            delete task;
+        }
+    }
+}
+
+bool CpTaskExecutor::toFront(CpTask *task)
+{
+    QMutexLocker locker(&mMutex);
+    QList<CpTask*>::iterator foundIterator = ::qFind(mTasks.begin(),mTasks.end(),task);
+    if (foundIterator == mTasks.end()) {
+        return false;
+    }
+    
+    mTasks.erase(foundIterator);
+    mTasks.insert(0,task);
+
+    return true;
+}
+
+//End of File
--- a/controlpanelui/src/cpcategorymodel/src/cputility.cpp	Mon May 03 12:32:06 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,191 +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:  
-*
-*/
-#include "cputility.h"
-#include <QString>
-#include <QDir>
-#include <QFileInfo>
-#include <cpbasepath.h>
-#include <cppluginloader.h>
-#include <cpplugininterface.h>
-#include <cppluginplatinterface.h>
-#include <cplogger.h>
-#include <cpsettingformentryitemdata.h>
-#include "cpcategorysettingformitemdata.h"
-#include "cppluginconfigreader.h"
-#include "cpplaceholderitemdata.h"
-
-
-static bool setEntryItemContentIfEmpty(CpSettingFormItemData *itemData, 
-        const CpPluginConfig &pluginConfig)
-{
-    CpSettingFormEntryItemData *entryItemData = qobject_cast< CpSettingFormEntryItemData* > (itemData);
-    if (!entryItemData) {
-        return false;
-    }
-    
-    if (entryItemData->text().isEmpty()) {
-        entryItemData->setText(pluginConfig.mDisplayName);
-    }
-    if (entryItemData->description().isEmpty()) {
-        entryItemData->setDescription(pluginConfig.mDescription);
-    }
-    if (entryItemData->iconName().isEmpty()) {
-        entryItemData->setIconName(
-                  CP_RESOURCE_PATH
-                  + QDir::separator() 
-                  + ICON_SUB_PATH 
-                  + QDir::separator() 
-                  + QLatin1String("qgn_prop_set_default_sub.svg") );
-    }
-    
-    return true;
-}
-
-
-void CpUtility::buildConfigPluginItems(HbDataFormModelItem *parent,
-									   const QString &configFile,
-									   CpItemDataHelper &itemDataHelper)
-{
-    if (!parent) {
-        return;
-    }
-
-	QString configPath(configFile);
-	QFileInfo fi(configFile);
-    //if it is a relative path, search the config file from device drives.
-	if (!fi.isAbsolute()) {
-		QStringList dirs = CpUtility::configFileDirectories();
-		foreach(const QString &dir,dirs) {
-			configPath = dir + fi.fileName();
-			if (QFileInfo(configPath).exists()) {
-                CPFW_LOG(configPath + " has been found.");
-				break;		
-			}
-		}
-	}
-    	
-    QList<CpPluginConfig> pluginConfigs = CpPluginConfigReader(configPath).readCpPluginConfigs();
-		
-	foreach(const CpPluginConfig &pluginConfig, pluginConfigs)  {
-        CPFW_LOG(QLatin1String("Load plugin: ") + pluginConfig.mPluginFile + " from " + configPath);
-
-		QList<CpSettingFormItemData*> itemDataList;
-		
-        //firstly, handle CpPluginInterface
-		if (CpPluginInterface *plugin = CpPluginLoader().loadCpPluginInterface(pluginConfig.mPluginFile)) {
-            CPFW_LOG("Load  root component CpPluginInterface succeed.");
-			itemDataList = plugin->createSettingFormItemData(itemDataHelper);
-		}
-        //handle CpPluginPlatInterface
-		else if (CpPluginPlatInterface *plugin = CpPluginLoader().loadPlatCpPlugin(pluginConfig.mPluginFile)) {
-            CPFW_LOG("Load  root component CpPluginPlatInterface succeed.");
-            CPFW_LOG("WARNING: CpPluginPlatInterface is deprecated. Please return CpPluginInterface from plugin.");
-			CpSettingFormItemData *itemData = plugin->createSettingFormItemData(itemDataHelper);
-			if (itemData) {
-				itemDataList.append(itemData);
-			}
-		}
-
-		else {
-            CPFW_LOG(QLatin1String("Load plugin:") + pluginConfig.mPluginFile + QLatin1String(" failed."));
-            #ifdef _DEBUG
-              CPFW_LOG(QLatin1String("***Add a placeholder."));
-              itemDataList.append(new CpPlaceHolderItemData(itemDataHelper,pluginConfig));
-            #endif
-		}
-
-		if (itemDataList.count()) {
-			foreach(CpSettingFormItemData *itemData,itemDataList) {
-				if (itemData) {
-					//append the new created setting form item to its parent item.
-					parent->appendChild(itemData);
-
-					if (CpCategorySettingFormItemData *categoryItemData 
-						= qobject_cast<CpCategorySettingFormItemData*>(itemData)) {
-						categoryItemData->initialize(itemDataHelper);
-					}
-
-					//set the text and description from config if it is empty.
-					setEntryItemContentIfEmpty(itemData,pluginConfig);
-				}
-			} //end foreach
-		}
-
-	} //end foreach
-}
-
-QStringList CpUtility::drives()
-{
-	static QStringList drives;
-
-	if (drives.empty()) {
-        CPFW_LOG("device drives:");
-#ifdef WIN32
-		drives.append("C:");
-        CPFW_LOG("C:");
-#else
-		QFileInfoList fileInfoList = QDir::drives();
-		foreach(const QFileInfo &fileInfo,fileInfoList) {
-			QString str = fileInfo.filePath();
-			if (str.length() > 2) {
-				str = str.left(2);
-			}
-			drives.append(str);
-            CPFW_LOG(str);
-		}
-#endif  
-	}
-
-	return drives;
-}
-
-static QStringList directoriesFromAllDrives(const QString &baseDir)
-{
-	QStringList dirs;
-
-	QStringList drives = CpUtility::drives();
-	foreach(const QString &drive,drives) {
-		QString dir = drive + baseDir + QDir::separator();
-		if (QFileInfo(dir).exists()) {
-			dirs.append(dir);
-            CPFW_LOG(dir);
-		}
-	}
-
-	return dirs;
-}
-
-QStringList CpUtility::pluginDirectories()
-{
-	static QStringList dirs;
-	if (dirs.empty()) {
-        CPFW_LOG("ControlPanel plugin derectories:")
-		dirs = directoriesFromAllDrives(CP_PLUGIN_PATH);
-	}
-	return dirs;
-}
-
-QStringList CpUtility::configFileDirectories()
-{
-	static QStringList dirs;
-	if (dirs.empty()) {
-        CPFW_LOG("ControlPanel configuration file derectories:");
-		dirs = directoriesFromAllDrives(CP_PLUGIN_CONFIG_PATH);
-	}
-	return dirs;
-}
-
--- a/controlpanelui/src/cpcategorymodel/src/cputility.h	Mon May 03 12:32:06 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +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_UTILITY_H
-#define CP_UTILITY_H
-
-#include <QString>
-
-class HbDataFormModelItem;
-class CpItemDataHelper;
-
-class CpUtility
-{
-public:
-	/*
-		load all controlpanel plugins from configuration file,
-		and create model items form the loaded plugins 
-		and append model items to given parent
-	*/
-	static void buildConfigPluginItems(HbDataFormModelItem *parent,
-		const QString &configFile,
-		CpItemDataHelper &itemDataHelper);
-		
-	/*
-		get all physical drives of the devices
-	*/
-	static QStringList drives();
-
-	/*
-		get all controlpanel plugin directories of the device
-	*/
-	static QStringList pluginDirectories();
-
-
-	/*
-		get all config directories of the device
-	*/
-	static QStringList configFileDirectories();
-
-
-};
-
-#endif
--- a/controlpanelui/src/cpplugins/cpplugins.pro	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpplugins/cpplugins.pro	Fri May 14 13:21:08 2010 +0800
@@ -20,16 +20,12 @@
   			  privacyplugin \
   			  personalizationplugin \
 			  	lookfeelplugin \
-			  		pincodeplugin \
-					devicelockplugin \
 					profileactivatorplugin \
 					volumeplugin \
-					ringtoneplugin
-					#keytouchfdbkplugin \ 
+					ringtoneplugin \
+					keytouchfdbkplugin 
 					#displayplugin \
 					#applicationsettingsplugin \
 					#accountsplugin
-					#placeholdernoiconplugin \
-					#placeholderplugin \
  
 CONFIG += ordered
\ No newline at end of file
--- a/controlpanelui/src/cpplugins/devicelockplugin/devicelockplugin.pri	Mon May 03 12:32:06 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +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: cpdevicelockplugin source files
-#
-
-# Input
-HEADERS += src/*.h
-SOURCES += src/*.cpp
\ No newline at end of file
--- a/controlpanelui/src/cpplugins/devicelockplugin/devicelockplugin.pro	Mon May 03 12:32:06 2010 +0300
+++ /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: 
-#
-
-TEMPLATE = lib
-TARGET = cpdevicelockplugin
-
-CONFIG += hb plugin
-
-
-include ( ../cpplugincommon.pri )
-include ( devicelockplugin.pri )
-
-symbian { 
-    TARGET.UID3 = 0X20028732
-}
\ No newline at end of file
--- a/controlpanelui/src/cpplugins/devicelockplugin/src/cpdevicelockplugin.cpp	Mon May 03 12:32:06 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +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:  
- *
- */
-#include "cpdevicelockplugin.h"
-#include "cpdevicelockpluginview.h"
-#include <cpsettingformentryitemdataimpl.h>
-
-CpDeviceLockPlugin::CpDeviceLockPlugin()
-{
-}
-
-CpDeviceLockPlugin::~CpDeviceLockPlugin()
-{
-}
-
-QList<CpSettingFormItemData*> CpDeviceLockPlugin::createSettingFormItemData(CpItemDataHelper &itemDataHelper) const
-{
-    return QList<CpSettingFormItemData*>() 
-           << new CpSettingFormEntryItemDataImpl<CpDeviceLockPluginView>(itemDataHelper,tr("Device lock"), QString());
-}
-
-Q_EXPORT_PLUGIN2(cpdevicelockplugin, CpDeviceLockPlugin);
--- a/controlpanelui/src/cpplugins/devicelockplugin/src/cpdevicelockplugin.h	Mon May 03 12:32:06 2010 +0300
+++ /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 CPDEVICELOCKPLUGIN_H
-#define CPDEVICELOCKPLUGIN_H
-
-#include <QObject>
-#include <cpplugininterface.h>
-
-class CpDeviceLockPlugin : public QObject, public CpPluginInterface
-{
-	Q_OBJECT
-    Q_INTERFACES(CpPluginInterface)
-public:
-    CpDeviceLockPlugin();
-    virtual ~CpDeviceLockPlugin();
-    virtual QList<CpSettingFormItemData*> createSettingFormItemData(CpItemDataHelper &itemDataHelper) const;
-};
-
-#endif //CPDEVICELOCKPLUGIN_H
--- a/controlpanelui/src/cpplugins/devicelockplugin/src/cpdevicelockpluginview.cpp	Mon May 03 12:32:06 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +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:  
- *
- */
-
-#include "cpdevicelockpluginview.h"
-#include <QStringList>
-#include <hblineedit.h>
-#include <hbdataform.h>
-#include <hbdataformmodel.h>
-#include <hbdataformmodelitem.h>
-#include "cpremotelockdataformviewitem.h"
-
-CpDeviceLockPluginView::CpDeviceLockPluginView(QGraphicsItem *parent /*= 0*/)
-: CpBaseSettingView(0,parent)
-{
-	if (HbDataForm *form = settingForm()) {
-
-		QList<HbAbstractViewItem *> protoTypeList = form->itemPrototypes();
-		protoTypeList.append(new CpRemoteLockDataFormViewItem());
-        form->setItemPrototypes(protoTypeList);
-
-		HbDataFormModel *formModel = new HbDataFormModel();
-
-		form->setHeading(tr("Device lock"));
-
-		HbDataFormModelItem *deviceLockItem = new HbDataFormModelItem(
-			HbDataFormModelItem::ToggleValueItem,tr("Device lock"));
-    
-		deviceLockItem->setContentWidgetData("text",tr("On"));
-		deviceLockItem->setContentWidgetData("additionalText",tr("Off"));
-
-		formModel->appendDataFormItem(deviceLockItem);
-
-		HbDataFormModelItem *lockCodeItem = new HbDataFormModelItem(
-			HbDataFormModelItem::TextItem,tr("Lock code"));
-		lockCodeItem->setContentWidgetData("echoMode",HbLineEdit::Password);
-		lockCodeItem->setContentWidgetData("text","1111");
-		lockCodeItem->setContentWidgetData("readOnly",true);
-
-		formModel->appendDataFormItem(lockCodeItem);
-
-		HbDataFormModelItem *deviceLockAfterItem = new HbDataFormModelItem(
-			HbDataFormModelItem::RadioButtonListItem,tr("Device will be locked automatically after:"));
-
-		QStringList items;
-		items << tr("15 minutes") << tr("30 minutes") << tr("1 hour") << tr("4 hours") ;
-		deviceLockAfterItem->setContentWidgetData("items",items);
-		deviceLockAfterItem->setContentWidgetData("selected",0);
-
-		formModel->appendDataFormItem(deviceLockAfterItem);
-
-		HbDataFormModelItem *remoteLockItem = new HbDataFormModelItem(
-			static_cast<HbDataFormModelItem::DataItemType>(CpRemoteLockDataFormViewItem::CpRemoteLockItem),
-			tr("Remote locking"));
-		remoteLockItem->setContentWidgetData("plainText",
-			tr("Device can be locked remotely by sending lock code to the device as SMS."));
-		remoteLockItem->setContentWidgetData("TextWrapping",Hb::TextWordWrap);
-
-		formModel->appendDataFormItem(remoteLockItem);
-
-		form->setModel(formModel);
-	}
-}
-
-CpDeviceLockPluginView::~CpDeviceLockPluginView()
-{
-}
-
-
--- a/controlpanelui/src/cpplugins/devicelockplugin/src/cpdevicelockpluginview.h	Mon May 03 12:32:06 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +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 CPDEVICELOCKPLUGINVIEW_H
-#define CPDEVICELOCKPLUGINVIEW_H
-
-#include <cpbasesettingview.h>
-
-class CpDeviceLockPluginView : public CpBaseSettingView
-{
-    Q_OBJECT
-public:
-    explicit CpDeviceLockPluginView(QGraphicsItem *parent = 0);
-    virtual ~CpDeviceLockPluginView();
-};
-
-
-#endif
--- a/controlpanelui/src/cpplugins/devicelockplugin/src/cpremotelockdataformviewitem.cpp	Mon May 03 12:32:06 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +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:  
- *
- */
-#include "cpremotelockdataformviewitem.h"
-#include <hblabel.h>
-
-CpRemoteLockDataFormViewItem::CpRemoteLockDataFormViewItem(QGraphicsItem *parent )
-: HbDataFormViewItem(parent)
-{
-}
-
-CpRemoteLockDataFormViewItem::~CpRemoteLockDataFormViewItem()
-{
-}
-
-HbAbstractViewItem* CpRemoteLockDataFormViewItem::createItem()
-{
-	return new CpRemoteLockDataFormViewItem(*this);
-}
-
-bool CpRemoteLockDataFormViewItem::canSetModelIndex(const QModelIndex &index) const
-{
-	int type = index.data(HbDataFormModelItem::ItemTypeRole).toInt();
-	return type == CpRemoteLockItem;
-}
-
-HbWidget *CpRemoteLockDataFormViewItem::createCustomWidget()
-{
-    int type = modelIndex().data(HbDataFormModelItem::ItemTypeRole).toInt();
-
-	if (type == CpRemoteLockItem) {
-		HbLabel *label = new HbLabel("Device can be locked remotely by sending lock code to the device as SMS.");
-		label->setElideMode  (Qt::ElideNone );
-		label->setTextWrapping(Hb::TextWordWrap);
-		return label;
-	}
-
-	return 0;
-}
-
--- a/controlpanelui/src/cpplugins/devicelockplugin/src/cpremotelockdataformviewitem.h	Mon May 03 12:32:06 2010 +0300
+++ /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 CPREMOTELOCKDATAFORMVIEWITEM_H
-#define CPREMOTELOCKDATAFORMVIEWITEM_H
-
-#include <hbdataformviewitem.h>
-#include <hbdataformmodelitem.h>
-
-class CpRemoteLockDataFormViewItem : public HbDataFormViewItem
-{
-	Q_OBJECT
-public:
-	enum { CpRemoteLockItem = HbDataFormModelItem::CustomItemBase + 10 };
-
-    explicit CpRemoteLockDataFormViewItem(QGraphicsItem *parent = 0);
-    virtual ~CpRemoteLockDataFormViewItem();
-    virtual HbAbstractViewItem* createItem();
-	virtual bool canSetModelIndex(const QModelIndex &index) const;
-protected:
-    virtual HbWidget* createCustomWidget();
-};
-
-#endif //CPREMOTELOCKDATAFORMVIEWITEM_H
-
--- a/controlpanelui/src/cpplugins/deviceplugin/data/cpdeviceplugin.cpcfg	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpplugins/deviceplugin/data/cpdeviceplugin.cpcfg	Fri May 14 13:21:08 2010 +0800
@@ -3,16 +3,16 @@
   <plugin displayname = "Time &amp; data" id = "0X102818E9"  dll = "datetimesettingsplugin.dll">
     <desc></desc>
   </plugin>
-  <plugin displayname = "Language" id = "0X20025FDD"  dll = "cpplaceholdernoiconplugin.dll">
+  <plugin displayname = "Language" id = "0X0"  dll = "TBD">
     <desc></desc>
   </plugin>
-  <plugin displayname = "Text and keyboard" id = "0X20025FDD"  dll = "cpplaceholdernoiconplugin.dll">
+  <plugin displayname = "Text and keyboard" id = "0X0"  dll = "TBD">
     <desc></desc>
   </plugin>
   <plugin displayname = "Positioning" id = "0x2002C318"  dll = "possettingsplugin.dll">
     <desc></desc>
   </plugin>
-   <plugin displayname = "Voice commands" id = "0X20025FDD"  dll = "cpplaceholdernoiconplugin.dll">
+   <plugin displayname = "Voice commands" id = "0X0"  dll = "TBD">
     <desc></desc>
   </plugin> 
   <plugin displayname = "Device updates" id = "0X2002DD04"  dll = "deviceupdatesplugin.dll">
@@ -21,7 +21,7 @@
   <plugin displayname = "Reset" id = "0x10275117"  dll = "cprfsplugin.dll">
     <desc></desc>
   </plugin> 
-  <plugin displayname = "About" id = "0X20025FDD"  dll = "cpplaceholdernoiconplugin.dll">
+  <plugin displayname = "About" id = "0X0"  dll = "TBD">
     <desc></desc>
   </plugin> 
 </childplugins>
\ No newline at end of file
--- a/controlpanelui/src/cpplugins/keytouchfdbkplugin/keytouchfdbkplugin.pri	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpplugins/keytouchfdbkplugin/keytouchfdbkplugin.pri	Fri May 14 13:21:08 2010 +0800
@@ -15,5 +15,11 @@
 #
 
 # Input
-HEADERS += src/*.h
-SOURCES += src/*.cpp
\ No newline at end of file
+HEADERS += src/cpkeyscreenplugin.h \
+           src/cpkeyscreenview.h \
+           src/cpkeyscreenmodel.h \
+           src/cpkeyscreenconstants.h
+
+SOURCES += src/cpkeyscreenplugin.cpp \
+           src/cpkeyscreenview.cpp \
+           src/cpkeyscreenmodel.cpp
\ No newline at end of file
--- a/controlpanelui/src/cpplugins/keytouchfdbkplugin/keytouchfdbkplugin.pro	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpplugins/keytouchfdbkplugin/keytouchfdbkplugin.pro	Fri May 14 13:21:08 2010 +0800
@@ -25,5 +25,14 @@
 include ( keytouchfdbkplugin.pri )
 
 symbian { 
+    INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE \
+	                 $$MOC_DIR
+    HEADERS += src/cpkeyscreenmodel_p.h
+    SOURCES += src/cpkeyscreenmodel_p.cpp
+
+    LIBS += -lcentralrepository \
+            -lfeatmgr
     TARGET.UID3 = 0X20025FDE
+    TARGET.CAPABILITY = All -TCB 
+    TARGET.EPOCALLOWDLLDATA = 1
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/cpplugins/keytouchfdbkplugin/src/cpkeyscreenconstants.h	Fri May 14 13:21:08 2010 +0800
@@ -0,0 +1,39 @@
+/*
+ * 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 CPKEYSCREENCONSTANTS_H
+#define CPKEYSCREENCONSTANTS_H
+
+enum KeyscreenLockItems{
+    EKeyScreenLockItem1,
+    EKeyScreenLockItem2,
+    EKeyScreenLockItem3,
+    EKeyScreenLockItem4,
+    EKeyScreenLockItem5
+};
+
+const int KCpKeyscreenTimeCoeff = 15;
+
+const int KCpKeyscreenLock15s = 15;
+const int KCpKeyscreenLock30s = 30;
+const int KCpKeyscreenLock45s = 45;
+const int KCpKeyscreenLock60s = 60;
+const int KCpKeyscreenLock120s = 120;
+
+const int KCpKeyscreenLockDefault30s = 30;
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/cpplugins/keytouchfdbkplugin/src/cpkeyscreenmodel.cpp	Fri May 14 13:21:08 2010 +0800
@@ -0,0 +1,132 @@
+/*
+ * 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 "cpkeyscreenmodel.h"
+#include <qglobal.h>
+
+#ifdef Q_OS_SYMBIAN
+#include "cpkeyscreenmodel_p.h"
+#endif
+
+
+CpKeyScreenModel::CpKeyScreenModel()
+{
+#ifdef Q_OS_SYMBIAN
+    ptr = new CpKeyScreenModelPrivate();
+#endif
+}
+
+CpKeyScreenModel::~CpKeyScreenModel()
+{
+#ifdef Q_OS_SYMBIAN
+    delete ptr;
+    ptr = 0;
+#endif
+}
+
+bool CpKeyScreenModel::isKeyguardSupported()
+{
+#ifdef Q_OS_SYMBIAN
+    return ptr->isKeyguardSupported();
+#else
+    return 0;
+#endif
+}
+
+int CpKeyScreenModel::keyguard()
+{
+#ifdef Q_OS_SYMBIAN
+    return ptr->keyguard();
+#else
+    return 0;
+#endif
+}
+
+void CpKeyScreenModel::setKeyguard(int value)
+{
+#ifdef Q_OS_SYMBIAN
+    ptr->setKeyguard(value);
+#else
+    Q_UNUSED(value);
+#endif
+}
+
+bool CpKeyScreenModel::isRotateSupported()
+{
+#ifdef Q_OS_SYMBIAN
+    return ptr->isRotateSupported();
+#else
+    return false;
+#endif
+}
+
+bool CpKeyScreenModel::rotate()
+{
+#ifdef Q_OS_SYMBIAN
+    return ptr->rotate();
+#else
+    return 0;
+#endif
+}
+
+void CpKeyScreenModel::setRotate(bool value)
+{
+#ifdef Q_OS_SYMBIAN
+    ptr->setRotate(value);
+#else
+    Q_UNUSED(value);
+#endif
+}
+
+bool CpKeyScreenModel::isBrightnessSupported()
+{
+#ifdef Q_OS_SYMBIAN
+    return ptr->isBrightnessSupported();
+#else
+    return false;
+#endif
+}
+
+int CpKeyScreenModel::brightness()
+{
+#ifdef Q_OS_SYMBIAN
+    return ptr->brightness();
+#else
+    return 0;
+#endif    
+}
+
+void CpKeyScreenModel::setBrightness(int value)
+{
+#ifdef Q_OS_SYMBIAN
+    ptr->setBrightness(value);
+#else
+    Q_UNUSED(value);
+#endif
+}
+
+bool CpKeyScreenModel::isCallibrationSupported()
+{
+#ifdef Q_OS_SYMBIAN
+    return ptr->isCallibrationSupported();
+#else
+    return true;
+#endif
+}
+
+// End of the file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/cpplugins/keytouchfdbkplugin/src/cpkeyscreenmodel.h	Fri May 14 13:21:08 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 CPKEYSCREENMODEL_H
+#define CPKEYSCREENMODEL_H
+
+class CpKeyScreenModelPrivate;
+
+class CpKeyScreenModel
+    {
+public:
+    CpKeyScreenModel();
+    ~CpKeyScreenModel();
+
+public:
+    bool isKeyguardSupported();
+    int keyguard();
+    void setKeyguard(int value);
+    bool isRotateSupported();
+    bool rotate();
+    void setRotate(bool value);
+    bool isBrightnessSupported();
+    int brightness();
+    void setBrightness(int value);
+    bool isCallibrationSupported();
+
+private:
+    CpKeyScreenModelPrivate* ptr;
+    };
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/cpplugins/keytouchfdbkplugin/src/cpkeyscreenmodel_p.cpp	Fri May 14 13:21:08 2010 +0800
@@ -0,0 +1,109 @@
+/*
+ * 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 "cpkeyscreenmodel_p.h"
+#include "cpkeyscreenconstants.h"
+#include <qglobal.h>
+#include <hbcommoncrkeys.h>
+#include <e32base.h>
+#include <hal.h>
+#include <centralrepository.h>
+#include <settingsinternalcrkeys.h>     // KCRUidSecuritySettings
+#include <hwrmlightdomaincrkeys.h>      // KCRUidLightSettings
+#include <featmgr.h>
+
+CpKeyScreenModelPrivate::CpKeyScreenModelPrivate()
+{
+    TRAP_IGNORE(
+    mLightCenRep = CRepository::NewL( KCRUidLightSettings );
+    mSecurityCenRep = CRepository::NewL( KCRUidSecuritySettings );
+    mRotateSensor = CRepository::NewL(KHbSensorCenrepUid););
+}
+
+CpKeyScreenModelPrivate::~CpKeyScreenModelPrivate()
+{
+    delete mLightCenRep;
+    delete mSecurityCenRep;
+    delete mRotateSensor;
+}
+
+bool CpKeyScreenModelPrivate::isKeyguardSupported()
+{
+    return true;
+}
+
+int CpKeyScreenModelPrivate::keyguard()
+{
+    int period = KCpKeyscreenLockDefault30s;
+    mSecurityCenRep->Get( KSettingsAutomaticKeyguardTime, period );
+    return period;
+}
+
+void CpKeyScreenModelPrivate::setKeyguard(int value)
+{
+    if ( (KCpKeyscreenLock15s == value) || (KCpKeyscreenLock30s == value) 
+            || (KCpKeyscreenLock45s == value) || (KCpKeyscreenLock60s == value) 
+            || (KCpKeyscreenLock120s == value) ){
+        mSecurityCenRep->Set( KSettingsAutomaticKeyguardTime, value );
+        mLightCenRep->Set( KDisplayLightsTimeout, value );
+    }
+}
+
+bool CpKeyScreenModelPrivate::isRotateSupported()
+{
+    return true;
+}
+
+bool CpKeyScreenModelPrivate::rotate()
+{
+    int rotate = 0;
+    mRotateSensor->Get(KHbSensorCenrepKey, rotate);
+    return rotate;
+}
+
+void CpKeyScreenModelPrivate::setRotate(bool value)
+{
+    mRotateSensor->Set(KHbSensorCenrepKey, value);
+}
+
+bool CpKeyScreenModelPrivate::isBrightnessSupported()
+{
+    if ( FeatureManager::FeatureSupported( KFeatureIdBrightnessControl ) ){
+        return true;
+    } else {
+        return false;
+    }
+}
+
+int CpKeyScreenModelPrivate::brightness()
+{
+    int time = 0;
+    mLightCenRep->Get( KLightIntensity, time );
+    return time/20;
+}
+
+void CpKeyScreenModelPrivate::setBrightness(int value)
+{
+    mLightCenRep->Set( KLightIntensity, value * 20 );
+}
+
+bool CpKeyScreenModelPrivate::isCallibrationSupported()
+{
+    return true;
+}
+
+// End of the file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/cpplugins/keytouchfdbkplugin/src/cpkeyscreenmodel_p.h	Fri May 14 13:21:08 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:  
+ *   
+ */
+
+#ifndef CPKEYSCREENMODEL_P_H
+#define CPKEYSCREENMODEL_P_H
+
+class CRepository;
+
+class CpKeyScreenModelPrivate
+    {
+public:
+    CpKeyScreenModelPrivate();
+    ~CpKeyScreenModelPrivate();
+
+public:
+    bool isKeyguardSupported();
+    int keyguard();
+    void setKeyguard(int value);
+    bool isRotateSupported();
+    bool rotate();
+    void setRotate(bool value);
+    bool isBrightnessSupported();
+    int brightness();
+    void setBrightness(int value);
+    bool isCallibrationSupported();
+
+private:
+    CRepository* mLightCenRep;
+    CRepository* mSecurityCenRep;
+    CRepository* mRotateSensor;
+    };
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/cpplugins/keytouchfdbkplugin/src/cpkeyscreenplugin.cpp	Fri May 14 13:21:08 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:  
+ *
+ */
+#include "cpkeyscreenplugin.h"
+#include "cpkeyscreenview.h"
+#include <cpsettingformentryitemdataimpl.h>
+
+CpKeyScreenPlugin::CpKeyScreenPlugin()
+{
+}
+
+CpKeyScreenPlugin::~CpKeyScreenPlugin()
+{
+}
+
+QList<CpSettingFormItemData*> CpKeyScreenPlugin::createSettingFormItemData(CpItemDataHelper &itemDataHelper) const
+{
+    CpSettingFormItemData* itemData = new CpSettingFormEntryItemDataImpl<CpKeyScreenView>(
+			itemDataHelper,
+			hbTrId("Keys & screen"));
+    return QList<CpSettingFormItemData*>() << itemData;
+}
+
+Q_EXPORT_PLUGIN2(cpkeyscreenplugin, CpKeyScreenPlugin);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/cpplugins/keytouchfdbkplugin/src/cpkeyscreenplugin.h	Fri May 14 13:21:08 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:  
+ *   
+ */
+#ifndef	CPKEYSCREENPLUGIN_H
+#define	CPKEYSCREENPLUGIN_H
+
+#include <qobject.h>
+#include <cpplugininterface.h>
+
+class CpKeyScreenPlugin : public QObject, public CpPluginInterface
+{
+Q_OBJECT
+    Q_INTERFACES(CpPluginInterface)
+public:
+    CpKeyScreenPlugin();
+    virtual ~CpKeyScreenPlugin();
+    virtual QList<CpSettingFormItemData*> createSettingFormItemData(CpItemDataHelper &itemDataHelper) const;
+};
+
+#endif	//CPKEYSCREENPLUGIN_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/cpplugins/keytouchfdbkplugin/src/cpkeyscreenview.cpp	Fri May 14 13:21:08 2010 +0800
@@ -0,0 +1,156 @@
+/*
+ * 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 "cpkeyscreenview.h"
+#include "cpkeyscreenmodel.h"
+#include "cpkeyscreenconstants.h"
+#include <hbdataform.h>
+#include <QStringList>
+#include <QDebug>
+#include <QtCore/qobject.h>
+#include <hbdataformmodel.h>
+#include <cpsettingformitemdata.h>
+#include <hbmessagebox.h>
+
+
+CpKeyScreenView::CpKeyScreenView(QGraphicsItem *parent) :
+    CpBaseSettingView(0,parent),
+    mScreenRadioButton(0),
+    mRotateCheckbox(0),
+	mBrightSliderItem(0),
+	mCallibItem(0),
+	mModel(0)
+{
+    HbDataForm *form = qobject_cast<HbDataForm*> ( widget() );
+    if (form) {
+        form->setHeading(hbTrId("txt_cp_subhead_keys_screen"));
+        mModel = new CpKeyScreenModel();
+        HbDataFormModel *model = new HbDataFormModel;
+
+        if ( mModel->isKeyguardSupported() ) {
+            makeScreenItem(*model);
+        }
+
+        if ( mModel->isRotateSupported() ) {
+            makeRotateItem(*model);
+        }
+
+        makeBrightnessItem(*model);
+
+        if ( mModel->isCallibrationSupported() ) {
+            makeCallibrationItem(*model);
+        }
+
+        form->setModel(model);
+    }
+}
+
+void CpKeyScreenView::makeScreenItem(HbDataFormModel& model)
+{
+    mScreenRadioButton = new CpSettingFormItemData(HbDataFormModelItem::RadioButtonListItem,
+            hbTrId("txt_cp_setlabel_keys_screen_locked_after"));
+    qobject_cast<HbDataForm*> ( widget() )->addConnection(mScreenRadioButton,SIGNAL(itemSelected(int)),this,SLOT(screenValueChanged(int)));
+    model.appendDataFormItem(mScreenRadioButton, model.invisibleRootItem());
+
+    // Valid range is:
+    // 15 secs, 30 secs, 45 secs, 1 min, 2 mins
+    QStringList sList;
+    sList<< hbTrId("txt_cp_setlabel_keys_screen_val_15_seconds")<< hbTrId("txt_cp_setlabel_keys_screen_val_30_seconds")
+         << hbTrId("txt_cp_setlabel_keys_screen_val_45_seconds")<< hbTrId("txt_cp_setlabel_keys_screen_val_1_minute")
+         << hbTrId("txt_cp_setlabel_keys_screen_val_2_minutes");
+    int period = mModel->keyguard();
+    int selectedIndex = period/KCpKeyscreenTimeCoeff - 1;
+    if ( KCpKeyscreenLock120s == period ){ // 2 minutes
+        selectedIndex = EKeyScreenLockItem5;
+    }
+    if ( (KCpKeyscreenLock15s != period) && (KCpKeyscreenLock30s != period) && 
+            (KCpKeyscreenLock45s != period) && (KCpKeyscreenLock60s != period) && 
+            (KCpKeyscreenLock120s != period) ){
+        mModel->setKeyguard(KCpKeyscreenLockDefault30s);  // Set keyguard and backlight period to default
+        selectedIndex = EKeyScreenLockItem2;
+    }
+    mScreenRadioButton->setContentWidgetData( QString("items"), sList );
+    mScreenRadioButton->setContentWidgetData( QString("selected"), selectedIndex);
+}
+
+void CpKeyScreenView::makeRotateItem(HbDataFormModel& model)
+{
+    mRotateCheckbox = new CpSettingFormItemData(HbDataFormModelItem::CheckBoxItem, QString());
+    qobject_cast<HbDataForm*> ( widget() )->addConnection(mRotateCheckbox,SIGNAL(stateChanged(int)),this,SLOT(rotateValueChanged(int)));
+    model.appendDataFormItem(mRotateCheckbox, model.invisibleRootItem());
+
+    mRotateCheckbox->setContentWidgetData( QString("text"), QVariant(hbTrId("txt_cp_list_autorotate_display")) );
+    mRotateCheckbox->setData(HbDataFormModelItem::DescriptionRole, QString( hbTrId("txt_cp_info_rotate_the_display_content_automatical") ));
+    Qt::CheckState state;
+    if ( mModel->rotate() ){
+        state = Qt::Checked;
+    } else {
+        state = Qt::Unchecked;
+    }
+    mRotateCheckbox->setContentWidgetData( QString("checkState"), state );
+}
+
+void CpKeyScreenView::makeBrightnessItem(HbDataFormModel& model)
+{
+    mBrightSliderItem = new CpSettingFormItemData(HbDataFormModelItem::SliderItem, hbTrId("txt_cp_setlabel_brightness"));
+    qobject_cast<HbDataForm*> ( widget() )->addConnection(mBrightSliderItem,SIGNAL(valueChanged(int)),this,SLOT(brightValueChanged(int)));
+    model.appendDataFormItem(mBrightSliderItem, model.invisibleRootItem());
+
+    mBrightSliderItem->setContentWidgetData( QString("value"), mModel->brightness() );
+    mBrightSliderItem->setContentWidgetData( QString("minimum"), 1 );
+    mBrightSliderItem->setContentWidgetData( QString("maximum"), 5 );
+}
+
+void CpKeyScreenView::makeCallibrationItem(HbDataFormModel& model)
+{
+    mCallibItem = new CpSettingFormItemData(HbDataFormModelItem::ToggleValueItem,
+                        QString());
+    qobject_cast<HbDataForm*> ( widget() )->addConnection(mCallibItem,SIGNAL(pressed()),this,SLOT(launchCallib()));
+    model.appendDataFormItem(mCallibItem, model.invisibleRootItem());
+    mCallibItem->setContentWidgetData( QString("text"), hbTrId("txt_cp_button_touch_screen_calibration"));
+}
+
+CpKeyScreenView::~CpKeyScreenView()
+{
+    delete mModel;
+	mModel = 0;
+}
+
+void CpKeyScreenView::screenValueChanged(int index)
+{
+    int period = (index + 1) * KCpKeyscreenTimeCoeff;
+    if (EKeyScreenLockItem5 == index){
+        period = KCpKeyscreenLock120s;
+    }
+    mModel->setKeyguard(period);
+}
+
+void CpKeyScreenView::rotateValueChanged(int value)
+{
+    mModel->setRotate( value );
+}
+
+void CpKeyScreenView::brightValueChanged(int value)
+{
+	mModel->setBrightness(value);
+}
+
+void CpKeyScreenView::launchCallib()
+{
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/cpplugins/keytouchfdbkplugin/src/cpkeyscreenview.h	Fri May 14 13:21:08 2010 +0800
@@ -0,0 +1,55 @@
+/*
+ * 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	CPKEYSCREENVIEW_H
+#define	CPKEYSCREENVIEW_H
+
+#include <cpbasesettingview.h>
+#include <hbdataformmodelitem.h>
+
+class HbDataFormModelItem;
+class HbDataFormModel;
+class CpSettingFormItemData;
+class CpKeyScreenModel;
+
+class CpKeyScreenView : public CpBaseSettingView
+{
+    Q_OBJECT
+public:
+    explicit CpKeyScreenView(QGraphicsItem *parent = 0);
+    virtual ~CpKeyScreenView();
+
+private:
+    void makeScreenItem(HbDataFormModel& model);
+    void makeRotateItem(HbDataFormModel& model);
+    void makeBrightnessItem(HbDataFormModel& model);
+    void makeCallibrationItem(HbDataFormModel& model);
+    
+private slots:
+    //need handling your member's value change
+    void screenValueChanged(int index);
+    void rotateValueChanged(int value);
+    void brightValueChanged(int value);
+    void launchCallib();
+
+private:
+    CpSettingFormItemData *mScreenRadioButton;
+    CpSettingFormItemData *mRotateCheckbox;
+	CpSettingFormItemData *mBrightSliderItem;
+	CpSettingFormItemData *mCallibItem;
+	CpKeyScreenModel* mModel;
+};
+#endif//	CPKEYSCREENVIEW_H
--- a/controlpanelui/src/cpplugins/keytouchfdbkplugin/src/cpkeytouchfdbkplugin.cpp	Mon May 03 12:32:06 2010 +0300
+++ /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:  
- *
- */
-#include "cpkeytouchfdbkplugin.h"
-#include "cpktfdbkview.h"
-#include <cpsettingformentryitemdataimpl.h>
-
-CpKeytouchfdbkPlugin::CpKeytouchfdbkPlugin()
-{
-}
-
-CpKeytouchfdbkPlugin::~CpKeytouchfdbkPlugin()
-{
-}
-
-QList<CpSettingFormItemData*> CpKeytouchfdbkPlugin::createSettingFormItemData(CpItemDataHelper &itemDataHelper) const
-{
-    return QList<CpSettingFormItemData*>() << new CpSettingFormEntryItemDataImpl<CpKtfdbkView>(
-			itemDataHelper,
-            tr("Key & screen"), 
-			"");
-}
-
-Q_EXPORT_PLUGIN2(cpkeytouchfdbkplugin, CpKeytouchfdbkPlugin);
--- a/controlpanelui/src/cpplugins/keytouchfdbkplugin/src/cpkeytouchfdbkplugin.h	Mon May 03 12:32:06 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +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	CPKEYTOUCHFDBKPLUGIN_H
-#define	CPKEYTOUCHFDBKPLUGIN_H
-
-#include <qobject.h>
-#include <cpplugininterface.h>
-
-class CpKeytouchfdbkPlugin : public QObject, public CpPluginInterface
-{
-Q_OBJECT
-    Q_INTERFACES(CpPluginInterface)
-public:
-    CpKeytouchfdbkPlugin();
-    virtual ~CpKeytouchfdbkPlugin();
-    virtual QList<CpSettingFormItemData*> createSettingFormItemData(CpItemDataHelper &itemDataHelper) const;
-};
-
-#endif	//CPKEYTOUCHFDBKPLUGIN
--- a/controlpanelui/src/cpplugins/keytouchfdbkplugin/src/cpktfdbkview.cpp	Mon May 03 12:32:06 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,99 +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:  
- *
- */
-#include "cpktfdbkview.h"
-#include <hbdataform.h>
-#include <QStringList>
-#include <QDebug>
-#include <hbdataformmodel.h>
-#include <cpsettingformitemdata.h>
-#include <hbmessagebox.h>
-#include <cpprofilemodel.h>
-
-
-CpKtfdbkView::CpKtfdbkView(QGraphicsItem *parent) :
-    CpBaseSettingView(0,parent),
-    mKTSliderItem(0),
-    mSTSliderItem(0),
-    mSVSliderItem(0),
-	mModel(0)
-
-{
-    HbDataForm *form = settingForm();
-    if (form) {
-		mModel = new CpProfileModel();
-        HbDataFormModel *model = new HbDataFormModel;
-        
-        form->setHeading(tr("Key & touch screen feedback"));
-// Key tones slider
-        mKTSliderItem = new CpSettingFormItemData(HbDataFormModelItem::SliderItem,
-                QString("Key tones"));
-        form->addConnection(mKTSliderItem,SIGNAL(valueChanged(int)),this,SLOT(KTsliderValueChanged(int)));
-
-		model->appendDataFormItem(mKTSliderItem, model->invisibleRootItem());
-//Screen tones        
-        mSTSliderItem = new CpSettingFormItemData(HbDataFormModelItem::SliderItem,
-                QString("Screen tones"));
-        form->addConnection(mSTSliderItem,SIGNAL(valueChanged(int)),this,SLOT(STsliderValueChanged(int)));
-
-        model->appendDataFormItem(mSTSliderItem, model->invisibleRootItem());
-//Screen vibra
-        mSVSliderItem = new CpSettingFormItemData(HbDataFormModelItem::SliderItem,
-                QString("Screen vibra"));
-        form->addConnection(mSVSliderItem,SIGNAL(valueChanged(int)),this,SLOT(SVsliderValueChanged(int)));
-
-        model->appendDataFormItem(mSVSliderItem, model->invisibleRootItem());
-//initialize sliders
-		mKTSliderItem->setContentWidgetData( QString("value"), mModel->keyVolume() );
-                mKTSliderItem->setContentWidgetData( QString("minimum"), 0 );
-		mKTSliderItem->setContentWidgetData( QString("maximum"), 3 );
-
-		mSTSliderItem->setContentWidgetData( QString("value"), mModel->screenVolume() );
-		mSTSliderItem->setContentWidgetData( QString("minimum"), 0 );
-		mSTSliderItem->setContentWidgetData( QString("maximum"), 3 );
-
-		mSVSliderItem->setContentWidgetData( QString("value"), mModel->screenVibra() );
-		mSVSliderItem->setContentWidgetData( QString("minimum"), 0 );
-		mSVSliderItem->setContentWidgetData( QString("maximum"), 3 );
-//
-        form->setModel(model);
-//
-    }
-    
-
-}
-CpKtfdbkView::~CpKtfdbkView()
-{
-	if(mModel)	delete mModel;
-	mModel = 0;
-}
-
-void CpKtfdbkView::KTsliderValueChanged(int value)
-{
-	if(mModel)	mModel->setKeyVolume( value );
-}
-
-void CpKtfdbkView::STsliderValueChanged(int value)
-{
-	if(mModel)	mModel->setScreenVolume( value );
-}
-
-void CpKtfdbkView::SVsliderValueChanged(int value)
-{
-	if(mModel)	mModel->setScreenVibra( value );
-}
-
-
--- a/controlpanelui/src/cpplugins/keytouchfdbkplugin/src/cpktfdbkview.h	Mon May 03 12:32:06 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +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	CPKTFDBKVIEW_H
-#define	CPKTFDBKVIEW_H
-
-#include <cpbasesettingview.h>
-
-class HbDataFormModelItem;
-class CpSettingFormItemData;
-class CpProfileModel;
-class CpKtfdbkView : public CpBaseSettingView
-{
-    Q_OBJECT
-public:
-    explicit CpKtfdbkView(QGraphicsItem *parent = 0);
-    virtual ~CpKtfdbkView();
-private slots:
-    //need handling your member's value change
-    void KTsliderValueChanged(int value);
-    void STsliderValueChanged(int value);
-    void SVsliderValueChanged(int value);
-private:
-	CpProfileModel *mModel;
-    CpSettingFormItemData *mKTSliderItem;
-    CpSettingFormItemData *mSTSliderItem;
-	CpSettingFormItemData *mSVSliderItem;
-};
-#endif//	CPKTFDBKVIEW_H
--- a/controlpanelui/src/cpplugins/personalizationplugin/data/cppersonalizationplugin.cpcfg	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpplugins/personalizationplugin/data/cppersonalizationplugin.cpcfg	Fri May 14 13:21:08 2010 +0800
@@ -2,8 +2,13 @@
   <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
--- a/controlpanelui/src/cpplugins/personalizationplugin/personalizationplugin.pri	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpplugins/personalizationplugin/personalizationplugin.pri	Fri May 14 13:21:08 2010 +0800
@@ -16,17 +16,15 @@
 
 # Input
 HEADERS += src/cppersonalizationplugin.h  \
-			     src/cppersonalizationgroupitemdata.h \
-			     src/cpmastervolumeslider.h \
+			     src/cppersonalizationgroupitemdata.h\
            src/cpprofilesettingform.h \
-           src/cppersonalizationentryitemdata.h \
+           ../ringtoneplugin/src/cppersonalizationentryitemdata.h \
            src/cppersonalizationadvanceview.h \
            src/cpprofilenameeditdialog.h \
 			     
 SOURCES += src/cppersonalizationplugin.cpp \
 		       src/cppersonalizationgroupitemdata.cpp \
-		       src/cpmastervolumeslider.cpp \
 		       src/cpprofilesettingform.cpp \
-           src/cppersonalizationentryitemdata.cpp \
+           ../ringtoneplugin/src/cppersonalizationentryitemdata.cpp \
            src/cppersonalizationadvanceview.cpp \
            src/cpprofilenameeditdialog.cpp \
--- a/controlpanelui/src/cpplugins/personalizationplugin/personalizationplugin.pro	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpplugins/personalizationplugin/personalizationplugin.pro	Fri May 14 13:21:08 2010 +0800
@@ -21,7 +21,7 @@
 RESOURCES += personalizationplugin.qrc
 
 LIBS +=  -lcpprofilewrapper
-LIBS += -lxqservice -lxqserviceutil
+LIBS +=  -lxqsettingsmanager -lcpringtoneview
 
 include ( ../cpplugincommon.pri )
 include ( personalizationplugin.pri )
@@ -38,4 +38,4 @@
 
     # 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)"
-}
\ No newline at end of file
+}
--- a/controlpanelui/src/cpplugins/personalizationplugin/src/cpmastervolumeslider.cpp	Mon May 03 12:32:06 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,166 +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:  
- *
- */
-#include "cpmastervolumeslider.h"
-
-CpMasterVolumeSlider::CpMasterVolumeSlider(QGraphicsItem *parent /* =0 */)
-											:HbSlider(parent),
-											 mPreviousValue(0)		 
-{
-	QList<HbSlider::SliderElement> elements;
-    elements << HbSlider::IncreaseElement
-			 << HbSlider::TrackElement
-			 << HbSlider::DecreaseElement
-			 << HbSlider::IconElement
-			 << HbSlider::TextElement;
-
-    setElements( elements );
-	setOrientation(Qt::Horizontal);
-	setMaximum(10);
-	setMinimum(0);
-	
-	setIcon(HbSlider::DecreaseElement, HbIcon(":/icon/hb_vol_slider_decrement.svg"));
-	setIcon(HbSlider::IncreaseElement, HbIcon(":/icon/hb_vol_slider_increment.svg"));
-	setIcon(HbSlider::IconElement, HbIcon(":/icon/hb_vol_slider_muted.svg"));
-	
-	setIconCheckable(true);
-
-	// set tick and beep label
-	
-#if 1
-//	setMajorTickInterval(1);
-//	setTickPosition(Hb::SliderTicksBothSides);
-//	QStringList labelList;
-//	labelList<< tr("")
-//			 << tr("Beep");
-			 
-//	this->setMajorTickLabels(labelList);
-#endif
-	
-	connect(this, SIGNAL(iconToggled(bool)), 
-			this, SLOT(onMuteIconToggled(bool)));
-	connect(this, SIGNAL(valueChanged(int)),
-			this, SLOT(onValueChanged(int)));
-//	onValueChanged(value());
-}
-
-CpMasterVolumeSlider::~CpMasterVolumeSlider()
-{
-}
-
-/*bool CpMasterVolumeSlider::isBeepMode()
-{
-	if (value() == minimum()+1) {
-		return true;
-	}
-	else {
-		return false;
-	}
-}
-
-void CpMasterVolumeSlider::setBeepMode(bool isBeepMode)
-{
-	if (isBeepMode == true) {
-		setValue(minimum()+1);	
-	}
-	else {
-		setValue(mPreviousValue);
-	}
-}*/
-
-/*bool CpMasterVolumeSlider::isSilentMode()
-{
-	if (value() == minimum()) {
-		return true;
-	}
-	else {
-		return false;
-	}
-}
-
-void CpMasterVolumeSlider::setSilentMode(bool isSilentMode)
-{
-	if (isSilentMode == true) {
-		setValue(minimum());	
-	}
-	else {
-		setValue(mPreviousValue);
-	}
-}
-
-int CpMasterVolumeSlider::normalValue()
-{
-	return (value()-1);
-}
-
-void CpMasterVolumeSlider::setNormalValue(int normalValue)
-{
-	setValue(normalValue+1);
-}
-*/	
-void CpMasterVolumeSlider::onValueChanged(int value)
-{
-	if (this->minimum( ) == value) { 
-        // volume is mute
-        this->setIconChecked( true );
-		emit silentActivated();
-    } 
-	else {
-        // unmute volume
-		this->setIconEnabled( true );
-		this->setIconCheckable(false);
-    this->setIconChecked( false );
-    this->setIcon(HbSlider::IconElement, HbIcon(":/icon/hb_vol_slider_unmuted.svg"));
-		this->setIconCheckable(true);
-		
-		
-		/*if (value == 1) {
-			emit beepActivated(); 
-		}*/
-		//else {
-		int valueMap = value;
-		emit normalValueChanged(valueMap);
-		//}
-    }
-}
-
-/*void CpMasterVolumeSlider::onIncreaseIconClicked()
-{
-}
-
-void CpMasterVolumeSlider::onDecreaseIconClicked()
-{
-}*/
-
-void CpMasterVolumeSlider::onMuteIconToggled(bool isToggled)
-{
-	if (isToggled) {
-		mPreviousValue = value();
-		this->setIcon(HbSlider::IconElement, HbIcon(":/icon/hb_vol_slider_muted.svg"));
-		setValue(minimum());
-	}
-	else {
-		this->setIcon(HbSlider::IconElement, HbIcon(":/icon/hb_vol_slider_unmuted.svg"));
-		if (mPreviousValue == minimum()||mPreviousValue == minimum()+1) {
-			setValue(minimum()+1);
-		}
-		else {
-			setValue(mPreviousValue);
-		}
-		mPreviousValue = 0;
-	}
-}
-
--- a/controlpanelui/src/cpplugins/personalizationplugin/src/cpmastervolumeslider.h	Mon May 03 12:32:06 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +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_MASTERVOLUMESLIDER_H
-#define CP_MASTERVOLUMESLIDER_H
-
-#include <hbslider.h>
-#include <hbmessagebox.h>
-class CpMasterVolumeSlider: public HbSlider
-{
-	Q_OBJECT
-	//Q_PROPERTY(bool beepMode READ isBeepMode WRITE setBeepMode)
-	//Q_PROPERTY(bool silentMode READ isSilentMode WRITE setSilentMode)
-	//Q_PROPERTY(int normalValue READ normalValue WRITE setNormalValue)
-	
-public:
-	explicit CpMasterVolumeSlider(QGraphicsItem *parent = 0);
-	~CpMasterVolumeSlider();
-	
-public:
-	//bool isBeepMode();
-	//void setBeepMode(bool isBeepMode);
-	//bool isSilentMode();
-	//void setSilentMode(bool isSilentMode);
-	//int normalValue();
-	//void setNormalValue(int normalValue);
-	
-signals:
-	//void beepActivated();
-	void silentActivated();
-	void normalValueChanged(int value);
-private slots:
-	void onValueChanged(int value);
-	//void onIncreaseIconClicked();
-	//void onDecreaseIconClicked();
-	void onMuteIconToggled(bool isToggled);
-private:
-	int mPreviousValue;
-};
-
-#endif
-
--- a/controlpanelui/src/cpplugins/personalizationplugin/src/cppersonalizationadvanceview.cpp	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpplugins/personalizationplugin/src/cppersonalizationadvanceview.cpp	Fri May 14 13:21:08 2010 +0800
@@ -25,6 +25,7 @@
 #include "cpprofilesettingform.h"
 #include "cpprofilenameeditdialog.h"
 
+#include <cppluginutility.h>
 #include <hbaction.h>
 #include <hbmenu.h>
 CpPersonalizationAdvanceView::CpPersonalizationAdvanceView(QGraphicsItem *parent /*=0*/):
@@ -36,7 +37,9 @@
     // 4.use cppersonalizationentryitemdata class to create ringtone, message tone...
     // 5.ignore cpmastervolumeslider class, please use default slideritem to create keyandscreen slider, new property added in slider, if any question, please contact me.
     // 6. don't forget the cfg file in data folder, you can try to add the profile activator plugin and ringtone plugin here
-    setSettingForm( new CpProfileSettingForm() );
+    HbDataForm *form = new CpProfileSettingForm();
+    setWidget( form );
+    CpPluginUtility::addCpItemPrototype(form);
     initMenu();
 }
 CpPersonalizationAdvanceView::~CpPersonalizationAdvanceView()
--- a/controlpanelui/src/cpplugins/personalizationplugin/src/cppersonalizationentryitemdata.cpp	Mon May 03 12:32:06 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,85 +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:
- *
- */
-#include "cppersonalizationentryitemdata.h"
-#include <xqaiwrequest.h>
-#include <cpitemdatahelper.h>
-
-CpPersonalizationEntryItemData::CpPersonalizationEntryItemData(CpItemDataHelper &itemDataHelper,
-                const QString &text,
-                const QString &description,
-                const HbIcon &icon,
-                const HbDataFormModelItem *parent)
-                :CpSettingFormEntryItemData(itemDataHelper,text,description,
-                                            icon,parent),mReq(0)
-{
-}
-CpPersonalizationEntryItemData::~CpPersonalizationEntryItemData()
-{
-}
-void CpPersonalizationEntryItemData::onLaunchView()
-{
-    //launch media fetcher
-    if (!mReq)
-    {
-        mReq = mAppMgr.create("com.nokia.services.media.Music", "fetch(QString)", true);
-
-        if (!mReq)
-        {
-            return;
-        }
-        else
-        {
-            connect(mReq, SIGNAL(requestOk(const QVariant&)), SLOT(handleOk(const QVariant&)));
-            connect(mReq, SIGNAL(requestError(int,const QString&)), SLOT(handleError(int,const QString&)));
-        }
-    }
-
-    // Set arguments for request (music fetcher application title)
-    QList<QVariant> args;
-    args << QVariant( text() );
-    mReq->setArguments(args);
-
-    // Make the request
-    if (!mReq->send())
-    {
-        //report error
-        return;
-    }
-}
-void CpPersonalizationEntryItemData::handleOk(const QVariant &result)
-{
-    if (!result.canConvert<QString>())
-    {
-        setDescription( "Corrupt result" );
-    }
-    else
-    {
-        setDescription( result.value<QString>() );
-    }
-}
-void CpPersonalizationEntryItemData::handleError(int errorCode, const QString& errorMessage)
-{
-    //
-    Q_UNUSED(errorCode);
-    Q_UNUSED(errorMessage);
-    setDescription("Error");
-}
-
-CpBaseSettingView *CpPersonalizationEntryItemData::createSettingView() const
-{
-        return 0;
-}
--- a/controlpanelui/src/cpplugins/personalizationplugin/src/cppersonalizationentryitemdata.h	Mon May 03 12:32:06 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +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 CPPERSONALIZATIONENTRYITEMDATA_H
-#define CPPERSONALIZATIONENTRYITEMDATA_H
-
-#include <cpsettingformentryitemdata.h>
-#include <xqappmgr.h>
-
-
-class XQApplicationManager;
-class XQAiwRequest;
-
-
-class CpPersonalizationEntryItemData : public CpSettingFormEntryItemData
-{
-        Q_OBJECT
-public:
-    explicit CpPersonalizationEntryItemData(CpItemDataHelper &itemDataHelper,
-                const QString &text = QString(),
-                const QString &description = QString(),
-                const HbIcon &icon = HbIcon(),
-                const HbDataFormModelItem *parent = 0);
-        virtual ~CpPersonalizationEntryItemData();
-private slots:
-        void onLaunchView();
-        void handleOk(const QVariant &result);
-        void handleError(int errorCode, const QString& errorMessage);
-private:
-        virtual CpBaseSettingView *createSettingView() const;
-private:
-        XQApplicationManager mAppMgr;
-        XQAiwRequest* mReq;
-};
-
-#endif // CPPERSONALIZATIONENTRYITEMDATA_H
--- a/controlpanelui/src/cpplugins/personalizationplugin/src/cppersonalizationgroupitemdata.cpp	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpplugins/personalizationplugin/src/cppersonalizationgroupitemdata.cpp	Fri May 14 13:21:08 2010 +0800
@@ -49,11 +49,13 @@
 
 	CPFW_LOG("CpPersonalizationGroupItemData::beforeLoadingConfigPlugins(), END");
 }
+
 void CpPersonalizationGroupItemData::afterLoadingConfigPlugins(CpItemDataHelper &itemDataHelper)
 {
     CPFW_LOG("CpPersonalizationGroupItemData::afterLoadingConfigPlugins(), START");
     CpSettingFormEntryItemData *advanceSettingItem = 
-            new CpSettingFormEntryItemDataImpl<CpPersonalizationAdvanceView>(itemDataHelper, hbTrId("txt_cp_button_advanced_settings"));
+            new CpSettingFormEntryItemDataImpl<CpPersonalizationAdvanceView>(CpSettingFormEntryItemData::ButtonEntryItem,
+            		itemDataHelper, hbTrId("txt_cp_button_advanced_settings"));
     appendChild(advanceSettingItem);
     CPFW_LOG("CpPersonalizationGroupItemData::afterLoadingConfigPlugins(), END");
 }
--- a/controlpanelui/src/cpplugins/personalizationplugin/src/cppersonalizationplugin.cpp	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpplugins/personalizationplugin/src/cppersonalizationplugin.cpp	Fri May 14 13:21:08 2010 +0800
@@ -19,6 +19,7 @@
 #include "cppersonalizationgroupitemdata.h"
 #include <cpcategorysettingformitemdata.h>
 #include <cpitemdatahelper.h>
+#include "cppersonalizationadvanceview.h"
 
 CpPersonalizationPlugin::CpPersonalizationPlugin()
 {
@@ -40,6 +41,14 @@
     return QList<CpSettingFormItemData*>() << personalItemData;
 }
 
+CpBaseSettingView *CpPersonalizationPlugin::createSettingView(const QVariant &hint) const
+{
+    if (hint.toString().compare("profile_view",Qt::CaseInsensitive) == 0) {
+        return new CpPersonalizationAdvanceView;
+    }
+    return 0;
+}
+
 Q_EXPORT_PLUGIN2(cppersonalizationplugin, CpPersonalizationPlugin);
 
 
--- a/controlpanelui/src/cpplugins/personalizationplugin/src/cppersonalizationplugin.h	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpplugins/personalizationplugin/src/cppersonalizationplugin.h	Fri May 14 13:21:08 2010 +0800
@@ -20,17 +20,24 @@
 
 #include <qobject.h>
 #include <cpplugininterface.h>
+#include <cplauncherinterface.h>
+
+class CpBaseSettingView;
+class QVariant;
 
 class CpPersonalizationPlugin 
         : public QObject,
-          public CpPluginInterface
+          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 */
--- a/controlpanelui/src/cpplugins/personalizationplugin/src/cpprofilenameeditdialog.cpp	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpplugins/personalizationplugin/src/cpprofilenameeditdialog.cpp	Fri May 14 13:21:08 2010 +0800
@@ -22,6 +22,7 @@
 #include <hbaction.h>
 
 #include <QGraphicsLinearLayout>
+#include <QScopedPointer>
 
 CpProfileNameEditDialog::CpProfileNameEditDialog( QGraphicsItem *parent )
     :HbDialog( parent )
@@ -49,8 +50,8 @@
     
     connect( mTextEdit, SIGNAL( contentsChanged() ), this, SLOT( checkPrimaryAction() ) );
     
-    setPrimaryAction( new HbAction( hbTrId( "txt_common_button_ok" ), this ));
-    setSecondaryAction( new HbAction( hbTrId( "txt_common_button_cancel" ), this ) );
+    addAction( new HbAction( hbTrId( "txt_common_button_ok" ), this ));
+    addAction( new HbAction( hbTrId( "txt_common_button_cancel" ), this ) );
     
     setTimeout( NoTimeout );
 }
@@ -69,24 +70,26 @@
 
 bool CpProfileNameEditDialog::launchProfileNameEditDialog( QString &profileName )
 {
-    CpProfileNameEditDialog * profileEditNameDialog = new CpProfileNameEditDialog();
+    CpProfileNameEditDialog *profileEditNameDialog = new CpProfileNameEditDialog();
+    
     profileEditNameDialog->setLineEditText( profileName );
     profileEditNameDialog->checkPrimaryAction();
     
-    if( profileEditNameDialog->exec() == profileEditNameDialog->secondaryAction() ){
-        return false;
-    }
-    else{
-        profileName = profileEditNameDialog->getLineEditText();
-        return true;
-    }
+    HbAction *secondAction = qobject_cast<HbAction *>
+                                 (profileEditNameDialog->actions().at(1));
+    profileEditNameDialog->show();
+    return false;
 }
 
 void CpProfileNameEditDialog::checkPrimaryAction()
 {
-    if( !mTextEdit->text().isEmpty() ){
-        primaryAction()->setEnabled( true );
-    } else {
-        primaryAction()->setEnabled( false );
+    HbAction *const primaryAction = qobject_cast<HbAction *>
+                                                (actions().at(0));
+    if (primaryAction) {
+        if ( !mTextEdit->text().isEmpty() ) {
+            primaryAction->setEnabled(true);        
+        } else {        
+            primaryAction->setEnabled(false);        
+        }
     }
 }
--- a/controlpanelui/src/cpplugins/personalizationplugin/src/cpprofilesettingform.cpp	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpplugins/personalizationplugin/src/cpprofilesettingform.cpp	Fri May 14 13:21:08 2010 +0800
@@ -22,6 +22,7 @@
 #include <hbabstractviewitem.h>
 #include <cpitemdatahelper.h>
 #include <cpprofilemodel.h>
+#include <hbslider.h>
 
 #include <QFileInfo>
 #include <QFileIconProvider>
@@ -29,10 +30,13 @@
 #include <QModelIndex>
 #include <QMap>
 
+#include <xqsettingsmanager.h>
+#include <ProfileEngineInternalCRKeys.h>
+
 CpProfileSettingForm::CpProfileSettingForm()
     : mModel(0), mItemDataHelper(new CpItemDataHelper( this )),
     mProfileModel(new CpProfileModel()), mFileIconProvider(new QFileIconProvider),
-    mGeneralPage(0),mMeetingPage(0),mCurrentPage( 0 )
+    mGeneralPage(0),mMeetingPage(0),mCurrentPage( 0 ), mSettingManager(0)
 {
     this->setHeading(hbTrId("txt_cp_button_advanced_settings"));
     this->setDescription(hbTrId("txt_cp_info_select_tones_that_play_when_you_select"));
@@ -45,6 +49,7 @@
     delete mModel;
     delete mProfileModel;
     delete mFileIconProvider;
+    delete mSettingManager;
 }
 
 void CpProfileSettingForm::initModel()
@@ -62,24 +67,152 @@
         meetingString = hbTrId("txt_cp_list_meeting"); 
     }
     
+    mSettingManager = new XQSettingsManager();   
+    
+    XQCentralRepositorySettingsKey key(KCRUidProfileEngine.iUid,KProEngSilenceMode);
+    
+    QVariant silenceMode = mSettingManager->readItemValue(key,XQSettingsManager::TypeInt);
+
+    mSettingManager->startMonitoring(key,XQSettingsManager::TypeInt);
+    connect(mSettingManager, SIGNAL(valueChanged (XQSettingsKey, QVariant)),
+            this, SLOT(settingValueChanged(XQSettingsKey, QVariant)));
+    
     mGeneralPage = mModel->appendDataFormPage( generalString );
-    initGeneralTonesGroup();
+    initProfileItems(EProfileWrapperGeneralId,mGeneralPage);
+    
+    //initGeneralTonesGroup();
+    
     //initGeneralVibraGroup();
     
     mMeetingPage = mModel->appendDataFormPage( meetingString );
-    initMeetingTonesGroup();
+    initProfileItems(EProfileWrapperMeetingId,mMeetingPage);
+    //initMeetingTonesGroup();
     //initMeetingVibraGroup();
-
     setModel(mModel);
+    settingValueChanged(key,silenceMode);
 }
 
+void CpProfileSettingForm::initProfileItems(int profileId,HbDataFormModelItem *parent)
+{
+    CpProfileSettings profileSettings;
+    mProfileModel->profileSettings( profileId, profileSettings );
+    
+    QHash<int,HbDataFormModelItem*> modelItems;
+    
+    //ring tone item
+    QFileInfo ringToneFileInfo( profileSettings.mRingTone );
+    HbDataFormModelItem *modelItem = new CpPersonalizationEntryItemData( *mItemDataHelper,
+            hbTrId("txt_cp_dblist_ringtone"), ringToneFileInfo.fileName(), mFileIconProvider->icon( ringToneFileInfo ),
+            CpPersonalizationEntryItemData::TONE_Ring, profileId );
+    mModel->appendDataFormItem(modelItem, parent);
+    modelItems.insert(ProfileItemRingTone,modelItem);
+    
+    //message tone item
+    QFileInfo messageToneFileInfo( profileSettings.mMessageTone );
+    modelItem = new CpPersonalizationEntryItemData( *mItemDataHelper,
+            hbTrId("txt_cp_dblist_message_tone"), messageToneFileInfo.fileName(), mFileIconProvider->icon( messageToneFileInfo ),
+            CpPersonalizationEntryItemData::TONE_Message,
+            profileId );
+    mModel->appendDataFormItem(modelItem , parent);
+    modelItems.insert(ProfileItemMessageTone,modelItem);
+    
+    //email tone item
+    QFileInfo emailToneFileInfo( profileSettings.mEmailTone );
+    modelItem = new CpPersonalizationEntryItemData( *mItemDataHelper,
+            hbTrId("txt_cp_dblist_email_tone"),  emailToneFileInfo.fileName(), mFileIconProvider->icon( emailToneFileInfo ),
+            CpPersonalizationEntryItemData::TONE_Email,
+            profileId );
+    mModel->appendDataFormItem(modelItem , parent);
+    modelItems.insert(ProfileItemEmailTone,modelItem);
+    
+    //reminder tone item
+    QFileInfo reminderToneFileInfo( profileSettings.mReminderTone );
+    modelItem = new CpPersonalizationEntryItemData( *mItemDataHelper,
+            hbTrId("txt_cp_dblist_reminder_tone"), reminderToneFileInfo.fileName(), mFileIconProvider->icon( reminderToneFileInfo ),
+            CpPersonalizationEntryItemData::TONE_Reminder,
+            profileId );
+    mModel->appendDataFormItem(modelItem , parent);
+    modelItems.insert(ProfileItemReminderTone,modelItem);
+    
+    //notification tones item
+    modelItem= mModel->appendDataFormItem(HbDataFormModelItem::CheckBoxItem,QString(),parent);
+    modelItem->setContentWidgetData("text", hbTrId("txt_cp_list_notification_tones"));
+    modelItem->setContentWidgetData( "checkState", profileSettings.mNotificationTone ? 2 : 0 );
+    if (profileId == EProfileWrapperGeneralId) {
+        addConnection( modelItem, SIGNAL( stateChanged( int )), this, SLOT( on_general_notificationTones_stateChanged( int )));
+    }
+    else if (profileId == EProfileWrapperMeetingId) {
+        addConnection( modelItem, SIGNAL( stateChanged( int )), this, SLOT( on_meeting_notificationTones_stateChanged( int )));
+    }
+    modelItems.insert(ProfileItemNotificationTones,modelItem);
+    
+    
+    //Key and Touch Screen Tones item
+    modelItem = 
+            mModel->appendDataFormItem(HbDataFormModelItem::SliderItem ,QString(hbTrId("txt_cp_setlabel_key_and_touchscreen_tones")),parent);
+    
+    QList<QVariant> sliderElements;
+    sliderElements << QVariant(HbSlider::IncreaseElement) << QVariant(HbSlider::TrackElement)
+            << QVariant(HbSlider::DecreaseElement) << QVariant(HbSlider::IconElement)
+            << QVariant(HbSlider::TextElement);
+    modelItem->setContentWidgetData("sliderElements",sliderElements);
+    
+    
+    
+    //TODO: profileModel need provide Max and Min value( 0-5 ), current max value from profileModel is 3
+    modelItem->setContentWidgetData( QString( "minimum" ), 0 );
+    modelItem->setContentWidgetData( QString( "maximum" ), 5 );
+    modelItem->setContentWidgetData( QString("value"), profileSettings.mKeyTouchScreenTone );
+    QMap< QString, QVariant > elements;
+    elements.insert(QString("IncreaseElement") , QVariant(":/icon/hb_vol_slider_increment.svg"));
+    elements.insert(QString("DecreaseElement"), QVariant(":/icon/hb_vol_slider_decrement.svg") );
+    if (profileSettings.mKeyTouchScreenTone != 0) {
+        elements.insert(QString("IconElement"), QVariant(":/icon/hb_vol_slider_unmuted.svg") );
+    }
+    else {
+        elements.insert(QString("IconElement"), QVariant(":/icon/hb_vol_slider_muted.svg") );
+    }
+    
+    modelItem->setContentWidgetData( QString( "elementIcons" ), elements );
+    
+    if (profileId == EProfileWrapperGeneralId) {
+        addConnection( modelItem, SIGNAL( valueChanged( int )), this, SLOT( on_general_keysAndScreenToneSlider_ValueChanged( int )));
+    }
+    else if (profileId == EProfileWrapperMeetingId) {
+        addConnection( modelItem, SIGNAL( valueChanged( int )), this, SLOT( on_meeting_keysAndScreenToneSlider_ValueChanged( int )));
+    }
+  
+    modelItems.insert(ProfileItemKeyandTouchScreenTones,modelItem);
+    
+    
+    //Touch Screen Vibra item
+    modelItem = mModel->appendDataFormItem( HbDataFormModelItem::SliderItem, QString( hbTrId( "txt_cp_setlabel_touch_screen_vibra" ) ), parent );
+     //TODO: profileModel need provide Max and Min value( 0-5 ), current max value from profileModel is 3
+    modelItem->setContentWidgetData( QString( "minimum" ), 0 );
+    modelItem->setContentWidgetData( QString( "maximum" ), 5 );
+    modelItem->setContentWidgetData( QString("value"), profileSettings.mKeyTouchScreenVibra );
+    
+    if (profileId == EProfileWrapperGeneralId) {
+        addConnection( modelItem, SIGNAL( valueChanged( int )), this, SLOT( on_general_screenVibra_ValueChanged( int )));
+    }
+    else if (profileId == EProfileWrapperMeetingId) {
+        addConnection( modelItem, SIGNAL( valueChanged( int )), this, SLOT( on_meeting_screenVibra_ValueChanged( int )));
+    }
+    
+    modelItems.insert(ProfileItemTouchScreenVibra,modelItem);
+    
+    mProfileModelItems.insert(profileId,modelItems);
+    
+}
+
+/*
 void CpProfileSettingForm::initGeneralTonesGroup()
 {
     CpProfileSettings profileSettings;
     mProfileModel->profileSettings( EProfileWrapperGeneralId, profileSettings );
     
-    /*HbDataFormModelItem *tonesGroup = mModel->appendDataFormGroup(
-        hbTrId("txt_cp_subhead_tones"),mGeneralPage);*/
+    //HbDataFormModelItem *tonesGroup = mModel->appendDataFormGroup(
+     //   hbTrId("txt_cp_subhead_tones"),mGeneralPage);
     QFileInfo ringToneFileInfo( profileSettings.mRingTone );
     mModel->appendDataFormItem( new CpPersonalizationEntryItemData( *mItemDataHelper,
         hbTrId("txt_cp_dblist_ringtone"), ringToneFileInfo.fileName(), mFileIconProvider->icon( ringToneFileInfo ) ), mGeneralPage);
@@ -102,13 +235,13 @@
     
     mGeneralKeysAndScreenToneSlider = 
             mModel->appendDataFormItem(HbDataFormModelItem::SliderItem ,QString(hbTrId("txt_cp_setlabel_key_and_touchscreen_tones")),mGeneralPage);
-    /*
-    QMap< QString, QVariant > elements;
-    elements.insert(QString("IncreaseElement") , QVariant(":/icon/hb_vol_slider_increment.svg"));
-    elements.insert(QString("DecreaseElement"), QVariant(":/icon/hb_vol_slider_decrement.svg") );
-    elements.insert(QString("IconElement"), QVariant(":/icon/hb_vol_slider_muted.svg") );
-    mGeneralKeysAndScreenToneSlider->setContentWidgetData( QString( "elementIcons" ), elements );
-     */
+    
+    //QMap< QString, QVariant > elements;
+    //elements.insert(QString("IncreaseElement") , QVariant(":/icon/hb_vol_slider_increment.svg"));
+    //elements.insert(QString("DecreaseElement"), QVariant(":/icon/hb_vol_slider_decrement.svg") );
+    //elements.insert(QString("IconElement"), QVariant(":/icon/hb_vol_slider_muted.svg") );
+    //mGeneralKeysAndScreenToneSlider->setContentWidgetData( QString( "elementIcons" ), elements );
+     
     //TODO: profileModel need provide Max and Min value( 0-5 ), current max value from profileModel is 3
     mGeneralKeysAndScreenToneSlider->setContentWidgetData( QString( "minimum" ), 0 );
     mGeneralKeysAndScreenToneSlider->setContentWidgetData( QString( "maximum" ), 5 );
@@ -125,6 +258,7 @@
     addConnection( mGeneralKeysAndScreenToneSlider, SIGNAL( valueChanged( int )), this, SLOT( on_general_keysAndScreenToneSlider_ValueChanged( int )));
     addConnection( mGeneralSreenVibra, SIGNAL( valueChanged( int )), this, SLOT( on_general_screenVibra_ValueChanged( int )));    
 }
+*/
 
 /*void CpProfileSettingForm::initGeneralVibraGroup()
 {
@@ -169,13 +303,13 @@
 }*/
 
 ////////////////////////////////////////////////////////////
-void CpProfileSettingForm::initMeetingTonesGroup()
+/*void CpProfileSettingForm::initMeetingTonesGroup()
 {
     CpProfileSettings profileSettings;
     mProfileModel->profileSettings( EProfileWrapperMeetingId, profileSettings );
     
-   /* HbDataFormModelItem *tonesGroup = mModel->appendDataFormGroup(
-        hbTrId("txt_cp_subhead_tones"),mMeetingPage);*/
+   //HbDataFormModelItem *tonesGroup = mModel->appendDataFormGroup(
+   //     hbTrId("txt_cp_subhead_tones"),mMeetingPage);
     QFileInfo ringToneFileInfo( profileSettings.mRingTone );
     mModel->appendDataFormItem( new CpPersonalizationEntryItemData( *mItemDataHelper,
         hbTrId("txt_cp_dblist_ringtone"), ringToneFileInfo.fileName(), mFileIconProvider->icon( ringToneFileInfo ) ), mMeetingPage);
@@ -198,13 +332,13 @@
     
     mMeetingKeysAndScreenToneSlider = 
             mModel->appendDataFormItem(HbDataFormModelItem::SliderItem ,QString(hbTrId("txt_cp_setlabel_key_and_touchscreen_tones")),mMeetingPage);
-    /*
-    QMap< QString, QVariant > elements;
-    elements.insert(QString("IncreaseElement") , QVariant(":/icon/hb_vol_slider_increment.svg"));
-    elements.insert(QString("DecreaseElement"), QVariant(":/icon/hb_vol_slider_decrement.svg") );
-    elements.insert(QString("IconElement"), QVariant(":/icon/hb_vol_slider_muted.svg") );
-    mMeetingkeysAndScreenSlider->setContentWidgetData( QString( "elementIcons" ), elements );
-    */
+    
+    //QMap< QString, QVariant > elements;
+    //elements.insert(QString("IncreaseElement") , QVariant(":/icon/hb_vol_slider_increment.svg"));
+    //elements.insert(QString("DecreaseElement"), QVariant(":/icon/hb_vol_slider_decrement.svg") );
+    //elements.insert(QString("IconElement"), QVariant(":/icon/hb_vol_slider_muted.svg") );
+    //mMeetingkeysAndScreenSlider->setContentWidgetData( QString( "elementIcons" ), elements );
+    
     //TODO: profileModel need provide Max and Min value( 0-5 ), current max value from profileModel is 3
     mMeetingKeysAndScreenToneSlider->setContentWidgetData( QString( "minimum" ), 0 );
     mMeetingKeysAndScreenToneSlider->setContentWidgetData( QString( "maximum" ), 5 );
@@ -220,7 +354,7 @@
     addConnection( mMeetingKeysAndScreenToneSlider, SIGNAL( valueChanged( int )), this, SLOT( on_meeting_keysAndScreenSlider_ValueChanged( int )));
     addConnection( mMeetingSreenVibra, SIGNAL( valueChanged( int )), this, SLOT( on_meeting_screenVibra_ValueChanged( int )));
 }
-
+*/
 /*void CpProfileSettingForm::initMeetingVibraGroup()
 {
     CpProfileSettings profileSettings;
@@ -273,7 +407,22 @@
 void CpProfileSettingForm::on_general_keysAndScreenToneSlider_ValueChanged( int value )
 {
     mProfileModel->setKeyTouchScreenTone( EProfileWrapperGeneralId, value );
-    mGeneralKeysAndScreenToneSlider->setContentWidgetData( QString("value"), value );
+    HbDataFormModelItem *modelItem = profileItem(EProfileWrapperGeneralId,ProfileItemKeyandTouchScreenTones);
+    if (modelItem) {
+        modelItem->setContentWidgetData( QString("value"), value );
+        QMap< QString, QVariant > elements;
+        if (value != 0) {      
+            elements.insert(QString("DecreaseElement"), QVariant(":/icon/hb_vol_slider_decrement.svg"));
+            elements.insert(QString("IncreaseElement"), QVariant(":/icon/hb_vol_slider_increment.svg"));
+            elements.insert(QString("IconElement"), QVariant(":/icon/hb_vol_slider_unmuted.svg") );            
+        }
+        else {
+            elements.insert(QString("DecreaseElement"), QVariant(":/icon/hb_vol_slider_decrement.svg"));
+            elements.insert(QString("IncreaseElement"), QVariant(":/icon/hb_vol_slider_increment.svg"));
+            elements.insert(QString("IconElement"), QVariant(":/icon/hb_vol_slider_muted.svg") );  
+        }
+        modelItem->setContentWidgetData( QString( "elementIcons" ), elements );            
+    }
 }
 
 
@@ -301,7 +450,11 @@
 void CpProfileSettingForm::on_general_screenVibra_ValueChanged( int value )
 {
     mProfileModel->setKeyTouchScreenVibra( EProfileWrapperGeneralId, value );
-    mGeneralSreenVibra->setContentWidgetData( QString("value"), value );
+    
+    HbDataFormModelItem *modelItem = profileItem(EProfileWrapperGeneralId,ProfileItemTouchScreenVibra);
+    if (modelItem) {
+        modelItem->setContentWidgetData( QString("value"), value );
+    }
 
 }
 
@@ -312,10 +465,26 @@
     mProfileModel->setNotificationTone( EProfileWrapperMeetingId, checkBoxStateToBool( state ) );
 }
 
-void CpProfileSettingForm::on_meeting_keysAndScreenSlider_ValueChanged( int value )
+void CpProfileSettingForm::on_meeting_keysAndScreenToneSlider_ValueChanged( int value )
 {
     mProfileModel->setKeyTouchScreenTone( EProfileWrapperMeetingId, value );
-    mMeetingKeysAndScreenToneSlider->setContentWidgetData( QString("value"), value );
+    
+    HbDataFormModelItem *modelItem = profileItem(EProfileWrapperMeetingId,ProfileItemKeyandTouchScreenTones);
+    if (modelItem) {
+        modelItem->setContentWidgetData( QString("value"), value );
+        QMap< QString, QVariant > elements;
+        if (value != 0) {
+            elements.insert(QString("DecreaseElement"), QVariant(":/icon/hb_vol_slider_decrement.svg"));
+            elements.insert(QString("IncreaseElement"), QVariant(":/icon/hb_vol_slider_increment.svg"));
+            elements.insert(QString("IconElement"), QVariant(":/icon/hb_vol_slider_unmuted.svg") );            
+        }
+        else {
+            elements.insert(QString("DecreaseElement"), QVariant(":/icon/hb_vol_slider_decrement.svg"));
+            elements.insert(QString("IncreaseElement"), QVariant(":/icon/hb_vol_slider_increment.svg"));
+            elements.insert(QString("IconElement"), QVariant(":/icon/hb_vol_slider_muted.svg") );  
+        }
+        modelItem->setContentWidgetData( QString( "elementIcons" ), elements );            
+    }
 }
 
 
@@ -343,7 +512,11 @@
 void CpProfileSettingForm::on_meeting_screenVibra_ValueChanged( int value )
 {
     mProfileModel->setKeyTouchScreenVibra( EProfileWrapperMeetingId, value );
-    mMeetingSreenVibra->setContentWidgetData( QString("value"), value );
+    
+    HbDataFormModelItem *modelItem = profileItem(EProfileWrapperMeetingId,ProfileItemTouchScreenVibra);
+    if (modelItem) {
+        modelItem->setContentWidgetData( QString("value"), value );
+    }
 }
 
 bool CpProfileSettingForm::checkBoxStateToBool( int state )
@@ -354,3 +527,37 @@
         return false;
     }
 }
+
+
+void CpProfileSettingForm::settingValueChanged(const XQSettingsKey &key, const QVariant &value)
+{
+    if (key.uid() == KCRUidProfileEngine.iUid && key.key() == KProEngSilenceMode && value.isValid()) {
+    
+		static const int silenceSensitiveModelItemIds[] = 
+		{       
+			CpProfileSettingForm::ProfileItemRingTone,
+			CpProfileSettingForm::ProfileItemMessageTone,
+			CpProfileSettingForm::ProfileItemEmailTone,
+			CpProfileSettingForm::ProfileItemReminderTone,
+			CpProfileSettingForm::ProfileItemNotificationTones,
+			CpProfileSettingForm::ProfileItemKeyandTouchScreenTones
+		};
+    
+        QHash< int,QHash<int,HbDataFormModelItem*>  >::const_iterator it (mProfileModelItems.begin());
+        for(; it != mProfileModelItems.end(); ++it ) {          
+            for (int i = 0; i < sizeof(silenceSensitiveModelItemIds)/sizeof(silenceSensitiveModelItemIds[0]);++i) {           
+                QHash<int,HbDataFormModelItem*>::const_iterator found = it.value().find(silenceSensitiveModelItemIds[i]);
+                if (found != it.value().end()) {
+                    found.value()->setEnabled(!value.toBool());
+                }
+            }   
+        }
+    }
+}
+
+HbDataFormModelItem *CpProfileSettingForm::profileItem(int profileId,int profileItemId)
+{
+    return mProfileModelItems.value(profileId).value(profileItemId);
+}
+
+//End of File
--- a/controlpanelui/src/cpplugins/personalizationplugin/src/cpprofilesettingform.h	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpplugins/personalizationplugin/src/cpprofilesettingform.h	Fri May 14 13:21:08 2010 +0800
@@ -19,17 +19,32 @@
 #define CPPROFILESETTINGFORM_H
 
 #include <hbdataform.h>
+#include <QHash>
 
 class HbDataFormModel;
 class HbDataFormModelItem;
 class CpItemDataHelper;
 class CpProfileModel;
 class QFileIconProvider;
+class XQSettingsManager;
+class XQSettingsKey;
+class QVariant;
 
 class CpProfileSettingForm : public HbDataForm
 {
     Q_OBJECT
 public:
+    
+    enum ProfileItemId {
+        ProfileItemRingTone,
+        ProfileItemMessageTone,
+        ProfileItemEmailTone,
+        ProfileItemReminderTone,
+        ProfileItemNotificationTones,
+        ProfileItemKeyandTouchScreenTones,
+        ProfileItemTouchScreenVibra
+    };
+    
     CpProfileSettingForm();
     virtual ~CpProfileSettingForm();
     
@@ -49,7 +64,7 @@
 
     //meeting tones
     void on_meeting_notificationTones_stateChanged(int state);
-    void on_meeting_keysAndScreenSlider_ValueChanged( int value );
+    void on_meeting_keysAndScreenToneSlider_ValueChanged( int value );
     
     //meeting vibar
     void on_meeting_ringVibar_stateChanged( int state );
@@ -58,6 +73,8 @@
     void on_meeting_reminderVibra_stateChanged( int state );
     void on_meeting_notificationVibra_stateChanged( int state );
     void on_meeting_screenVibra_ValueChanged( int value );
+    
+    void settingValueChanged(const XQSettingsKey &key, const QVariant &value);
 private:
     void initModel();
     void initGeneralTonesGroup();
@@ -69,6 +86,9 @@
  //   void initMessageToneGroup(HbDataFormModelItem *parent);
  //   void initAlertToneGroup(HbDataFormModelItem *parent);
  //   void initKeyAndScreenToneGroup(HbDataFormModelItem *parent);
+    
+    void initProfileItems(int profileId,HbDataFormModelItem *parent);
+    HbDataFormModelItem *profileItem(int profileId,int profileItemId);
 private:
     HbDataFormModel *mModel;
     CpItemDataHelper *mItemDataHelper;
@@ -80,10 +100,14 @@
     
     HbDataFormModelItem *mCurrentPage;
     
-    HbDataFormModelItem *mGeneralKeysAndScreenToneSlider;
-    HbDataFormModelItem *mGeneralSreenVibra;
-    HbDataFormModelItem *mMeetingKeysAndScreenToneSlider;
-    HbDataFormModelItem *mMeetingSreenVibra;
+  //  HbDataFormModelItem *mGeneralKeysAndScreenToneSlider;
+ //   HbDataFormModelItem *mGeneralSreenVibra;
+ //   HbDataFormModelItem *mMeetingKeysAndScreenToneSlider;
+  //  HbDataFormModelItem *mMeetingSreenVibra;
+    
+    XQSettingsManager *mSettingManager;
+    
+    QHash< int,QHash<int,HbDataFormModelItem*>  > mProfileModelItems;
 };
 
 
--- a/controlpanelui/src/cpplugins/pincodeplugin/pincodeplugin.pri	Mon May 03 12:32:06 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +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: cppincodeplugin source files
-#
-
-# Input
-HEADERS += src/*.h
-SOURCES += src/*.cpp
-
-INCLUDEPATH += ../../seccodeui/src
\ No newline at end of file
--- a/controlpanelui/src/cpplugins/pincodeplugin/pincodeplugin.pro	Mon May 03 12:32:06 2010 +0300
+++ /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: 
-#
-
-TEMPLATE = lib
-TARGET = cppincodeplugin
-
-CONFIG += hb plugin
-
-LIBS +=  -lseccodeui
-
-include ( ../cpplugincommon.pri )
-include ( pincodeplugin.pri )
-
-symbian { 
-    TARGET.UID3 = 0X20028731
-}
\ No newline at end of file
--- a/controlpanelui/src/cpplugins/pincodeplugin/src/cppincodeplugin.cpp	Mon May 03 12:32:06 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +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:  
- *
- */
-#include "cppincodeplugin.h"
-#include "cppincodepluginview.h"
-#include <cpsettingformentryitemdataimpl.h>
-
-CpPinCodePlugin::CpPinCodePlugin()
-{
-}
-
-CpPinCodePlugin::~CpPinCodePlugin()
-{
-}
-
-QList<CpSettingFormItemData*> CpPinCodePlugin::createSettingFormItemData(CpItemDataHelper &itemDataHelper) const
-{
-    return  QList<CpSettingFormItemData*>() << new CpSettingFormEntryItemDataImpl<CpPinCodePluginView>(
-			itemDataHelper,tr("PIN code"),QString());
-}
-
-Q_EXPORT_PLUGIN2(cppincodeplugin, CpPinCodePlugin);
--- a/controlpanelui/src/cpplugins/pincodeplugin/src/cppincodeplugin.h	Mon May 03 12:32:06 2010 +0300
+++ /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 CPPINCODEPLUGIN_H
-#define CPPINCODEPLUGIN_H
-
-#include <QObject>
-#include <cpplugininterface.h>
-
-class CpPinCodePlugin : public QObject, public CpPluginInterface
-{
-	Q_OBJECT
-    Q_INTERFACES(CpPluginInterface)
-public:
-    CpPinCodePlugin();
-    virtual ~CpPinCodePlugin();
-    virtual QList<CpSettingFormItemData*> createSettingFormItemData(CpItemDataHelper &itemDataHelper) const;
-};
-
-#endif //CPPINCODEPLUGIN_H
--- a/controlpanelui/src/cpplugins/pincodeplugin/src/cppincodepluginview.cpp	Mon May 03 12:32:06 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +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:  
- *
- */
-#include "cppincodepluginview.h"
-#include <hbdataform.h>
-#include <hbdataformmodel.h>
-#include <hbdataformmodelitem.h>
-#include <hblineedit.h>
-#include <seccodeeditdataformviewitem.h>
-#include <seccodesettings.h>
-
-CpPinCodePluginView::CpPinCodePluginView(QGraphicsItem *parent /*= 0*/)
-: CpBaseSettingView(0,parent), mSecCodeSettings(new SecCodeSettings())
-{
-	if (HbDataForm *form = settingForm()) {
-
-		QList<HbAbstractViewItem *> protoTypeList = form->itemPrototypes();
-		protoTypeList.append(new SecCodeEditDataFormViewItem());
-        form->setItemPrototypes(protoTypeList);
-		
-		form->setHeading(tr("PIN code"));
-
-		HbDataFormModel *formModel = new HbDataFormModel();
-
-		HbDataFormModelItem *pinCodeRequestItem = new HbDataFormModelItem(
-			HbDataFormModelItem::ToggleValueItem,tr("PIN code requests"));
-    
-		pinCodeRequestItem->setContentWidgetData("text",tr("On"));
-		pinCodeRequestItem->setContentWidgetData("additionalText",tr("Off"));
-
-		formModel->appendDataFormItem(pinCodeRequestItem);
-
-		HbDataFormModelItem *pinCodeItem = new HbDataFormModelItem(
-			static_cast<HbDataFormModelItem::DataItemType>(SecCodeEditDataFormViewItem::SecCodeEditItem),
-			tr("PIN code"));
-		pinCodeItem->setContentWidgetData("echoMode",HbLineEdit::Password);
-		pinCodeItem->setContentWidgetData("text","1111");
-		pinCodeItem->setContentWidgetData("readOnly",true);
-		form->addConnection(pinCodeItem,SIGNAL(clicked()),this,SLOT(onPinCodeClicked()));
-
-		formModel->appendDataFormItem(pinCodeItem);
-
-		HbDataFormModelItem *pin2CodeItem = new HbDataFormModelItem(
-			 static_cast<HbDataFormModelItem::DataItemType>(SecCodeEditDataFormViewItem::SecCodeEditItem),
-			 tr("PIN2 code"));
-		pin2CodeItem->setContentWidgetData("echoMode",HbLineEdit::Password);
-		pin2CodeItem->setContentWidgetData("text","1111");
-		pin2CodeItem->setContentWidgetData("readOnly",true);
-		form->addConnection(pin2CodeItem,SIGNAL(clicked()),this,SLOT(onPin2CodeClicked()));
-
-		formModel->appendDataFormItem(pin2CodeItem);
-
-		form->setModel(formModel);
-	}
-}
-
-CpPinCodePluginView::~CpPinCodePluginView()
-{
-	delete mSecCodeSettings;
-}
-
-void CpPinCodePluginView::onPinCodeClicked()
-{
-	mSecCodeSettings->changePinCode();
-}
-
-void CpPinCodePluginView::onPin2CodeClicked()
-{
-	mSecCodeSettings->changePin2Code();
-}
--- a/controlpanelui/src/cpplugins/pincodeplugin/src/cppincodepluginview.h	Mon May 03 12:32:06 2010 +0300
+++ /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:  
- *
- */
-#ifndef CPPINCODEPLUGINVIEW_H
-#define CPPINCODEPLUGINVIEW_H
-
-#include <cpbasesettingview.h>
-
-class SecCodeSettings;
-class CpPinCodePluginView : public CpBaseSettingView
-{
-    Q_OBJECT
-public:
-    explicit CpPinCodePluginView(QGraphicsItem *parent = 0);
-    virtual ~CpPinCodePluginView();
-private slots:
-	void onPinCodeClicked();
-	void onPin2CodeClicked();
-private:
-	SecCodeSettings *mSecCodeSettings;
-};
-
-#endif  //CPPINCODEPLUGINVIEW_H
--- a/controlpanelui/src/cpplugins/privacyplugin/data/cpprivacyplugin.cpcfg	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpplugins/privacyplugin/data/cpprivacyplugin.cpcfg	Fri May 14 13:21:08 2010 +0800
@@ -7,7 +7,7 @@
     <desc></desc>
   </plugin> 
   
-  <plugin displayname = "Advanced security" id = "0X2002E684"  dll = "cpplaceholdernoiconplugin.dll">
+  <plugin displayname = "Advanced security" id = "0X0"  dll = "TBD">
     <desc></desc>
   </plugin> 
   
--- a/controlpanelui/src/cpplugins/profileactivatorplugin/src/cpprofileactivatordialog.cpp	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpplugins/profileactivatorplugin/src/cpprofileactivatordialog.cpp	Fri May 14 13:21:08 2010 +0800
@@ -26,9 +26,7 @@
                                                     QGraphicsItem *parent):HbDialog(parent),
                                                      mProfileModel(profileModel),
                                                      mProfileList(0),
-                                                     mProfileActivator(profileActivator),
-                                                     mConfirmProfile(0),
-                                                     mCancelProfile(0)
+                                                     mProfileActivator(profileActivator)
 {
     mProfileIds << EProfileWrapperGeneralId
                 << EProfileWrapperMeetingId;
@@ -47,8 +45,8 @@
     connect(mCancelProfile, SIGNAL(triggered(bool)), this, SLOT(cancelProfileSelection()));
         
     
-    this->setPrimaryAction(mConfirmProfile);
-    this->setSecondaryAction(mCancelProfile);
+    this->addAction(mConfirmProfile);
+    this->addAction(mCancelProfile);
     
     this->setContentWidget(mProfileList);
     this->setModal(true);
@@ -58,8 +56,7 @@
 
 CpProfileActivatorDialog::~CpProfileActivatorDialog()
 {
-    delete mConfirmProfile;
-    delete mCancelProfile;
+    
 }
 void CpProfileActivatorDialog::confirmProfileSelection()
 {
--- a/controlpanelui/src/cpplugins/profileactivatorplugin/src/cpprofileactivatordialog.h	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpplugins/profileactivatorplugin/src/cpprofileactivatordialog.h	Fri May 14 13:21:08 2010 +0800
@@ -19,6 +19,7 @@
 
 #include <hbdialog.h>
 #include <cpprofilemodel.h>
+#include <QPointer>
 class HbRadioButtonList;
 class HbDataFormModelItem;
 class CpProfileActivatorEntryItem;
@@ -40,8 +41,8 @@
     CpProfileModel &mProfileModel;
     HbRadioButtonList *mProfileList;
     CpSettingFormItemData *mProfileActivator;
-    HbAction *mConfirmProfile;
-    HbAction *mCancelProfile;
+    QPointer<HbAction> mConfirmProfile;
+    QPointer<HbAction> mCancelProfile;
     QList<ProfileWrapperProfileId> mProfileIds;
 };
 #endif
--- a/controlpanelui/src/cpplugins/profileactivatorplugin/src/cpprofileactivatorentryitem.cpp	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpplugins/profileactivatorplugin/src/cpprofileactivatorentryitem.cpp	Fri May 14 13:21:08 2010 +0800
@@ -39,36 +39,11 @@
 }
 void CpProfileActivatorEntryItem::onLaunchView()
 {
-    QScopedPointer<CpProfileActivatorDialog> dialog
-        (new CpProfileActivatorDialog(this, *mProfileModel));
-    dialog->exec();
-//    //launch media fetcher
-//    if (!mReq)
-//    {
-//        mReq = mAppMgr.create("com.nokia.services.media.Music", "fetch(QString)", true);
-//
-//        if (!mReq)
-//        {
-//            return;
-//        }
-//        else
-//        {
-//            connect(mReq, SIGNAL(requestOk(const QVariant&)), SLOT(handleOk(const QVariant&)));
-//            connect(mReq, SIGNAL(requestError(int,const QString&)), SLOT(handleError(int,const QString&)));
-//        }
-//    }
-//
-//    // Set arguments for request (music fetcher application title)
-//    QList<QVariant> args;
-//    args << QVariant( text() );
-//    mReq->setArguments(args);
-//
-//    // Make the request
-//    if (!mReq->send())
-//    {
-//        //report error
-//        return;
-//    }
+    CpProfileActivatorDialog *dialog = 
+        new CpProfileActivatorDialog(this, *mProfileModel);
+    dialog->setAttribute(Qt::WA_DeleteOnClose);
+   // dialog->open(this, SLOT(ultimateDialogSlot(HbAction*)));
+    dialog->show();
     
 }
 /*void CpPersonalizationEntryItemData::handleOk(const QVariant &result)
--- a/controlpanelui/src/cpplugins/profileactivatorplugin/src/cpprofileactivatorentryitem.h	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpplugins/profileactivatorplugin/src/cpprofileactivatorentryitem.h	Fri May 14 13:21:08 2010 +0800
@@ -14,8 +14,8 @@
  * Description:
  *
  */
-#ifndef CPPERSONALIZATIONENTRYITEMDATA_H
-#define CPPERSONALIZATIONENTRYITEMDATA_H
+#ifndef CPPROFILEACTIVATORENTRYITEM_H
+#define CPPROFILEACTIVATORENTRYITEM_H
 
 #include <cpsettingformentryitemdata.h>
 
@@ -39,4 +39,4 @@
     CpProfileModel *mProfileModel;
 };
 
-#endif // CPPERSONALIZATIONENTRYITEMDATA_H
+#endif // CPPROFILEACTIVATORENTRYITEM_H
--- a/controlpanelui/src/cpplugins/ringtoneplugin/ringtoneplugin.pro	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpplugins/ringtoneplugin/ringtoneplugin.pro	Fri May 14 13:21:08 2010 +0800
@@ -16,17 +16,13 @@
 
 TEMPLATE = lib
 TARGET = cpringtoneplugin
-
-
 CONFIG += hb plugin
 
-LIBS +=  -lcpprofilewrapper
-LIBS += -lxqservice -lxqserviceutil
-
 include ( ../cpplugincommon.pri )
 include ( ringtoneplugin.pri )
 
 symbian { 
+    LIBS +=  -lcpprofilewrapper -lxqservice -lxqserviceutil -lcpringtoneview -lxqsettingsmanager
     TARGET.UID3 = 0X20028738
     TARGET.CAPABILITY = All -TCB 
     TARGET.EPOCALLOWDLLDATA = 1
--- a/controlpanelui/src/cpplugins/ringtoneplugin/src/cppersonalizationentryitemdata.cpp	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpplugins/ringtoneplugin/src/cppersonalizationentryitemdata.cpp	Fri May 14 13:21:08 2010 +0800
@@ -15,106 +15,183 @@
  *
  */
 #include "cppersonalizationentryitemdata.h"
-#include <xqaiwrequest.h>
 #include <cpitemdatahelper.h>
 #include <cpprofilemodel.h>
 #include <cplogger.h>
 #include <qdir.h>
+#include <xqsettingsmanager.h>
+#include <xqcentralrepositoryutils.h>
+#include <xqcentralrepositorysearchcriteria.h>
+#include <ProfileEngineInternalCRKeys.h>
 
+#include "cpringtoneview.h"
+
+
+const QString g_strNoTone("Z:\\resource\\No_Sound.wav");
 CpPersonalizationEntryItemData::CpPersonalizationEntryItemData(CpItemDataHelper &itemDataHelper,
                 const QString &text,
                 const QString &description,
                 const HbIcon &icon,
+                Profile_Tone_Types toneType,
+                int profileId,
                 const HbDataFormModelItem *parent)
-                :CpSettingFormEntryItemData(itemDataHelper,text,description,
-                                            icon,parent),mReq(0),mProfileModel(0)
+                :CpSettingFormEntryItemData( itemDataHelper,text,description,icon,parent),
+                mProfileModel(0),
+                m_profileID(profileId),
+                mToneType(toneType),
+                mSettingManager(0)
 {
+    Q_UNUSED(itemDataHelper);   //reserve for future
     CPFW_LOG("CpPersonalizationEntryItemData::CpPersonalizationEntryItemData(), START");
     mProfileModel = new CpProfileModel();
-    if(mProfileModel)
+    if( mProfileModel )
     {
-        setDescription( mProfileModel->ringTone().section(QDir::separator (),-1) );
+        QString strRing = loadStringValue();
+        if( strRing.contains( "No_Sound.wav", Qt::CaseInsensitive) )
+        {
+            setDescription( hbTrId("txt_cp_list_no_tone" ) );   //sepcial handling about NoTone
+        }
+        else
+        {
+            setDescription( strRing.section(QDir::separator (),-1) );
+        }
     }
     else
     {
         CPFW_LOG("CpPersonalizationEntryItemData::mProfileModel:NULL!");
     }
+    mSettingManager = new XQSettingsManager();
+    XQCentralRepositorySettingsKey key(KCRUidProfileEngine.iUid,KProEngSilenceMode);
+
+    QVariant silenceMode = mSettingManager->readItemValue( key,XQSettingsManager::TypeInt );
+    setEnabled( !silenceMode.toInt() );
+    mSettingManager->startMonitoring( key,XQSettingsManager::TypeInt );
+    connect(mSettingManager, SIGNAL(valueChanged (XQSettingsKey, QVariant)),
+            this, SLOT(settingValueChanged(XQSettingsKey, QVariant)));
+
 }
+void CpPersonalizationEntryItemData::settingValueChanged( const XQSettingsKey& key, const QVariant& value )
+{
+    Q_UNUSED(key);
+    setEnabled( !value.toInt() );
+}
+
 CpPersonalizationEntryItemData::~CpPersonalizationEntryItemData()
 {
     if( mProfileModel )
     {
         delete mProfileModel;
-        mProfileModel = NULL;
+        mProfileModel = 0;
+    }
+    if( mSettingManager )
+    {
+        delete mSettingManager;
     }
 }
-void CpPersonalizationEntryItemData::onLaunchView()
+
+QString CpPersonalizationEntryItemData::loadStringValue() const
 {
-    CPFW_LOG("CpPersonalizationEntryItemData::onLaunchView, START");
-
-    //launch media fetcher
-    if (!mReq)
+    QString strRing;
+    switch( mToneType )
     {
-        mReq = mAppMgr.create("com.nokia.services.media.Music", "fetch(QString)", true);
-
-        if (!mReq)
+    case TONE_Message:
+        if( m_profileID>=0 )
+        {
+            strRing = mProfileModel->messageTone( m_profileID );
+        }
+        break;
+    case TONE_Email:
+        if( m_profileID >=0 )
         {
-          CPFW_LOG("CpPersonalizationEntryItemData::onLaunchView, Mediafetcher start failed");
-          return;
+            strRing = mProfileModel->emailTone( m_profileID );
+        }
+        break;
+    case TONE_Reminder:
+        if( m_profileID >=0 )
+        {
+            strRing = mProfileModel->reminderTone( m_profileID );
+        }
+        break;
+    case TONE_Ring:
+    default:
+        if( m_profileID <0 )
+        {
+            strRing = mProfileModel->ringTone();
         }
         else
         {
-            connect(mReq, SIGNAL(requestOk(const QVariant&)), SLOT(handleOk(const QVariant&)));
-            connect(mReq, SIGNAL(requestError(int,const QString&)), SLOT(handleError(int,const QString&)));
+            strRing = mProfileModel->ringTone( m_profileID );
         }
+        break;
     }
 
-    // Set arguments for request (music fetcher application title)
-    QList<QVariant> args;
-    args << QVariant( text() );
-    mReq->setArguments(args);
-
-    // Make the request
-    if (!mReq->send())
+    return strRing;
+}
+void CpPersonalizationEntryItemData::storeStringValue( const QString &strValue ) const
+{
+    QString strInput = strValue;
+    if( strInput.length() == 0 )
+    {
+        strInput = g_strNoTone;
+    }
+    switch( mToneType )
     {
-        CPFW_LOG("CpPersonalizationEntryItemData::onLaunchView, Mediafetcher calling failed");
-        //report error
-        return;
+    case TONE_Message:
+        if( m_profileID >=0 )
+        {
+            mProfileModel->setMessageTone( m_profileID, strInput );
+        }
+        break;
+    case TONE_Email:
+        if( m_profileID >=0 )
+        {
+            mProfileModel->setEmailTone( m_profileID, strInput );
+        }
+        break;
+    case TONE_Reminder:
+        if( m_profileID >=0 )
+        {
+            mProfileModel->setReminderTone( m_profileID, strInput );
+        }
+        break;
+    case TONE_Ring:
+    default:
+        if( m_profileID <0 )
+        {
+            mProfileModel->setRingTone( strInput );
+        }
+        else
+        {
+            mProfileModel->setRingTone( m_profileID, strInput );
+        }
+        break;
     }
-    CPFW_LOG("CpPersonalizationEntryItemData::onLaunchView, successful END");
-
 }
-void CpPersonalizationEntryItemData::handleOk(const QVariant &result)
+
+void CpPersonalizationEntryItemData::handleOk(const QString &strFname)
 {
-    CPFW_LOG("CpPersonalizationEntryItemData::handleOk");
-    if (!result.canConvert<QString>())
+    if(strFname.length())
     {
-        setDescription( "Corrupt result" );
+        setDescription( strFname.section(QDir::separator (),-1) );
     }
     else
     {
-        QString strRet = result.value<QString>();
-        if(strRet.length())
-        {
-            setDescription( strRet.section(QDir::separator (),-1) );
-        }
-        else
-        {
-            setDescription( "No tone" );
-        }
-        mProfileModel->setRingTone( strRet );
+        setDescription( hbTrId("txt_cp_list_no_tone" ) );
     }
+    storeStringValue(strFname);
 }
+
+
 void CpPersonalizationEntryItemData::handleError(int errorCode, const QString& errorMessage)
 {
-    CPFW_LOG("CpPersonalizationEntryItemData::handleError");
-    //handling error return
     Q_UNUSED(errorCode);
     Q_UNUSED(errorMessage);
-    setDescription("Error media fetcher");
 }
 
 CpBaseSettingView *CpPersonalizationEntryItemData::createSettingView() const
 {
-    return NULL;
+    CpRingToneView *pView = new CpRingToneView( );
+    connect( pView, SIGNAL( selOK( const QString&)),SLOT(handleOk(const QString &)) );
+    connect( pView, SIGNAL( selError( int, const QString& ) ), SLOT( handleOk(const QString &)) );
+    return pView;
 }
--- a/controlpanelui/src/cpplugins/ringtoneplugin/src/cppersonalizationentryitemdata.h	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpplugins/ringtoneplugin/src/cppersonalizationentryitemdata.h	Fri May 14 13:21:08 2010 +0800
@@ -18,33 +18,44 @@
 #define CPPERSONALIZATIONENTRYITEMDATA_H
 
 #include <cpsettingformentryitemdata.h>
-#include <xqappmgr.h>
+#include <xqsettingskey.h>
 
 class CpProfileModel;
-class XQApplicationManager;
-class XQAiwRequest;
-
+class XQSettingsManager;
 
 class CpPersonalizationEntryItemData : public CpSettingFormEntryItemData
 {
-        Q_OBJECT
+    Q_OBJECT
 public:
-    explicit CpPersonalizationEntryItemData(CpItemDataHelper &itemDataHelper,
+        typedef enum
+        {
+            TONE_Ring = 0,
+            TONE_Message,
+            TONE_Email,
+            TONE_Reminder
+        }Profile_Tone_Types;
+
+        explicit CpPersonalizationEntryItemData(CpItemDataHelper &itemDataHelper,
                 const QString &text = QString(),
                 const QString &description = QString(),
                 const HbIcon &icon = HbIcon(),
+                Profile_Tone_Types toneType = TONE_Ring,
+                int profileId = -1,
                 const HbDataFormModelItem *parent = 0);
         virtual ~CpPersonalizationEntryItemData();
 private slots:
-        void onLaunchView();
-        void handleOk(const QVariant &result);
-        void handleError(int errorCode, const QString& errorMessage);
+        void handleOk(const QString &strFname);
+        void handleError( int errorCode, const QString& errorMessage );
+        void settingValueChanged( const XQSettingsKey& key, const QVariant& value );
 private:
         virtual CpBaseSettingView *createSettingView() const;
+        QString loadStringValue() const;
+        void storeStringValue( const QString &strvalue ) const;
 private:
-        XQApplicationManager mAppMgr;
-        XQAiwRequest* mReq;
         CpProfileModel *mProfileModel;
+        int m_profileID;
+        Profile_Tone_Types mToneType;
+        XQSettingsManager *mSettingManager;
 };
 
 #endif // CPPERSONALIZATIONENTRYITEMDATA_H
--- a/controlpanelui/src/cpplugins/volumeplugin/src/cpmastervolumeslider.cpp	Mon May 03 12:32:06 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,166 +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:  
- *
- */
-#include "cpmastervolumeslider.h"
-
-CpMasterVolumeSlider::CpMasterVolumeSlider(QGraphicsItem *parent /* =0 */)
-											:HbSlider(parent),
-											 mPreviousValue(0)		 
-{
-//	QList<HbSlider::SliderElement> elements;
-//    elements << HbSlider::IncreaseElement
-//			 << HbSlider::TrackElement
-//			 << HbSlider::DecreaseElement
-//			 << HbSlider::IconElement
-//			 << HbSlider::TextElement;
-//
-//    setElements( elements );
-//	setOrientation(Qt::Horizontal);
-//	setMaximum(10);
-//	setMinimum(1);
-//	
-//	setIcon(HbSlider::DecreaseElement, HbIcon(":/icon/hb_vol_slider_decrement.svg"));
-//	setIcon(HbSlider::IncreaseElement, HbIcon(":/icon/hb_vol_slider_increment.svg"));
-//	setIcon(HbSlider::IconElement, HbIcon(":/icon/hb_vol_slider_muted.svg"));
-//	
-//	setIconCheckable(true);
-//
-//	// set tick and beep label
-//	
-//#if 1
-////	setMajorTickInterval(1);
-////	setTickPosition(Hb::SliderTicksBothSides);
-////	QStringList labelList;
-////	labelList<< tr("")
-////			 << tr("Beep");
-//			 
-////	this->setMajorTickLabels(labelList);
-//#endif
-//	/*
-//	connect(this, SIGNAL(iconToggled(bool)), 
-//			this, SLOT(onMuteIconToggled(bool)));*/
-//	connect(this, SIGNAL(valueChanged(int)),
-//			this, SLOT(onValueChanged(int)));
-////	onValueChanged(value());
-}
-
-CpMasterVolumeSlider::~CpMasterVolumeSlider()
-{
-}
-
-/*bool CpMasterVolumeSlider::isBeepMode()
-{
-	if (value() == minimum()+1) {
-		return true;
-	}
-	else {
-		return false;
-	}
-}
-
-void CpMasterVolumeSlider::setBeepMode(bool isBeepMode)
-{
-	if (isBeepMode == true) {
-		setValue(minimum()+1);	
-	}
-	else {
-		setValue(mPreviousValue);
-	}
-}*/
-
-/*bool CpMasterVolumeSlider::isSilentMode()
-{
-	if (value() == minimum()) {
-		return true;
-	}
-	else {
-		return false;
-	}
-}
-
-void CpMasterVolumeSlider::setSilentMode(bool isSilentMode)
-{
-	if (isSilentMode == true) {
-		setValue(minimum());	
-	}
-	else {
-		setValue(mPreviousValue);
-	}
-}
-
-int CpMasterVolumeSlider::normalValue()
-{
-	return (value()-1);
-}
-
-void CpMasterVolumeSlider::setNormalValue(int normalValue)
-{
-	setValue(normalValue+1);
-}
-*/	
-void CpMasterVolumeSlider::onValueChanged(int value)
-{
-//	if (this->minimum( ) == value) { 
-//        // volume is mute
-//        this->setIconChecked( true );
-//		emit silentActivated();
-//    } 
-//	else {
-//        // unmute volume
-//		this->setIconEnabled( true );
-//		//this->setIconCheckable(false);
-//    //this->setIconChecked( false );
-//    this->setIcon(HbSlider::IconElement, HbIcon(":/icon/hb_vol_slider_unmuted.svg"));
-//		this->setIconCheckable(true);
-//		
-//		
-//		/*if (value == 1) {
-//			emit beepActivated(); 
-//		}*/
-//		//else {
-//		int valueMap = value;
-//		emit normalValueChanged(valueMap);
-//		//}
-//    }
-}
-
-/*void CpMasterVolumeSlider::onIncreaseIconClicked()
-{
-}
-
-void CpMasterVolumeSlider::onDecreaseIconClicked()
-{
-}*/
-
-void CpMasterVolumeSlider::onMuteIconToggled(bool isToggled)
-{
-//	if (isToggled) {
-//		mPreviousValue = value();
-//		this->setIcon(HbSlider::IconElement, HbIcon(":/icon/hb_vol_slider_muted.svg"));
-//		setValue(minimum());
-//	}
-//	else {
-//		this->setIcon(HbSlider::IconElement, HbIcon(":/icon/hb_vol_slider_unmuted.svg"));
-//		if (mPreviousValue == minimum()||mPreviousValue == minimum()+1) {
-//			setValue(minimum()+1);
-//		}
-//		else {
-//			setValue(mPreviousValue);
-//		}
-//		mPreviousValue = 0;
-//	}
-}
-
--- a/controlpanelui/src/cpplugins/volumeplugin/src/cpmastervolumeslider.h	Mon May 03 12:32:06 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +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_MASTERVOLUMESLIDER_H
-#define CP_MASTERVOLUMESLIDER_H
-
-#include <hbslider.h>
-#include <hbmessagebox.h>
-class CpMasterVolumeSlider: public HbSlider
-{
-	Q_OBJECT
-	//Q_PROPERTY(bool beepMode READ isBeepMode WRITE setBeepMode)
-	//Q_PROPERTY(bool silentMode READ isSilentMode WRITE setSilentMode)
-	//Q_PROPERTY(int normalValue READ normalValue WRITE setNormalValue)
-	
-public:
-	explicit CpMasterVolumeSlider(QGraphicsItem *parent = 0);
-	~CpMasterVolumeSlider();
-	
-public:
-	//bool isBeepMode();
-	//void setBeepMode(bool isBeepMode);
-	//bool isSilentMode();
-	//void setSilentMode(bool isSilentMode);
-	//int normalValue();
-	//void setNormalValue(int normalValue);
-	
-signals:
-	//void beepActivated();
-	void silentActivated();
-	void normalValueChanged(int value);
-private slots:
-	void onValueChanged(int value);
-	//void onIncreaseIconClicked();
-	//void onDecreaseIconClicked();
-	void onMuteIconToggled(bool isToggled);
-private:
-	int mPreviousValue;
-};
-
-#endif
-
--- a/controlpanelui/src/cpplugins/volumeplugin/src/cppersonalizationcustomviewitem.cpp	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpplugins/volumeplugin/src/cppersonalizationcustomviewitem.cpp	Fri May 14 13:21:08 2010 +0800
@@ -16,7 +16,6 @@
  */
 
 #include "cppersonalizationcustomviewitem.h"
-#include "cpmastervolumeslider.h"
 #include <hbdataformmodelitem.h>
 #include <hbdataformmodel.h>
 #include <hbabstractitemview.h>
@@ -72,7 +71,7 @@
 
 void CpPersonalizationCustomViewItem::load()
 {
-	HbDataFormViewItem::load();
+	//HbDataFormViewItem::load();
 	
     CpVolumeCustomItemType itemType = static_cast<CpVolumeCustomItemType>(
         modelIndex().data(HbDataFormModelItem::ItemTypeRole).toInt());
@@ -98,10 +97,38 @@
     }	
 }
 
+void CpPersonalizationCustomViewItem::restore()
+{
+    HbDataFormViewItem::restore();
+    
+    CpVolumeCustomItemType itemType = static_cast<CpVolumeCustomItemType>(
+        modelIndex().data(HbDataFormModelItem::ItemTypeRole).toInt());
+
+    if(itemType == SilenceIndicatorItem) {
+        
+        QModelIndex itemIndex = modelIndex();
+        HbDataFormModel *model = static_cast<HbDataFormModel*>(itemView()->model());;
+        HbDataFormModelItem *modelItem = static_cast<HbDataFormModelItem*>(
+            model->itemFromIndex(itemIndex));
+        
+       
+        if (mWidget != 0) {
+            const QMetaObject *metaObj = 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(mWidget,modelItem->contentWidgetData(metaProperty.name()));
+                }
+            }
+        }
+    }   
+}
+
 
 void CpPersonalizationCustomViewItem::store()
 {
-	HbDataFormViewItem::store();
+	//HbDataFormViewItem::store();
 
     CpVolumeCustomItemType itemType = static_cast<CpVolumeCustomItemType>(
         modelIndex().data(HbDataFormModelItem::ItemTypeRole).toInt());
--- a/controlpanelui/src/cpplugins/volumeplugin/src/cppersonalizationcustomviewitem.h	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpplugins/volumeplugin/src/cppersonalizationcustomviewitem.h	Fri May 14 13:21:08 2010 +0800
@@ -39,6 +39,7 @@
 public slots:
 		virtual void load();
 		virtual void store();
+		virtual void restore();
 /*private slots:
 	void onValueChanged(int value);*/
 protected:
--- a/controlpanelui/src/cpplugins/volumeplugin/src/cpvolumecontroller.cpp	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpplugins/volumeplugin/src/cpvolumecontroller.cpp	Fri May 14 13:21:08 2010 +0800
@@ -27,21 +27,30 @@
 //#include <hbslider.h>
 //#include <hbpushbutton.h>
 
+#include <xqsettingsmanager.h>
+#include <ProfileEngineInternalCRKeys.h>
+#include <ProfileInternal.hrh>
+
 CpVolumeController::CpVolumeController(CpProfileModel *profileModel,
                                        const QList<HbDataFormModelItem *> &itemList,
-                                       CpItemDataHelper &itemDataHelper): 
-                                           mProfileModel(profileModel),
-                                           mItemList(itemList)
+                                       CpItemDataHelper &itemDataHelper) : 
+                                       mProfileModel(profileModel),
+                                       mItemList(itemList),
+                                       mSettingManager(0)
 															 
 {
 	//itemDataHelper.addConnection(mMasterVolumeItem,SIGNAL(beepActivated()),this,SLOT(onBeepActivated()));
 	//itemDataHelper.addConnection(mMasterVolumeItem,SIGNAL(silentActivated()),this,SLOT(onSilentActivated()));
 	//itemDataHelper.addConnection(mMasterVolumeItem,SIGNAL(normalValueChanged(int)),this,SLOT(onNormalValueChanged(int)));
 	//updateMasterVolumeValue();
+    
+    
     itemDataHelper.addConnection(
                 mItemList.at(CpVolumeGroupItemData::EVolumeSilenceItem), SIGNAL(toggled(bool)),
                 this, SLOT(silenceModeChange(bool))
             );
+    
+    
     itemDataHelper.addConnection(
                 mItemList.at(CpVolumeGroupItemData::EVolumeMasterVolumeItem), SIGNAL(valueChanged(int)),
                 this, SLOT(masterVolumeChange(int))
@@ -50,30 +59,38 @@
                 mItemList.at(CpVolumeGroupItemData::EVolumeMasterVibraItem), SIGNAL(stateChanged(int)),
                 this, SLOT(masterVibraChange(int))
             );
-    update();
+    updateUi();
+    
+    mSettingManager = new XQSettingsManager();
+    
+    XQCentralRepositorySettingsKey silenceKey(KCRUidProfileEngine.iUid,KProEngSilenceMode);
+    mSettingManager->startMonitoring(silenceKey,XQSettingsManager::TypeInt);
+   
+    XQCentralRepositorySettingsKey masterVolumeKey
+                                    (KCRUidProfileEngine.iUid,KProEngMasterVolume);
+    mSettingManager->startMonitoring(masterVolumeKey,XQSettingsManager::TypeInt);
+    
+    XQCentralRepositorySettingsKey masterVibraKey
+                                    (KCRUidProfileEngine.iUid,KProEngMasterVibra);
+    mSettingManager->startMonitoring(masterVibraKey,XQSettingsManager::TypeInt);
+    
+    connect(mSettingManager, SIGNAL(valueChanged (XQSettingsKey, QVariant)),
+            this, SLOT(settingValueChanged(XQSettingsKey, QVariant)));
 }
 
 CpVolumeController::~CpVolumeController()
 {
-
+    delete mSettingManager;
 }
 
-/*void CpMasterVolumeValueController::onBeepActivated()
-{
-#ifdef Q_OS_SYMBIAN
-	mProfileModel->activateBeep();
-#endif
-}*/
-
 void CpVolumeController::silenceModeChange(bool isSilence)
 {
 #ifdef Q_OS_SYMBIAN
 	mProfileModel->setSilenceMode(isSilence);
-	HbDataFormModelItem *masterVolume = mItemList.at(CpVolumeGroupItemData::EVolumeMasterVolumeItem);
-    masterVolume->setEnabled(!isSilence);
 #endif
 }
 
+
 void CpVolumeController::masterVolumeChange(int value)
 {
 #ifdef Q_OS_SYMBIAN
@@ -90,23 +107,28 @@
 #endif
 }
 
-void CpVolumeController::update()
+void CpVolumeController::updateUi()
 {
 #ifdef Q_OS_SYMBIAN
-	bool isSilenceMode = mProfileModel->isSilenceMode();
+	bool isSilenceMode = mProfileModel->silenceMode();
 	HbDataFormModelItem *silenceIndicator = mItemList.at(CpVolumeGroupItemData::EVolumeSilenceItem);
-	silenceIndicator->setContentWidgetData("checked",isSilenceMode);
+	if(silenceIndicator) {
+			silenceIndicator->setContentWidgetData("checked",isSilenceMode);		
+	}
 	HbDataFormModelItem *masterVolume = mItemList.at(CpVolumeGroupItemData::EVolumeMasterVolumeItem);
 	if (masterVolume) {
 	    CPFW_LOG("::updateMasterVolumeValue(), Start using profile model.");
 	    QMap<QString, QVariant> iconMaps;
 	    if (isSilenceMode) {
 	        CPFW_LOG("::updateMasterVolumeValue(), Got silent state.");
+	        iconMaps.insert(QString("DecreaseElement"), QVariant(":/icon/hb_vol_slider_decrement.svg"));
+	        iconMaps.insert(QString("IncreaseElement"), QVariant(":/icon/hb_vol_slider_increment.svg"));
 	        iconMaps.insert(QString("IconElement"), QVariant(":/icon/hb_vol_slider_muted.svg"));
 	    }
 	    else {
+            iconMaps.insert(QString("DecreaseElement"), QVariant(":/icon/hb_vol_slider_decrement.svg"));
+	        iconMaps.insert(QString("IncreaseElement"), QVariant(":/icon/hb_vol_slider_increment.svg"));
 	        iconMaps.insert(QString("IconElement"), QVariant(":/icon/hb_vol_slider_unmuted.svg"));
-	        CPFW_LOG("::updateMasterVolumeValue(), Got ring volume.");	        
 	    }
 	    masterVolume->setContentWidgetData("elementIcons", iconMaps);
 	    masterVolume->setEnabled(!isSilenceMode);
@@ -125,11 +147,13 @@
 {
     switch( volumeLevel ){
         case VolumenLevelSoft:
-            return 1;
+            return EProfileMasterVolumeSoft;
         case VolumeLevelMed:
-            return 5;
+            return EProfileMasterVolumeMed;
         case VolumeLevelLoud:
-            return 10;
+            return EProfileMasterVolumeLoud;
+        default:
+        		return 1;            	
     }
 }
 CpVolumeController::VolumeLevel CpVolumeController::intToVolumeLevel( int value )
@@ -142,3 +166,43 @@
         return VolumeLevelLoud;
     }
 }
+
+void CpVolumeController::settingValueChanged(const XQSettingsKey &key, const QVariant &value)
+{
+    if (key.uid() == KCRUidProfileEngine.iUid && key.key() == KProEngSilenceMode) {
+        HbDataFormModelItem *masterVolume = mItemList.at(CpVolumeGroupItemData::EVolumeMasterVolumeItem);
+        if (masterVolume) {
+        		QMap<QString, QVariant> iconMaps;
+        		if (value.toBool()) {
+                    iconMaps.insert(QString("DecreaseElement"), QVariant(":/icon/hb_vol_slider_decrement.svg"));
+        		    iconMaps.insert(QString("IncreaseElement"), QVariant(":/icon/hb_vol_slider_increment.svg"));
+        			iconMaps.insert(QString("IconElement"), QVariant(":/icon/hb_vol_slider_muted.svg"));
+        		}
+        		else {
+                    iconMaps.insert(QString("DecreaseElement"), QVariant(":/icon/hb_vol_slider_decrement.svg"));
+        		    iconMaps.insert(QString("IncreaseElement"), QVariant(":/icon/hb_vol_slider_increment.svg"));
+        		    iconMaps.insert(QString("IconElement"), QVariant(":/icon/hb_vol_slider_unmuted.svg"));
+        		}
+        		masterVolume->setContentWidgetData("elementIcons", iconMaps);
+            masterVolume->setEnabled(!value.toBool());
+        }
+        HbDataFormModelItem *silenceMode = mItemList.at(CpVolumeGroupItemData::EVolumeSilenceItem);
+        if (silenceMode) {
+            silenceMode->setContentWidgetData("checked",value.toInt() != 0);
+        }
+    }
+    else if (key.uid() == KCRUidProfileEngine.iUid && key.key() == KProEngMasterVolume) {
+        HbDataFormModelItem *masterVolume = mItemList.at(CpVolumeGroupItemData::EVolumeMasterVolumeItem);
+        if (masterVolume) {
+            masterVolume->setContentWidgetData("value",intToVolumeLevel(value.toInt()));
+        }
+    }
+    else if (key.uid() == KCRUidProfileEngine.iUid && key.key() == KProEngMasterVibra) {
+        HbDataFormModelItem *masterVibra = mItemList.at(CpVolumeGroupItemData::EVolumeMasterVibraItem);
+        if (masterVibra) {
+            masterVibra->setContentWidgetData("checkState",(value.toInt() ? 2 : 0));
+        }
+    }
+}
+
+//End of File
--- a/controlpanelui/src/cpplugins/volumeplugin/src/cpvolumecontroller.h	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpplugins/volumeplugin/src/cpvolumecontroller.h	Fri May 14 13:21:08 2010 +0800
@@ -22,6 +22,9 @@
 class CpProfileModel;
 class HbDataFormModelItem;
 class CpItemDataHelper;
+class XQSettingsManager;
+class XQSettingsKey;
+class QVariant;
 
 class CpVolumeController : public QObject
 {
@@ -41,14 +44,18 @@
     void silenceModeChange(bool isSilence);
     void masterVolumeChange(int value);
     void masterVibraChange(int state);
+    
+    void settingValueChanged(const XQSettingsKey &key, const QVariant &value);
+    
 private:
-	void update();
+	void updateUi();
 	int volumeLevelToInt( CpVolumeController::VolumeLevel volumeLevel );
 	CpVolumeController::VolumeLevel intToVolumeLevel( int value );
 	
 private:
 	CpProfileModel *mProfileModel;
 	QList<HbDataFormModelItem *> mItemList;
+	XQSettingsManager *mSettingManager;
 };
 
 #endif
--- a/controlpanelui/src/cpplugins/volumeplugin/src/cpvolumegroupitemdata.cpp	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpplugins/volumeplugin/src/cpvolumegroupitemdata.cpp	Fri May 14 13:21:08 2010 +0800
@@ -40,6 +40,7 @@
 CpVolumeGroupItemData::~CpVolumeGroupItemData()
 {
     delete mProfileModel;
+    delete mVolumeController;
 }
 
 void CpVolumeGroupItemData::initItems(CpItemDataHelper &itemDataHelper)
@@ -73,13 +74,15 @@
     masterVolume->setContentWidgetData("minimum", 1);
     masterVolume->setContentWidgetData("maximum", 3);
     masterVolume->setContentWidgetData("majorTickInterval",1);
-    
+    masterVolume->setContentWidgetData("tickPosition",Hb::SliderTicksBelow);
+
     QStringList tickLabels;
-    tickLabels<<hbTrId("Soft")
-              <<hbTrId("Med")
-              <<hbTrId("Loud");
+    tickLabels<<hbTrId("txt_cp_setlabel_volume_val_soft")
+              <<hbTrId("txt_cp_setlabel_volume_val_med")
+              <<hbTrId("txt_cp_setlabel_volume_val_loud");
     masterVolume->setContentWidgetData("majorTickLabels",tickLabels);
     
+    masterVolume->setContentWidgetData("iconCheckable",false);
     this->appendChild(masterVolume);
     
     HbDataFormModelItem *masterVibra = new HbDataFormModelItem(HbDataFormModelItem::CheckBoxItem);
@@ -90,36 +93,3 @@
     
     mVolumeController = new CpVolumeController(mProfileModel, mItemList, itemDataHelper);
 }
-//void CpVolumeGroupItemData::activateProfile(int profileIndex)
-//{
-//    switch (profileIndex) {
-//    case 0: // general
-//    {
-//        mProfileModel->activateProfile(EProfileWrapperGeneralId);
-//        int volumeValue = mProfileModel->ringVolume();
-//        // update the master volume when profile changed
-//        // should be used profileChangedObserver in the future;
-//        mMasterVolume->setContentWidgetData(/*"visible"*/"enabled",true);
-//        mMasterVolume->setContentWidgetData("value", volumeValue);
-//        break;
-//    }
-//    case 1: // meeting
-//    {
-//        mProfileModel->activateProfile(EProfileWrapperMeetingId);
-//        int volumeValue = mProfileModel->ringVolume();
-//        mMasterVolume->setContentWidgetData(/*"visible"*/"enabled",true);
-//        mMasterVolume->setContentWidgetData("value", volumeValue);
-//        break;
-//    }
-//    case 2: // silent
-//    {
-//        mProfileModel->activateProfile(EProfileWrapperSilentId);
-//        mMasterVolume->setContentWidgetData("value", 0);
-//        mMasterVolume->setContentWidgetData(/*"visible"*/"enabled",false);
-//        break;
-//    }
-//    default:
-//        break;
-//        
-//    }
-//}
--- a/controlpanelui/src/cpplugins/volumeplugin/src/cpvolumegroupitemdata.h	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpplugins/volumeplugin/src/cpvolumegroupitemdata.h	Fri May 14 13:21:08 2010 +0800
@@ -15,8 +15,8 @@
  *
  */
 
-#ifndef CPPROFILESGROUPITEMDATA_H
-#define CPPROFILESGROUPITEMDATA_H
+#ifndef CPVOLUMEGROUPITEMDATA_H
+#define CPVOLUMEGROUPITEMDATA_H
 
 #include <cpsettingformitemdata.h>
 #include <cpprofilemodel.h>
--- a/controlpanelui/src/cpplugins/volumeplugin/volumeplugin.pro	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpplugins/volumeplugin/volumeplugin.pro	Fri May 14 13:21:08 2010 +0800
@@ -19,7 +19,7 @@
 
 CONFIG += hb plugin
 RESOURCES += volumeplugin.qrc
-LIBS += -lcpprofilewrapper
+LIBS += -lcpprofilewrapper -lxqsettingsmanager
 
 include ( ../cpplugincommon.pri )
 include ( volumeplugin.pri )
--- a/controlpanelui/src/cpprofilewrapper/src/cpprofilemodel.cpp	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpprofilewrapper/src/cpprofilemodel.cpp	Fri May 14 13:21:08 2010 +0800
@@ -63,7 +63,7 @@
 /*
  * Get active profile's id
  */
-int CpProfileModel::activeProfileId()
+int CpProfileModel::activeProfileId() const
 {
     return d_ptr->activeProfileId();
 }
@@ -71,9 +71,9 @@
 /*!
      Get profile settings, store in center repository keys 
  */
-int CpProfileModel::profileSettings(int profileId, CpProfileSettings& profileSettings)
+void CpProfileModel::profileSettings(int profileId, CpProfileSettings& profileSettings)
 {
-    return d_ptr->profileSettings(profileId, profileSettings);
+    d_ptr->profileSettings(profileId, profileSettings);
 }
 
 /*!
@@ -139,9 +139,9 @@
      Return the silence mode of device, silence mode will kill all outgoing 
      audio.
  */
-bool CpProfileModel::isSilenceMode() const
+bool CpProfileModel::silenceMode() const
 {
-    return d_ptr->isSilenceMode();
+    return d_ptr->silenceMode();
 }
 
 /*!
@@ -155,9 +155,9 @@
 /*!
      Return the status of off line mode (air plane mode) of device
  */
-bool CpProfileModel::isOffLineMode() const
+bool CpProfileModel::offLineMode() const
 {
-    return d_ptr->isOffLineMode();
+    return d_ptr->offLineMode();
 }
 
 /*!
--- a/controlpanelui/src/cpprofilewrapper/src/cpprofilemodel_p.cpp	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpprofilewrapper/src/cpprofilemodel_p.cpp	Fri May 14 13:21:08 2010 +0800
@@ -20,6 +20,7 @@
 #include <cplogger.h>
 #include <e32base.h>
 #include <QString>
+#include <QMap>
 #include <MProfileEngineExtended2.h>
 #include <MProfileExtended.h>
 #include <MProfileName.h>
@@ -32,14 +33,14 @@
 #include <MProfileFeedbackSettings.h>
 #include <MProfileSetFeedbackSettings.h>
 #include <MProfilesNamesArray.h>
-#include <SettingsInternalCRKeys.h>
+#include <settingsinternalcrkeys.h>
 #include <hbglobal.h>
 #include <QtCore/QStringList>
 #include <MProfileExtended2.h>
 #include <MProfileSetExtraTones2.h>
 #include <MProfileExtraTones2.h>
 #include <MProfileVibraSettings.h>
-#include <MPRofileSetVibraSettings.h>
+#include <MProfileSetVibraSettings.h>
 #include <TProfileToneSettings.h>
 #include <hwrmvibrasdkcrkeys.h>
 #include <centralrepository.h>
@@ -58,13 +59,7 @@
 
 CpProfileModelPrivate::CpProfileModelPrivate()
     : mEngine(0),
-      //mProfileExt(0),
-      //mToneSettings(0),
-      //mFeedbackSettings(0),
-      //mSetFeedbackSettings(0),
-      //mVibraCenRep(0),
-      mEditingProfileId(0),
-      mInitErrFlag(false),
+      mInitErrFlag(0),
       mOffLineCenRep(0),
       q_ptr(0)
 {
@@ -77,52 +72,43 @@
     CPFW_LOG("CpProfileModelPrivate::CpProfileModelPrivate(), START.");
     TRAPD( err,
             mEngine = CreateProfileEngineExtended2L();
-            //int proId = mEngine->ActiveProfileId();
-            //UpdateProfileSettingsL( proId );
-            //mVibraCenRep = CRepository::NewL( KCRUidVibraCtrl );
             mOffLineCenRep = CRepository::NewL( KCRUidCommunicationSettings );
+            
+            /*
+             * Currently, engine part will return all previous version of profile
+             * so some invalid profile will be added in the new list, to avoid this 
+             * use hard code to get the right list of profile. 
+             */
+            /*MProfilesNamesArray* nameList = mEngine->ProfilesNamesArrayLC();
+            int profileCount = nameList->MdcaCount();
+            for (int i = 0; i<profileCount; i++) {
+                MProfileName *profileName = nameList->ProfileName(i);
+                mProfileList.insert(profileName->Id(), mEngine->Profile2L(profileName->Id())); 
+            }
+            CleanupStack::PopAndDestroy(*nameList);*/
+            mProfileList.insert(0, mEngine->Profile2L(0)); // general id 
+            mProfileList.insert(2, mEngine->Profile2L(2));
     );
+    
+    // currently, reserve a error code for deal with low memory ... leave
+    // as known, qt in symbian exception safety's development is ongoing. 
+    // we will follow the official way to deal with symbian leave or exception
     mInitErrFlag = err;
     CPFW_LOG("CpProfileModelPrivate::CpProfileModelPrivate(), END, err is." + QString(err) );
 }    
-void CpProfileModelPrivate::UpdateProfileSettingsL(int profileId)
-{
-    CPFW_LOG("CpProfileModelPrivate::UpdateProfileSettingsL(), START. profile id is: " + QString(profileId));
-    /*if ( profileId <= EProfileWrapperErrorId || profileId >= EProfileWrapperOverflowId ){
-        CPFW_LOG("CpProfileModelPrivate::UpdateProfileSettingsL(), End with invalid profile id.");
-        //User::Leave(KErrNotFound);
-        return;
-    }
-*/
-/*    mProfileExt = mEngine->Profile2L( profileId ); 
-    CPFW_LOG("CpProfileModelPrivate::UpdateProfileSettingsL(), Succeded in getting mProfileExt. ");
-
-    // General tones
-    TProfileToneSettings& toneSettings = mProfileExt->ProfileSetTones().SetToneSettings();
-    mToneSettings = &toneSettings;
-
-    // Feedback settings, used to get screen tone
-    const MProfileFeedbackSettings& feedback = 
-                            mProfileExt->ProfileExtraSettings().ProfileFeedbackSettings();
-    mFeedbackSettings = &feedback;
-
-    // Feedback settings, used to set screen tone
-    MProfileSetFeedbackSettings& setFeedback = 
-                            mProfileExt->ProfileSetExtraSettings().ProfileSetFeedbackSettings();
-    mSetFeedbackSettings = &setFeedback;
-
-    mEditingProfileId = profileId;
-    CPFW_LOG("CpProfileModelPrivate::UpdateProfileSettingsL(), END.");*/
-}
 
 CpProfileModelPrivate::~CpProfileModelPrivate()
 {
-    //delete mEngine;
     if (mEngine!=0) {
         mEngine->Release();
     }
-    //delete mVibraCenRep;
-    //mVibraCenRep = 0;    
+    foreach(MProfileExtended2* profile, mProfileList)
+    {   
+        if (profile!=0 ) {
+        profile->Release();
+        }
+    }
+    mProfileList.clear();
     delete mOffLineCenRep;
 }
 
@@ -153,6 +139,7 @@
 //    }
     // should return qt localized profile name  
     // engine return symbian localized name, that is a wrong way to got it
+    // so hard code here, wait for engine's correcting.
     switch (profileId) {
     case EProfileWrapperGeneralId:
         return hbTrId("txt_cp_setlabel_active_profile_val_general");
@@ -190,23 +177,15 @@
 /*
  * Get active profile's id
  */
-int CpProfileModelPrivate::activeProfileId()
+int CpProfileModelPrivate::activeProfileId() const
 {
     return mEngine->ActiveProfileId();
 }
 
-int CpProfileModelPrivate::profileSettings(int profileId,
+void CpProfileModelPrivate::profileSettings(int profileId,
         CpProfileSettings& profileSettings)
 {
-    MProfileExtended2 *profileExtend = 0;
-    TRAPD(err,
-            profileExtend = mEngine->Profile2L(profileId);
-//            CleanupReleasePushL(*profileExtend);
-            )
-    if (err != KErrNone) {
-        return err;
-    } 
-    CleanupReleasePushL(*profileExtend);
+    MProfileExtended2 *profileExtend = mProfileList.value(profileId);
     const MProfileTones &setTones = profileExtend->ProfileTones();
     const TProfileToneSettings &toneSettings = setTones.ToneSettings();
     const MProfileExtraTones2 &extTones = profileExtend->ProfileExtraTones2();
@@ -216,8 +195,7 @@
             profileExtend->ProfileExtraSettings();
     const MProfileFeedbackSettings &feedbackSettings =
             extraSettings.ProfileFeedbackSettings();
-    
-    
+           
     profileSettings.mRingTone = stringFromDescriptor(setTones.RingingTone1());
     profileSettings.mMessageTone = stringFromDescriptor(setTones.MessageAlertTone());
     profileSettings.mEmailTone = stringFromDescriptor(extTones.EmailAlertTone());
@@ -231,105 +209,92 @@
     profileSettings.mReminderAlertVibra = vibraSettings.ReminderAlarmVibra();
     profileSettings.mNotificationVibra = vibraSettings.InformationVibra();
     profileSettings.mKeyTouchScreenVibra = feedbackSettings.TactileFeedback();
-    
-    CleanupStack::PopAndDestroy(profileExtend);
-    return err;    
+						
 }
 int CpProfileModelPrivate::setProfileSettings(int profileId, CpProfileSettings& profileSettings)
 {
-    MProfileExtended2 *profileExtend = 0;
-    TRAPD( err,
-            profileExtend = mEngine->Profile2L(profileId);
-            
-            )
-    if (err!=KErrNone) {
-        return err;
-    }
-    CleanupReleasePushL(*profileExtend);
+    MProfileExtended2 *profileExtend = mProfileList.value(profileId);
     MProfileSetTones &setTones = profileExtend->ProfileSetTones();
     TProfileToneSettings &toneSettings = setTones.SetToneSettings();
-    MProfileSetExtraTones2 &setExtTones = profileExtend->ProfileSetExtraTones2();
-    MProfileSetVibraSettings &setVibraSettings = profileExtend->ProfileSetVibraSettings();
-    MProfileSetExtraSettings &extraSettings = profileExtend->ProfileSetExtraSettings();
-    MProfileSetFeedbackSettings &setFeedbackSettings = extraSettings.ProfileSetFeedbackSettings();
-
+    MProfileSetExtraTones2 &setExtTones =
+            profileExtend->ProfileSetExtraTones2();
+    MProfileSetVibraSettings &setVibraSettings =
+            profileExtend->ProfileSetVibraSettings();
+    MProfileSetExtraSettings &extraSettings =
+            profileExtend->ProfileSetExtraSettings();
+    MProfileSetFeedbackSettings &setFeedbackSettings =
+            extraSettings.ProfileSetFeedbackSettings();
+    // ignore here, wait for the exception deal framework of qt-symbian
     TRAP_IGNORE(
-            setTones.SetRingingTone1L( *descriptorFromString(profileSettings.mRingTone) );
-            setTones.SetMessageAlertToneL( *descriptorFromString(profileSettings.mMessageTone) );
-            setExtTones.SetEmailAlertToneL( *descriptorFromString(profileSettings.mEmailTone) );
-            setExtTones.SetReminderToneL( *descriptorFromString(profileSettings.mReminderTone) );
+            setTones.SetRingingTone1L(*descriptorFromString(
+                    profileSettings.mRingTone));
+            setTones.SetMessageAlertToneL(*descriptorFromString(
+                    profileSettings.mMessageTone));
+            setExtTones.SetEmailAlertToneL(*descriptorFromString(
+                    profileSettings.mEmailTone));
+            setExtTones.SetReminderToneL(*descriptorFromString(
+                    profileSettings.mReminderTone));
             )
+    toneSettings.iWarningAndGameTones
+            = profileSettings.mNotificationTone;
+    toneSettings.iKeypadVolume
+            = static_cast<TProfileKeypadVolume> (profileSettings.mKeyTouchScreenTone);
+    setVibraSettings.SetRingAlertVibra(profileSettings.mRingAlertVibra);
+    setVibraSettings.SetMessageAlertVibra(profileSettings.mMessageVibra);
+    setVibraSettings.SetEmailAlertVibra(profileSettings.mEmailVibra);
+    setVibraSettings.SetReminderAlarmVibra(
+            profileSettings.mReminderAlertVibra);
+    setVibraSettings.SetInformationVibra(
+            profileSettings.mNotificationVibra);
+    setFeedbackSettings.SetTactileFeedback(
+            static_cast<TProfileTactileFeedback> (profileSettings.mKeyTouchScreenVibra));
 
-    toneSettings.iWarningAndGameTones = profileSettings.mNotificationTone;
-    toneSettings.iKeypadVolume = static_cast<TProfileKeypadVolume>(profileSettings.mKeyTouchScreenTone);
-    setVibraSettings.SetRingAlertVibra( profileSettings.mRingAlertVibra );
-    setVibraSettings.SetMessageAlertVibra ( profileSettings.mMessageVibra );
-    setVibraSettings.SetEmailAlertVibra ( profileSettings.mEmailVibra );
-    setVibraSettings.SetReminderAlarmVibra ( profileSettings.mReminderAlertVibra );
-    setVibraSettings.SetInformationVibra ( profileSettings.mNotificationVibra );
-    setFeedbackSettings.SetTactileFeedback(static_cast<TProfileTactileFeedback>(profileSettings.mKeyTouchScreenVibra));    
-
-    TRAPD(err2, 
-            mEngine->CommitChangeL(*profileExtend);
-            CleanupStack::PopAndDestroy(profileExtend);
-             )
-    return err2;
+    TRAPD(err,
+            mEngine->CommitChangeL(*profileExtend);                
+         )
+    return err;
 }
 
 QString CpProfileModelPrivate::ringTone() const
 {
-    MProfileExtended2 *profileExtend = 0;
-    
-    TRAPD(err,
-            profileExtend = mEngine->Profile2L(EProfileWrapperGeneralId);
-            //CleanupReleasePushL(*profileExtend);
-            )
-    if (err!=KErrNone) {
-        return QString("");
-    }
-    CleanupReleasePushL(*profileExtend);
-   
-    QString ringTone = stringFromDescriptor(profileExtend->ProfileTones().RingingTone1());
-    CleanupStack::PopAndDestroy(profileExtend);
+    MProfileExtended2 *profileExtend = mProfileList.value(EProfileWrapperGeneralId);
+    QString ringTone = stringFromDescriptor(
+    profileExtend->ProfileTones().RingingTone1());
     return ringTone;
-    CPFW_LOG("CpProfileModelPrivate::ringTone(), END with invalid mProfileExt. ");
-    
 }
 
 void CpProfileModelPrivate::setRingTone(const QString& filePath)
 {
-    TInt ids[] = {EProfileGeneralId,EProfileMeetingId};
-
-    for (TInt i = 0; i < sizeof(ids)/sizeof(ids[0]); ++i)
-    {
-    MProfileExtended2 *profileExtend = 0;
+    int ids[] = {EProfileWrapperGeneralId,EProfileWrapperMeetingId};
+    
+    for (TInt i = 0; i < sizeof(ids)/sizeof(ids[0]); ++i) {        
+        MProfileExtended2 *profileExtend = mProfileList.value(ids[i]);
+        
+        MProfileSetTones &setTones = profileExtend->ProfileSetTones();
         TRAP_IGNORE(
-                profileExtend = mEngine->Profile2L(ids[i]);
+                setTones.SetRingingTone1L( *descriptorFromString(filePath) );
+                mEngine ->CommitChangeL(*profileExtend);
                 )
-        CleanupReleasePushL(*profileExtend);
-        MProfileSetTones &setTones = profileExtend->ProfileSetTones();
-        setTones.SetRingingTone1L( *descriptorFromString(filePath) );
-        mEngine ->CommitChangeL(*profileExtend);
-        CleanupStack::PopAndDestroy(profileExtend);
-    }   
+        // ERROR SHOULD BE DEAL HERE OR RETURN A ERROR CODE
+    }     
 }
 
 int CpProfileModelPrivate::masterVolume() const
 {
-    //NEED L FUNCTION?
-    TInt masterVolume = mEngine->MasterVolumeL();
+    int masterVolume = 0;
+    TRAP_IGNORE(masterVolume = mEngine->MasterVolumeL();)
     return masterVolume;
 }
 
 void CpProfileModelPrivate::setMasterVolume(int volume)
 {
-    //NEED L FUNCTION ?
     TRAP_IGNORE(mEngine->SetMasterVolumeL( volume );)
 }
 
 bool CpProfileModelPrivate::masterVibra() const
 {
-    bool masterVibra = mEngine->MasterVibraL();
+    bool masterVibra = false;
+    TRAP_IGNORE(masterVibra = mEngine->MasterVibraL();)
     return masterVibra; 
 }
 void CpProfileModelPrivate::setMasterVibra(bool isVibra)
@@ -337,9 +302,10 @@
     TRAP_IGNORE(mEngine->SetMasterVibraL( isVibra );)    
 }
 
-bool CpProfileModelPrivate::isSilenceMode() const
+bool CpProfileModelPrivate::silenceMode() const
 {
-    bool isSlience = mEngine->SilenceModeL();
+    bool isSlience = false;
+    TRAP_IGNORE(isSlience = mEngine->SilenceModeL();)
     return isSlience;
 }
 void CpProfileModelPrivate::setSilenceMode(bool isSilence)
@@ -347,257 +313,147 @@
     TRAP_IGNORE(mEngine->SetSilenceModeL( isSilence );)    
 }
 
-bool CpProfileModelPrivate::isOffLineMode() const    
+bool CpProfileModelPrivate::offLineMode() const    
 {
     int offLineMode = 0;
-    User::LeaveIfError(mOffLineCenRep->Get( KSettingsAirplaneMode, offLineMode ));
+    // What we should do if we can't set offline mode
+    mOffLineCenRep->Get( KSettingsAirplaneMode, offLineMode );
     
     return offLineMode;
 }
 void CpProfileModelPrivate::setOffLineMode(bool isOffLine)
 {
-    User::LeaveIfError(mOffLineCenRep->Set(KSettingsAirplaneMode, isOffLine));
+    mOffLineCenRep->Set(KSettingsAirplaneMode, isOffLine);
 }
 
 QString CpProfileModelPrivate::ringTone(int profileId) const
 {
-    MProfileExtended2 *profileExtend = 0;
-    TRAPD(err,
-            profileExtend = mEngine->Profile2L(profileId);
-            //CleanupReleasePushL(*profileExtend);
-            )
-    if (err != KErrNone) {
-        return QString("");
-    }
-    CleanupReleasePushL(*profileExtend);
+    MProfileExtended2 *profileExtend =  mProfileList.value(profileId);
     const MProfileTones &setTones = profileExtend->ProfileTones();
-    
-    
+
     QString ringTone = stringFromDescriptor(setTones.RingingTone1());
-    CleanupStack::PopAndDestroy(profileExtend);
     return ringTone;
 }
 
 void CpProfileModelPrivate::setRingTone(int profileId, const QString& filePath)
 {
-    MProfileExtended2 *profileExtend = 0;
-    TRAPD( err,
-            profileExtend = mEngine->Profile2L(profileId);
-            //CleanupReleasePushL(*profileExtend);
-            )
-    if (err==KErrNone) {
-        CleanupReleasePushL(*profileExtend);
-        MProfileSetTones &setTones = profileExtend->ProfileSetTones();
-
-        TRAP_IGNORE(
-                setTones.SetRingingTone1L( *descriptorFromString(filePath) );
-                mEngine->CommitChangeL(*profileExtend);
-                 )
-        CleanupStack::PopAndDestroy(profileExtend);
-    }            
+    MProfileExtended2 *profileExtend = mProfileList.value(profileId);
+    MProfileSetTones &setTones = profileExtend->ProfileSetTones();
+    TRAP_IGNORE(
+                    setTones.SetRingingTone1L(*descriptorFromString(filePath));
+                    mEngine->CommitChangeL(*profileExtend);                    
+                )            
 }
 
 QString CpProfileModelPrivate::messageTone(int profileId) const
 {
-    MProfileExtended2 *profileExtend = 0;
-    TRAPD(err,
-            profileExtend = mEngine->Profile2L(profileId);
-            //CleanupReleasePushL(*profileExtend);
-            )
-    if (err != KErrNone) {
-        return QString("");
-    }
-    CleanupReleasePushL(*profileExtend);
+    MProfileExtended2 *profileExtend = mProfileList.value(profileId);
+    
     const MProfileTones &setTones = profileExtend->ProfileTones();
-    
+
     QString messageTone = stringFromDescriptor(setTones.MessageAlertTone());
-       
-    CleanupStack::PopAndDestroy(profileExtend);
+
     return messageTone;    
-
 }
 
 void CpProfileModelPrivate::setMessageTone(int profileId, const QString& filePath)
 {
-    MProfileExtended2 *profileExtend = 0;
-    TRAPD( err,
-            profileExtend = mEngine->Profile2L(profileId);
-            //CleanupReleasePushL(*profileExtend);
-            )
-    if (err==KErrNone) {
-        CleanupReleasePushL(*profileExtend);
-        MProfileSetTones &setTones = profileExtend->ProfileSetTones();
-
-        TRAP_IGNORE(
-                setTones.SetMessageAlertToneL( *descriptorFromString(filePath) );
-                mEngine->CommitChangeL(*profileExtend);
-                 )
-        CleanupStack::PopAndDestroy(profileExtend);
-    }            
-
+    MProfileExtended2 *profileExtend = mProfileList.value(profileId);                
+    MProfileSetTones &setTones =
+            profileExtend->ProfileSetTones();
+    TRAP_IGNORE(
+        setTones.SetMessageAlertToneL(*descriptorFromString(filePath));
+        mEngine->CommitChangeL(*profileExtend);
+            )                
 }
 
 QString CpProfileModelPrivate::emailTone(int profileId) const
 {
-    MProfileExtended2 *profileExtend = 0;
-    TRAPD(err,
-            profileExtend = mEngine->Profile2L(profileId);
-            //CleanupReleasePushL(*profileExtend);
-            )
-    if (err != KErrNone) {
-        return QString("");
-    }
-    CleanupReleasePushL(*profileExtend);
-    const MProfileExtraTones2 &extTones = profileExtend->ProfileExtraTones2(); 
-    
-    QString emailTone = stringFromDescriptor(extTones.EmailAlertTone());
-    
-    CleanupStack::PopAndDestroy(profileExtend);
+    MProfileExtended2 *profileExtend = mProfileList.value(profileId);           
+    const MProfileExtraTones2 &extTones =
+            profileExtend->ProfileExtraTones2();
+
+    QString emailTone = stringFromDescriptor(extTones.EmailAlertTone());    
     return emailTone;    
-    
 }
 
 void CpProfileModelPrivate::setEmailTone(int profileId, const QString& filePath)
 {
-    MProfileExtended2 *profileExtend = 0;
-    TRAPD( err,
-            profileExtend = mEngine->Profile2L(profileId);
-            //CleanupReleasePushL(*profileExtend);
-            )
-    if (err==KErrNone) {
-        CleanupReleasePushL(*profileExtend);
-        MProfileSetExtraTones2 &setExtTones = profileExtend->ProfileSetExtraTones2();
-
-        TRAP_IGNORE(
-                setExtTones.SetEmailAlertToneL( *descriptorFromString(filePath) );
-                mEngine->CommitChangeL(*profileExtend);
-                 )
-        CleanupStack::PopAndDestroy(profileExtend);
-    }            
+    MProfileExtended2 *profileExtend = mProfileList.value(profileId);
+    MProfileSetExtraTones2 &setExtTones =
+            profileExtend->ProfileSetExtraTones2();
+    TRAP_IGNORE (
+        setExtTones.SetEmailAlertToneL(*descriptorFromString(filePath));
+        mEngine->CommitChangeL(*profileExtend);
+    )
 }
 
 QString CpProfileModelPrivate::reminderTone(int profileId) const
 {
-    MProfileExtended2 *profileExtend = 0;
-    TRAPD(err,
-            profileExtend = mEngine->Profile2L(profileId);
-            //CleanupReleasePushL(*profileExtend);
-            )
-    if (err != KErrNone) {
-        return QString("");
-    } 
-    CleanupReleasePushL(*profileExtend);
+    MProfileExtended2 *profileExtend = mProfileList.value(profileId);
     const MProfileExtraTones2 &extTones = profileExtend->ProfileExtraTones2();
     
     QString reminderTone = stringFromDescriptor(extTones.ReminderTone());
-    
-    CleanupStack::PopAndDestroy(profileExtend);
-    return reminderTone;    
-    
+    return reminderTone;        
 }
 
 void CpProfileModelPrivate::setReminderTone(int profileId, const QString& filePath)
 {
-    MProfileExtended2 *profileExtend = 0;
-    TRAPD( err,
-            profileExtend = mEngine->Profile2L(profileId);
-            //CleanupReleasePushL(*profileExtend);
-            )
-    if (err==KErrNone) {
-        CleanupReleasePushL(*profileExtend);
-        MProfileSetExtraTones2 &setExtTones = profileExtend->ProfileSetExtraTones2();
-
-        TRAP_IGNORE(
-                setExtTones.SetReminderToneL( *descriptorFromString(filePath) );
-                mEngine->CommitChangeL(*profileExtend);
-                 )
-        CleanupStack::PopAndDestroy(profileExtend);
-    }            
+    MProfileExtended2 *profileExtend = mProfileList.value(profileId);
+    MProfileSetExtraTones2 &setExtTones = profileExtend->ProfileSetExtraTones2();
+                
+    TRAP_IGNORE(
+            setExtTones.SetReminderToneL( *descriptorFromString(filePath) );
+            mEngine->CommitChangeL(*profileExtend);
+    )            
 }
 
 bool CpProfileModelPrivate::notificationTone(int profileId) const
 {
-    MProfileExtended2 *profileExtend = 0;
-    TRAPD(err,
-            profileExtend = mEngine->Profile2L(profileId);
-            //CleanupReleasePushL(*profileExtend);
-            )
-    if (err != KErrNone) {
-        return false; // ??????
-    } 
-    CleanupReleasePushL(*profileExtend);
+    MProfileExtended2 *profileExtend = mProfileList.value(profileId);
     const MProfileTones &setTones = profileExtend->ProfileTones();
     const TProfileToneSettings &toneSettings = setTones.ToneSettings();
-    
+
     bool notificationTone = toneSettings.iWarningAndGameTones;
-    
-    CleanupStack::PopAndDestroy(profileExtend);
-    return notificationTone;       
+    return notificationTone;    
 }
 
 void CpProfileModelPrivate::setNotificationTone(int profileId, bool isActive)
 {
-    MProfileExtended2 *profileExtend = 0;
-    TRAPD( err,
-            profileExtend = mEngine->Profile2L(profileId);
-            //CleanupReleasePushL(*profileExtend);
-            )
-    if (err==KErrNone) {
-        CleanupReleasePushL(*profileExtend);
-        MProfileSetTones &setTones = profileExtend->ProfileSetTones();
-        TProfileToneSettings &toneSettings = setTones.SetToneSettings();
+    MProfileExtended2 *profileExtend = mProfileList.value(profileId);
+    MProfileSetTones &setTones = profileExtend->ProfileSetTones();
+    TProfileToneSettings &toneSettings = setTones.SetToneSettings();
 
-
-        toneSettings.iWarningAndGameTones = isActive;
-                
-        TRAP_IGNORE( 
-                mEngine->CommitChangeL(*profileExtend);
-                 )
-        CleanupStack::PopAndDestroy(profileExtend);
-    }        
+    toneSettings.iWarningAndGameTones = isActive;
+    TRAP_IGNORE(
+            mEngine->CommitChangeL(*profileExtend);
+            ) 
 }
 
 int CpProfileModelPrivate::keyTouchScreenTone(int profileId) const
 {
-    MProfileExtended2 *profileExtend = 0;
-    TRAPD(err,
-            profileExtend = mEngine->Profile2L(profileId);
-            //CleanupReleasePushL(*profileExtend);
-            )
-    if (err != KErrNone) {
-        return -1;
-    } 
-    CleanupReleasePushL(*profileExtend);
+    MProfileExtended2 *profileExtend = mProfileList.value(profileId);
+    
     const MProfileTones &setTones = profileExtend->ProfileTones();
     const TProfileToneSettings &toneSettings = setTones.ToneSettings();
-    
+
     int keyTouchScreenTone = toneSettings.iKeypadVolume;
-    
-    CleanupStack::PopAndDestroy(profileExtend);
-    return keyTouchScreenTone;    
-    
+    return keyTouchScreenTone;        
 }
 
 void CpProfileModelPrivate::setKeyTouchScreenTone(int profileId, int level)
 {
-    MProfileExtended2 *profileExtend = 0;
-    TRAPD( err,
-            profileExtend = mEngine->Profile2L(profileId);
-            //CleanupReleasePushL(*profileExtend);
-            )
-    if (err==KErrNone) {
-        CleanupReleasePushL(*profileExtend);
-        MProfileSetTones &setTones = profileExtend->ProfileSetTones();
-        TProfileToneSettings &toneSettings = setTones.SetToneSettings();
+    MProfileExtended2 *profileExtend = mProfileList.value(profileId);                    
+    MProfileSetTones &setTones =
+            profileExtend->ProfileSetTones();
+    TProfileToneSettings &toneSettings =
+            setTones.SetToneSettings();
 
-        toneSettings.iKeypadVolume = static_cast<TProfileKeypadVolume>(level);
-                
-        TRAP_IGNORE( 
-                mEngine->CommitChangeL(*profileExtend);
-                 )
-        CleanupStack::PopAndDestroy(profileExtend);
-    }
-    
+    toneSettings.iKeypadVolume
+            = static_cast<TProfileKeypadVolume> (level);
+    TRAP_IGNORE (
+            mEngine->CommitChangeL(*profileExtend);
+    )    
 }
 
 bool CpProfileModelPrivate::ringAlertVibra(int profileId) const
@@ -810,411 +666,32 @@
 
 int CpProfileModelPrivate::keyTouchScreenVibra(int profileId)const
 {
-    MProfileExtended2 *profileExtend = 0;
-    TRAPD(err,
-            profileExtend = mEngine->Profile2L(profileId);
-            //CleanupReleasePushL(*profileExtend);
-            )
-    if (err != KErrNone) {
-        return -1;
-    }
-    CleanupReleasePushL(*profileExtend);
+    MProfileExtended2 *profileExtend = mProfileList.value(profileId);
+    
     const MProfileExtraSettings &extraSettings =
             profileExtend->ProfileExtraSettings();
     const MProfileFeedbackSettings &feedbackSettings =
             extraSettings.ProfileFeedbackSettings();
     
-    
-    bool keyTouchScreenVibra = feedbackSettings.TactileFeedback();
-    
-    CleanupStack::PopAndDestroy(profileExtend);
-    return keyTouchScreenVibra;    
-    
+    int keyTouchScreenVibra = feedbackSettings.TactileFeedback();
+    return keyTouchScreenVibra;        
 }
 
 void CpProfileModelPrivate::setKeyTouchScreenVibra(int profileId, int level)
 {
-    MProfileExtended2 *profileExtend = 0;
-    TRAPD( err,
-            profileExtend = mEngine->Profile2L(profileId);
-            //CleanupReleasePushL(*profileExtend);
-            )
-    if (err==KErrNone) {
-        CleanupReleasePushL(*profileExtend);
-        MProfileSetExtraSettings &extraSettings = profileExtend->ProfileSetExtraSettings();
-        MProfileSetFeedbackSettings &setFeedbackSettings = extraSettings.ProfileSetFeedbackSettings();
-        setFeedbackSettings.SetTactileFeedback(static_cast<TProfileTactileFeedback>(level));    
-
-        TRAP_IGNORE(
-                    mEngine->CommitChangeL(*profileExtend);
-                    )
+    MProfileExtended2 *profileExtend = mProfileList.value(profileId);
+    MProfileSetExtraSettings &extraSettings =
+            profileExtend->ProfileSetExtraSettings();
+    MProfileSetFeedbackSettings &setFeedbackSettings =
+            extraSettings.ProfileSetFeedbackSettings();
+    setFeedbackSettings.SetTactileFeedback(
+            static_cast<TProfileTactileFeedback> (level));
 
-        CleanupStack::PopAndDestroy(profileExtend);                                               
-    }             
-}
-///*
-// * Set a profile as current editing profile
-// */
-//int CpProfileModelPrivate::setEditingProfile(int profileId)
-//{
-//    CPFW_LOG("CpProfileModelPrivate::setEditingProfile(), START.");
-//    TRAPD( err, UpdateProfileSettingsL( profileId ););
-//    CPFW_LOG("CpProfileModelPrivate::setEditingProfile(), END.");
-//    return err;
-//}
-//
-///*
-// * Get path and file name of ring tone file
-// */
-//QString CpProfileModelPrivate::ringTone()
-//{
-//    if ( mProfileExt ){
-//        return stringFromDescriptor( mProfileExt->ProfileTones().RingingTone1() );
-//    }
-//    CPFW_LOG("CpProfileModelPrivate::ringTone(), END with invalid mProfileExt. ");
-//    return "";
-//}
-//
-///*
-// * Set path and file to ring tone
-// */
-//int CpProfileModelPrivate::setRingTone(const QString& filePath)
-//{
-//    if ( mProfileExt ){
-//        TRAPD(err, mProfileExt->ProfileSetTones().SetRingingTone1L( *descriptorFromString(filePath) ));
-//        commitChange();
-//        return err;
-//    } 
-//	CPFW_LOG("CpProfileModelPrivate::setRingTone(), END with invalid mProfileExt.");
-//    return -1;
-//}
-//
-///*
-// * Get path and file name of message tone file
-// */
-//QString CpProfileModelPrivate::messageTone()
-//{
-//    if ( mProfileExt ){
-//        return stringFromDescriptor( mProfileExt->ProfileTones().MessageAlertTone() );
-//    } 
-//	CPFW_LOG("CpProfileModelPrivate::messageTone(), END with invalid mProfileExt.");
-//    return "";
-//}
-//
-///*
-// * Set path and file to message tone
-// */
-//int CpProfileModelPrivate::setMessageTone(const QString& filePath)
-//{
-//    if ( mProfileExt ){
-//        TRAPD(err, mProfileExt->ProfileSetTones().SetMessageAlertToneL( *descriptorFromString(filePath) ));
-//        commitChange();
-//	    return err;
-//    } 
-//	CPFW_LOG("CpProfileModelPrivate::setMessageTone(), END with invalid mProfileExt.");
-//    return -1;
-//}
-//
-///*
-// * Get path and file name of email tone file
-// */
-//QString CpProfileModelPrivate::emailTone()
-//{
-//    if ( mProfileExt ){
-//        return stringFromDescriptor( mProfileExt->ProfileExtraTones().EmailAlertTone() );
-//    }
-//	CPFW_LOG("CpProfileModelPrivate::emailTone(), END with invalid mProfileExt.");
-//    return "";
-//}
-//
-///*
-// * Set path and file to email tone
-// */
-//int CpProfileModelPrivate::setEmailTone(const QString& filePath)
-//{
-//    if ( mProfileExt ){
-//        TRAPD(err, mProfileExt->ProfileSetExtraTones().SetEmailAlertToneL( *descriptorFromString(filePath) ));
-//        commitChange();
-//	    return err;
-//    } 
-//	CPFW_LOG("CpProfileModelPrivate::setEmailTone(), END with invalid mProfileExt.");
-//    return -1;
-//}
-//
-///*
-// * Get path and file name of calendar event tone file
-// */
-//QString CpProfileModelPrivate::calendarTone()
-//{
-//    return "";
-//}
-//
-///*
-// * Set path and file to calendar event tone
-// */
-//void CpProfileModelPrivate::setCalendarTone(const QString& filePath)
-//{
-//    Q_UNUSED(filePath);
-//}
-//
-///*
-// * Get path and file name of clock alarm tone file
-// */
-//QString CpProfileModelPrivate::alarmTone()
-//{
-//    return "";
-//}
-//
-///*
-// * Set path and file to clock alarm tone
-// */
-//void CpProfileModelPrivate::setAlarmTone(const QString& filePath)
-//{
-//    Q_UNUSED(filePath);
-//}
-//
-///*
-// * Get the value of master volume
-// */
-//int CpProfileModelPrivate::ringVolume()
-//{
-//    CPFW_LOG("CpProfileModelPrivate::ringVolume(), START.");
-//    if ( mToneSettings ){
-//	    CPFW_LOG("CpProfileModelPrivate::ringVolume(), End.");
-//        return mToneSettings->iRingingVolume;
-//    } 
-//	CPFW_LOG("CpProfileModelPrivate::ringVolume(), END with invalid mToneSettings.");
-//    return -1;
-//}
-//
-///*
-// * Set master volume, the value should be between 1-10
-// */
-//void CpProfileModelPrivate::setRingVolume(int volume)
-//{
-//    CPFW_LOG("CpProfileModelPrivate::setRingVolume(), START.");
-//    if ( !mToneSettings ) {
-//        CPFW_LOG("CpProfileModelPrivate::setRingVolume(), END with invalid mToneSettings.");
-//        return;
-//    }
-//    if ( EProfileWrapperSilentId == mEditingProfileId || volume < 0 || volume >10 )
-//        {
-//        return;
-//        }
-//
-//    mToneSettings->iRingingType = EProfileRingingTypeRinging;
-//    mToneSettings->iRingingVolume = volume;
-//    commitChange();
-//    
-//    // General profile and meeting profile should have same ring tone volume
-//    int profileId = activeProfileId();
-//    if ( EProfileWrapperMeetingId == profileId ){
-//        profileId = EProfileWrapperGeneralId;
-//    } else if ( EProfileWrapperGeneralId == profileId ) {
-//        profileId = EProfileWrapperMeetingId;
-//    }
-//    MProfileExtended* profileExt = 0;
-//    TRAPD( err0, profileExt = mEngine->ProfileL( profileId ););
-//    Q_UNUSED(err0);
-//    TProfileToneSettings& toneSettings = profileExt->ProfileSetTones().SetToneSettings();
-//    toneSettings.iRingingType = EProfileRingingTypeRinging;
-//    toneSettings.iRingingVolume = volume;
-//    TRAPD( err, mEngine->CommitChangeL(*profileExt) );
-//    Q_UNUSED(err);
-//    CPFW_LOG("CpProfileModelPrivate::setRingVolume(), END.");
-//    // currently implementation: keep the two profiles same volume
-//}
-//
-///*
-// * Activate master volume to beep
-// */
-//void CpProfileModelPrivate::activateBeep()
-//{
-//    if ( mToneSettings ){
-//        mToneSettings->iRingingType = EProfileRingingTypeBeepOnce;
-//        commitChange();
-//    } else {
-//        CPFW_LOG("CpProfileModelPrivate::activateBeep(), END with invalid mToneSettings.");
-//    }
-//}
-//
-///*
-// * Get beep status in master volume
-// */
-//bool CpProfileModelPrivate::isBeep()
-//{
-//    if ( mToneSettings ){
-//        return (EProfileRingingTypeBeepOnce == mToneSettings->iRingingType) ? true : false;
-//    }
-//    CPFW_LOG("CpProfileModelPrivate::isBeep(), END with invalid mToneSettings.");
-//    return false;
-//}
-//
-///*
-// * Activate master volume to silent
-// */
-//void CpProfileModelPrivate::activateSilent()
-//{
-//    if ( mToneSettings ){
-//        mToneSettings->iRingingType = EProfileRingingTypeSilent;
-//        commitChange();
-//    } else {
-//        CPFW_LOG("CpProfileModelPrivate::vibraStatus(), END with invalid mToneSettings.");
-//    }
-//}
-//
-///*
-// * Get silent status in master volume
-// */
-//bool CpProfileModelPrivate::isSilent()
-//{
-//    if ( mToneSettings ){
-//        return (EProfileRingingTypeSilent == mToneSettings->iRingingType) ? true : false;
-//    } else {
-//        CPFW_LOG("CpProfileModelPrivate::vibraStatus(), END with invalid mToneSettings.");
-//        return false;
-//    }
-//}
-//
-///*
-// * Get master vibra's status
-// */
-//bool CpProfileModelPrivate::vibraStatus()
-//{
-//    CPFW_LOG("CpProfileModelPrivate::vibraStatus(), Start.");
-//    if ( mToneSettings ){
-//	    CPFW_LOG("CpProfileModelPrivate::vibraStatus(), End.");
-//        return mToneSettings->iVibratingAlert;
-//    } 
-//	CPFW_LOG("CpProfileModelPrivate::vibraStatus(), END with invalid mToneSettings.");
-//    return false;
-//}
-//
-///*
-// * Set master vibra's status
-// */
-//void CpProfileModelPrivate::setVibraStatus(bool status)
-//{
-//    CPFW_LOG("CpProfileModelPrivate::setVibraStatus(), Start.");
-//    if ( mVibraCenRep ){
-//        mVibraCenRep->Set(KVibraCtrlProfileVibraEnabled, status );
-//    }
-//    
-//    if ( mToneSettings ){
-//        mToneSettings->iVibratingAlert = status;
-//        commitChange();
-//    }
-//    CPFW_LOG("CpProfileModelPrivate::setVibraStatus(), END.");
-//}
-//
-///*
-// * Get keypad' volume
-// */
-//int CpProfileModelPrivate::keyVolume()
-//{
-//    CPFW_LOG("CpProfileModelPrivate::keyVolume(), Start.");
-//    if ( mToneSettings ){
-//        CPFW_LOG("CpProfileModelPrivate::keyVolume(), END.");
-//        return mToneSettings->iKeypadVolume;
-//    }
-//    CPFW_LOG("CpProfileModelPrivate::keyVolume(), END with invalid mToneSettings.");
-//    return -1;
-//}
-//
-///*
-// * Set keypad's volume, 
-// * the value of the volume should be between 0-3
-// */
-//void CpProfileModelPrivate::setKeyVolume(int volume)
-//{
-//    CPFW_LOG("CpProfileModelPrivate::setKeyVolume(), Start.");
-//    if (volume < 0 || volume > 3)
-//    {
-//        CPFW_LOG("CpProfileModelPrivate::setKeyVolume(), End with invalid volume.");
-//        return;
-//    }
-//
-//    if ( mToneSettings ){
-//        mToneSettings->iKeypadVolume = (TProfileKeypadVolume)volume;
-//        commitChange();
-//    }
-//    CPFW_LOG("CpProfileModelPrivate::setKeyVolume(), End.");
-//}
-//
-///*
-// * Get screen tone's volume
-// */
-//int CpProfileModelPrivate::screenVolume()
-//{
-//    CPFW_LOG("CpProfileModelPrivate::screenVolume(), Start.");
-//    if ( mFeedbackSettings ){
-//        CPFW_LOG("CpProfileModelPrivate::screenVolume(), End.");
-//        return mFeedbackSettings->AudioFeedback();
-//    }
-//    CPFW_LOG("CpProfileModelPrivate::screenVolume(), End.");
-//    return -1;
-//}
-//
-///*
-// * Set screen tone's volume, 
-// * the value of the volume should be between 0-3
-// */
-//void CpProfileModelPrivate::setScreenVolume(int volume)
-//{
-//    CPFW_LOG("CpProfileModelPrivate::setScreenVolume(), Start.");
-//    if (volume < 0 || volume > 3)
-//    {
-//        CPFW_LOG("CpProfileModelPrivate::setScreenVolume(), End with invalid volume.");
-//        return;
-//    }
-//
-//    if ( mSetFeedbackSettings ){
-//        mSetFeedbackSettings->SetAudioFeedback( (TProfileAudioFeedback)volume );
-//        commitChange();
-//    }
-//    CPFW_LOG("CpProfileModelPrivate::setScreenVolume(), End.");
-//}
-//
-///*
-// * Get screen vibra's level
-// */
-//int CpProfileModelPrivate::screenVibra()
-//{
-//    CPFW_LOG("CpProfileModelPrivate::screenVibra(), Start.");
-//    if ( mFeedbackSettings ){
-//        CPFW_LOG("CpProfileModelPrivate::screenVibra(), End.");
-//        return mFeedbackSettings->TactileFeedback();
-//    }
-//    CPFW_LOG("CpProfileModelPrivate::screenVibra(), End with invalid mFeedbackSettings.");
-//    return -1;
-//}
-//
-///*
-// * Set screen vibra's level, 
-// * the value of the level should be between 0-3
-// */
-//void CpProfileModelPrivate::setScreenVibra(int volume)
-//{
-//    if (volume < 0 || volume > 3)
-//    {
-//        return;
-//    }
-//
-//    if ( mSetFeedbackSettings ){
-//        mSetFeedbackSettings->SetTactileFeedback( (TProfileTactileFeedback)volume );
-//        commitChange();
-//    }
-//}
-
-/*
- * Commit changes when change settings value in profile.
- */
-int CpProfileModelPrivate::commitChange()
-{
-  /*  TRAPD( err, mEngine->CommitChangeL(*mProfileExt) );
-    return err;*/
-    return 0;
+    TRAP_IGNORE(
+            mEngine->CommitChangeL(*profileExtend);
+    )                
 }
 
 // End of file
 
+
--- a/controlpanelui/src/cpprofilewrapper/src/cpprofilemodel_p.h	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpprofilewrapper/src/cpprofilemodel_p.h	Fri May 14 13:21:08 2010 +0800
@@ -19,8 +19,9 @@
 #define CPPROFILEMODEL_P_H
 
 #include <qglobal.h>
+#include <QMap>
+class CpProfileModel;
 class CpProfileSettings;
-class CpProfileModel;
 class MProfileEngineExtended2;
 class MProfileExtended2;
 class MProfileFeedbackSettings;
@@ -41,9 +42,8 @@
     QString profileName(int profileId)const;
     QStringList profileNames() const;
     int activateProfile(int profileId);
-    int activeProfileId();
-    int setEditingProfile(int profileId);
-    int profileSettings(int profileId, CpProfileSettings& profileSettings);
+    int activeProfileId() const;
+    void profileSettings(int profileId, CpProfileSettings& profileSettings);
     int setProfileSettings(int profileId, CpProfileSettings& profileSettings);
 
     /*!
@@ -58,10 +58,10 @@
     bool masterVibra() const;
     void setMasterVibra(bool isVibra);
 
-    bool isSilenceMode() const;
+    bool silenceMode() const;
     void setSilenceMode(bool isSlience);
 
-    bool isOffLineMode() const;    
+    bool offLineMode() const;    
     void setOffLineMode(bool isOffLine);
 
     QString ringTone(int profileId)const;
@@ -124,18 +124,18 @@
      */
 #ifdef Q_OS_SYMBIAN
 private:
-    void UpdateProfileSettingsL(int profileId);
-    int commitChange();
+    //void UpdateProfileSettingsL(int profileId);
+    //int commitChange();
 
 private:
     MProfileEngineExtended2 *mEngine;
+    QMap<int, MProfileExtended2*> mProfileList;
     //MProfileExtended2 *mProfileExt;
     //TProfileToneSettings *mToneSettings;
     //const MProfileFeedbackSettings *mFeedbackSettings;
     //MProfileSetFeedbackSettings *mSetFeedbackSettings;
     //CRepository *mVibraCenRep;
-    int mEditingProfileId;
-    bool mInitErrFlag;
+    int mInitErrFlag;
     CRepository *mOffLineCenRep;
     CpProfileModel *q_ptr;
 #endif // Q_OS_SYMBIAN
--- a/controlpanelui/src/cpprofilewrapper/src/cpprofilemodel_win_p.cpp	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpprofilewrapper/src/cpprofilemodel_win_p.cpp	Fri May 14 13:21:08 2010 +0800
@@ -62,15 +62,6 @@
 }
 
 /*
- * Set a profile as current editing profile
- */
-int CpProfileModelPrivate::setEditingProfile(int profileId)
-{
-    Q_UNUSED(profileId);
-    return -1;
-}
-
-/*
  * Get path and file name of ring tone file
  */
 QString CpProfileModelPrivate::ringTone()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/cpringtoneview/cpringtoneview.pro	Fri May 14 13:21:08 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: display plugin source files
+#
+include (../common.pri)
+include (ringtoneview.pri)
+TARGET = cpringtoneview
+TEMPLATE = lib
+
+CONFIG += hb
+DEFINES += CPRINGTONEVIEW_LIBRARY
+symbian {
+    LIBS +=  -lcpprofilewrapper -lcpframework -lxqservice -lxqserviceutil
+    TARGET.UID3 = 0X2002873A
+    TARGET.CAPABILITY = All -TCB
+    TARGET.EPOCALLOWDLLDATA = 1
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/cpringtoneview/ringtoneview.pri	Fri May 14 13:21:08 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: display plugin source files
+#
+
+# Input
+HEADERS += ../inc/cpringtoneview.h
+
+SOURCES += src/cpringtoneview.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/cpringtoneview/src/cpringtoneview.cpp	Fri May 14 13:21:08 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:
+ *
+ */
+#include "cpringtoneview.h"
+#include <HbListWidget>
+#include <QGraphicsLinearLayout>
+#include <HbLabel>
+#include <QList>
+#include <QModelIndex>
+#include <QStandardItemModel>
+#include <QStandardItem>
+#include <xqaiwrequest.h>
+#include <cplogger.h>
+
+CpRingToneView::CpRingToneView( QGraphicsItem *parent ):
+                              CpBaseSettingView(0, parent),
+                              mToneTypeList( new HbListWidget(this) ),
+                              mReq(0)
+{
+    HbWidget* contentWidget = new HbWidget(this);
+    QGraphicsLinearLayout* layout = new QGraphicsLinearLayout(Qt::Vertical);
+
+    //setup the heading.
+    HbLabel* label = new HbLabel( hbTrId("txt_cp_subhead_select_tone_type"), contentWidget );
+    layout->addItem(label);
+    //handling user click
+    bool bret = connect(mToneTypeList, SIGNAL( activated(HbListWidgetItem *) ),
+            this, SLOT(onTypeSelected(HbListWidgetItem *)));
+    //initialize the list contents
+    QList<QString> tonesTypeList;
+    tonesTypeList <<
+            hbTrId("txt_cp_list_no_tone")<<
+            hbTrId("txt_cp_list_tone")<<
+            hbTrId("txt_cp_list_music")<<
+            hbTrId("txt_cp_list_recording")<<
+            hbTrId("txt_cp_list_get_more_tones");
+    for ( int i = 0; i < tonesTypeList.count(); i++ )
+    {
+        mToneTypeList->addItem(tonesTypeList.at(i));
+    }
+    //add the list to layout.
+    layout->addItem(mToneTypeList);
+
+    contentWidget->setLayout(layout);
+
+    setWidget(contentWidget);
+}
+CpRingToneView::~CpRingToneView()
+{
+    if(mReq)    delete mReq;
+}
+void CpRingToneView::onTypeSelected(HbListWidgetItem *item)
+{
+    int nRow = mToneTypeList->row( item );
+    switch(nRow)
+    {
+        case 0:         //no tone, set default no sound
+                emit selOK(QString(""));
+                emit aboutToClose();
+                break;
+        case 1:         //tone
+                launchMediaFetcher( "com.nokia.symbian.IToneFetch", "fetch()" );
+                break;
+        case 2:         //music
+                launchMediaFetcher("com.nokia.symbian.IMusicFetch", "fetch()" );
+                break;
+        case 3:         //recording
+        case 4:         //get more tones
+        default:
+                break;
+    }
+}
+void CpRingToneView::handleOk(const QVariant &result)
+{
+    CPFW_LOG( "CpPersonalizationEntryItemData::handleOk" );
+    if (!result.canConvert<QString>() || result.toString().length() == 0 )  //error result
+    {
+        return;
+    }
+    hide();
+    emit selOK( result.value<QString>() );
+    emit aboutToClose();
+}
+
+
+void CpRingToneView::handleError(int errorCode, const QString& errorMessage)
+{
+    emit(selError( errorCode, errorMessage ));
+}
+
+void CpRingToneView::launchMediaFetcher( const QString &strService, const QString &strItface )
+{
+    CPFW_LOG("CpRingToneView::launchMediaFetcher, START");
+    if(mReq)
+    {
+        delete mReq;
+        mReq = 0;
+    }
+        //launch media fetcher
+    mReq = mAppMgr.create(strService, strItface, true);
+    if (!mReq)
+    {
+      CPFW_LOG("CpRingToneView::launchMediaFetcher, Mediafetcher start failed");
+      return;
+    }
+    else
+    {
+        connect(mReq, SIGNAL( requestOk( const QVariant&)), SLOT( handleOk(const QVariant&)) );
+        connect(mReq, SIGNAL( requestError( int,const QString&)), SLOT(handleError(int,const QString&)) );
+    }
+    
+    QList<QVariant> args;
+    args << QVariant(QString("<app_name>"));
+    mReq->setArguments(args);
+    // Make the request
+    if (!mReq->send())
+    {
+        CPFW_LOG("CpRingToneView::launchMediaFetcher, Mediafetcher calling failed");
+    }
+    CPFW_LOG("CpRingToneView::launchMediaFetcher, END");
+}
+
--- a/controlpanelui/src/cpserviceprovider/service_conf.xml	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpserviceprovider/service_conf.xml	Fri May 14 13:21:08 2010 +0800
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <service>
-  <name>com.nokia.services.cpserviceprovider</name>
+  <name>cpserviceprovider</name>
   <filepath>="must-not-be-empty"</filepath>
   <description>ControlPanel service</description>
   <interface>
-     <name>Launcher</name>
+     <name>com.nokia.symbian.ICpPluginLauncher</name>
      <version>1.0</version>
-     <description>Launch a setting view which comes from a specific plugin</description>
+     <description>Launch a setting view which comes from a controlpanel plugin</description>
   </interface>
 </service>
\ No newline at end of file
--- a/controlpanelui/src/cpserviceprovider/src/cplauncherservice.cpp	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpserviceprovider/src/cplauncherservice.cpp	Fri May 14 13:21:08 2010 +0800
@@ -16,6 +16,7 @@
 */
 
 #include "cplauncherservice.h"
+#include <QCoreApplication>
 #include <cpservicemainwindow.h>
 #include <cplauncherinterface.h>
 #include <cppluginloader.h>
@@ -23,7 +24,7 @@
 #include "cpsplogger.h"
 
 CpLauncherService::CpLauncherService(HbMainWindow *mainWindow /* = 0*/)
-: XQServiceProvider("com.nokia.services.cpserviceprovider.Launcher",mainWindow),
+: XQServiceProvider("cpserviceprovider.com.nokia.symbian.ICpPluginLauncher",mainWindow),
   mMainWindow(mainWindow),
   mAsyncRequestIndex(-1),
   mReturnValue(false)
@@ -44,25 +45,28 @@
     completeRequest(mAsyncRequestIndex, mReturnValue);
 }
 
+void CpLauncherService::setReturnValue(const QVariant &returnValue)
+{
+    mReturnValue = returnValue;
+}
 
 bool CpLauncherService::launchSettingView(const QString &pluginFile,const QVariant &hint)
 {
     CPSP_LOG("Entering CpLauncherService::launchSettingView");
    
     mAsyncRequestIndex = setCurrentRequestAsync();
-    mReturnValue.setValue(false);
+    
+    bool succeed = false;
        
     if (mMainWindow) {
         mMainWindow->show();
         CpLauncherInterface *plugin = CpPluginLoader::loadCpLauncherInterface(pluginFile);
         if (plugin) {
-            CpBaseSettingView *view = plugin->createSettingView(hint);
-            if (view) {
-                connect(view, SIGNAL(aboutToClose()), mMainWindow, SLOT(quit()));
-                mMainWindow->addView(view);
-                mMainWindow->setCurrentView(view);
-                
-                mReturnValue.setValue(true);
+            CpBaseSettingView *settingView = plugin->createSettingView(hint);
+            if (settingView) {
+                connect(settingView, SIGNAL(returnValueDelivered(QVariant)),this,SLOT(setReturnValue(QVariant)));
+                (static_cast<CpServiceMainWindow*>(mMainWindow))->setSettingView(settingView);                
+                succeed = true;
             }
             else {
                 CPSP_LOG("Create setting view failed.");
@@ -72,14 +76,14 @@
             CPSP_LOG(QLatin1String("Load plugin interface(CpLauncherInterface) failed: ") + pluginFile);
         }
         
-        if (!mReturnValue.toBool()) {
-            qobject_cast<CpServiceMainWindow*>(mMainWindow)->quit();
+        if (!succeed) {
+            qApp->quit();  //quit application if loading plugin failed or creating setting view failed.
         }
     }
        
     CPSP_LOG("Leaving CpLauncherService::launchSettingView");
     
-    return mReturnValue.toBool();
+    return succeed;
 }
 
 //End of File
--- a/controlpanelui/src/cpserviceprovider/src/cplauncherservice.h	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpserviceprovider/src/cplauncherservice.h	Fri May 14 13:21:08 2010 +0800
@@ -21,6 +21,7 @@
 #include <xqserviceprovider.h>
 
 class HbMainWindow;
+
 class CpLauncherService : public XQServiceProvider
 {
     Q_OBJECT
@@ -30,6 +31,8 @@
     void complete();
 public slots:
     bool launchSettingView(const QString &pluginFile,const QVariant &hint);
+private slots:
+    void setReturnValue(const QVariant &returnValue);
 private:
     HbMainWindow *mMainWindow;
     int mAsyncRequestIndex;
--- a/controlpanelui/src/cpserviceprovider/src/cpservicemainwindow.cpp	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpserviceprovider/src/cpservicemainwindow.cpp	Fri May 14 13:21:08 2010 +0800
@@ -17,7 +17,7 @@
 
 #include "cpservicemainwindow.h"
 #include <QCoreApplication>
-#include <hbview.h>
+#include <cpbasesettingview.h>
 #include "cplauncherservice.h"
 #include "cpsplogger.h"
 
@@ -33,22 +33,29 @@
     CPSP_LOG("CpServiceMainWindow Destructing...");
 }
 
+void CpServiceMainWindow::setSettingView(CpBaseSettingView *settingView)
+{
+    mSettingViewPointer = settingView;
+    
+    connect(settingView, SIGNAL(aboutToClose()), this, SLOT(quit()));    
+    addView(settingView);
+    setCurrentView(settingView);
+}
+
 void CpServiceMainWindow::quit()
 {
     CPSP_LOG("CpServiceMainWindow::quit()");
- 
+    
     connect(mLauncherService, SIGNAL(returnValueDelivered()), qApp, SLOT(quit()));
     mLauncherService->complete();
-    qApp->quit();
-    
+  
     /*
     hide();
     mLauncherService->complete();
-    HbView *currView = currentView();
-    if (currView) {
-        removeView(currView);
-        currView->deleteLater();
-    }
+    if (mSettingViewPointer) {
+        removeView(mSettingViewPointer);
+        mSettingViewPointer->deleteLater();
+    }  
     */
 }
 
--- a/controlpanelui/src/cpserviceprovider/src/cpservicemainwindow.h	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpserviceprovider/src/cpservicemainwindow.h	Fri May 14 13:21:08 2010 +0800
@@ -19,8 +19,10 @@
 #define CPSERVICEMAINWINDOW_H
 
 #include <hbmainwindow.h>
+#include <QPointer>
 
 class CpLauncherService;
+class CpBaseSettingView;
 
 class CpServiceMainWindow : public HbMainWindow
 {
@@ -28,10 +30,14 @@
 public:
     explicit CpServiceMainWindow(QWidget *parent = 0);
     virtual ~CpServiceMainWindow();
+    
+    void setSettingView(CpBaseSettingView *settingView);
+    
 public slots:
     void quit();
 private:
     CpLauncherService *mLauncherService;
+    QPointer<CpBaseSettingView> mSettingViewPointer;
 };
 
 #endif // CPSERVICEMAINWINDOW_H
--- a/controlpanelui/src/cpserviceprovider/src/main.cpp	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpserviceprovider/src/main.cpp	Fri May 14 13:21:08 2010 +0800
@@ -15,6 +15,9 @@
 *
 */
 #include <hbapplication.h>
+#include <hbstyleloader.h>
+#include <QDir>
+#include <cpbasepath.h>
 #include "cpservicemainwindow.h"
 #include "cpsplogger.h"
 
@@ -26,6 +29,8 @@
             CPSP_LOGGER_CONFIG_PATH,QSettings::IniFormat);
     CPSP_LOG("Entering CpServiceProvider.exe...");
     
+    HbStyleLoader::registerFilePath(CP_RESOURCE_PATH + QDir::separator() + WIDGETML_SUB_PATH);
+    
     CpServiceMainWindow wnd;
     wnd.show();
     
--- a/controlpanelui/src/eabi/cpcategorymodelu.def	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/eabi/cpcategorymodelu.def	Fri May 14 13:21:08 2010 +0800
@@ -1,36 +1,56 @@
 EXPORTS
-	_ZN26CpCategorySettingFormModel10initializeER16CpItemDataHelper @ 1 NONAME
-	_ZN26CpCategorySettingFormModel11qt_metacallEN11QMetaObject4CallEiPPv @ 2 NONAME
-	_ZN26CpCategorySettingFormModel11qt_metacastEPKc @ 3 NONAME
-	_ZN26CpCategorySettingFormModel16staticMetaObjectE @ 4 NONAME DATA 16
-	_ZN26CpCategorySettingFormModel19getStaticMetaObjectEv @ 5 NONAME
-	_ZN26CpCategorySettingFormModel25afterLoadingConfigPluginsER16CpItemDataHelper @ 6 NONAME
-	_ZN26CpCategorySettingFormModel26beforeLoadingConfigPluginsER16CpItemDataHelper @ 7 NONAME
-	_ZN26CpCategorySettingFormModelC1ERK7QString @ 8 NONAME
-	_ZN26CpCategorySettingFormModelC2ERK7QString @ 9 NONAME
-	_ZN26CpCategorySettingFormModelD0Ev @ 10 NONAME
-	_ZN26CpCategorySettingFormModelD1Ev @ 11 NONAME
-	_ZN26CpCategorySettingFormModelD2Ev @ 12 NONAME
-	_ZN29CpCategorySettingFormItemData10initializeER16CpItemDataHelper @ 13 NONAME
-	_ZN29CpCategorySettingFormItemData11qt_metacallEN11QMetaObject4CallEiPPv @ 14 NONAME
-	_ZN29CpCategorySettingFormItemData11qt_metacastEPKc @ 15 NONAME
-	_ZN29CpCategorySettingFormItemData16staticMetaObjectE @ 16 NONAME DATA 16
-	_ZN29CpCategorySettingFormItemData19getStaticMetaObjectEv @ 17 NONAME
-	_ZN29CpCategorySettingFormItemData25afterLoadingConfigPluginsER16CpItemDataHelper @ 18 NONAME
-	_ZN29CpCategorySettingFormItemData26beforeLoadingConfigPluginsER16CpItemDataHelper @ 19 NONAME
-	_ZN29CpCategorySettingFormItemDataC1EN19HbDataFormModelItem12DataItemTypeERK7QStringS4_PKS0_ @ 20 NONAME
-	_ZN29CpCategorySettingFormItemDataC1ERK7QStringPK19HbDataFormModelItem @ 21 NONAME
-	_ZN29CpCategorySettingFormItemDataC2EN19HbDataFormModelItem12DataItemTypeERK7QStringS4_PKS0_ @ 22 NONAME
-	_ZN29CpCategorySettingFormItemDataC2ERK7QStringPK19HbDataFormModelItem @ 23 NONAME
-	_ZN29CpCategorySettingFormItemDataD0Ev @ 24 NONAME
-	_ZN29CpCategorySettingFormItemDataD1Ev @ 25 NONAME
-	_ZN29CpCategorySettingFormItemDataD2Ev @ 26 NONAME
-	_ZNK26CpCategorySettingFormModel10metaObjectEv @ 27 NONAME
-	_ZNK29CpCategorySettingFormItemData10metaObjectEv @ 28 NONAME
-	_ZTI26CpCategorySettingFormModel @ 29 NONAME
-	_ZTI29CpCategorySettingFormItemData @ 30 NONAME
-	_ZTV26CpCategorySettingFormModel @ 31 NONAME
-	_ZTV29CpCategorySettingFormItemData @ 32 NONAME
-	_ZThn8_N29CpCategorySettingFormItemDataD0Ev @ 33 NONAME
-	_ZThn8_N29CpCategorySettingFormItemDataD1Ev @ 34 NONAME
+	_Z22createCpPluginItemDataP27CpCreatePluginItemDataEvent @ 1 NONAME
+	_ZN14CpTaskExecutor11qt_metacallEN11QMetaObject4CallEiPPv @ 2 NONAME
+	_ZN14CpTaskExecutor11qt_metacastEPKc @ 3 NONAME
+	_ZN14CpTaskExecutor11removeTasksEv @ 4 NONAME
+	_ZN14CpTaskExecutor14globalInstanceEv @ 5 NONAME
+	_ZN14CpTaskExecutor16staticMetaObjectE @ 6 NONAME DATA 16
+	_ZN14CpTaskExecutor19getStaticMetaObjectEv @ 7 NONAME
+	_ZN14CpTaskExecutor21destroyGlobalInstanceEv @ 8 NONAME
+	_ZN14CpTaskExecutor3runEv @ 9 NONAME
+	_ZN14CpTaskExecutor4stopEv @ 10 NONAME
+	_ZN14CpTaskExecutor7runTaskEP6CpTaskb @ 11 NONAME
+	_ZN14CpTaskExecutor7toFrontEP6CpTask @ 12 NONAME
+	_ZN14CpTaskExecutorC1EP7QObject @ 13 NONAME
+	_ZN14CpTaskExecutorC2EP7QObject @ 14 NONAME
+	_ZN14CpTaskExecutorD0Ev @ 15 NONAME
+	_ZN14CpTaskExecutorD1Ev @ 16 NONAME
+	_ZN14CpTaskExecutorD2Ev @ 17 NONAME
+	_ZN26CpCategorySettingFormModel10initializeER16CpItemDataHelper @ 18 NONAME
+	_ZN26CpCategorySettingFormModel11qt_metacallEN11QMetaObject4CallEiPPv @ 19 NONAME
+	_ZN26CpCategorySettingFormModel11qt_metacastEPKc @ 20 NONAME
+	_ZN26CpCategorySettingFormModel16staticMetaObjectE @ 21 NONAME DATA 16
+	_ZN26CpCategorySettingFormModel19getStaticMetaObjectEv @ 22 NONAME
+	_ZN26CpCategorySettingFormModel25afterLoadingConfigPluginsER16CpItemDataHelper @ 23 NONAME
+	_ZN26CpCategorySettingFormModel26beforeLoadingConfigPluginsER16CpItemDataHelper @ 24 NONAME
+	_ZN26CpCategorySettingFormModelC1ERK7QString @ 25 NONAME
+	_ZN26CpCategorySettingFormModelC2ERK7QString @ 26 NONAME
+	_ZN26CpCategorySettingFormModelD0Ev @ 27 NONAME
+	_ZN26CpCategorySettingFormModelD1Ev @ 28 NONAME
+	_ZN26CpCategorySettingFormModelD2Ev @ 29 NONAME
+	_ZN29CpCategorySettingFormItemData10initializeER16CpItemDataHelper @ 30 NONAME
+	_ZN29CpCategorySettingFormItemData11qt_metacallEN11QMetaObject4CallEiPPv @ 31 NONAME
+	_ZN29CpCategorySettingFormItemData11qt_metacastEPKc @ 32 NONAME
+	_ZN29CpCategorySettingFormItemData16staticMetaObjectE @ 33 NONAME DATA 16
+	_ZN29CpCategorySettingFormItemData19getStaticMetaObjectEv @ 34 NONAME
+	_ZN29CpCategorySettingFormItemData25afterLoadingConfigPluginsER16CpItemDataHelper @ 35 NONAME
+	_ZN29CpCategorySettingFormItemData26beforeLoadingConfigPluginsER16CpItemDataHelper @ 36 NONAME
+	_ZN29CpCategorySettingFormItemDataC1EN19HbDataFormModelItem12DataItemTypeERK7QStringS4_PKS0_ @ 37 NONAME
+	_ZN29CpCategorySettingFormItemDataC1ERK7QStringPK19HbDataFormModelItem @ 38 NONAME
+	_ZN29CpCategorySettingFormItemDataC2EN19HbDataFormModelItem12DataItemTypeERK7QStringS4_PKS0_ @ 39 NONAME
+	_ZN29CpCategorySettingFormItemDataC2ERK7QStringPK19HbDataFormModelItem @ 40 NONAME
+	_ZN29CpCategorySettingFormItemDataD0Ev @ 41 NONAME
+	_ZN29CpCategorySettingFormItemDataD1Ev @ 42 NONAME
+	_ZN29CpCategorySettingFormItemDataD2Ev @ 43 NONAME
+	_ZNK14CpTaskExecutor10metaObjectEv @ 44 NONAME
+	_ZNK26CpCategorySettingFormModel10metaObjectEv @ 45 NONAME
+	_ZNK29CpCategorySettingFormItemData10metaObjectEv @ 46 NONAME
+	_ZTI14CpTaskExecutor @ 47 NONAME
+	_ZTI26CpCategorySettingFormModel @ 48 NONAME
+	_ZTI29CpCategorySettingFormItemData @ 49 NONAME
+	_ZTV14CpTaskExecutor @ 50 NONAME
+	_ZTV26CpCategorySettingFormModel @ 51 NONAME
+	_ZTV29CpCategorySettingFormItemData @ 52 NONAME
+	_ZThn8_N29CpCategorySettingFormItemDataD0Ev @ 53 NONAME
+	_ZThn8_N29CpCategorySettingFormItemDataD1Ev @ 54 NONAME
 
--- a/controlpanelui/src/eabi/cpprofilewrapperu.def	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/eabi/cpprofilewrapperu.def	Fri May 14 13:21:08 2010 +0800
@@ -11,38 +11,38 @@
 	_ZN14CpProfileModel14setOffLineModeEb @ 10 NONAME
 	_ZN14CpProfileModel14setSilenceModeEb @ 11 NONAME
 	_ZN14CpProfileModel15activateProfileEi @ 12 NONAME
-	_ZN14CpProfileModel15activeProfileIdEv @ 13 NONAME
-	_ZN14CpProfileModel15profileSettingsEiR17CpProfileSettings @ 14 NONAME
-	_ZN14CpProfileModel15setMasterVolumeEi @ 15 NONAME
-	_ZN14CpProfileModel15setMessageVibraEib @ 16 NONAME
-	_ZN14CpProfileModel15setReminderToneEiRK7QString @ 17 NONAME
-	_ZN14CpProfileModel16setReminderVibraEib @ 18 NONAME
-	_ZN14CpProfileModel16staticMetaObjectE @ 19 NONAME DATA 16
-	_ZN14CpProfileModel17setRingAlertVibraEib @ 20 NONAME
-	_ZN14CpProfileModel18setProfileSettingsEiR17CpProfileSettings @ 21 NONAME
-	_ZN14CpProfileModel19getStaticMetaObjectEv @ 22 NONAME
-	_ZN14CpProfileModel19setNotificationToneEib @ 23 NONAME
-	_ZN14CpProfileModel20setNotificationVibraEib @ 24 NONAME
-	_ZN14CpProfileModel21setKeyTouchScreenToneEii @ 25 NONAME
-	_ZN14CpProfileModel22setKeyTouchScreenVibraEii @ 26 NONAME
-	_ZN14CpProfileModelC1EP7QObject @ 27 NONAME
-	_ZN14CpProfileModelC2EP7QObject @ 28 NONAME
-	_ZN14CpProfileModelD0Ev @ 29 NONAME
-	_ZN14CpProfileModelD1Ev @ 30 NONAME
-	_ZN14CpProfileModelD2Ev @ 31 NONAME
-	_ZNK14CpProfileModel10emailVibraEi @ 32 NONAME
-	_ZNK14CpProfileModel10metaObjectEv @ 33 NONAME
-	_ZNK14CpProfileModel11masterVibraEv @ 34 NONAME
-	_ZNK14CpProfileModel11messageToneEi @ 35 NONAME
+	_ZN14CpProfileModel15profileSettingsEiR17CpProfileSettings @ 13 NONAME
+	_ZN14CpProfileModel15setMasterVolumeEi @ 14 NONAME
+	_ZN14CpProfileModel15setMessageVibraEib @ 15 NONAME
+	_ZN14CpProfileModel15setReminderToneEiRK7QString @ 16 NONAME
+	_ZN14CpProfileModel16setReminderVibraEib @ 17 NONAME
+	_ZN14CpProfileModel16staticMetaObjectE @ 18 NONAME DATA 16
+	_ZN14CpProfileModel17setRingAlertVibraEib @ 19 NONAME
+	_ZN14CpProfileModel18setProfileSettingsEiR17CpProfileSettings @ 20 NONAME
+	_ZN14CpProfileModel19getStaticMetaObjectEv @ 21 NONAME
+	_ZN14CpProfileModel19setNotificationToneEib @ 22 NONAME
+	_ZN14CpProfileModel20setNotificationVibraEib @ 23 NONAME
+	_ZN14CpProfileModel21setKeyTouchScreenToneEii @ 24 NONAME
+	_ZN14CpProfileModel22setKeyTouchScreenVibraEii @ 25 NONAME
+	_ZN14CpProfileModelC1EP7QObject @ 26 NONAME
+	_ZN14CpProfileModelC2EP7QObject @ 27 NONAME
+	_ZN14CpProfileModelD0Ev @ 28 NONAME
+	_ZN14CpProfileModelD1Ev @ 29 NONAME
+	_ZN14CpProfileModelD2Ev @ 30 NONAME
+	_ZNK14CpProfileModel10emailVibraEi @ 31 NONAME
+	_ZNK14CpProfileModel10metaObjectEv @ 32 NONAME
+	_ZNK14CpProfileModel11masterVibraEv @ 33 NONAME
+	_ZNK14CpProfileModel11messageToneEi @ 34 NONAME
+	_ZNK14CpProfileModel11offLineModeEv @ 35 NONAME
 	_ZNK14CpProfileModel11profileNameEi @ 36 NONAME
-	_ZNK14CpProfileModel12masterVolumeEv @ 37 NONAME
-	_ZNK14CpProfileModel12messageVibraEi @ 38 NONAME
-	_ZNK14CpProfileModel12profileNamesEv @ 39 NONAME
-	_ZNK14CpProfileModel12reminderToneEi @ 40 NONAME
-	_ZNK14CpProfileModel13isOffLineModeEv @ 41 NONAME
-	_ZNK14CpProfileModel13isSilenceModeEv @ 42 NONAME
-	_ZNK14CpProfileModel13reminderVibraEi @ 43 NONAME
-	_ZNK14CpProfileModel14ringAlertVibraEi @ 44 NONAME
+	_ZNK14CpProfileModel11silenceModeEv @ 37 NONAME
+	_ZNK14CpProfileModel12masterVolumeEv @ 38 NONAME
+	_ZNK14CpProfileModel12messageVibraEi @ 39 NONAME
+	_ZNK14CpProfileModel12profileNamesEv @ 40 NONAME
+	_ZNK14CpProfileModel12reminderToneEi @ 41 NONAME
+	_ZNK14CpProfileModel13reminderVibraEi @ 42 NONAME
+	_ZNK14CpProfileModel14ringAlertVibraEi @ 43 NONAME
+	_ZNK14CpProfileModel15activeProfileIdEv @ 44 NONAME
 	_ZNK14CpProfileModel16notificationToneEi @ 45 NONAME
 	_ZNK14CpProfileModel17notificationVibraEi @ 46 NONAME
 	_ZNK14CpProfileModel18keyTouchScreenToneEi @ 47 NONAME
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/eabi/cpringtoneviewu.def	Fri May 14 13:21:08 2010 +0800
@@ -0,0 +1,24 @@
+EXPORTS
+	_ZN14CpRingToneView11handleErrorEiRK7QString @ 1 NONAME
+	_ZN14CpRingToneView11qt_metacallEN11QMetaObject4CallEiPPv @ 2 NONAME
+	_ZN14CpRingToneView11qt_metacastEPKc @ 3 NONAME
+	_ZN14CpRingToneView14onTypeSelectedEP16HbListWidgetItem @ 4 NONAME
+	_ZN14CpRingToneView16staticMetaObjectE @ 5 NONAME DATA 16
+	_ZN14CpRingToneView18launchMediaFetcherERK7QStringS2_ @ 6 NONAME
+	_ZN14CpRingToneView19getStaticMetaObjectEv @ 7 NONAME
+	_ZN14CpRingToneView5selOKERK7QString @ 8 NONAME
+	_ZN14CpRingToneView8handleOkERK8QVariant @ 9 NONAME
+	_ZN14CpRingToneView8selErrorEiRK7QString @ 10 NONAME
+	_ZN14CpRingToneViewC1EP13QGraphicsItem @ 11 NONAME
+	_ZN14CpRingToneViewC2EP13QGraphicsItem @ 12 NONAME
+	_ZN14CpRingToneViewD0Ev @ 13 NONAME
+	_ZN14CpRingToneViewD1Ev @ 14 NONAME
+	_ZN14CpRingToneViewD2Ev @ 15 NONAME
+	_ZNK14CpRingToneView10metaObjectEv @ 16 NONAME
+	_ZTI14CpRingToneView @ 17 NONAME
+	_ZTV14CpRingToneView @ 18 NONAME
+	_ZThn16_N14CpRingToneViewD0Ev @ 19 NONAME
+	_ZThn16_N14CpRingToneViewD1Ev @ 20 NONAME
+	_ZThn8_N14CpRingToneViewD0Ev @ 21 NONAME
+	_ZThn8_N14CpRingToneViewD1Ev @ 22 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/inc/cpevent.h	Fri May 14 13:21:08 2010 +0800
@@ -0,0 +1,60 @@
+/*
+* 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 CPEVENT_H
+#define CPEVENT_H
+
+#include <cpcategoryglobal.h>
+#include <QString>
+#include <QEvent>
+
+class CpPluginInterface;
+class HbDataFormModelItem;
+class CpItemDataHelper;
+
+class CpCreatePluginItemDataEvent : public QEvent
+{
+public:
+    enum { CreatePluginItemData = QEvent::User + 1 };
+    
+    CpCreatePluginItemDataEvent() : 
+        QEvent ( static_cast<QEvent::Type>(CreatePluginItemData) ),
+        mPluginInterface(0),
+        mParentItem(0),
+        mItemDataHelper(0),
+        mItemPosition(-1)
+    {   
+    }
+    
+    CpPluginInterface *mPluginInterface;
+    
+    HbDataFormModelItem *mParentItem;
+    int mItemPosition;
+    
+    CpItemDataHelper *mItemDataHelper;  
+    
+    QString mDisplayName;
+    QString mDescription;
+    QString mPluginFile;
+};
+
+CP_CATEGORY_EXPORT int createCpPluginItemData(CpCreatePluginItemDataEvent *event);
+
+#endif //CPEVENT_H
+
+//End of File
+
--- a/controlpanelui/src/inc/cpprofilemodel.h	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/inc/cpprofilemodel.h	Fri May 14 13:21:08 2010 +0800
@@ -63,9 +63,8 @@
     QString profileName(int profileId)const;
     QStringList profileNames()const;
     int activateProfile(int profileId);
-    int activeProfileId();
-    int setEditingProfile(int profileId); 
-    int profileSettings(int profileId, CpProfileSettings& profileSettings);
+    int activeProfileId() const;
+    void profileSettings(int profileId, CpProfileSettings& profileSettings);
     int setProfileSettings(int profileId, CpProfileSettings& profileSettings );
     
     /*!
@@ -84,10 +83,10 @@
     bool masterVibra() const;
     void setMasterVibra(bool isVibra);
         
-    bool isSilenceMode() const;
+    bool silenceMode() const;
     void setSilenceMode(bool isSlience);
     
-    bool isOffLineMode() const;    
+    bool offLineMode() const;    
     void setOffLineMode(bool isOffLine);
     
     /*!
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/inc/cpringtoneview.h	Fri May 14 13:21:08 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:
+ *
+ */
+#ifndef CPRINGTONEVIEW_H
+#define CPRINGTONEVIEW_H
+
+#include "ringtoneviewdef.h"
+#include <cpbasesettingview.h>
+#include <xqappmgr.h>
+
+class HbListWidget;
+class HbListWidgetItem;
+class XQAiwRequest;
+
+class CPRINGTONEVIEW_EXPORT CpRingToneView : public CpBaseSettingView
+{
+    Q_OBJECT
+public:
+   explicit CpRingToneView( QGraphicsItem *parent = 0 );
+   ~CpRingToneView();
+signals:
+   void selOK( const QString &strFname);
+   void selError(  int errorCode, const QString& errorMessage );
+
+private slots:
+    void onTypeSelected( HbListWidgetItem *item );
+    void handleOk(const QVariant &result);
+    void handleError(int errorCode, const QString& errorMessage);
+
+private:
+    HbListWidget* mToneTypeList;
+    XQAiwRequest* mReq;
+    XQApplicationManager mAppMgr;
+
+private:
+    void launchMediaFetcher( const QString &strService, const QString &strItface );
+};
+
+#endif // CPRINGTONEVIEW_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/inc/cptaskexecutor.h	Fri May 14 13:21:08 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:  
+*
+*/
+#ifndef CPTASKEXECUTOR_H
+#define CPTASKEXECUTOR_H
+
+#include <cpcategoryglobal.h>
+#include <QThread>
+#include <QList>
+#include <QMutex>
+
+class CpTask
+{
+public:
+    explicit CpTask(bool autoDelete = true) 
+    : mAutoDelete(autoDelete)
+    {
+    }
+
+    virtual ~CpTask()
+    {
+    }
+
+    bool autoDelete() const 
+    {
+        return mAutoDelete;
+    }
+
+    virtual void execute(volatile bool *stopped)
+    {
+        Q_UNUSED(stopped);
+    }
+
+    virtual void complete(volatile bool *stopped)
+    {
+        Q_UNUSED(stopped);
+    }
+
+private:
+    bool mAutoDelete;
+};
+
+class CP_CATEGORY_EXPORT CpTaskExecutor : public QThread
+{
+    Q_OBJECT
+public:
+    explicit CpTaskExecutor(QObject *parent = 0);
+
+    virtual ~CpTaskExecutor();
+    
+    /*
+    return the gloabl instance
+    */
+    static CpTaskExecutor *globalInstance();
+    
+    /*
+    destroy the global instance 
+    */
+    static void destroyGlobalInstance();
+
+    /*
+    add the task to running queue
+    @task the task
+    @append ture -- append to tail false -- preappend to head
+    */
+
+    bool runTask(CpTask *task,bool append = false);
+
+    /*
+    stop the thread and remove all not running tasks
+    */
+    void stop();
+
+    /*
+    move a task to front of the queue
+    */
+    bool toFront(CpTask *task);
+
+    /*
+    move a task to front of the queue
+    */
+    template <typename Predicate> bool toFront(Predicate pred);
+
+protected:
+    /*
+    From QThread, run tasks
+    */
+    virtual void run();
+private:
+    /*
+    remove not running tasks
+    */
+    void removeTasks();
+private:
+    QList<CpTask*> mTasks;
+    QMutex mMutex;
+    volatile bool mStopped;
+};
+
+
+template<typename Predicate>
+bool CpTaskExecutor::toFront(Predicate pred)
+{
+    QMutexLocker locker(&mMutex);
+    
+    QList<CpTask*>::iterator workIterator = mTasks.begin();
+    QList<CpTask*>::iterator endIterator(mTasks.end());
+
+    for(;workIterator != endIterator;++workIterator)
+    {
+        if (pred(*workIterator)) {
+            break;
+        }
+    }
+
+    if (workIterator == endIterator) {
+        return false;
+    }
+
+    CpTask *task = *workIterator;
+    mTasks.erase(workIterator);
+    mTasks.insert(0,task);
+
+    return true;
+}
+
+#endif  //CPTASKECECUTOR_H
+
+//End of File
--- a/controlpanelui/src/inc/cpuids.h	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/inc/cpuids.h	Fri May 14 13:21:08 2010 +0800
@@ -46,9 +46,9 @@
 #define QUID_CPVOLUME  0X20028737
 #define QUID_RINGTONE 0X20028738
 #define QUID_PROFILEACTIVATOR  0X20028739
-#define QUID_RESERVED7  0X2002873A
-#define QUID_RESERVED8  0X2002873B
-#define QUID_RESERVED9  0X2002873C
+#define QUID_RINGTONESELVIEW  0X2002873A
+#define QUID_CPPLUGIN_ABOUT  0X2002873B
+#define QUID_CPPLUGIN_LANGUAGE  0X2002873C
 #define QUID_RESERVED10 0X2002873D
 #define QUID_RESERVED11 0X2002873E
 #define QUID_CPSERVICEPROVIDER 0X2002873F
--- a/controlpanelui/src/inc/inc.pri	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/inc/inc.pri	Fri May 14 13:21:08 2010 +0800
@@ -16,6 +16,8 @@
 
 INTERNAL_HEADERS += $$PWD/cpcategorysettingformmodel.h \
                     $$PWD/cpcategorysettingformitemdata.h \
-                    $$PWD/cpcategoryglobal.h 
+                    $$PWD/cpcategoryglobal.h \
+                    $$PWD/cptaskexecutor.h \
+                    $$PWD/cpevent.h
                     
 HEADERS += $$INTERNAL_HEADERS
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/inc/ringtoneviewdef.h	Fri May 14 13:21:08 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:  
+*
+*/
+
+#ifndef RINGTONEVIEWDEF_H
+#define RINGTONEVIEWDEF_H
+
+#include <QtGlobal>
+
+#ifdef CPRINGTONEVIEW_LIBRARY
+#  define CPRINGTONEVIEW_EXPORT Q_DECL_EXPORT
+#else
+#  define CPRINGTONEVIEW_EXPORT Q_DECL_IMPORT
+#endif
+
+#endif	//RINGTONEVIEWDEF_H
--- a/controlpanelui/src/seccodeui/seccodeui.pri	Mon May 03 12:32:06 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +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: seccodeui source files
-#
-
-# Input
-HEADERS += src/seccodesettings.h \
-           src/seccodeuiutility.h \
-           src/seccodeedit.h \
-           src/seccodeeditdataformviewitem.h \
-           src/seccodemodel.h \
-           src/seccodemodel_p.h
-
-
-SOURCES += src/seccodesettings.cpp \
-           src/seccodeuiutility.cpp \
-           src/seccodeedit.cpp \
-           src/seccodeeditdataformviewitem.cpp \
-           src/seccodemodel.cpp 
-           
-symbian : {
-    SOURCES += src/seccodemodel_symbian.cpp
-}
-
-win32 : {
-    SOURCES += src/seccodemodel_win.cpp
-}
\ No newline at end of file
--- a/controlpanelui/src/seccodeui/seccodeui.pro	Mon May 03 12:32:06 2010 +0300
+++ /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: 
-#
-
-TEMPLATE = lib
-TARGET = seccodeui
-
-CONFIG += hb
-
-DEFINES += BUILD_SECCODEUI
-
-MOC_DIR = moc
-OBJECT_DIR = obj
-RCC_DIR = rcc
-
-include ( seccodeui.pri )
-
-CONFIG(debug, debug|release) {
-    SUBDIRPART = debug
-} else {
-    SUBDIRPART = release
-}
-
-win32: { 
-    DESTDIR = C:/ControlPanel/$$SUBDIRPART/bin
-    OBJECTS_DIR = $$PWD/../$$SUBDIRPART/tmp/$$TARGET
-}
-
-# Add the output dirs to the link path too
-LIBS += -L$$DESTDIR
-
-symbian: {
-    INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE
-    INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
-    INCLUDEPATH += $$MOC_DIR
-    TARGET.CAPABILITY = ALL -TCB
-    TARGET.EPOCALLOWDLLDATA = 1
-    TARGET.UID3 = 0x20028733
-}
-
--- a/controlpanelui/src/seccodeui/src/seccodeedit.cpp	Mon May 03 12:32:06 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +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:  
-*
-*/
-
-#include "seccodeedit.h"
-#include <QGraphicsSceneMouseEvent>
-
-SecCodeEdit::SecCodeEdit(const QString &text, QGraphicsItem *parent /*= 0*/)
-: HbLineEdit(text,parent)
-{
-}
-
-SecCodeEdit::~SecCodeEdit()
-{
-}
-
-void SecCodeEdit::mousePressEvent(QGraphicsSceneMouseEvent *event)
-{
-    if (event->button() != Qt::LeftButton) {
-        event->ignore();
-        return;
-    }
-
-	if (rect().contains(event->pos())) {
-        emit clicked();
-        event->accept();
-    }
-	else {
-        event->ignore();
-    }
-}
--- a/controlpanelui/src/seccodeui/src/seccodeedit.h	Mon May 03 12:32:06 2010 +0300
+++ /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 SECCODEEDIT_H
-#define SECCODEEDIT_H
-
-#include <hblineedit.h>
-
-class SecCodeEdit : public HbLineEdit
-{
-	Q_OBJECT
-public:
-    explicit SecCodeEdit(const QString &text, QGraphicsItem *parent = 0);
-    virtual ~SecCodeEdit();
-	void mousePressEvent(QGraphicsSceneMouseEvent *event);
-signals:
-	void clicked();
-};
-
-#endif //SECCODEEDIT_H
--- a/controlpanelui/src/seccodeui/src/seccodeeditdataformviewitem.cpp	Mon May 03 12:32:06 2010 +0300
+++ /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:  
-*
-*/
-#include "seccodeeditdataformviewitem.h"
-#include "seccodeedit.h"
-
-SecCodeEditDataFormViewItem::SecCodeEditDataFormViewItem(QGraphicsItem *parent )
-: HbDataFormViewItem(parent)
-{
-}
-
-SecCodeEditDataFormViewItem::~SecCodeEditDataFormViewItem()
-{
-}
-
-HbAbstractViewItem* SecCodeEditDataFormViewItem::createItem()
-{
-	return new SecCodeEditDataFormViewItem(*this);
-}
-
-bool SecCodeEditDataFormViewItem::canSetModelIndex(const QModelIndex &index) const
-{
-	int type = index.data(HbDataFormModelItem::ItemTypeRole).toInt();
-	return type == SecCodeEditItem;
-}
-
-HbWidget *SecCodeEditDataFormViewItem::createCustomWidget()
-{
-    int type = modelIndex().data(HbDataFormModelItem::ItemTypeRole).toInt();
-
-	if (type == SecCodeEditItem) {
-		SecCodeEdit *edit = new SecCodeEdit("1234");
-		edit->setEchoMode(HbLineEdit::Password );
-		edit->setReadOnly(true);
-		return edit;
-	}
-
-	return 0;
-}
--- a/controlpanelui/src/seccodeui/src/seccodeeditdataformviewitem.h	Mon May 03 12:32:06 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +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 SECCODEEDITDATAFORMVIEWITEM_H
-#define SECCODEEDITDATAFORMVIEWITEM_H
-
-#include "seccodeuiglobal.h"
-#include <hbdataformviewitem.h>
-#include <hbdataformmodelitem.h>
-
-class SECCODEUI_EXPORT SecCodeEditDataFormViewItem : public HbDataFormViewItem
-{
-	Q_OBJECT
-public:
-	enum { SecCodeEditItem = HbDataFormModelItem::CustomItemBase + 1 };
-
-    explicit SecCodeEditDataFormViewItem(QGraphicsItem *parent = 0);
-    virtual ~SecCodeEditDataFormViewItem();
-    virtual HbAbstractViewItem* createItem();
-	virtual bool canSetModelIndex(const QModelIndex &index) const;
-protected:
-    virtual HbWidget* createCustomWidget();
-};
-
-#endif //SECCODEEDITDATAFORMVIEWITEM_H
--- a/controlpanelui/src/seccodeui/src/seccodemodel.cpp	Mon May 03 12:32:06 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +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:  
-*
-*/
-
-#include "seccodemodel.h"
-#include "seccodemodel_p.h"
-
-SecCodeModel::SecCodeModel(QObject * parent /*= 0*/)
-: QObject(parent),d_ptr(new SecCodeModelPrivate())
-{
-}
-
-SecCodeModel::~SecCodeModel()
-{
-	delete d_ptr;
-}
-
-bool SecCodeModel::simCardRemoved()
-{
-//    return d_ptr->simCardRemoved();
-    return false;
-}
-
-
-int SecCodeModel::pinRemainingAttempts()
-{
- //   return d_ptr->pinRemainingAttempts();
-    return 3;
-}
-
-int SecCodeModel::pin2RemainingAttempts()
-{
-//    return d_ptr->pin2RemainingAttempts();
-    return 3;
-}
-
-int SecCodeModel::changePinCode(const QString &oldCode,const QString &newCode,const QString &verifyCode)
-{
-	Q_UNUSED(oldCode);
-	Q_UNUSED(newCode);
-	Q_UNUSED(verifyCode);
-    return 0;
-}
-
-int SecCodeModel::changePin2Code(const QString &oldCode,const QString &newCode,const QString &verifyCode)
-{
-	Q_UNUSED(oldCode);
-	Q_UNUSED(newCode);
-	Q_UNUSED(verifyCode);
-
-    return 0;
-}
--- a/controlpanelui/src/seccodeui/src/seccodemodel.h	Mon May 03 12:32:06 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +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 SECCODEMODEL_H
-#define SECCODEMODEL_H
-
-#include <QObject>
-
-class SecCodeModelPrivate;
-class SecCodeModel : public QObject
-{
-    Q_OBJECT
-public:
-	SecCodeModel(QObject * parent = 0);
-	virtual ~SecCodeModel();
-	
-	bool simCardRemoved();
-	
-	int pinRemainingAttempts();
-	
-	int changePinCode(const QString &oldCode,const QString &newCode,const QString &verifyCode);
-	
-	int pin2RemainingAttempts();
-	
-    int changePin2Code(const QString &oldCode,const QString &newCode,const QString &verifyCode);
-	
-private:
-	SecCodeModelPrivate *d_ptr;
-};
-
-
-#endif //SECCODEMODEL_H
-
--- a/controlpanelui/src/seccodeui/src/seccodemodel_p.h	Mon May 03 12:32:06 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +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 SECCODEMODEL_P_H
-#define SECCODEMODEL_P_H
-
-class SecCodeModelPrivate
-{
-public:
-    
-};
-
-#endif //SECCODEMODEL_P_H
--- a/controlpanelui/src/seccodeui/src/seccodemodel_symbian.cpp	Mon May 03 12:32:06 2010 +0300
+++ /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:  
-*
-*/
-
-#include "seccodemodel_p.h"
-#include "seccodeuiglobal.h"
-#include <e32err.h>
-#include <exterror.h>
-
-static int symbianErrtoQtErr(int err)
-{
-    switch (err) {
-    case KErrNone:
-        return SecCode::ErrNone;
-    case KErrGsm0707IncorrectPassword:
-        return SecCode::ErrGsm0707IncorrectPassword;
-    case KErrAccessDenied:
-        return SecCode::ErrAccessDenied;
-    case KErrGsmSSPasswordAttemptsViolation:
-        return SecCode::ErrGsmSSPasswordAttemptsViolation;
-    case KErrLocked:
-        return SecCode::ErrLocked;
-    case KErrGsm0707OperationNotAllowed:
-        return SecCode::ErrGsm0707OperationNotAllowed;
-    case KErrGsm0707SIMPuk2Required:
-        return SecCode::ErrGsm0707SIMPuk2Required;
-    case KErrAbort:
-        return SecCode::ErrAbort;
-    default:
-        break;
-    }
-    
-    return err;
-}
-
--- a/controlpanelui/src/seccodeui/src/seccodemodel_win.cpp	Mon May 03 12:32:06 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +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:  
-*
-*/
-
-#include "seccodemodel_p.h"
--- a/controlpanelui/src/seccodeui/src/seccodesettings.cpp	Mon May 03 12:32:06 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,169 +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:  
-*
-*/
-
-#include "seccodesettings.h"
-#include "seccodemodel.h"
-#include "seccodeuiutility.h"
-
-class SecCodeSettingsPrivate
-{
-public:
-    SecCodeSettingsPrivate()
-    {
-        mSecCodeModel = new SecCodeModel();
-    }
-    
-    ~SecCodeSettingsPrivate()
-    {
-        delete mSecCodeModel;
-    }
-    
-    SecCodeModel *mSecCodeModel;
-};
-
-SecCodeSettings::SecCodeSettings(QObject * parent /*= 0*/)
-: QObject(parent), d_ptr(new SecCodeSettingsPrivate())
-{
-
-}
-
-SecCodeSettings::~SecCodeSettings()
-{
-	delete d_ptr;
-}
-
-bool SecCodeSettings::pinCodeRequest() const
-{
-//    return d_ptr->mSecCodeModel->pinCodeRequest();
-    return true;
-}
-
-void SecCodeSettings::setPinCodeRequest(bool on)
-{
-    Q_UNUSED(on);
-}
-
-void SecCodeSettings::changePinCode()
-{
-    if (d_ptr->mSecCodeModel->simCardRemoved()) {
-        SecCodeUiUtility::showErrorMessage(tr("SIM removed."));
-        return;
-    }
-    
-    if (!pinCodeRequest()) {
-        SecCodeUiUtility::showErrorMessage(tr("Set PIN code request ON."));
-        return;
-    }
-    
-    QString title = SecCodeUiUtility::getPinRemainingAttemptsMessage(
-            d_ptr->mSecCodeModel->pinRemainingAttempts());
-    
-    QString oldPassword = SecCodeUiUtility::getPassword(title);
-    if (oldPassword.isEmpty()) {
-        return;
-    }
-    
-    QString newPassword;
-    QString verifyPassword;
-    bool firstTry (true);
-    
-    do {
-        if (firstTry) {
-            firstTry = false;
-        }
-        else {
-            newPassword.clear();
-            verifyPassword.clear();
-            SecCodeUiUtility::showErrorMessage(tr("PIN does not match."));
-        }
-        
-        newPassword = SecCodeUiUtility::getPassword(tr("New PIN:"));
-        if (newPassword.isEmpty()) {
-            return;
-        }
-        
-        verifyPassword = SecCodeUiUtility::getPassword(tr("Verify PIN:"));;
-        if (verifyPassword.isEmpty()) {
-            return;
-        }
-    } while (verifyPassword != newPassword);
-    
-    int err = d_ptr->mSecCodeModel->changePinCode(oldPassword,newPassword,verifyPassword);
-    switch (err) {
-    case SecCode::ErrNone:
-		SecCodeUiUtility::showInformationMessage(tr("Code changed."));
-        break;
-    default:
-        break;
-    }
-}
-
-
-void SecCodeSettings::changePin2Code()
-{
-    if (d_ptr->mSecCodeModel->simCardRemoved()) {
-        SecCodeUiUtility::showErrorMessage(tr("SIM removed."));
-        return;
-    }
-    
-    if (!pinCodeRequest()) {
-        SecCodeUiUtility::showErrorMessage(tr("Set PIN code request ON."));
-        return;
-    }
-    
-    QString title = SecCodeUiUtility::getPin2RemainingAttemptsMessage(
-            d_ptr->mSecCodeModel->pin2RemainingAttempts());
-    
-    QString oldPassword = SecCodeUiUtility::getPassword(title);
-    if (oldPassword.isEmpty()) {
-        return;
-    }
-    
-    QString newPassword;
-    QString verifyPassword;
-    bool firstTry (true);
-    
-    do {
-        if (firstTry) {
-            firstTry = false;
-        }
-        else {
-            newPassword.clear();
-            verifyPassword.clear();
-            SecCodeUiUtility::showErrorMessage(tr("PIN2 does not match."));
-        }
-        
-        newPassword = SecCodeUiUtility::getPassword(tr("New PIN2:"));
-        if (newPassword.isEmpty()) {
-            return;
-        }
-        
-        verifyPassword = SecCodeUiUtility::getPassword(tr("Verify PIN2:"));;
-        if (verifyPassword.isEmpty()) {
-            return;
-        }
-    } while (verifyPassword != newPassword);
-    
-    int err = d_ptr->mSecCodeModel->changePin2Code(oldPassword,newPassword,verifyPassword);
-    switch (err) {
-    case SecCode::ErrNone:
-		SecCodeUiUtility::showInformationMessage(tr("Code changed."));
-        break;
-    default:
-        break;
-    }
-}
--- a/controlpanelui/src/seccodeui/src/seccodesettings.h	Mon May 03 12:32:06 2010 +0300
+++ /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 SECCODESETTINGS_H
-#define SECCODESETTINGS_H
-
-#include <QObject>
-#include "seccodeuiglobal.h"
-
-class SecCodeSettingsPrivate;
-
-class SECCODEUI_EXPORT SecCodeSettings : public QObject
-{
-	Q_OBJECT
-public:
-	explicit SecCodeSettings(QObject *parent = 0);
-	virtual ~SecCodeSettings();
-	
-	bool pinCodeRequest() const;
-	
-	void setPinCodeRequest(bool on);
-	
-	void changePinCode();
-	
-	void changePin2Code();
-	
-	bool deviceLock() const;
-	
-	void setDeviceLock(bool on);
-	
-	void changeLockCode();
-	
-	int autoLockPeriod() const;
-	
-	void setAutoLockPeriod(int period);
-	
-	bool remoteLock() const;
-	
-	void setRemoteLock(bool on,const QString &lockCode);
-	
-private:
-	SecCodeSettingsPrivate *d_ptr;
-};
-
-#endif //SECCODESETTINGS_H
--- a/controlpanelui/src/seccodeui/src/seccodeuiglobal.h	Mon May 03 12:32:06 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +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 SECCODEUIGLOBAL_H
-#define SECCODEUIGLOBAL_H
-
-#include <QtGlobal>
-
-#ifdef BUILD_SECCODEUI
-    #define SECCODEUI_EXPORT Q_DECL_EXPORT
-#else
-    #define SECCODEUI_EXPORT Q_DECL_IMPORT
-#endif
-
-namespace SecCode
-{
-    enum SecCodeErr
-    {
-        ErrNone = 0,
-        ErrGsm0707IncorrectPassword,
-        ErrAccessDenied,
-        ErrGsmSSPasswordAttemptsViolation,
-        ErrLocked,
-        ErrGsm0707OperationNotAllowed,
-        ErrGsm0707SIMPuk2Required,
-        ErrAbort,
-    };
-}
-
-#endif  //SECCODEUIGLOBAL_H
--- a/controlpanelui/src/seccodeui/src/seccodeuiutility.cpp	Mon May 03 12:32:06 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +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:  
-*
-*/
-#include "seccodeuiutility.h"
-#include <QString>
-#include <hbinputdialog.h>
-#include <hbmessagebox.h>
-
-QString SecCodeUiUtility::getPassword(const QString &label,bool *ok /*= 0*/,QGraphicsItem *parent /*= 0*/)
-{
-	HbInputDialog *dlg = new HbInputDialog(parent);
-	dlg->setEchoMode(HbLineEdit::Password);
-    QString result;
-    dlg->setPromptText(label);
-	dlg->setInputMode(HbInputDialog::TextInput);	
-    HbAction* action = dlg->exec();
-    if(action == dlg->secondaryAction()) { //Cancel was pressed
-        if(ok) {
-			*ok = false;
-        }
-    } else { //OK was pressed
-        if(ok) {
-			*ok = true;
-        }
-        result = dlg->value().toString();
-    }
-    delete dlg;
-    return result;
-}
-
-void SecCodeUiUtility::showInformationMessage(const QString &message,QGraphicsItem *parent /*= 0*/ )
-{
-	HbMessageBox::information(message,0,0,parent);
-}
-
-void SecCodeUiUtility::showWarningMessage(const QString &message,QGraphicsItem *parent /*= 0*/)
-{
-	HbMessageBox::warning(message,0,0,parent);
-}
-
-void SecCodeUiUtility::showErrorMessage(const QString &message,QGraphicsItem *parent /*= 0*/)
-{
-	HbMessageBox::information(message,0,0,parent);
-}
-
-QString SecCodeUiUtility::getPinRemainingAttemptsMessage(int remainingAttempts)
-{
-	Q_UNUSED(remainingAttempts);
-
-	return QString("PIN code:");
-}
-
-QString SecCodeUiUtility::getPin2RemainingAttemptsMessage(int remainingAttempts)
-{
-	Q_UNUSED(remainingAttempts);
-
-	return QString("PIN2 code:");
-}
--- a/controlpanelui/src/seccodeui/src/seccodeuiutility.h	Mon May 03 12:32:06 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +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 SECCODEUIUTILITY_H
-#define SECCODEUIUTILITY_H
-
-class QString;
-class QGraphicsItem;
-
-class SecCodeUiUtility
-{
-public:
-    static QString getPassword(const QString &label,bool *ok = 0,QGraphicsItem *parent = 0);
-    static QString getPinRemainingAttemptsMessage(int remainingAttempts);
-    static QString getPin2RemainingAttemptsMessage(int remainingAttempts);
-    static void showInformationMessage(const QString &message, QGraphicsItem *parent = 0);
-    static void showWarningMessage(const QString &message, QGraphicsItem *parent = 0);
-    static void showErrorMessage(const QString &message, QGraphicsItem *parent = 0);
-};
-
-#endif //SECCODEUIUTILITY_H
--- a/controlpanelui/src/src.pro	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/src.pro	Fri May 14 13:21:08 2010 +0800
@@ -15,5 +15,5 @@
 #
 
 TEMPLATE = subdirs
-SUBDIRS = cpprofilewrapper cpcategorymodel cpapplication seccodeui cpplugins
+SUBDIRS = cpprofilewrapper cpcategorymodel cpringtoneview cpapplication cpserviceprovider  tonefetcher cpplugins
 CONFIG += ordered
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/tonefetcher/common.pri	Fri May 14 13:21:08 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: controlpanel project - common qmake settings
+CONFIG += debug_and_release
+
+# On win32 and mac, debug and release libraries are named differently.
+# We must follow the debug and release settings Qt was compiled with:
+# build debug iff Qt built debug, build release iff Qt built release.
+win32|mac:!contains(QT_CONFIG,debug)|!contains(QT_CONFIG,release) { 
+    CONFIG -= debug_and_release \
+        debug \
+        release
+    contains(QT_CONFIG,debug):CONFIG += debug
+    contains(QT_CONFIG,release):CONFIG += release
+}
+CONFIG(debug, debug|release):SUBDIRPART = debug
+else:SUBDIRPART = release
+
+# Add the output dirs to the link path too
+LIBS += -L$$DESTDIR
+MOC_DIR = moc
+OBJECT_DIR = obj
+RCC_DIR = rcc
+
+# For some reason the default include path doesn't include MOC_DIR on symbian
+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
+}
+INCLUDEPATH += $$PWD/inc
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/tonefetcher/inc/tonefetcherutils.cpp	Fri May 14 13:21:08 2010 +0800
@@ -0,0 +1,34 @@
+/*
+ * 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:
+ *     The source file for tone fetcher utilities.
+ *     
+ */
+#include "tonefetcherutils.h"
+#include <QDir>
+#include <QChar>
+
+QString ToneFetcherUtils::normalizeSeperator(const QString &path)
+{
+    QString standardpath( path );
+    QChar c('/');
+    QChar c1('\\');
+    if (standardpath.contains(c, Qt::CaseSensitive)) {
+        standardpath.replace(c, QDir::separator());
+    }
+    if (standardpath.contains(c1, Qt::CaseSensitive)) {
+        standardpath.replace(c1, QDir::separator());
+    }        
+    return standardpath;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/tonefetcher/inc/tonefetcherutils.h	Fri May 14 13:21:08 2010 +0800
@@ -0,0 +1,30 @@
+/*
+ * 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:
+ *     The header file for tone fetcher utilities.
+ *     
+ */
+#ifndef TONEFETCHERUTILS_H
+#define TONEFETCHERUTILS_H
+
+#include <QString>
+
+class ToneFetcherUtils
+{
+public:
+     
+    static QString normalizeSeperator(const QString &path);
+};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/tonefetcher/rom/rom.pri	Fri May 14 13:21:08 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:
+#     Rom exports for tone fetcher
+# 
+
+symbian {
+    TONESERVICEPROVIDER_IBY_DIR = $$section(PWD, ":", 1)
+
+    exists(/epoc32/include/platform_paths.hrh) {
+        BLD_INF_RULES.prj_exports += "$${LITERAL_HASH}include <platform_paths.hrh>"
+    } else {
+        BLD_INF_RULES.prj_exports += "$${LITERAL_HASH}include <domain\osextensions\platform_paths.hrh>"
+    }
+
+    BLD_INF_RULES.prj_exports += "$$TONESERVICEPROVIDER_IBY_DIR/tonefetcher.iby CORE_APP_LAYER_IBY_EXPORT_PATH(tonefetcher.iby)"
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/tonefetcher/rom/tonefetcher.iby	Fri May 14 13:21:08 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: 
+*
+*/
+
+#ifndef __TONEFETCHER_IBY__
+#define __TONEFETCHER_IBY__
+
+#include <bldprivate.hrh>
+
+#define HB_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\tonefetcher.exe                   SHARED_LIB_DIR\tonefetcher.exe
+HB_UPGRADABLE_APP_REG_RSC(tonefetcher)
+S60_APP_RESOURCE(tonefetcher)
+
+
+data=DATAZ_\private\2002BCCA\service_conf.xml  private\2002BCCA\service_conf.xml
+
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/tonefetcher/service_conf.xml	Fri May 14 13:21:08 2010 +0800
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<service>
+  <name>tonefetcher</name>
+  <filepath>No path</filepath>
+  <description>tone service</description>
+  <interface>
+     <name>com.nokia.symbian.IToneFetch</name>
+     <version>1.0</version>
+     <description>Launch a tone selection view</description>
+  </interface>
+</service>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/tonefetcher/src/main.cpp	Fri May 14 13:21:08 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:
+ *     The main function for Tone Fetcher
+ */
+
+#include "tonefetcher.h"
+#include "tonefetchermainwindow.h"
+#include <hbapplication.h>
+
+int main(int argc, char *argv[])
+{
+    HbApplication a(argc, argv);
+    ToneFetcherMainWindow w;   
+    w.show();
+    return a.exec();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/tonefetcher/src/tonefetcher.cpp	Fri May 14 13:21:08 2010 +0800
@@ -0,0 +1,73 @@
+/*
+ * 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:
+ *     The source file for tone fetcher.
+ *     
+ */
+#include "tonefetcher.h"
+#include <hbmainwindow.h>
+#include "tonefetcherview.h"
+#include "tonefetchermainwindow.h"
+#include "tonefetcherutils.h"
+#include <QChar>
+#include <QDir>
+#include <cplogger.h>
+
+ToneFetcher::ToneFetcher(HbMainWindow *mainWindow)
+    : XQServiceProvider(QString("tonefetcher.com.nokia.symbian.IToneFetch"), mainWindow),
+      mMainWindow(mainWindow),
+      mAsyncRequestIndex(-1),
+      mReturnValue(0)
+{
+    //publish tone service
+    publishAll();
+}
+
+ToneFetcher::~ToneFetcher()
+{
+
+}
+
+void ToneFetcher::fetch()
+{
+    mAsyncRequestIndex = setCurrentRequestAsync();    
+    if (mMainWindow) {
+        mMainWindow->show();
+        ToneFetcherView *toneView = new ToneFetcherView(this);
+        if (toneView) {            
+            connect(toneView, SIGNAL(itemSelected(QString)), this, SLOT(setSelectedPath(QString)));
+            mMainWindow->addView(toneView);
+            mMainWindow->setCurrentView(toneView);            
+        } else {
+            CPFW_LOG("ToneFetcher::fetch: ToneFetcherView failed to be created");
+        }
+    }
+}
+
+void ToneFetcher::complete()
+{
+    completeRequest(mAsyncRequestIndex, mReturnValue);    
+}
+
+bool ToneFetcher::isActive()
+{
+    return mAsyncRequestIndex > 0;
+}
+
+void ToneFetcher::setSelectedPath(const QString & tonePath)
+{
+    QString path(ToneFetcherUtils::normalizeSeperator(tonePath));
+    mReturnValue.setValue(path);
+}
+//End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/tonefetcher/src/tonefetcher.h	Fri May 14 13:21:08 2010 +0800
@@ -0,0 +1,53 @@
+/*
+ * 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:
+ *     The header file for tone fetcher.
+ *     
+ */
+#ifndef TONEFETCHER_H
+#define TONEFETCHER_H
+
+#include <xqserviceprovider.h>
+
+class HbMainWindow;
+class ToneFetcher : public XQServiceProvider
+{
+
+    Q_OBJECT
+    
+public:
+    explicit ToneFetcher(HbMainWindow *mainWindow = 0);
+    ~ToneFetcher();
+    /*
+     * return the tone's absolution path to the service requestor.
+     */
+    void complete();
+    /*
+     * currently only one request is allowed.
+     */
+    bool isActive();
+        
+public slots:
+    void fetch();
+    
+private slots:
+    void setSelectedPath(const QString &tonePath);
+
+private:
+    HbMainWindow *mMainWindow;
+    int mAsyncRequestIndex;
+    QVariant mReturnValue;
+};
+
+#endif // TONEFETCHER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/tonefetcher/src/tonefetchermainwindow.cpp	Fri May 14 13:21:08 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:
+ *     The main window function for Tone Fetcher
+ */
+
+#include "tonefetchermainwindow.h"
+#include <hbview.h>
+
+ToneFetcherMainWindow::ToneFetcherMainWindow(QWidget *parent)
+    : HbMainWindow(parent)
+{
+    mToneFetcher = new ToneFetcher(this); 
+   
+}
+
+ToneFetcherMainWindow::~ToneFetcherMainWindow()
+{
+    delete mToneFetcher;
+}
+
+void ToneFetcherMainWindow::quit()
+{
+    connect(mToneFetcher, SIGNAL(returnValueDelivered()), qApp, SLOT(quit()));
+    mToneFetcher->complete();   
+}
+
+//End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/tonefetcher/src/tonefetchermainwindow.h	Fri May 14 13:21:08 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:
+ *     The header file of Tone Fetcher Mainwindow
+ */
+#ifndef TONEFETCHERMAINWINDOW_H
+#define TONEFETCHERMAINWINDOW_H
+
+#include <hbmainwindow.h>
+#include "tonefetcher.h"
+#include <QCoreApplication>
+
+class ToneFetcherMainWindow : public HbMainWindow
+{
+    Q_OBJECT
+    
+public:
+    explicit ToneFetcherMainWindow(QWidget *parent = 0);
+    virtual ~ToneFetcherMainWindow();
+    
+public slots:
+    void quit();
+private:
+    ToneFetcher *mToneFetcher;
+};
+
+#endif // TONEFETCHERWINDOW_H
+//End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/tonefetcher/src/tonefetchermodel.cpp	Fri May 14 13:21:08 2010 +0800
@@ -0,0 +1,96 @@
+/*
+ * 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:
+ *     The source file for tone list model
+ */
+#include "tonefetchermodel.h"
+
+ToneFetcherModel::ToneFetcherModel(QObject *parent) 
+    : QStandardItemModel(parent)
+{
+}
+
+ToneFetcherModel::~ToneFetcherModel()
+{
+}
+
+QVariant ToneFetcherModel::data(const QModelIndex &index, int role) const
+{
+    if (role == Qt::UserRole) {
+        return  mUserDataLst.at(index.row());
+    } else {
+        return QStandardItemModel::data(index, role);
+    }    
+}
+
+void ToneFetcherModel::insertInOrder(QStandardItem *fileName, QStandardItem *filePath, int role)
+{
+    QString name = fileName->text();
+    QString path = filePath->text();
+    int index = this->insertIndex(0, rowCount(), name);
+    
+    mUserDataLst.insert(index, path);
+    QStandardItemModel::insertRow(index, fileName);
+}
+
+QString ToneFetcherModel::path(const QModelIndex &index) const
+{
+    QString str =  data(index, Qt::UserRole).toString();
+    return str;
+}
+
+int ToneFetcherModel::insertIndex(int low, int high,  QString value)
+{
+    if (low == high) {
+        return low;   
+    }
+    int middle = (low + high - 1)/2;
+    QModelIndex lowItemIndex = ((QStandardItemModel *)this)->index(low, 0);
+    QModelIndex highItemIndex = ((QStandardItemModel *)this)->index(high - 1, 0);
+    QModelIndex middleItemIndex = (( QStandardItemModel *)this)->index(middle, 0);
+    QString lowString = data(lowItemIndex).toString();
+    QString highString = data(highItemIndex).toString();
+    QString middleString = data(middleItemIndex).toString();
+    
+    if (value >= highString) {
+        return high;
+    }
+    if (value < lowString) {
+        return low;
+    }
+    high = high - 1;
+    while (low < high) {
+        middle = (low + high)/2;
+        middleItemIndex = ((QStandardItemModel *)this)->index(middle, 0);
+        middleString = data(middleItemIndex).toString();
+        if (value >= middleString) {
+            low = middle + 1;
+        } else {
+            high = middle;
+        }        
+    }
+    return low;
+}
+
+void ToneFetcherModel::refresh()
+{
+    emit layoutChanged();
+}
+
+void ToneFetcherModel::clearAll()
+{
+    mUserDataLst.clear();
+    QStandardItemModel::clear();
+}
+//End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/tonefetcher/src/tonefetchermodel.h	Fri May 14 13:21:08 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:
+ *     The header file for tone list model
+ *     
+ */
+
+#ifndef TONEFETCHERMODEL_H
+#define TONEFETCHERMODEL_H
+
+#include <QStandardItemModel>
+#include <QStringList>
+
+// CLASS DECLARATION
+/**
+ *  This class is used for storing tone list items.
+ *  inherited from QStandardItemModel so that many existing functions could be used.
+ *
+ */
+class ToneFetcherModel : public QStandardItemModel
+{
+public:
+    explicit ToneFetcherModel( QObject *parent );
+    virtual ~ToneFetcherModel();
+    //from QAbstractItemModel
+    QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
+    void insertInOrder(QStandardItem *fileName, QStandardItem *filePath, int role = Qt::DisplayRole);    
+    QString path(const QModelIndex &index) const;
+    void refresh();
+    void clearAll();
+private:
+    /*
+     * binary search (ascendant) for the correct index to insert.
+     * @param low the start of search
+     * @param high the end of search.
+     * @return the correct index
+     */
+    int insertIndex(int low, int high, QString variant);
+    
+    /*
+     * save the absolute path of the tone.
+     */
+    QStringList mUserDataLst;   
+    
+};
+
+#endif /* TONEFETCHERMODEL_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/tonefetcher/src/tonefetcherview.cpp	Fri May 14 13:21:08 2010 +0800
@@ -0,0 +1,98 @@
+/*
+ * 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:
+ *     The source file for tone fetcher view.
+ *     
+ */
+#include "tonefetcherview.h"
+#include "tonefetcherwidget.h"
+#include <hbaction.h>
+#include <hbtoolbar.h>
+#include "tonefetcher.h"
+#include <qcoreapplication.h>
+
+ToneFetcherView::ToneFetcherView(ToneFetcher *service) : mServiceProvider(service)
+{    
+    setTitle(hbTrId("Tone Selection"));//need change according to ps file
+    initToolBar();
+    initMainWidget();
+    QMetaObject::connectSlotsByName(this);
+    
+}
+
+ToneFetcherView::~ToneFetcherView()
+{    
+    removeToolBarAction();
+}
+
+void ToneFetcherView::initMainWidget()
+{
+    mWidget = new ToneFetcherWidget(this);
+    Q_ASSERT(mWidget);
+    setWidget(mWidget);
+    //mWidget->setCurrentToolBarType( ToneServiceWidget::GeneralTone );
+    connect(mWidget, SIGNAL(triggerToolBar(bool)), this, SLOT(enableToolBar(bool)));
+}
+
+void ToneFetcherView::quit()
+{
+    mServiceProvider->complete();
+    connect(mServiceProvider, SIGNAL(returnValueDelivered()), qApp, SLOT(quit()));    
+}
+
+void ToneFetcherView::initToolBar()
+{
+    mToolBarLeftAction = new HbAction(this);
+    mToolBarLeftAction->setObjectName("leftAction");
+    mToolBarLeftAction->setText(hbTrId("Play/Pause"));//need change according to ps file
+    toolBar()->addAction(mToolBarLeftAction);
+    mToolBarLeftAction->setEnabled(false);
+    
+    mToolBarRightAction = new HbAction(this);
+    mToolBarRightAction->setObjectName("rightAction");
+    mToolBarRightAction->setText(hbTrId("Select"));//need change according to ps file
+    mToolBarRightAction->setEnabled(false);    
+    toolBar()->addAction(mToolBarRightAction);
+    
+    toolBar()->setOrientation(Qt::Horizontal);
+    toolBar()->setEnabled(false); 
+    
+}
+
+void ToneFetcherView::on_leftAction_triggered()
+{
+    mWidget->playOrPause();   
+    
+}
+
+void ToneFetcherView::on_rightAction_triggered()
+{
+    QString path(mWidget->getCurrentItemPath());    
+    emit itemSelected(path);
+    quit();
+}
+
+void ToneFetcherView::enableToolBar(bool enable)
+{
+    mToolBarRightAction->setEnabled(enable);
+    mToolBarLeftAction->setEnabled(enable);
+    toolBar()->setEnabled(enable); 
+}
+
+void ToneFetcherView::removeToolBarAction()
+{
+    toolBar()->removeAction(mToolBarRightAction);
+    toolBar()->removeAction(mToolBarLeftAction);
+}
+//End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/tonefetcher/src/tonefetcherview.h	Fri May 14 13:21:08 2010 +0800
@@ -0,0 +1,59 @@
+/*
+ * 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:
+ *     The header file for tone fetcher view.
+ *     
+ */
+
+#ifndef TONEFETCHERVIEW_H
+#define TONEFETCHERVIEW_H
+
+#include <hblistwidget.h>
+#include <hbview.h>
+class ToneFetcherWidget;
+class HbAction;
+class ToneFetcher;
+
+class ToneFetcherView : public HbView
+{
+    Q_OBJECT
+    
+public:
+    explicit ToneFetcherView(ToneFetcher *service);
+    ~ToneFetcherView();
+    void quit();
+private:
+    void initMainWidget();
+    void initToolBar();
+    /*
+     * tool bar actions must to be removed in case the app crashes.
+     */
+    void removeToolBarAction();
+    
+private slots:
+    void on_leftAction_triggered();
+    void on_rightAction_triggered();
+    void enableToolBar(bool enable);
+    
+signals:
+    void itemSelected(const QString &path);    
+    
+private:
+    ToneFetcherWidget *mWidget;
+    ToneFetcher *mServiceProvider; //not own
+    HbAction *mToolBarLeftAction;
+    HbAction *mToolBarRightAction;
+    };
+
+#endif /* TONEFETCHERVIEW_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/tonefetcher/src/tonefetcherwidget.cpp	Fri May 14 13:21:08 2010 +0800
@@ -0,0 +1,220 @@
+/*
+ * 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:
+ *     The source file for tone fetcher widget.
+ *     
+ */
+#include "tonefetcherwidget.h"
+#include "hbabstractviewitem.h"
+#include "hbstyle.h"
+#include "hbabstractitemview.h"
+#include <hblistview.h>
+#include <hbmenu.h>
+#include <hbaction.h>
+#include <QModelIndex>
+#include <QGraphicsLinearLayout>
+#include <QDirModel>
+#include <QTime>
+#include <QFileInfo>
+#include <QString>
+#include <QStandardItemModel>
+#include <XQUtils>
+#include <hblabel.h>
+#include "tonefetcherview.h"
+#include "tonefetchermodel.h"
+#include <hbmessagebox.h>
+
+ToneFetcherWidget::ToneFetcherWidget( ToneFetcherView *serviceView  ) 
+    : HbWidget(this),
+      mLabel(0),
+      mListView(0),
+      mLayout(0),
+      mToneModel(0),
+      mServiceView(serviceView),         
+      mServiceEngine(0)
+      
+{
+    mSelected = false;
+    init();
+    connect(mServiceEngine, SIGNAL(mdeSessionOpened()), 
+            this, SLOT(mdeSessionOpened()));
+    connect(mServiceEngine, SIGNAL(mdeSessionError(int)),
+            this, SLOT(mdeSessionError(int)));
+    connect(mServiceEngine, SIGNAL(queryComplete(QStringList, QStringList)), 
+            this, SLOT(queryComplete(QStringList, QStringList)));
+    connect(mServiceEngine, SIGNAL(queryError(int)), 
+            this, SLOT(queryError(int)));
+    connect(mServiceEngine, 
+           SIGNAL(notifyPreviewEvent(ToneServiceEngine::TPreviewEvent, int)), 
+           this, SLOT(previewEvent(ToneServiceEngine::TPreviewEvent, int)));
+    connect( mServiceEngine, SIGNAL(notifyObjectChanged()),
+            this, SLOT(onObjectChanged()));
+}
+
+ToneFetcherWidget::~ToneFetcherWidget()
+{
+    delete mToneModel;    
+}
+
+void ToneFetcherWidget::on_list_activated(const QModelIndex &index)
+{  
+    QModelIndexList modelIndexList = mListView->selectionModel()->selectedIndexes();
+    
+    //stop previewing when clicking another item.
+    if (mServiceEngine->IsPlaying()) {
+        mServiceEngine->preview(getCurrentItemPath());
+    }
+    /*
+     * when one item is selected, reselecting it will deselect it. selecting another 
+     * will also deselect it, while the other is selected.
+     */
+    if (mSelected){
+        if(mOldSeletedItem != index) {
+            mListView->selectionModel()->select(index, QItemSelectionModel::Select);
+            mOldSeletedItem = index;
+            emit triggerToolBar(true);
+        } else {
+            mListView->selectionModel()->select(index, QItemSelectionModel::Deselect);
+            mSelected = false;
+            emit triggerToolBar(false);
+        }        
+        return;
+    }
+    if (modelIndexList.count() > 0) {
+        for (QModelIndexList::const_iterator it = modelIndexList.begin(); it != modelIndexList.end(); ++it) {
+            if ((*it) == index) {
+                mSelected = true;
+                mOldSeletedItem = index;
+                emit triggerToolBar(true);
+            }            
+        }
+        
+    }   
+    
+}
+
+void ToneFetcherWidget::init()
+{
+    mLayout = new QGraphicsLinearLayout(this);
+    mLayout->setOrientation(Qt::Vertical);
+    setLayout(mLayout);
+
+    mLabel = new HbLabel(this);
+    mLabel->setPlainText(hbTrId("Select tone"));
+    mLayout->addItem(mLabel);
+    
+    mListView = new HbListView(this);
+    mListView->setObjectName("list");
+    mLayout->addItem(mListView);
+    mListView->setSelectionMode(HbAbstractItemView::SingleSelection);
+     
+    mServiceEngine = new ToneFetcherEngine(this);     
+    mToneModel = new ToneFetcherModel(this);
+    addRomFiles();
+    
+    connect(mListView, SIGNAL(activated(QModelIndex)),
+        this, SLOT(on_list_activated(QModelIndex )));
+}
+
+void ToneFetcherWidget::mdeSessionOpened()
+{
+    mServiceEngine->getTone();
+}
+
+void ToneFetcherWidget::queryComplete(const QStringList &nameList, const QStringList &uriList)
+{
+    QStandardItem *fileName = 0;
+    QStandardItem *filePath = 0; 
+    for (int i = 0; i < nameList.size(); ++i) { 
+        QString tr1 = nameList.at(i);
+        tr1 = uriList.at(i);
+        fileName = new QStandardItem(nameList.at(i));
+        filePath = new QStandardItem(uriList.at(i));
+        mToneModel->insertInOrder(fileName, filePath);       
+    }   
+    mLabel->setPlainText(QString::number(mSimpleSoundList.size() + mDigitalSoundList.size() + nameList.size()) + " tones");
+    mListView->setModel(mToneModel);
+    mToneModel->refresh();
+}
+
+void ToneFetcherWidget::queryError(int error)
+{
+    Q_UNUSED(error);
+        
+}
+
+void ToneFetcherWidget::mdeSessionError(int error)
+{
+    Q_UNUSED(error);
+}
+
+QString ToneFetcherWidget::getCurrentItemPath() 
+{
+    QModelIndexList modelIndexList = mListView->selectionModel()->selectedIndexes();
+    if (modelIndexList.count() > 0) {
+        QModelIndex index = modelIndexList.at(0);
+        return mToneModel->data(index, Qt::UserRole).toString();
+    }
+    return QString();
+}
+
+void ToneFetcherWidget::playOrPause() 
+{
+    mServiceEngine->preview(getCurrentItemPath());
+}
+
+void ToneFetcherWidget::previewEvent(ToneFetcherEngine::TPreviewEvent event, int errorId) 
+{
+    Q_UNUSED(errorId);
+    if (event == ToneFetcherEngine::EAudioPreviewComplete) {
+        //reserved
+    } else {
+        HbMessageBox::information(QString(hbTrId("Preview Error")));
+    }
+}
+
+void ToneFetcherWidget::onObjectChanged()
+{
+    mToneModel->clearAll();
+    mDigitalSoundList.clear();
+    mSimpleSoundList.clear();
+    addRomFiles();
+    mServiceEngine->getTone();    
+}
+
+void ToneFetcherWidget::addRomFiles() 
+{
+    QStandardItem *fileName = 0;
+    QStandardItem *filePath = 0;
+    QDir digitalSoundPath(XQUtils::romRootPath() + XQUtils::digitalSoundsPath());
+    mDigitalSoundList = digitalSoundPath.entryInfoList();  
+           
+    QDir simpleSoundPath(XQUtils::romRootPath() + XQUtils::simpleSoundsPath());
+    mSimpleSoundList = simpleSoundPath.entryInfoList();
+
+    for (int i = 0; i < mDigitalSoundList.size(); ++i) {
+        QFileInfo fileInfo = mDigitalSoundList.at(i);        
+        fileName = new QStandardItem(fileInfo.fileName());
+        filePath = new QStandardItem(fileInfo.absoluteFilePath());
+        mToneModel->insertInOrder(fileName, filePath);
+    }
+      
+    for (int i = 0; i < mSimpleSoundList.size(); ++i) {
+        QFileInfo fileInfo = mSimpleSoundList.at(i);       
+        fileName = new QStandardItem(fileInfo.fileName());
+        filePath = new QStandardItem(fileInfo.absoluteFilePath());
+        mToneModel->insertInOrder(fileName, filePath);  
+    }
+}
+//End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/tonefetcher/src/tonefetcherwidget.h	Fri May 14 13:21:08 2010 +0800
@@ -0,0 +1,77 @@
+/*
+ * 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:
+ *     The header file for tone fetcher widget.
+ *     
+ */
+#ifndef TONEFETCHERWIDGET_H
+#define TONEFETCHERWIDGET_H
+
+#include <hbwidget.h>
+#include <QFileInfo>
+#include <QDir>
+#include <QString>
+#include "tonefetcherengine.h"
+
+class QDirModel;
+class HbListView;
+class QGraphicsLinearLayout;
+class QStandardItemModel;
+class HbAbstractViewItem;
+class ToneFetcherView;
+class ToneFetcherModel;
+class HbLabel;
+
+class ToneFetcherWidget : public HbWidget
+{
+    Q_OBJECT
+    
+public:
+    explicit ToneFetcherWidget(ToneFetcherView *serviceView);
+    ~ToneFetcherWidget();
+    QString getCurrentItemPath();
+    void playOrPause();
+    
+signals:
+    void itemClicked(const QString &item);
+    void triggerToolBar(bool enable);
+    
+private slots:
+    void on_list_activated(const QModelIndex &index);    
+    void mdeSessionOpened();
+    void mdeSessionError(int error);
+    void queryComplete(const QStringList &nameList, const QStringList &uriList);
+    void queryError(int error );
+    void previewEvent(ToneFetcherEngine::TPreviewEvent event, int errorId);
+    void onObjectChanged();
+    
+private:
+    void init();
+    void addRomFiles();
+    
+private:
+    HbLabel *mLabel;
+    HbListView *mListView;
+    QGraphicsLinearLayout *mLayout;
+    ToneFetcherModel *mToneModel;   
+    
+    ToneFetcherView *mServiceView;
+    ToneFetcherEngine *mServiceEngine;
+    
+    QFileInfoList mSimpleSoundList;
+    QFileInfoList mDigitalSoundList;    
+    bool mSelected;
+    QModelIndex mOldSeletedItem;
+};
+#endif /* TONEFETCHERWIDGET_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/tonefetcher/tonefetcher.pri	Fri May 14 13:21:08 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: 
+#
+
+HEADERS += src/tonefetchermainwindow.h \
+           src/tonefetcher.h \
+           src/tonefetcherview.h \
+           src/tonefetcherwidget.h \
+           src/tonefetchermodel.h \
+           tonefetcherengine/tonefetcherengine.h \
+           inc/tonefetcherutils.h
+
+SOURCES += src/tonefetchermainwindow.cpp \
+           src/tonefetcher.cpp \
+           src/tonefetcherview.cpp \
+           src/tonefetcherwidget.cpp \
+           src/tonefetchermodel.cpp \
+           tonefetcherengine/tonefetcherengine.cpp \
+           inc/tonefetcherutils.cpp \
+           src/main.cpp 
+
+symbian {
+    HEADERS +=  tonefetcherengine/private/symbian/toneselectionengine_p.h \
+                tonefetcherengine/private/symbian/tonepreviewprivate.h
+
+
+    SOURCES += tonefetcherengine/private/symbian/toneselectionengine_p.cpp \
+               tonefetcherengine/private/symbian/tonepreviewprivate.cpp
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/tonefetcher/tonefetcher.pro	Fri May 14 13:21:08 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 = app
+TARGET = tonefetcher
+CONFIG += hb service
+
+include( common.pri )
+include( tonefetcher.pri )
+LIBS += -lxqservice \
+    -lxqserviceutil \
+    -lcpframework \
+    -lxqutils
+symbian {
+    LIBS += -lcafutils \
+            -lcaf \
+            -lmdeclient \
+            -lcentralrepository \
+            -lProfileEng \
+            -lpeninputClient \
+            -lmediaclientaudio \
+            -lDrmAudioPlayUtility \
+            -lmediaclientvideo \
+            -lDRMCommon \
+            -lDrmRights \
+            -lDrmHelper \
+            -ldrmutility \
+            -lapmime \
+            -lecom
+            TARGET.UID3 = 0x2002BCCA
+            TARGET.CAPABILITY = ALL -TCB
+            BLD_INF_RULES.prj_exports += "./service_conf.xml z:/private/2002BCCA/service_conf.xml"
+}
+symbian {
+    include(rom/rom.pri)
+}
+
+             
+SERVICE.FILE = service_conf.xml
+SERVICE.OPTIONS = embeddable
+#SERVICE.OPTIONS += hidden     
+libFiles.sources = xqservice.dll
+libFiles.path = "!:\sys\bin"
+DEPLOYMENT += libFiles
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/tonefetcher/tonefetcherengine/private/symbian/tonepreviewprivate.cpp	Fri May 14 13:21:08 2010 +0800
@@ -0,0 +1,603 @@
+/*
+ * 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:
+ *     The source file for tone previewing.
+ *     
+ */
+#include "tonepreviewprivate.h"
+#include "tonefetcherutils.h"
+#include <AudioPreference.h>             // KAudioPriorityPreview
+#include <c3dringingtoneinterface.h>     // C3DRingingToneInterface
+#include <ctsydomainpskeys.h>            // for phone call states
+#include <MProfileEngine.h>
+#include <MProfile.h>
+#include <MProfileTones.h>
+#include "TProfileToneSettings.h"
+#include <MProfileExtraSettings.h>
+#include <MProfile3DToneSettings.h>
+#include <ProfileInternal.hrh>
+#include <ProfileEngineDomainCRKeys.h>   // KProEngDefaultRingingTone
+#include <XQConversions>
+#include <QChar>
+
+CMFPreviewHandlerBase::CMFPreviewHandlerBase( QObject *parent  ) : QObject( parent )
+    {
+    iMediaType = KErrNotFound;
+    iRingingVolume = KErrNotFound;
+    iRingingType = KErrNotFound;
+    iVibra = KErrNotFound;
+    i3DEffect = KErrNotFound;
+    i3DEcho = KErrNotFound;
+    iFileSize = KErrNotFound;    
+    iFullName = 0;    
+    iActiveProfileRead = EFalse;
+    iPlayerStatus = EPlayerNotCreated;
+
+    }
+
+void CMFPreviewHandlerBase::ConstructL()
+    {
+    // To allow/not allow screensaver
+    // Errors ignored, no actions needed if API is not available
+    //iProperty.Attach( KPSUidScreenSaver, KScreenSaverAllowScreenSaver );    
+    TRAP_IGNORE(User::LeaveIfError( iApaSession.Connect() ) );
+    
+    TRAP_IGNORE( ReadDefaultToneL() );
+    // To keep backlight on while a video is being previewed
+    iBacklightTimer = CPeriodic::NewL( EPriorityLow );
+    }
+
+CMFPreviewHandlerBase::~CMFPreviewHandlerBase()
+    {
+    delete iFullName;
+    iProperty.Close();
+    
+    iApaSession.Close();
+    }
+
+void CMFPreviewHandlerBase::SetAttr(const QString &file )
+    {
+    if ( !file.isNull() )
+        {
+        QString path = ToneFetcherUtils::normalizeSeperator(file);
+        delete iFullName;
+        iFullName = 0;
+        iFullName = XQConversions::qStringToS60Desc( path );         
+        }
+    }
+
+TInt CMFPreviewHandlerBase::RingingVolume()
+    {
+    const TInt KDefaultVolumeLevel = 7; // see profile.hrh for volume levels
+    
+    if ( iRingingVolume != KErrNotFound )
+        {
+        return iRingingVolume;
+        }
+        
+    if ( iActiveProfileRead )
+        {
+        return iActiveProfileRingingVolume;
+        }
+
+    return KDefaultVolumeLevel;
+    }
+
+TInt CMFPreviewHandlerBase::RingingType()
+    {
+    if ( iRingingType != KErrNotFound )
+        {
+        return iRingingType;
+        }
+        
+    if ( iActiveProfileRead )
+        {
+        return iActiveProfileRingingType;
+        }
+
+    return ERingingTypeRinging;
+    }
+
+TInt CMFPreviewHandlerBase::Vibra()
+    {
+    if ( iVibra != KErrNotFound )
+        {
+        return iVibra;
+        }
+        
+    if ( iActiveProfileRead )
+        {
+        return iActiveProfileVibra;
+        }
+    
+    return 0;  // in case of error vibra is off
+    }
+
+TInt CMFPreviewHandlerBase::Echo3D()
+    {
+    if ( i3DEcho != KErrNotFound )
+        {
+        return i3DEcho;
+        }
+    
+    if ( iActiveProfileRead )
+        {
+        return iActiveProfile3DEcho;
+        }
+
+    return EProfile3DEchoOff;  // from ProfileInternal.hrh
+    }
+
+TInt CMFPreviewHandlerBase::Effect3D()
+    {
+    if ( i3DEffect != KErrNotFound )
+        {
+        return i3DEffect;
+        }
+    
+    if ( iActiveProfileRead )
+        {
+        return iActiveProfile3DEffect;
+        }
+
+    return EProfile3DEffectOff;
+    }
+
+TInt CMFPreviewHandlerBase::ConvertVolume( TInt aVolume, TInt aMaxVolume )
+    {
+    const TInt KMinVolumeLevel = 1;
+    const TInt KMaxVolumeLevel = 10;
+        
+    TInt result = aMaxVolume * aVolume / KMaxVolumeLevel;
+    
+    // if user has selected minimum volume level set HW volume 1
+    if ( aVolume == KMinVolumeLevel && result == 0 )
+        {
+        result = 1;
+        }
+
+    return result;
+    }
+  
+void CMFPreviewHandlerBase::ReadActiveProfileL()
+    {
+    iActiveProfileRead = EFalse;
+    
+    MProfileEngine* profileEngine = CreateProfileEngineL();
+    CleanupReleasePushL( *profileEngine );
+    
+    MProfile* activeProfile  = profileEngine->ActiveProfileL();
+    CleanupReleasePushL( *activeProfile );
+        
+    const MProfileTones& profileTones = activeProfile->ProfileTones();
+     
+    const TProfileToneSettings& toneSettings = profileTones.ToneSettings();
+    iActiveProfileVibra = toneSettings.iVibratingAlert;
+    iActiveProfileRingingVolume = toneSettings.iRingingVolume;
+    iActiveProfileRingingType = toneSettings.iRingingType;
+          
+    const MProfileExtraSettings& extra = activeProfile->ProfileExtraSettings();
+    const MProfile3DToneSettings& threeD = extra.Profile3DToneSettings();
+    
+    iActiveProfile3DEffect = threeD.Effect();
+    iActiveProfile3DEcho = threeD.Echo();
+   
+    CleanupStack::PopAndDestroy( activeProfile ); 
+    CleanupStack::PopAndDestroy( profileEngine );
+    
+    iActiveProfileRead = ETrue;
+    }
+ 
+void CMFPreviewHandlerBase::ReadDefaultToneL()
+    {
+    CRepository* cenrep = CRepository::NewLC( KCRUidProfileEngine );
+
+    User::LeaveIfError( cenrep->Get( KProEngDefaultRingingTone, iDefaultTone ) );
+    CleanupStack::PopAndDestroy( cenrep );
+    }
+
+TInt CMFPreviewHandlerBase::GetDataType( const TDesC& aFileName, TDataType& aDataType )
+    {
+    TUid dummyUid( KNullUid );
+    return iApaSession.AppForDocument( aFileName, dummyUid, aDataType );
+    }
+
+TInt CMFPreviewHandlerBase::DoResetInactivityTimer( TAny* /*aObject*/ )
+    {
+    User::ResetInactivityTime();
+    return KErrNone;
+    }
+
+void CMFPreviewHandlerBase::DisableBackLight()
+    {
+        const TInt KResetInactivityTimerDelay = 2000000;
+    iBacklightTimer->Cancel(); // Just in case
+    // Disable backlight turn off during video preview
+    iBacklightTimer->Start( KResetInactivityTimerDelay,
+                            KResetInactivityTimerDelay,
+                            TCallBack( DoResetInactivityTimer, 0 ) );
+    
+    }
+
+
+
+TonePreviewPrivate::TonePreviewPrivate( QObject *parent ) : CMFPreviewHandlerBase( parent )
+    {
+    iAudioPlayerStatus = EPlayerNotCreated;
+    CMFPreviewHandlerBase::ConstructL();
+    iTonePlayerStatus = EPlayerNotCreated;
+    }
+
+TonePreviewPrivate::~TonePreviewPrivate()
+    {
+    Cancel();
+    
+    delete iAudioPlayer;
+    delete iTonePlayer;
+    delete i3dRingingTonePlugin;
+    }
+
+TBool TonePreviewPrivate::IsPlaying()
+    {
+    if ( iAudioPlayerStatus != EPlayerNotCreated )
+        {
+        return ETrue;
+        }
+    
+    if ( iTonePlayerStatus != EPlayerNotCreated )
+        {
+        return ETrue;
+        }
+
+    return EFalse;
+    }
+
+void TonePreviewPrivate::Play()
+    {
+    if( IsPlaying() )
+        {
+        Stop();
+        return;
+        }
+    //sequence for playing a beep once sound
+    _LIT8( KFileListBeepSequence, "\x00\x11\x06\x0A\x08\x73\x0A\x40\x28\x0A\xF7\
+    \x05\xFC\x40\x64\x0A\x08\x40\x32\x0A\xF7\x06\x0B" ); 
+
+    // rng mime type
+    _LIT( KFileListRngMimeType, "application/vnd.nokia.ringing-tone" );
+    
+    Cancel(); // stop previous play
+    
+    if ( !iFullName || iFullName->Des().Length() == 0 )
+        {
+        User::Leave( KErrNotFound );
+        }
+
+    TRAP_IGNORE( ReadActiveProfileL() );
+
+    TPtrC fileName( iFullName->Des() );
+    TDataType dataType;
+    TInt err = GetDataType( fileName, dataType );
+    if ( err == KErrNotFound )
+        {
+        fileName.Set( iDefaultTone );
+        if ( fileName.Length() == 0 )
+             {
+             User::Leave( KErrNotFound );
+             }
+        }
+    else if ( err != KErrNone )
+        {
+        User::Leave( err );
+        }
+        
+    TBool mimeTypeRng = EFalse;
+    
+    if ( err == KErrNone )
+        {
+        if( dataType.Des().CompareF( KFileListRngMimeType ) == 0 )
+            {
+            mimeTypeRng = ETrue;
+            }
+        }
+
+    TInt ringingType = RingingType();
+    if ( ringingType == ERingingTypeBeepOnce )
+        {
+        // Active profile ringing tone is set to Beep Once
+        // Don't initialize a FileSequence but use DesSequence instead
+        iTonePlayer = CMdaAudioToneUtility::NewL( *this );
+        iTonePlayer->PrepareToPlayDesSequence( KFileListBeepSequence() );
+        iTonePlayerStatus = EPlayerInitializing;
+        }
+    else
+        {
+        if( mimeTypeRng )
+            {
+            //Ringingtone is a RNG-file
+            iTonePlayer = CMdaAudioToneUtility::NewL( *this );
+            iTonePlayer->PrepareToPlayFileSequence( fileName );
+            iTonePlayerStatus = EPlayerInitializing;
+            }
+        else
+            {
+            delete iAudioPlayer;
+            iAudioPlayer = 0;
+
+            iAudioPlayer = CDrmPlayerUtility::NewFilePlayerL(
+                fileName, *this, KAudioPriorityRingingTonePreview,
+                ( TMdaPriorityPreference )KAudioPrefRingFilePreview );
+    
+            iAudioPlayerStatus = EPlayerInitializing;
+            }
+        }
+    DisableBackLight();
+    }
+
+void TonePreviewPrivate::Stop()
+    {
+    Cancel();
+    }
+
+TInt TonePreviewPrivate::ConvertVolume( TInt aVolume )
+    {
+    TInt result = 0;
+    if ( iAudioPlayer )
+        {
+        result = CMFPreviewHandlerBase::ConvertVolume( aVolume, iAudioPlayer->MaxVolume() );
+        }
+    else if ( iTonePlayer )
+        {
+        result = CMFPreviewHandlerBase::ConvertVolume( aVolume, iTonePlayer->MaxVolume() );
+        }
+        
+    //if user has selected silent ringing type, set volume off
+    TInt ringingType = RingingType();
+    if( ringingType == ERingingTypeSilent )
+        {
+        result = 0;
+        }
+
+    return result;
+    }
+
+void TonePreviewPrivate::SetToneRingingType( TInt aRingingType )
+    {
+    const TInt KToneInterval = 1000000; // 1 second pause between tones
+    const TInt KAscendingVolumeInterval = 3000000; // 3 seconds
+    
+    if ( !iTonePlayer )
+        {
+        return;
+        }   
+
+
+    TInt ringingVolume = RingingVolume();
+
+    switch( aRingingType )
+        {
+        case ERingingTypeRinging:
+        case ERingingTypeSilent:
+            {
+            iTonePlayer->SetRepeats( KMdaAudioToneRepeatForever,
+                                     TTimeIntervalMicroSeconds( KToneInterval ) );
+            break;
+            }
+        case ERingingTypeAscending:
+            {
+            iTonePlayer->SetRepeats( KMdaAudioToneRepeatForever,
+                                     TTimeIntervalMicroSeconds( KToneInterval ) );
+            
+            TInt volRamp = KAscendingVolumeInterval * ringingVolume;
+            iTonePlayer->SetVolumeRamp( TTimeIntervalMicroSeconds( volRamp ) );
+            break;
+            }
+        case ERingingTypeRingOnce:
+        case ERingingTypeBeepOnce:
+            {
+            iTonePlayer->SetRepeats( 0, TTimeIntervalMicroSeconds( KToneInterval ) );
+            break;
+            }
+        default:
+            {
+            break;
+            }
+        }
+    }
+
+void TonePreviewPrivate::SetAudioRingingType( TInt aRingingType )
+    {
+    const TInt KToneInterval = 1000000; // 1 second pause between tones
+    const TInt KAscendingVolumeInterval = 3000000; // 3 seconds
+    
+    if ( !iAudioPlayer )
+        {
+        return;
+        }
+
+    TInt ringingVolume = RingingVolume();
+        
+    switch( aRingingType )
+        {
+        case ERingingTypeRinging:
+        case ERingingTypeSilent:
+            {
+            iAudioPlayer->SetRepeats( KMdaAudioToneRepeatForever,
+                                      TTimeIntervalMicroSeconds( KToneInterval ) );
+            break;
+            }
+        case ERingingTypeAscending:
+            {
+            iAudioPlayer->SetRepeats( KMdaAudioToneRepeatForever,
+                                      TTimeIntervalMicroSeconds( KToneInterval ) );
+            TInt volRamp = KAscendingVolumeInterval * ringingVolume;
+            iAudioPlayer->SetVolumeRamp( TTimeIntervalMicroSeconds( volRamp ) );
+            break;
+            }
+        case ERingingTypeRingOnce:
+            {
+            iAudioPlayer->SetRepeats( 0, TTimeIntervalMicroSeconds( KToneInterval ) );
+            break;
+            }
+
+        default:
+            {
+            break;
+            }
+        }
+    }
+
+void TonePreviewPrivate::Cancel()
+    {
+    TBool isPlaying = EFalse;
+    
+    if ( iAudioPlayer )
+        {
+        isPlaying = ETrue;
+        if ( iAudioPlayerStatus == EPlayerPlayingWith3DEffect )
+            {
+            i3dRingingTonePlugin->Stop();
+            // plugin calls AudioPlayer->Stop()
+            iAudioPlayer->Close();
+            }
+        if ( iAudioPlayerStatus == EPlayerPlaying )
+            {
+            iAudioPlayer->Stop();
+            iAudioPlayer->Close();
+            }
+        
+        delete iAudioPlayer;
+        iAudioPlayer = 0;
+        iAudioPlayerStatus = EPlayerNotCreated;
+        }
+    
+    if ( iTonePlayer )
+        {
+        isPlaying = ETrue;
+        if ( iTonePlayerStatus == EPlayerPlaying )
+            {
+            iTonePlayer->CancelPlay();
+            }
+        
+        delete iTonePlayer;
+        iTonePlayer = 0;
+        iTonePlayerStatus = EPlayerNotCreated;
+        }
+        
+
+    if ( isPlaying )
+        {
+        //User::InfoPrint(_L("cancel"));
+//        EnableScreenSaver( ETrue );
+        iBacklightTimer->Cancel();
+        }
+    }
+
+void TonePreviewPrivate::MatoPlayComplete( TInt aError )
+    {
+    Cancel();
+    emit notifyPreviewEvent( ToneFetcherEngine::EAudioPreviewComplete, aError );
+    }
+
+void TonePreviewPrivate::MatoPrepareComplete( TInt aError )
+    {
+    if ( aError != KErrNone )
+        {
+        Cancel();
+        
+        emit notifyPreviewEvent( ToneFetcherEngine::EPreviewError, aError );        
+        return;
+        }
+
+    TInt ringingVolume = RingingVolume();
+    TInt ringingType = RingingType();
+    TInt vibra = Vibra();
+       
+    iTonePlayerStatus = EPlayerInitialized;
+    SetToneRingingType( ringingType );
+    iTonePlayer->SetVolume( ConvertVolume( ringingVolume ) );
+    
+    TMdaPriorityPreference pref = (TMdaPriorityPreference) KAudioPrefRingFilePreview;               
+    if ( vibra )
+        {
+        pref = (TMdaPriorityPreference) KAudioPrefRingFilePreviewVibra;
+        }
+    iTonePlayer->SetPriority( KAudioPriorityPreview, pref );
+                                             
+    iTonePlayer->Play();
+    iTonePlayerStatus = EPlayerPlaying;
+    }
+
+void TonePreviewPrivate::MdapcInitComplete( TInt aError, 
+                        const TTimeIntervalMicroSeconds& /* aDuration */ )
+    {
+    if ( aError != KErrNone )
+        {
+        Cancel();
+        emit notifyPreviewEvent( ToneFetcherEngine::EPreviewError, aError );
+        return;
+        }
+        
+
+    TInt ringingVolume = RingingVolume();
+    TInt ringingType = RingingType();
+    TInt vibra = Vibra();
+    TInt echo3D = Echo3D();
+    TInt effect3D = Effect3D();
+
+    
+
+    iAudioPlayerStatus = EPlayerInitialized;
+    SetAudioRingingType( ringingType );
+    iAudioPlayer->SetVolume( ConvertVolume( ringingVolume ) );
+    
+    TMdaPriorityPreference pref = (TMdaPriorityPreference) KAudioPrefRingFilePreview;               
+    if ( vibra )
+        {
+        pref = (TMdaPriorityPreference) KAudioPrefRingFilePreviewVibra;
+        }
+    iAudioPlayer->SetPriority( KAudioPriorityPreview, pref );
+     
+    iAudioPlayerStatus = EPlayerPlaying;
+    
+    if ( effect3D == EProfile3DEffectOff )
+        {
+        iAudioPlayer->Play();  // 3D not used
+        return;
+        }
+
+    if ( !i3dRingingTonePlugin )
+        {
+        TUid emptyUid = { 0 };
+        TRAPD( err, i3dRingingTonePlugin = C3DRingingToneInterface::NewL( emptyUid ) );
+        if ( err != KErrNone || !i3dRingingTonePlugin )
+            {
+            iAudioPlayer->Play();
+            return;
+            }
+        }       
+   
+    i3dRingingTonePlugin->SetAttr( E3DRTIAttr3DEffect, effect3D );
+    i3dRingingTonePlugin->SetAttr( E3DRTIAttr3DEcho, echo3D );    
+    i3dRingingTonePlugin->SetAttr( E3DRTIAttrDrmPlayerUtility, iAudioPlayer );
+    TRAP_IGNORE( i3dRingingTonePlugin->PlayL() );
+
+    iAudioPlayerStatus = EPlayerPlayingWith3DEffect;
+    }
+
+void TonePreviewPrivate::MdapcPlayComplete( TInt aError )
+    {  
+    Cancel();
+    emit notifyPreviewEvent( ToneFetcherEngine::EAudioPreviewComplete, aError );
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/tonefetcher/tonefetcherengine/private/symbian/tonepreviewprivate.h	Fri May 14 13:21:08 2010 +0800
@@ -0,0 +1,218 @@
+/*
+ * 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:
+ *     The header file for tone previewing.
+ *     
+ */
+
+#ifndef TONEPREVIEWPRIVATE_H
+#define TONEPREVIEWPRIVATE_H
+#include <e32base.h>
+#include <DrmAudioSamplePlayer.h>
+#include <mdaaudiotoneplayer.h>
+#include <videoplayer.h>
+#include <centralrepository.h>
+#include <apgcli.h>  // for RApaLsSession
+#include <e32property.h>
+#include <QObject>
+#include "tonefetcherengine.h"
+
+class C3DRingingToneInterface;
+class RWindow;
+
+/**
+* CMFPreviewHandlerBase
+*
+* Base class for CMFAudioPreviewHandler.
+ */
+class CMFPreviewHandlerBase : public QObject, public CBase
+                        
+{
+Q_OBJECT
+public: 
+
+   enum TMediaFileType
+       {
+       EMediaFileTypeAudio = 0,
+       EMediaFileTypeVideo
+       };
+    enum TPlayerStatus
+        {
+        EPlayerNotCreated,
+        EPlayerInitializing,
+        EPlayerReady,
+        EPlayerPlaying,
+        EPlayerInitialized,
+        EPlayerPlayingWith3DEffect
+        };
+
+    // these must match with the ones in Profile Engine
+    enum TRingingTypes
+        {
+        ERingingTypeRinging = 0,
+        ERingingTypeAscending,
+        ERingingTypeRingOnce,
+        ERingingTypeBeepOnce,
+        ERingingTypeSilent
+        };
+
+    enum TFLAllowScreenSaver
+        {
+        EFLScreenSaverAllowed = 0, EFLScreenSaverNotAllowed
+        };
+
+protected:
+
+    virtual ~CMFPreviewHandlerBase();
+
+protected:
+
+    /**
+     * C++ default constructor.
+     */
+    CMFPreviewHandlerBase( QObject *parent );
+
+    /**
+     * By default Symbian OS constructor is private.
+     */
+    void ConstructL();
+
+public:    
+    void SetAttr(const QString &file);    
+    TInt Attr(TInt aAttr);    
+    virtual void Play() = 0;
+    virtual void Stop() = 0;
+    virtual TBool IsPlaying() = 0;
+
+protected:
+    TInt ConvertVolume(TInt aVolume);
+    void ReadActiveProfileL();
+    TInt GetDataType(const TDesC& aFileName, TDataType& aDataType);
+    void ReadDefaultToneL();   
+    
+
+    void DisableBackLight();
+
+    static TInt DoResetInactivityTimer(TAny* aObject);
+protected:
+    TInt RingingVolume();
+    TInt RingingType();
+    TInt Vibra();
+    TInt Echo3D();
+    TInt Effect3D();
+
+protected:
+    static TInt ConvertVolume(TInt aVolume, TInt aMaxVolume);    
+
+protected:
+    TInt iRingingVolume;
+    TInt iRingingType;
+    TInt iVibra;
+    TInt i3DEffect;
+    TInt i3DEcho;
+    TInt iMediaType;
+    TInt iFileSize;
+    HBufC* iFullName;
+
+    TBool iActiveProfileRead;
+    TInt iActiveProfileRingingVolume;
+    TInt iActiveProfileRingingType;
+    TInt iActiveProfileVibra;
+    TInt iActiveProfile3DEffect;
+    TInt iActiveProfile3DEcho;
+   
+
+    TInt iPlayerStatus;
+
+    // handle to window
+    RWindow* iWindow; // does not own
+
+    // for getting file MIME types
+    RApaLsSession iApaSession;
+
+    // for setting screensaver on/off
+    RProperty iProperty;
+
+    // default ringing tone
+    TFileName iDefaultTone;
+
+    // file server session
+    //RFs iFsSession;
+
+    /**
+     * Timer for resetting the user inactivity timeout
+     */
+    CPeriodic* iBacklightTimer;
+};
+
+// CLASS DECLARATION
+/**
+ *  This class is used for previewing the tones.
+ *
+ */
+
+class TonePreviewPrivate : public CMFPreviewHandlerBase,
+                           public MDrmAudioPlayerCallback,
+                           public MMdaAudioToneObserver
+
+{
+Q_OBJECT
+public:
+    TonePreviewPrivate( QObject *parent );
+    virtual ~TonePreviewPrivate();   
+signals:
+    void notifyPreviewEvent( ToneFetcherEngine::TPreviewEvent event, int errorId );
+    
+public:
+    void Play();
+    void Stop();
+    TBool IsPlaying();
+
+private:
+    void Cancel();
+    void SetAudioRingingType( TInt aRingingType );
+    void SetToneRingingType( TInt aRingingType );
+    TInt ConvertVolume( TInt aVolume );
+        
+        
+private:
+    // from MMdaAudioToneObserver
+    virtual void MatoPrepareComplete( TInt aError );
+    virtual void MatoPlayComplete(TInt aError);
+
+private:
+    // from MDrmAudioPlayerCallback
+    void MdapcInitComplete(TInt aError,
+            const TTimeIntervalMicroSeconds& aDuration);
+    void MdapcPlayComplete(TInt aError);
+
+private:
+    // audio player
+    CDrmPlayerUtility* iAudioPlayer;
+
+    /// Audioplayer status
+    TPlayerStatus iAudioPlayerStatus;
+
+    /// toneplayer
+    CMdaAudioToneUtility* iTonePlayer;
+
+    /// Toneplayer status
+    TPlayerStatus iTonePlayerStatus;
+    
+    // plugin for playing 3D effects
+    C3DRingingToneInterface* i3dRingingTonePlugin;
+
+};
+    
+#endif /* TONEPREVIEWPRIVATE_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/tonefetcher/tonefetcherengine/private/symbian/toneselectionengine_p.cpp	Fri May 14 13:21:08 2010 +0800
@@ -0,0 +1,272 @@
+/*
+ * 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:
+ *     The source file for mde tone fetcher.
+ *     
+ */
+#include "toneselectionengine_p.h"
+#include <XQConversions>
+#include <pathinfo.h>
+#include <bautils.h>
+#include "tonepreviewprivate.h"
+#include "tonefetcherengine.h"
+#include <centralrepository.h>
+#include <ProfileEngineDomainCRKeys.h>
+
+ToneSelectionEnginePrivate::ToneSelectionEnginePrivate( ToneFetcherEngine *engine ) : mServiceEngine( engine )
+
+    {
+    iSession = CMdESession::NewL( *this );
+    
+    }
+
+ToneSelectionEnginePrivate::~ToneSelectionEnginePrivate()
+    {
+    delete iQuery;
+    delete iSession;
+    }
+
+void ToneSelectionEnginePrivate::HandleSessionOpened( CMdESession& /*aSession*/, TInt aError )
+    {
+    if ( aError != KErrNone )
+        {
+        delete iSession;
+        iSession = 0;
+        iSessionOpen = EFalse;
+        emit mdeSessionError( aError );
+        }
+    else
+        {
+        iSessionOpen = ETrue;
+        TRAP_IGNORE( AddObjectObserverL() );
+        emit mdeSessionOpened();
+        }
+    }
+
+
+
+void ToneSelectionEnginePrivate::HandleSessionError( CMdESession& /*aSession*/, TInt aError )
+    {
+    if ( aError == KErrNone )
+        {
+        return;
+        }
+        
+    delete iSession;
+    iSession = 0;
+    iSessionOpen = EFalse;
+    emit mdeSessionError( aError );            
+    }
+
+
+void ToneSelectionEnginePrivate::HandleQueryNewResults( CMdEQuery& /*aQuery*/, 
+                                               TInt /*aFirstNewItemIndex*/,
+                                               TInt /*aNewItemCount*/ )
+    {
+    }
+
+void ToneSelectionEnginePrivate::HandleObjectNotification( CMdESession& /*aSession*/, 
+                                        TObserverNotificationType aType,
+                                        const RArray<TItemId>& /*aObjectIdArray*/ )
+    {    
+    if ( aType == ENotifyAdd || aType == ENotifyModify || aType == ENotifyRemove )
+        {
+        emit notifyObjectChanged();
+        }
+    }
+
+void ToneSelectionEnginePrivate::AddObjectObserverL()
+    {
+    if ( iSessionOpen )
+        {
+        TUint32 notificationType = ENotifyAdd | ENotifyModify | ENotifyRemove;
+        CMdENamespaceDef& defNS = iSession->GetDefaultNamespaceDefL();
+        iSession->AddObjectObserverL( *this, 0, notificationType, &defNS );
+        
+        iSession->AddObjectPresentObserverL( *this );
+        }
+    }
+
+void ToneSelectionEnginePrivate::HandleObjectPresentNotification( CMdESession& /*aSession*/, 
+                         TBool /*aPresent*/, const RArray<TItemId>& aObjectIdArray )
+    {
+    if( aObjectIdArray.Count() > 0 )
+        {
+        emit notifyObjectChanged();
+        }    
+    }
+
+void ToneSelectionEnginePrivate::HandleQueryCompleted( CMdEQuery& aQuery, TInt aError )
+    {
+    iNameList.clear();
+    iUriList.clear();
+    if ( aError == KErrCancel )
+        {      
+        emit queryError( aError );
+        return;
+        }
+    else
+        {
+        CMdEObjectQuery* query = static_cast<CMdEObjectQuery*> (&aQuery);
+        TInt count = query->Count();
+        for (TInt i = 0; i < count; ++i)
+            {
+            CMdEObject* object =
+                    (CMdEObject*) query->TakeOwnershipOfResult(i);
+            CleanupStack::PushL(object);
+            CMdEPropertyDef& propDef = 
+                        ToneSelectionEnginePrivate::PropertyDefL( iSession, ToneSelectionEnginePrivate::EAttrSongName  );
+                
+            CMdEProperty* property = 0;
+            TInt err = object->Property( propDef, property, 0 );
+            if ( err != KErrNotFound && property )
+                {
+                QString songName( XQConversions::s60DescToQString( property->TextValueL() ) );
+                QString uriValue( XQConversions::s60DescToQString( object->Uri() ) );
+                iNameList.append( songName );
+                iUriList.append( uriValue );
+                }
+            CleanupStack::PopAndDestroy(object);
+            }
+        emit queryComplete(iNameList, iUriList );        
+        }
+    }
+
+void ToneSelectionEnginePrivate::QueryTones()
+    {
+    LeaveIfSessionClosedL();
+        
+    CMdENamespaceDef& defNS = iSession->GetDefaultNamespaceDefL();
+    CMdEObjectDef& musicObjectDef =
+    defNS.GetObjectDefL( MdeConstants::Audio::KAudioObject );
+  
+    delete iQuery;
+    iQuery = 0;
+    iQuery = iSession->NewObjectQueryL( defNS, musicObjectDef, this );    
+    
+    
+    // set attributes that are included in query result  
+    CMdEPropertyDef& namePropertyDef = PropertyDefL( EAttrSongName );
+    iQuery->AddPropertyFilterL( &namePropertyDef );
+    
+    iQuery->SetResultMode( EQueryResultModeItem );
+    
+    CMdELogicCondition& conditions = iQuery->Conditions();
+    ExcludeMusicPropertiesL( conditions );
+
+    iQuery->FindL();
+    }
+
+void ToneSelectionEnginePrivate::LeaveIfSessionClosedL()
+    {
+    if ( !iSession || !iSessionOpen )
+        {
+        User::Leave( KErrDisconnected );
+        }
+    }
+
+CMdEPropertyDef& ToneSelectionEnginePrivate::PropertyDefL( TInt aAttr )
+    {
+    return PropertyDefL( iSession, aAttr );
+    }
+
+CMdEPropertyDef& ToneSelectionEnginePrivate::PropertyDefL( CMdESession* aSession, TInt aAttr )
+    {
+    CMdENamespaceDef& defNS = aSession->GetDefaultNamespaceDefL();
+    
+    CMdEObjectDef& objectDef =
+    defNS.GetObjectDefL( MdeConstants::Audio::KAudioObject );
+   
+    if ( aAttr == EAttrFileSize )
+        {
+        return objectDef.GetPropertyDefL( MdeConstants::Object::KSizeProperty );
+        }
+    else if ( aAttr == EAttrMediaType )
+        {
+        return objectDef.GetPropertyDefL( MdeConstants::Object::KItemTypeProperty );
+        }
+    else if ( aAttr == EAttrSongName || aAttr == EAttrFileName )
+        {
+        return objectDef.GetPropertyDefL( MdeConstants::Object::KTitleProperty );
+        }
+    else if ( aAttr == EAttrArtist )
+        {
+        return objectDef.GetPropertyDefL( MdeConstants::MediaObject::KArtistProperty );
+        }
+    else if ( aAttr == EAttrAlbum )
+        {
+        return objectDef.GetPropertyDefL( MdeConstants::Audio::KAlbumProperty );
+        }
+    else if ( aAttr == EAttrGenre )
+        {
+        return objectDef.GetPropertyDefL( MdeConstants::MediaObject::KGenreProperty );
+        }
+    else if ( aAttr == EAttrComposer )
+        {
+        return objectDef.GetPropertyDefL( MdeConstants::Audio::KComposerProperty );
+        }
+    else
+        {
+        User::Leave( KErrNotSupported );
+        }
+    
+    return objectDef.GetPropertyDefL( MdeConstants::Object::KTitleProperty );
+    }
+
+void ToneSelectionEnginePrivate::ExcludeMusicPropertiesL( CMdELogicCondition& aCondition )
+    {
+    TInt sizeLimitKB = 0;
+    CRepository* cenrep = CRepository::NewL( KCRUidProfileEngine );
+    CleanupStack::PushL( cenrep );
+    User::LeaveIfError( cenrep->Get( KProEngRingingToneMaxSize, sizeLimitKB ) );
+    CleanupStack::PopAndDestroy(); // cenrep
+
+    SetAttr( ToneFetcherEngine::EAttrFileSize, sizeLimitKB );
+    CMdEPropertyDef& sizeTypeDef = PropertyDefL( EAttrFileSize );
+    CMdEPropertyDef& mimeTypeDef = PropertyDefL( EAttrMediaType );
+    CMdEPropertyDef& artistTypeDef = PropertyDefL( EAttrArtist );
+    CMdEPropertyDef& albumTypeDef = PropertyDefL( EAttrAlbum );
+    CMdEPropertyDef& genreTypeDef = PropertyDefL( EAttrGenre );
+    CMdEPropertyDef& composerTypeDef = PropertyDefL( EAttrComposer );
+    
+    CMdELogicCondition& condition = 
+                        aCondition.AddLogicConditionL( ELogicConditionOperatorAnd );
+    condition.AddPropertyConditionL( sizeTypeDef, TMdEIntRange(0, iMaxFileSize, EMdERangeTypeBetween) );
+    condition.AddPropertyConditionL( mimeTypeDef, 
+            ETextPropertyConditionCompareContains, KMimeMp3 );
+    condition.AddPropertyConditionL( artistTypeDef );
+    condition.AddPropertyConditionL( albumTypeDef );
+    condition.AddPropertyConditionL( genreTypeDef );
+    condition.AddPropertyConditionL( composerTypeDef );
+    
+    condition.SetNegate( ETrue );
+    }
+
+void ToneSelectionEnginePrivate::SetAttr( int attr, int value )
+{
+    switch ( attr )
+        {
+        case ToneFetcherEngine::EAttrFileSize:
+            {
+            iMaxFileSize = value;
+            break;
+            }            
+        default:
+            {
+            break;
+            }
+        }
+}
+// End of File
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/tonefetcher/tonefetcherengine/private/symbian/toneselectionengine_p.h	Fri May 14 13:21:08 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:
+ *     The header file for mde tone fetcher.
+ *     
+ */
+#ifndef TONESELECTIONENGINEPRIVATE_H
+#define TONESELECTIONENGINEPRIVATE_H
+
+#include "toneselectionengine_p.h"
+#include <mdesession.h>
+#include <mdequery.h>
+#include <mdelogiccondition.h>
+#include <mdeconstants.h>
+#include <mdeobjectquery.h>
+#include <mdccommon.h>
+#include <mdeitem.h>
+#include <mdeobject.h>
+#include <e32base.h>
+#include <QObject>
+#include <QStringList>
+// FORWARD DECLARATIONS
+class ToneFetcherEngine;
+// CONSTANTS
+_LIT( KMimeMp3, "mp3" );
+
+// CLASS DECLARATION
+/**
+ *  This class is used for quering tones from mde.
+ *
+ */
+class ToneSelectionEnginePrivate : public QObject,
+                            public CBase, 
+                            public MMdESessionObserver,
+                            public MMdEQueryObserver,
+                            public MMdEObjectObserver,
+                            public MMdEObjectPresentObserver                            
+{
+    Q_OBJECT
+public:
+
+    enum TStorageType
+        {
+        EPhoneMemory = 0, ERomStorage, EMassStorage, EMemoryCard
+        };
+    
+    enum TQueryAttribute
+        {
+        EAttrMediaType = 20, // integer
+        EAttrFileSize, // integer
+        EAttrStorageType, // integer
+        EAttrMediaFileId, // integer
+        EAttrFileName, // string
+        EAttrFullName, // string
+        EAttrSongName, // string
+        EAttrArtist, // string
+        EAttrAlbum, // string
+        EAttrGenre, // string
+        EAttrComposer
+        // string
+        };
+
+public:
+    ToneSelectionEnginePrivate(  ToneFetcherEngine *engine );
+    virtual ~ToneSelectionEnginePrivate();
+    
+signals:
+    void mdeSessionOpened();
+    void mdeSessionError( int error );
+    void queryComplete( QStringList nameList, QStringList uriList );
+    void queryError( int error );
+    void notifyObjectChanged();
+
+
+public:
+    static CMdEPropertyDef& PropertyDefL(CMdESession* aSession, TInt aAttr);
+    void QueryTones();   
+    void SetAttr( int attr, int value );
+
+private:   
+    void ExcludeMusicPropertiesL(CMdELogicCondition& aCondition);    
+    void LeaveIfSessionClosedL();
+    CMdEPropertyDef& PropertyDefL(TInt aAttr);
+
+private:
+    // from MMdESessionObserver
+    void HandleSessionOpened(CMdESession& aSession, TInt aError);
+    void HandleSessionError(CMdESession& aSession, TInt aError);
+
+private:
+    // from MMdEQueryObserver (mdequery.h)
+    void HandleQueryNewResults(CMdEQuery& aQuery, TInt aFirstNewItemIndex,
+            TInt aNewItemCount);
+    void HandleQueryCompleted(CMdEQuery& aQuery, TInt aError);    
+private:
+    // from MMdEObjectObserver
+    void HandleObjectNotification(CMdESession& aSession,
+            TObserverNotificationType aType,
+            const RArray<TItemId>& aObjectIdArray);
+
+private:
+    // from MMdEObjectPresentObserver
+    void HandleObjectPresentNotification(CMdESession& aSession,
+            TBool aPresent, const RArray<TItemId>& aObjectIdArray);
+    void AddObjectObserverL();
+private:
+
+    ToneFetcherEngine *mServiceEngine;
+
+    // session to metadata engine
+    CMdESession* iSession;
+
+    // metadata query
+    CMdEObjectQuery* iQuery;
+
+    // used for saving the quering result.
+    //both name and uri.
+    QStringList iNameList;
+    QStringList iUriList;
+
+    // is metadata session open
+    TBool iSessionOpen;
+
+    // max audio file file size
+    TInt iMaxFileSize;
+    
+    // query error
+    TInt iQueryError;
+};
+#endif /* TONESELECTIONENGINE_H_ */
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/tonefetcher/tonefetcherengine/tonefetcherengine.cpp	Fri May 14 13:21:08 2010 +0800
@@ -0,0 +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:
+ *     The source file for tone fetcher engine.
+ *     
+ */
+#include "tonefetcherengine.h"
+#include "toneselectionengine_p.h"
+#include "tonepreviewprivate.h"
+
+ToneFetcherEngine::ToneFetcherEngine(QObject* parent) : QObject(parent)
+{
+    d = new ToneSelectionEnginePrivate(this);
+    Q_ASSERT(d);
+    mAudioPlayer = new TonePreviewPrivate( this );
+    Q_ASSERT(mAudioPlayer);
+    connect(d, SIGNAL(mdeSessionOpened()), 
+            this, SIGNAL(mdeSessionOpened()));
+    connect(d, SIGNAL(mdeSessionError(int)),
+            this, SIGNAL(mdeSessionError(int)));
+    connect(d, SIGNAL(queryComplete(QStringList, QStringList)),
+            this, SIGNAL(queryComplete(QStringList, QStringList)));
+    connect(d, SIGNAL(queryError(int)),
+            this, SIGNAL(queryError(int)));
+    connect(d, SIGNAL(notifyObjectChanged()),
+            this, SIGNAL(notifyObjectChanged()));
+    connect(mAudioPlayer, SIGNAL(notifyPreviewEvent(ToneServiceEngine::TPreviewEvent, int)),
+            this, SIGNAL(notifyPreviewEvent(ToneServiceEngine::TPreviewEvent, int)));
+}
+
+ToneFetcherEngine::~ToneFetcherEngine()
+{
+    delete d;
+}
+
+void ToneFetcherEngine::getTone()
+{
+    d->QueryTones();
+}
+
+void ToneFetcherEngine::preview(const QString &file )
+{
+    mAudioPlayer->SetAttr(file);
+    mAudioPlayer->Play();
+}
+
+bool ToneFetcherEngine::IsPlaying()
+{
+    mAudioPlayer->IsPlaying();
+}
+//End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/tonefetcher/tonefetcherengine/tonefetcherengine.h	Fri May 14 13:21:08 2010 +0800
@@ -0,0 +1,96 @@
+/*
+ * 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:
+ *     The header file for tone fetcher engine.
+ *     
+ */
+
+#ifndef TONEFETCHERENGINE_H
+#define TONEFETCHERENGINE_H
+#include <QObject>
+#include "toneselectionengine_p.h"
+#include <QStringList>
+class TonePreviewPrivate;
+class ToneSelectionEnginePrivate;
+
+// CLASS DECLARATION
+/**
+ *  This class is used for interacting with platform based codes
+ *  including fetching tones from MDE (Metadata Engine) and previewing tones
+ *  using platform-dependant interface.
+ *
+ */
+class  ToneFetcherEngine : public QObject
+{
+    Q_OBJECT
+    
+public:
+    enum TMediaFileListAttribute {
+        // max media file size
+        EAttrFileSize = 0,
+        // ringing volume (TProfileRingingVolume from Profile.hrh)
+        EAttrVolume,
+        // ringing type,  (TProfileRingingType from Profile.hrh)
+        EAttrRingingType,
+        // vibra on/off   (Boolean) 
+        EAttrVibra,
+        // 3D effect      (TProfile3DToneEffect from ProfileInternal.hrh)
+        EAttr3DEffect,
+        // 3D echo        (TProfile3DToneEcho from ProfileInternal.hrh)
+        EAttr3DEcho,
+        // excluded mime type text
+        EAttrExcludeMimeType,
+        // for file protection checking
+        EAttrAutomatedType,
+        // media file dialog title
+        EAttrTitle,
+        // excluded folder (see enum TFolderType)
+        EAttrExcludeFolder
+    };
+    
+    enum State {
+    SessionConnected = 0,
+    SessionError    
+    };
+    
+    enum TPreviewEvent {         
+        EAudioPreviewComplete, 
+        EPreviewError
+    };
+    explicit ToneFetcherEngine( QObject* parent = 0 );
+    ~ToneFetcherEngine();
+    /*
+     * search the tone using MDE, not including rom files.
+     */
+    void getTone();
+    
+    /*
+     * preview the tone
+     * @param file the absolute path of the file.
+     */
+    void preview(const QString &file);
+    
+    bool IsPlaying();
+signals:
+    void mdeSessionOpened();
+    void mdeSessionError(int error);
+    void queryComplete(const QStringList &nameList, const QStringList &uriList);
+    void queryError(int error);
+    void notifyPreviewEvent(ToneFetcherEngine::TPreviewEvent event, int errorId);
+    void notifyObjectChanged();
+private:
+    ToneSelectionEnginePrivate *d;
+    TonePreviewPrivate *mAudioPlayer;
+};
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/tonefetcher/tsrc/main.cpp	Fri May 14 13:21:08 2010 +0800
@@ -0,0 +1,35 @@
+/*
+ * 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:
+ *     The main window file for tone service test
+ *     
+ */
+#include "tonetestapp.h"
+
+#include <hbapplication.h>
+#include <hbmainwindow.h>
+
+int main(int argc, char *argv[])
+{
+
+    QCoreApplication::setOrganizationName("Nokia");
+    QCoreApplication::setApplicationName("ToneTestApp");
+      
+    HbApplication app(argc, argv);
+    HbMainWindow mainWindow;
+    ToneTestApp *mainView = new ToneTestApp;
+    mainWindow.addView(mainView);
+    mainWindow.show();
+    return app.exec();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/tonefetcher/tsrc/rom/rom.pri	Fri May 14 13:21:08 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:
+#     Rom exports for tonetestapp
+# 
+
+symbian {
+    TONETESTAPP_IBY_DIR = $$section(PWD, ":", 1)
+
+    exists(/epoc32/include/platform_paths.hrh) {
+        BLD_INF_RULES.prj_exports += "$${LITERAL_HASH}include <platform_paths.hrh>"
+    } else {
+        BLD_INF_RULES.prj_exports += "$${LITERAL_HASH}include <domain\osextensions\platform_paths.hrh>"
+    }
+
+    BLD_INF_RULES.prj_exports += "$$TONETESTAPP_IBY_DIR/tonetestapp.iby CORE_APP_LAYER_IBY_EXPORT_PATH(tonetestapp.iby)"
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/tonefetcher/tsrc/rom/tonetestapp.iby	Fri May 14 13:21:08 2010 +0800
@@ -0,0 +1,30 @@
+/*
+* 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 __TONETESTAPP_IBY__
+#define __TONETESTAPP_IBY__
+
+#include <bldprivate.hrh>
+
+#define HB_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\tonetestapp.exe                   SHARED_LIB_DIR\tonetestapp.exe
+HB_UPGRADABLE_APP_REG_RSC(tonetestapp)
+S60_APP_RESOURCE(tonetestapp)
+
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/tonefetcher/tsrc/tonetestapp.cpp	Fri May 14 13:21:08 2010 +0800
@@ -0,0 +1,174 @@
+/*
+ * 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:
+ *     The source file for tone service test.
+ *     
+ */
+#include "tonetestapp.h"
+#include <xqaiwrequest.h>
+#include <QGraphicsLinearLayout>
+#include <hbpushbutton.h>
+#include <hblineedit.h>
+#include <hblabel.h>
+#include <qdebug>
+#include <xqservicerequest.h>
+
+ToneTestApp::ToneTestApp(QGraphicsItem *parent) :
+    HbView(parent),
+    mReq(0),
+    mResultEdit(0),
+    mErrorCodeEdit(0),
+    mErrorEdit(0)
+{
+    qDebug() << "ToneTestApp::ToneTestApp(";
+    createLayout();
+}
+
+ToneTestApp::~ToneTestApp()
+{
+    qDebug() << "ToneTestApp::~ToneTestApp";
+    delete mReq;
+}
+
+void ToneTestApp::handleOk(const QVariant &result)
+{
+    qDebug() << "ToneTestApp::handleOk";
+    
+    if (!result.canConvert<QString>())
+    {
+        mErrorEdit->setText("Corrupt result");
+    }
+    else
+    {
+        mResultEdit->setText(result.value<QString>());
+        qDebug() << "ToneTestApp::handleOk" << ": result=" << result.value<QString>();
+    }
+    
+}
+
+void ToneTestApp::handleError(int errorCode, const QString& errorMessage)
+{
+    qDebug() << "ToneTestApp::handleError" << ": errorCode=" << errorCode << ", msg:" << errorMessage;
+    mErrorEdit->setText(errorMessage);
+    mErrorCodeEdit->setText(QString::number(errorCode));
+}
+
+void ToneTestApp::createLayout()
+{
+    qDebug() <<  "ToneTestApp::createLayout";
+    
+    QGraphicsLinearLayout* layout = new QGraphicsLinearLayout(Qt::Vertical);
+
+    if (layout)
+    {
+        QGraphicsLinearLayout *topLayout = new QGraphicsLinearLayout(Qt::Vertical);
+
+        if (topLayout)
+        {
+            topLayout->addStretch(5);
+            
+            mResultEdit = new HbLineEdit;
+            HbLabel* label = new HbLabel("Result:");
+            if (mResultEdit && label)
+            {
+                topLayout->addItem(label);
+                mResultEdit->setMaxRows(5);
+                topLayout->addItem(mResultEdit);
+            }
+            
+            mErrorCodeEdit = new HbLineEdit;
+            label = new HbLabel("Error code:");
+            if (mErrorCodeEdit && label)
+            {
+                topLayout->addItem(label);
+                topLayout->addItem(mErrorCodeEdit);
+            }
+            
+            mErrorEdit = new HbLineEdit;
+            label = new HbLabel("Error description:");
+            if (mErrorEdit && label)
+            {
+                topLayout->addItem(label);
+                mErrorEdit->setMaxRows(5);
+                topLayout->addItem(mErrorEdit);
+            }
+            
+            layout->addItem(topLayout);
+            layout->setStretchFactor(topLayout, 5);
+        }
+
+        QGraphicsLinearLayout *bottomLayout = new QGraphicsLinearLayout(Qt::Vertical);
+
+        if (bottomLayout)
+        {
+            bottomLayout->addStretch();
+            HbPushButton* button = new HbPushButton("Fetch tone");
+            if (button)
+            {
+                connect(button, SIGNAL(clicked()), this, SLOT(fetchTone()));
+                bottomLayout->addItem(button);
+            }
+            layout->addItem(bottomLayout);
+        }
+
+        setLayout(layout); // Takes ownership of layout
+    }
+}
+
+void ToneTestApp::fetchTone()
+{
+    qDebug() <<  "ToneTestApp::fetchSong START";
+    
+    mResultEdit->setText("");
+    mErrorEdit->setText("");
+    mErrorCodeEdit->setText("");
+    
+    if (!mReq)
+   {
+        mReq = mAppMgr.create("com.nokia.symbian.IToneFetch", "fetch()", true);
+     //   XQServiceRequest snd("com.nokia.services.toneserviceprovider.tone", "queryTone()", true);
+       // QVariant retValue;
+                
+  /*  bool res = snd.send(retValue);
+    if (!res)
+        {
+        int returnvalue = snd.latestError();
+        mErrorEdit->setText(QString::number(returnvalue));
+        // mRetValue->setText("send fail!");
+        }*/ 
+        
+        if (!mReq)
+        {
+            mErrorEdit->setText("Failed to create REQ");
+            return;
+        }
+        else
+        {
+            connect(mReq, SIGNAL(requestOk(const QVariant&)), SLOT(handleOk(const QVariant&)));
+            connect(mReq, SIGNAL(requestError(int,const QString&)), SLOT(handleError(int,const QString&)));
+        }
+    }
+    
+    // Set arguments for request (application title)
+    QList<QVariant> args;
+    args << QVariant(QString("<app_name>"));
+    mReq->setArguments(args);
+
+    // Make the request
+    if (!mReq->send())
+    {
+        mErrorEdit->setText("Failed to send REQ");        
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/tonefetcher/tsrc/tonetestapp.h	Fri May 14 13:21:08 2010 +0800
@@ -0,0 +1,53 @@
+/*
+ * 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:
+ *     The header file for tone service test.
+ *     
+ */
+#ifndef TONETESTAPP_H
+#define TONETESTAPP_H
+
+#include <hbview.h>
+#include <xqappmgr.h>
+
+class XQApplicationManager;
+class XQAiwRequest;
+class HbLineEdit;
+
+class ToneTestApp : public HbView
+{
+    Q_OBJECT
+
+public:
+    ToneTestApp(QGraphicsItem *parent=0);
+    virtual ~ToneTestApp();
+
+private slots:
+    void handleOk(const QVariant &result);
+    void handleError(int errorCode, const QString& errorMessage);
+    
+    void fetchTone();
+    
+private:
+    void createLayout();
+    
+private:
+    XQApplicationManager mAppMgr;
+    XQAiwRequest* mReq;
+    HbLineEdit* mResultEdit;
+    HbLineEdit* mErrorCodeEdit;
+    HbLineEdit* mErrorEdit;
+};
+
+#endif // TONETESTAPP_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/tonefetcher/tsrc/tonetestapp.pro	Fri May 14 13:21:08 2010 +0800
@@ -0,0 +1,35 @@
+#
+# 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 = tonetestapp 
+
+CONFIG += hb
+LIBS += -lxqservice -lxqserviceutil
+
+
+HEADERS   += tonetestapp.h
+SOURCES   += tonetestapp_reg.rss \
+    main.cpp \
+    tonetestapp.cpp
+RESOURCES +=
+symbian {
+    include(rom/rom.pri)
+    TARGET.UID3 = 0x2002BCC9
+    TARGET.CAPABILITY = ALL -TCB
+    INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE 
+}
+