Revision: 201011
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 19 Apr 2010 14:01:47 +0300
changeset 0 c464cd7e2753
child 1 5166b2694b72
child 2 66c26770985f
Revision: 201011 Kit: 201015
ftu.pro
ftu_exports_to_rom.pri
ftuapplication/ftuapplication.pri
ftuapplication/ftuapplication.pro
ftuapplication/ftuapplication_installs_symbian.pri
ftuapplication/ftuapplication_installs_unix.pri
ftuapplication/ftuapplication_installs_win32.pri
ftuapplication/inc/ftufirsttimeuse.h
ftuapplication/resources/ftu_app_icon.svg
ftuapplication/src/ftufirsttimeuse.cpp
ftuapplication/src/main.cpp
fturuntimeservices/fturuntimeservices.pri
fturuntimeservices/fturuntimeservices.pro
fturuntimeservices/fturuntimeservices_installs_symbian.pri
fturuntimeservices/fturuntimeservices_installs_win32.pri
fturuntimeservices/inc/ftucontentservice.h
fturuntimeservices/inc/ftucontentservice_p.h
fturuntimeservices/inc/fturuntimeservices_global.h
fturuntimeservices/src/ftucontentservice.cpp
inc/ftutest_global.h
layers.sysdef.xml
rom/ftu.iby
runtimeproviders/ftudefaultruntimeprovider/ftudefaultruntimeprovider.pri
runtimeproviders/ftudefaultruntimeprovider/ftudefaultruntimeprovider.pro
runtimeproviders/ftudefaultruntimeprovider/ftudefaultruntimeprovider_installs_symbian.pri
runtimeproviders/ftudefaultruntimeprovider/ftudefaultruntimeprovider_installs_unix.pri
runtimeproviders/ftudefaultruntimeprovider/ftudefaultruntimeprovider_installs_win32.pri
runtimeproviders/ftudefaultruntimeprovider/inc/ftudefaultruntime.h
runtimeproviders/ftudefaultruntimeprovider/inc/ftudefaultruntimeprovider.h
runtimeproviders/ftudefaultruntimeprovider/resource/ftudefaultruntimeprovider.manifest
runtimeproviders/ftudefaultruntimeprovider/resource/ftudefaultruntimeprovider.s60xml
runtimeproviders/ftudefaultruntimeprovider/resource/ftudefaultruntimeprovider.xml
runtimeproviders/ftudefaultruntimeprovider/src/ftudefaultruntime.cpp
runtimeproviders/ftudefaultruntimeprovider/src/ftudefaultruntimeprovider.cpp
runtimeproviders/runtimeproviders.pro
sis/ftu.pkg
sis/ftu_sisx.bat
sis/ftu_unittest.pkg
sis/ftu_unittest_sisx.bat
sis/rd-key.pem
sis/rd.cer
stateproviders/ftustateprovider/ftustateprovider.pri
stateproviders/ftustateprovider/ftustateprovider.pro
stateproviders/ftustateprovider/ftustateprovider_installs_symbian.pri
stateproviders/ftustateprovider/ftustateprovider_installs_unix.pri
stateproviders/ftustateprovider/ftustateprovider_installs_win32.pri
stateproviders/ftustateprovider/inc/ftustateprovider.h
stateproviders/ftustateprovider/inc/ftustateprovider_global.h
stateproviders/ftustateprovider/inc/ftustateprovider_p.h
stateproviders/ftustateprovider/inc/ftuwizardactivatedstate.h
stateproviders/ftustateprovider/inc/ftuwizardloaderstate.h
stateproviders/ftustateprovider/inc/ftuwizardmenustate.h
stateproviders/ftustateprovider/resources/resources.qrc
stateproviders/ftustateprovider/src/ftustateprovider.cpp
stateproviders/ftustateprovider/src/ftuwizardactivatedstate.cpp
stateproviders/ftustateprovider/src/ftuwizardloaderstate.cpp
stateproviders/ftustateprovider/src/ftuwizardmenustate.cpp
stateproviders/stateproviders.pro
sysdef_1_5_1.dtd
translations/FTU_textmap_10_1_v4_edit.xls
translations/ftu_en.ts
translations/ftu_en_GB.qm
translations/ftu_en_US.qm
translations/ftu_fi.qm
translations/ftu_fi.ts
translations/ftuexamplewizards.xls
translations/ftuexamplewizards_en.ts
translations/ftuexamplewizards_en_GB.qm
translations/ftuexamplewizards_en_US.qm
translations/ftuexamplewizards_fi.qm
translations/ftuexamplewizards_fi.ts
translations/translations.qrc
wizardproviders/ftuwizardprovider/conf/ftuwizardprovider.confml
wizardproviders/ftuwizardprovider/conf/ftuwizardprovider_20026F9B.crml
wizardproviders/ftuwizardprovider/ftuwizardprovider.pri
wizardproviders/ftuwizardprovider/ftuwizardprovider.pro
wizardproviders/ftuwizardprovider/inc/ftumanifestparser.h
wizardproviders/ftuwizardprovider/inc/ftuwizardprovider.h
wizardproviders/ftuwizardprovider/inc/ftuwizardprovider_global.h
wizardproviders/ftuwizardprovider/inc/ftuwizardproviderinternalcrkeys.h
wizardproviders/ftuwizardprovider/src/ftumanifestparser.cpp
wizardproviders/ftuwizardprovider/src/ftuwizardprovider.cpp
wizardproviders/wizardproviders.pro
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ftu.pro	Mon Apr 19 14:01:47 2010 +0300
@@ -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:  FTU project file
+#
+TEMPLATE = subdirs
+
+SUBDIRS  = ftuapplication \
+           fturuntimeservices \        
+           wizardproviders \           
+           stateproviders \
+	   runtimeproviders
+        
+
+
+tests:SUBDIRS += ftuapplication\tsrc\t_ftuapplication
+tests:SUBDIRS += runtimeproviders\ftudefaultruntimeprovider\tsrc\t_ftudefaultruntimeprovider
+tests:SUBDIRS += stateproviders\ftustateprovider\tsrc\t_ftustateprovider
+tests:SUBDIRS += fturuntimeservices\tsrc\t_fturuntimeservices
+
+CONFIG += ordered
+
+symbian:include(ftu_exports_to_rom.pri)
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ftu_exports_to_rom.pri	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,19 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:  FTU list of exported files to ROM
+#
+
+BLD_INF_RULES.prj_exports += \
+    "$${LITERAL_HASH}include <platform_paths.hrh>" \
+     "rom/ftu.iby  CORE_APP_LAYER_IBY_EXPORT_PATH(ftu.iby)"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ftuapplication/ftuapplication.pri	Mon Apr 19 14:01:47 2010 +0300
@@ -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:  FTU application list of files
+#
+
+HEADERS += ./inc/*.h
+SOURCES += ./src/*.cpp
+
+RESOURCES += ../translations/translations.qrc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ftuapplication/ftuapplication.pro	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,70 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:  First Time Use application project file
+#
+
+TEMPLATE = app
+
+TARGET = ftuapplication 
+
+win32 {
+    LIBS += -L$$PWD/../../bin/debug
+    
+    CONFIG(debug, debug|release) {
+      SUBDIRPART = debug
+    } else {
+      SUBDIRPART = release
+    }
+    DESTDIR = $$PWD/../../bin/$$SUBDIRPART
+}
+
+QT += xml 
+
+CONFIG += hb mobility
+MOBILITY = serviceframework
+
+CONFIG += hb    
+CONFIG += console
+
+nft:DEFINES += NFT
+
+DEPENDPATH += . \
+              ./inc \
+              ./src
+
+INCLUDEPATH += . \
+               ./inc \
+               ../inc
+
+symbian {
+    TARGET.UID2 = 0x100039CE
+    TARGET.UID3 = 0x20026F95
+    TARGET.CAPABILITY = CAP_APPLICATION AllFiles TrustedUI
+    TARGET.EPOCSTACKSIZE = 0x14000 // 80kB
+    TARGET.EPOCHEAPSIZE = 0x20000 0x1000000 // 128kB - 16MB
+    rom:DEFINES += ROM
+    ICON = resources/ftu_app_icon.svg
+    icon.sources = resources/ftu_app_icon.svg
+    icon.path = /fturesources
+    addFiles.sources +=  ../translations/ftu_en_US.qm ../translations/ftu_en_GB.qm \
+                         ../translations/ftuexamplewizards_en_US.qm ../translations/ftuexamplewizards_en_GB.qm
+    addFiles.path = translations   
+    DEPLOYMENT += icon addFiles
+}
+
+win32 {
+include(ftuapplication_installs_win32.pri)
+}
+
+include(ftuapplication.pri)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ftuapplication/ftuapplication_installs_symbian.pri	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,27 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+
+
+#deploy.path = z:
+
+#exports1.path = /private/20026F95
+
+#exports1.sources += resource/ftudb
+
+#for(export1, exports1.sources):BLD_INF_RULES.prj_exports += "./$$export1 $$deploy.path$$exports1.path/$$basename(export1)"
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ftuapplication/ftuapplication_installs_unix.pri	Mon Apr 19 14:01:47 2010 +0300
@@ -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: 
+#
+#
+
+# Release
+#
+
+r01.path = ../../bin/release/
+r01.files = ./release/ftuapplication
+
+INSTALLS += r01
+
+#
+# Debug
+#
+
+d01.path = ../../bin/debug/
+d01.files = ./debug/ftuapplication
+
+INSTALLS += d01
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ftuapplication/ftuapplication_installs_win32.pri	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,32 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+#
+# Release
+#
+
+r01.path = $$PWD/../../bin/release/
+r01.files = ./release/*.*
+
+INSTALLS += r01
+
+#
+# Debug
+#
+
+d01.path = $$PWD/../../bin/debug/
+d01.files = ./debug/*.*
+
+INSTALLS += d01
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ftuapplication/inc/ftufirsttimeuse.h	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,130 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  First Time Use application main class.
+*
+*/
+
+
+#ifndef FTU_FIRSTTIMEUSE_H
+#define FTU_FIRSTTIMEUSE_H
+
+#include "ftutest_global.h"
+
+#include <QObject>
+
+FTU_TEST_CLASS(FtuFirstTimeUseTest)
+
+class QStateMachine;
+
+
+/**
+ * @ingroup group_ftuapplication
+ * @brief First Time Use application main class.
+ * 
+ * Loads a runtime from a runtime provider plugin. Manages 
+ * the runtime execution.
+ *
+ * @lib ?library
+ * @since S60 ?S60_version
+ */
+class FtuFirstTimeUse : public QObject
+{
+    Q_OBJECT
+
+public:
+
+    /**
+     * Constructor.
+     * @since S60 ?S60_version.     
+     * @param aParent Parent object.
+     */
+    FtuFirstTimeUse(QObject* aParent = 0);
+    
+    /**
+     * Destructor.
+     * @since S60 ?S60_version.     
+     */
+    virtual ~FtuFirstTimeUse();
+
+private:
+
+    /**
+     * Registers service plugins pre-installed on the device.
+     */
+    void registerServicePlugins();
+    /**
+     * Recursively registers service plugins starting from given root
+     * directory. All directories containing plugins are added to
+     * application's library paths at the same time.
+     * @param root The root folder.
+     */
+    void registerServicePlugins(const QString &root);
+
+    Q_DISABLE_COPY(FtuFirstTimeUse)
+
+signals:
+
+    /**
+     * Emitted when the FTU application needs to exit.
+     * @since S60 ?S60_version.     
+     */
+    void exit();
+
+public slots:
+
+    /**
+     * Starts the runtime.
+     * @since S60 ?S60_version. 
+     */
+    void start();
+    
+    /**
+     * Stops the runtime.
+     * @since S60 ?S60_version.     
+     */
+    void stop();
+
+private slots:
+
+    /**
+     * Called after the runtime has started.
+     * @since S60 ?S60_version.     
+     */
+    void handleRuntimeStarted();
+
+    /**
+     * Called after the runtime has stopped.
+     * @since S60 ?S60_version.     
+     */
+    void handleRuntimeStopped();
+    
+    /**
+     * Called after the runtime has faulted.
+     * @since S60 ?S60_version.     
+     */
+    void handleRuntimeFaulted();
+
+private:
+
+    /**
+     * Runtime.
+     */
+    QStateMachine* mRuntime;
+
+    FTU_TEST_FRIEND_CLASS(FtuFirstTimeUseTest)
+
+};
+
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ftuapplication/resources/ftu_app_icon.svg	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg version="1.0" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="50px" height="50px" viewBox="0 0 50 50" enable-background="new 0 0 50 50" xml:space="preserve">
+<g>
+	<rect x="3.208" y="2.854" fill="none" width="44" height="44"/>
+	<path opacity="0.15" d="M32.209,44.854h-14c-2.205,0-4-1.795-4-4v-26c0-2.205,1.795-4,4-4h11.149l1.914-5.912
+		c0.132-0.406,0.504-0.685,0.931-0.693c0.007,0,0.013,0,0.019,0c0.42,0,0.795,0.26,0.94,0.654l2.57,6.975l6.971,0.013
+		c0.42,0,0.795,0.264,0.938,0.658c0.144,0.396,0.024,0.838-0.297,1.108l-5.543,4.658l1.86,6.666c0.113,0.402-0.037,0.83-0.373,1.076
+		c-0.176,0.129-0.383,0.193-0.59,0.193c-0.19,0-0.383-0.054-0.549-0.164l-1.941-1.275v16.042
+		C36.208,43.059,34.413,44.854,32.209,44.854L32.209,44.854z"/>
+	<path opacity="0.5" d="M36.663,17.962l6.036-5.071l-7.667-0.014L32.224,5.25l-2.138,6.604H18.208c-1.654,0-3,1.346-3,3v26
+		c0,1.654,1.346,3,3,3h14c1.654,0,3-1.346,3-3V22.956l3.489,2.294L36.663,17.962z"/>
+	
+		<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="142.6875" y1="-59.4478" x2="142.6875" y2="-101.7325" gradientTransform="matrix(1 0 0 -1 -117.4805 -52.0195)">
+		<stop  offset="0" style="stop-color:#3687FF"/>
+		<stop  offset="1" style="stop-color:#051F7D"/>
+	</linearGradient>
+	<path fill="url(#SVGID_1_)" d="M32.208,10.854h-14c-1.654,0-3,1.346-3,3v26c0,1.654,1.346,3,3,3h14c1.654,0,3-1.346,3-3v-26
+		C35.208,12.2,33.862,10.854,32.208,10.854z"/>
+	
+		<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="142.6875" y1="-59.8735" x2="142.6875" y2="-96.8744" gradientTransform="matrix(1 0 0 -1 -117.4805 -52.0195)">
+		<stop  offset="0" style="stop-color:#F2F2F2"/>
+		<stop  offset="0.1364" style="stop-color:#E4EDF0"/>
+		<stop  offset="0.3929" style="stop-color:#C0DFEB"/>
+		<stop  offset="0.7391" style="stop-color:#86C8E3"/>
+		<stop  offset="0.9945" style="stop-color:#57B6DD"/>
+		<stop  offset="1" style="stop-color:#57B6DD"/>
+	</linearGradient>
+	<rect x="18.208" y="14.854" fill="url(#SVGID_2_)" width="14" height="18"/>
+	<polygon fill="#FFFFFF" fill-opacity="0.4" points="18.208,27.889 32.208,20.889 32.208,14.854 18.208,14.854 	"/>
+	
+		<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="142.6875" y1="-87.873" x2="142.6875" y2="-91.873" gradientTransform="matrix(1 0 0 -1 -117.4805 -52.0195)">
+		<stop  offset="0" style="stop-color:#FFFFFF"/>
+		<stop  offset="1" style="stop-color:#B2B2B2"/>
+	</linearGradient>
+	<rect x="23.208" y="35.854" fill="url(#SVGID_3_)" width="4" height="4"/>
+	<path fill="#FFFFFF" fill-opacity="0.25" d="M33.62,12.442l0.709-0.708c-0.544-0.544-1.294-0.88-2.121-0.88h-14
+		c-1.654,0-3,1.346-3,3v26c0,0.828,0.336,1.578,0.879,2.121l0.709-0.707c-0.363-0.363-0.588-0.863-0.588-1.414v-26c0-1.1,0.9-2,2-2
+		h14C32.758,11.854,33.258,12.079,33.62,12.442z"/>
+	<path fill-opacity="0.2" d="M34.317,11.724l-0.717,0.7c0.373,0.365,0.607,0.869,0.607,1.43v26c0,1.102-0.9,2-2,2h-14
+		c-0.55,0-1.051-0.225-1.412-0.586l-0.709,0.707c0.544,0.543,1.294,0.879,2.121,0.879h14c1.654,0,3-1.346,3-3v-26
+		C35.208,13.022,34.866,12.268,34.317,11.724z"/>
+	<polygon fill="#FFFFFF" fill-opacity="0.2" points="32.208,14.854 32.208,32.854 18.208,32.854 17.208,33.854 33.208,33.854 
+		33.208,13.854 	"/>
+	<polygon fill-opacity="0.25" points="18.208,32.854 18.208,14.854 32.208,14.854 33.208,13.854 17.208,13.854 17.208,33.854 	"/>
+	<path fill="#FFFFFF" fill-opacity="0.2" d="M27.862,35.098l-0.654,0.756v4h-4l-0.771,0.637c0.183,0.221,0.46,0.363,0.771,0.363h4
+		c0.553,0,1-0.449,1-1v-4C28.208,35.553,28.074,35.281,27.862,35.098z"/>
+	<path fill-opacity="0.25" d="M23.208,39.854v-4h4l0.654-0.756c-0.176-0.152-0.404-0.244-0.654-0.244h-4c-0.553,0-1,0.449-1,1v4
+		c0,0.242,0.086,0.463,0.229,0.637L23.208,39.854z"/>
+	<path opacity="0.3" d="M35.166,23.55v-9.701c0-1.654-1.346-3-3-3h-2.324l-0.492,1.522l-7.646,0.014
+		c-0.213,0-0.402,0.134-0.471,0.335c-0.071,0.201-0.006,0.425,0.16,0.557l6.107,4.855l-2.268,6.958
+		c-0.065,0.199,0.002,0.418,0.167,0.548c0.089,0.071,0.199,0.106,0.306,0.106c0.092,0,0.186-0.025,0.268-0.076l6.371-3.977
+		L35.166,23.55z"/>
+	<g>
+		
+			<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="-126.7969" y1="301.3916" x2="-126.7969" y2="329.7876" gradientTransform="matrix(1 0 0 1 159.02 -299.4092)">
+			<stop  offset="0" style="stop-color:#FFE23D"/>
+			<stop  offset="1" style="stop-color:#E48717"/>
+		</linearGradient>
+		<polygon fill="url(#SVGID_4_)" points="32.224,4.25 35.032,11.877 42.699,11.891 36.663,16.962 38.697,24.25 32.394,20.105 
+			25.75,24.25 28.125,16.962 21.747,11.891 29.755,11.877 		"/>
+		<path fill-opacity="0.2" d="M29.291,16.611c0,0-2.8-2.227-4.686-3.727c0.001,0,0.002,0,0.004,0l-2.862-0.994l6.378,5.071
+			L29.291,16.611z"/>
+		<path fill-opacity="0.2" d="M42.699,11.891l-2.741,0.998c-1.786,1.5-4.432,3.723-4.432,3.723s0.889,3.184,1.49,5.338
+			c-1.863-1.225-4.609-3.03-4.609-3.03s-2.891,1.804-4.855,3.028c0.002-0.002,0.002-0.004,0.002-0.006L25.75,24.25l6.644-4.145
+			l6.304,4.145l-2.034-7.288L42.699,11.891z"/>
+		<path fill="#FFFFFF" fill-opacity="0.25" d="M42.699,11.891l-7.667-0.014L32.224,4.25l-2.469,7.627l-8.008,0.014l2.862,0.996
+			c2.365-0.005,5.875-0.011,5.875-0.011s1.072-3.317,1.801-5.565c0.83,2.252,2.051,5.565,2.051,5.565s3.361,0.006,5.625,0.011
+			c0,0-0.001,0-0.002,0.002L42.699,11.891z"/>
+		<path fill="#FFFFFF" fill-opacity="0.25" d="M25.75,24.25l1.804-2.309c0.701-2.15,1.737-5.33,1.737-5.33l-1.166,0.351L25.75,24.25
+			z"/>
+	</g>
+</g>
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ftuapplication/src/ftufirsttimeuse.cpp	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,202 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  First Time Use application main class.
+*
+*/
+
+
+#include "ftufirsttimeuse.h"
+
+#include <QStateMachine>
+#include <qservicemanager.h>
+#include <qservicefilter.h>
+#include <qserviceinterfacedescriptor.h>
+#include <QFileInfo>
+#include <QDir>
+#include <QApplication>
+
+
+QTM_USE_NAMESPACE
+
+const char* ftuRuntimeUri = "com.nokia.ftu.runtime.FtuRuntime";
+
+// ---------------------------------------------------------------------------
+// FtuFirstTimeUse::FtuFirstTimeUse
+// ---------------------------------------------------------------------------
+//
+FtuFirstTimeUse::FtuFirstTimeUse(QObject* aParent) : 
+    QObject(aParent),
+    mRuntime(NULL)
+{  
+    FTUTEST_FUNC_ENTRY("FTU::FtuFirstTimeUse::FtuFirstTimeUse");
+    
+    registerServicePlugins();
+
+    QServiceManager manager;
+    QServiceFilter filter(ftuRuntimeUri);
+    QList<QServiceInterfaceDescriptor> interfaces = manager.findInterfaces(
+                                                                    filter);
+    
+    qDebug() << "ftu: found " << interfaces.count() 
+             << " instances of runtime";
+    
+    if(interfaces.count() > 0){
+        mRuntime = (QStateMachine*)(manager.loadInterface(
+                                        interfaces.first().interfaceName()));
+    }
+
+        
+    
+    if(mRuntime) {
+        mRuntime->setParent(this);
+        connect(mRuntime, SIGNAL(started()), SLOT(handleRuntimeStarted()));
+        connect(mRuntime, SIGNAL(stopped()), SLOT(handleRuntimeStopped()));
+        connect(mRuntime, SIGNAL(faulted()), SLOT(handleRuntimeFaulted()));    
+    }
+    
+    FTUTEST_FUNC_EXIT("FTU::FtuFirstTimeUse::FtuFirstTimeUse");
+}
+
+// ---------------------------------------------------------------------------
+// FtuFirstTimeUse::~FtuFirstTimeUse()
+// ---------------------------------------------------------------------------
+//
+FtuFirstTimeUse::~FtuFirstTimeUse()
+{
+	if(mRuntime)
+	{
+		disconnect(mRuntime, SIGNAL(started()), this, SLOT(handleRuntimeStarted()));
+        disconnect(mRuntime, SIGNAL(stopped()), this, SLOT(handleRuntimeStopped()));
+        disconnect(mRuntime, SIGNAL(faulted()), this, SLOT(handleRuntimeFaulted()));
+
+		delete mRuntime;
+	}
+}
+
+// ---------------------------------------------------------------------------
+// FtuFirstTimeUse::start()
+// ---------------------------------------------------------------------------
+//
+void FtuFirstTimeUse::start()
+{
+    FTUTEST_FUNC_ENTRY("FTU::FtuFirstTimeUse::start");
+    
+    if(mRuntime) {
+        mRuntime->start();
+    } else {
+        emit exit();
+    }
+    
+    FTUTEST_FUNC_EXIT("FTU::FtuFirstTimeUse::start");
+}
+
+// ---------------------------------------------------------------------------
+// FtuFirstTimeUse::stop()
+// ---------------------------------------------------------------------------
+//
+void FtuFirstTimeUse::stop()
+{
+    FTUTEST_FUNC_ENTRY("FTU::FtuFirstTimeUse::stop");
+    
+    mRuntime->stop();
+    
+    FTUTEST_FUNC_EXIT("FTU::FtuFirstTimeUse::stop");
+}
+
+// ---------------------------------------------------------------------------
+// FtuFirstTimeUse::handleRuntimeStarted()
+// ---------------------------------------------------------------------------
+//
+void FtuFirstTimeUse::handleRuntimeStarted()
+{
+}
+ 
+// ---------------------------------------------------------------------------
+// FtuFirstTimeUse::handleRuntimeStopped()
+// ---------------------------------------------------------------------------
+//
+void FtuFirstTimeUse::handleRuntimeStopped()
+{
+    emit exit();
+}
+ 
+// ---------------------------------------------------------------------------
+// FtuFirstTimeUse::handleRuntimeFaulted()
+// ---------------------------------------------------------------------------
+//
+void FtuFirstTimeUse::handleRuntimeFaulted()
+{
+    emit exit();
+}
+// ---------------------------------------------------------------------------
+// FtuFirstTimeUse::registerServicePlugins()
+// ---------------------------------------------------------------------------
+//
+void FtuFirstTimeUse::registerServicePlugins()
+{
+    FTUTEST_FUNC_ENTRY("FTU::FtuFirstTimeUse::registerServicePlugins()");
+    QStringList pluginPaths;
+
+    pluginPaths << "fturesources/plugins";
+
+    QFileInfoList drives = QDir::drives();
+    foreach(const QString pluginPath, pluginPaths) {
+#ifdef Q_OS_SYMBIAN
+        //Check plugin dirs from root of different drives
+        foreach(QFileInfo drive, drives) {
+            QString driveLetter = drive.absolutePath();
+            QString path = driveLetter + pluginPath;
+            if(QDir(path).exists()) {
+                registerServicePlugins(path);
+            }
+        }
+#endif
+        //Check plugin path relative to current dir
+        if(QDir(pluginPath).exists()) {
+            registerServicePlugins(pluginPath);
+        }
+    }
+    FTUTEST_FUNC_EXIT("FTU::FtuFirstTimeUse::registerServicePlugins()");
+}
+
+// ---------------------------------------------------------------------------
+// FtuFirstTimeUse::registerServicePlugins()
+// ---------------------------------------------------------------------------
+//
+void FtuFirstTimeUse::registerServicePlugins(const QString &root)
+{
+    FTUTEST_FUNC_ENTRY("FTU::FtuFirstTimeUse::registerServicePlugins(const QString &)");
+    qDebug() << "FTU: root: " << root;
+    QDir dir = QDir(root);
+    QFileInfoList fileInfos = dir.entryInfoList(QDir::AllDirs | QDir::NoDotAndDotDot);
+
+    foreach (QFileInfo fileInfo, fileInfos) {
+        registerServicePlugins(fileInfo.absoluteFilePath());
+    }
+
+    fileInfos = dir.entryInfoList(QStringList("*.xml"));
+
+    if (!fileInfos.isEmpty()) {
+        //Plugin dll and xml are in the same directory
+        QApplication::addLibraryPath(root);
+        qDebug() << QString("FTU::FtuFirstTimeUse::registerServicePlugins - Directory added to application's library paths: ")
+                 << root;
+        QServiceManager manager;
+        foreach(QFileInfo fileInfo, fileInfos) {
+            manager.addService(fileInfo.absoluteFilePath());
+            qDebug() << QString("FTU::FtuFirstTimeUse::registerServicePlugins - Plugin registered: ") + fileInfo.fileName();
+        }
+    }
+    FTUTEST_FUNC_EXIT("FTU::FtuFirstTimeUse::registerServicePlugins(const QString &)");
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ftuapplication/src/main.cpp	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,75 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  First Time Use application main implementation.
+*
+*/
+
+
+#include "ftufirsttimeuse.h"
+#include "ftutest_global.h"
+
+#include <QtGui>
+#include <hbapplication.h>
+#include <QTranslator>
+#include <QLocale>
+
+// ---------------------------------------------------------------------------
+// main
+// ---------------------------------------------------------------------------
+//
+int main(int argc, char *argv[])
+{
+    FTUTEST_FUNC_ENTRY("FTU::FtuFirstTimeUse::main");
+    
+    HbApplication app(argc, argv);    
+
+    QTranslator translator;
+    
+    QString translation = "ftu_";
+    if(argc > 1){
+        translation.append(argv[1]);
+    }
+    else{
+        // another option to load locale could be QLocale::system().language())
+        translation.append(QLocale::system().name()); // this seems to be ftu_en_US in Windows and ftu_en_GB in WINSCW emulator and hardware
+    }
+    translator.load(translation, ":/translations" );
+    app.installTranslator(&translator);
+
+    QString exampleWizardsTranslation = "ftuexamplewizards_";
+    if(argc > 1){
+        exampleWizardsTranslation.append(argv[1]);
+    }
+    else{
+        exampleWizardsTranslation.append(QLocale::system().name());
+    }
+    QTranslator exampleWizardsTranslator;
+
+    exampleWizardsTranslator.load(exampleWizardsTranslation, ":/translations" );
+    app.installTranslator(&exampleWizardsTranslator);
+
+    FtuFirstTimeUse ftuFirstTimeUse;
+#ifdef ROM
+    QDir::setCurrent("Z:/");    
+#else
+    QDir::setCurrent("C:/");
+    FTUDEBUG("main() - FtuApplication's current dir set to C:/");
+#endif //ROM
+    QObject::connect(&app,SIGNAL(aboutToQuit()),&ftuFirstTimeUse,SLOT(stop()));
+    QObject::connect(&ftuFirstTimeUse, SIGNAL(exit()), &app, SLOT(quit()),Qt::QueuedConnection);    
+    ftuFirstTimeUse.start();
+    int ret = app.exec();
+    FTUTEST_FUNC_EXIT("FTU::FtuFirstTimeUse::main");
+    return ret;       
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fturuntimeservices/fturuntimeservices.pri	Mon Apr 19 14:01:47 2010 +0300
@@ -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:  FTU runtime services list of files
+#
+
+HEADERS += ./inc/*.h
+SOURCES += ./src/*.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fturuntimeservices/fturuntimeservices.pro	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,65 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:  FTU runtime services project file
+#
+
+TEMPLATE = lib
+
+symbian {
+    CONFIG(debug, debug|release) {
+      DESTDIR = debug
+    } else {
+      DESTDIR = release
+    }
+}
+
+win32 {
+    CONFIG(debug, debug|release) {
+      SUBDIRPART = debug
+    } else {
+      SUBDIRPART = release
+    }
+    DESTDIR = $$PWD/../../bin/$$SUBDIRPART
+}
+CONFIG += debug_and_release
+
+DEFINES += FTURUNTIMESERVICES_LIB
+
+DEPENDPATH += . \
+              inc \
+              src
+
+INCLUDEPATH += . \
+               inc
+
+CONFIG += hb
+
+symbian {
+TARGET.UID3 = 0x20027037
+TARGET.EPOCALLOWDLLDATA=1
+TARGET.CAPABILITY = ALL -TCB
+LIBS += -lswinstcli
+BLD_INF_RULES.prj_exports += "./inc/fturuntimeservices_global.h |../inc/" \                             
+                             "./inc/ftucontentservice.h |../inc/"
+INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE
+}
+
+win32 {
+}
+include(fturuntimeservices.pri)
+system(copy /y .\inc\fturuntimeservices_global.h ..\inc)
+system(copy /y .\inc\ftucontentservice.h ..\inc)
+
+#ONLY FOR DEVELOPMENT! REMOVE THIS BEFORE EACH HS_Domain RELEASE!
+symbian: MMP_RULES += EXPORTUNFROZEN
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fturuntimeservices/fturuntimeservices_installs_symbian.pri	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,21 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies 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 += ./inc/ftucontentservice.h \
+                      ./inc/ftucontentservice_p.h \           
+                      ./inc/fturuntimeservices_global.h
+                      
+SOURCES += ./src/ftucontentservice.cpp  \          
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fturuntimeservices/fturuntimeservices_installs_win32.pri	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,32 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+#
+# Release
+#
+
+r01.path = $$PWD/../../bin/release
+r01.files = ./release/*.*
+
+INSTALLS += r01
+
+#
+# Debug
+#
+
+d01.path = $$PWD/../../bin/debug
+d01.files = ./debug/*.*
+
+INSTALLS += d01
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fturuntimeservices/inc/ftucontentservice.h	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,133 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Content service.
+*
+*/
+
+
+#ifndef FTU_RUNTIMESERVICES_CONTENTSERVICE_H
+#define FTU_RUNTIMESERVICES_CONTENTSERVICE_H
+
+#include "fturuntimeservices_global.h"
+
+#include <QObject>
+#include <QVariant>
+
+class FtuContentServicePrivate;
+class FtuWizard;
+
+
+/**
+ * @ingroup group_ftucontentmodel
+ * @brief Content service.
+ *
+ * States use content service through an execution
+ * context. Content service provides access to wizards.
+ *
+ * @lib ?library
+ * @since S60 ?S60_version
+ */
+class FTURUNTIMESERVICES_EXPORT FtuContentService : public QObject
+{
+    Q_OBJECT
+
+public:
+
+    /**
+     * Constructor.
+     * @since S60 ?S60_version.
+     * @param parent Parent object.
+     */
+    FtuContentService( QObject *parent = 0);
+
+    /**
+     * Destructor.
+     * @since S60 ?S60_version.
+     */
+    virtual ~FtuContentService();
+
+private:
+
+    Q_DISABLE_COPY(FtuContentService)
+
+public:
+
+    /**
+     * Inserts wizard at the end of the list.
+     * @since S60 ?S60_version.
+     * @param wizard Wizard.
+     */
+    void appendWizard(FtuWizard *wizard);
+
+    /**
+     * Inserts wizard at the given index position in the list.
+     * @since S60 ?S60_version.
+     * @param index Index.
+     * @param wizard Wizard.
+     */
+    void insertWizard(int index, FtuWizard *wizard);
+
+    /**
+     * Sets the active wizard.
+     * @since S60 ?S60_version.
+     * @param index Wizard index.
+     */
+    void setActiveWizard(int index);
+
+    /**
+     * Returns the active wizard.
+     * @since S60 ?S60_version.
+     * @return Wizard index.
+     */
+    int activeWizard() const;
+
+    /**
+     * Returns the wizard at index position aIndex in the list.
+     * @since S60 ?S60_version.
+     * @param index Index.
+     * @return Wizard.
+     */
+    FtuWizard *wizard(int index) const;
+
+    /**
+     * Returns all wizards as list.
+     * @since S60 ?S60_version.
+     * @return Wizard.
+     */
+    QList<FtuWizard*> wizards() const;
+
+signals:
+
+    /**
+     * Emitted when a wizard is added to the wizard list.
+     * @since S60 ?S60_version.
+     * @param index Wizard's index position in the list.
+     */
+    void wizardAdded(int index);
+
+private:
+
+    /**
+     * Private implementation.
+     */
+    FtuContentServicePrivate* mFtuContentServicePrivate;
+
+    friend class FtuContentServicePrivate;
+
+};
+
+Q_DECLARE_METATYPE(FtuContentService*)
+
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fturuntimeservices/inc/ftucontentservice_p.h	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,122 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Content service private implementation.
+*
+*/
+
+
+#ifndef FTU_RUNTIMESERVICES_CONTENTSERVICE_P_H
+#define FTU_RUNTIMESERVICES_CONTENTSERVICE_P_H
+
+#include <QObject>
+
+class FtuWizard;
+class FtuContentService;
+
+/**
+ * @ingroup group_ftucontentservice
+ * @brief Content service private implementation.
+ *
+ * @lib ?library
+ * @since S60 ?S60_version
+ */
+class FtuContentServicePrivate: public QObject
+{
+	Q_OBJECT
+
+public:
+
+    /**
+     * Constructor.
+     * @since S60 ?S60_version.
+     * @param contentService Content service.
+     */
+    FtuContentServicePrivate(FtuContentService *ftuContentService);
+
+    /**
+     * Destructor.
+     * @since S60 ?S60_version.
+     */
+    virtual ~FtuContentServicePrivate();
+    
+private:
+
+	Q_DISABLE_COPY(FtuContentServicePrivate) 
+
+public:
+
+	 /**
+     * Inserts wizard at the end of the list.
+     * @since S60 ?S60_version.
+     * @param wizard Wizard.
+     */
+    void appendWizard(FtuWizard *wizard);
+    
+    /**
+     * Inserts wizard at the given index position in the list.
+     * @since S60 ?S60_version.
+     * @param index Index.
+     * @param wizard Wizard.
+     */
+    void insertWizard(int index, FtuWizard *wizard);
+
+    /**
+     * Sets the active wizard.
+     * @since S60 ?S60_version.
+     * @param index Wizard index.     
+     */
+    void setActiveWizard(int index);
+    
+    /**
+     * Returns the active wizard.
+     * @since S60 ?S60_version.
+     * @return wizard index.
+     */
+    int activeWizard() const;
+
+    /**
+     * Returns the wizard at index position index in the list. 
+     * @since S60 ?S60_version.
+     * @param index Index.
+     * @return Wizard.     
+     */
+    FtuWizard* wizard(int index) const;
+    
+    /**
+     * Returns all wizards as list.  
+     * @since S60 ?S60_version.
+     * @return Wizards.     
+     */
+    QList<FtuWizard*> wizards() const;
+
+public:
+
+    /**
+     * Public interface.
+     */
+    FtuContentService *mFtuContentService;
+
+    /**
+     * Wizard container.
+     */
+    QList<FtuWizard*> mWizardList;
+    
+    /**
+     * Active wizard index.
+     */
+    int mActiveWizardIndex;
+
+};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fturuntimeservices/inc/fturuntimeservices_global.h	Mon Apr 19 14:01:47 2010 +0300
@@ -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:  Library header.
+*
+*/
+
+
+#ifndef FTURUNTIMESERVICES_GLOBAL_H
+#define FTURUNTIMESERVICES_GLOBAL_H
+
+#include <Qt/qglobal.h>
+
+
+// services uri; services key names used when the service is passed as property in state
+const char FTU_CONTENT_SERVICE_KEY[]  = "http://ftu.nokia.com/runtimeservices/contentservice";
+
+// property name used to register for required services in state
+// runtime assigns requested service based on value of the key in state, service keys should be used.
+const char FTU_SERVICES_REGISTRATION_KEY[]  = "_ftu_services_";
+
+#ifdef FTURUNTIMESERVICES_LIB
+#define FTURUNTIMESERVICES_EXPORT Q_DECL_EXPORT
+#else
+#ifdef FTURUNTIMESERVICES_TEST
+        #define FTURUNTIMESERVICES_EXPORT
+    #else
+        #define FTURUNTIMESERVICES_EXPORT Q_DECL_IMPORT
+    #endif	
+#endif
+
+#endif // FTURUNTIMESERVICES_GLOBAL_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fturuntimeservices/src/ftucontentservice.cpp	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,203 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  First Time Use runtime content service.
+*
+*/
+
+
+#include "ftucontentservice.h"
+#include "ftucontentservice_p.h"
+#include <ftuwizard.h>
+
+
+// ---------------------------------------------------------------------------
+// FtuContentServicePrivate::FtuContentServicePrivate()
+// ---------------------------------------------------------------------------
+//
+FtuContentServicePrivate::FtuContentServicePrivate(FtuContentService *ftuContentService)
+    : QObject(ftuContentService),
+      mFtuContentService(ftuContentService),
+      mActiveWizardIndex(-1)
+{
+
+}
+
+// ---------------------------------------------------------------------------
+// FtuContentServicePrivate::~FtuContentServicePrivate()
+// ---------------------------------------------------------------------------
+//
+FtuContentServicePrivate::~FtuContentServicePrivate()
+{
+    qDeleteAll(mWizardList);
+}
+
+// ---------------------------------------------------------------------------
+// FtuContentServicePrivate::appendWizard()
+// ---------------------------------------------------------------------------
+//
+void FtuContentServicePrivate::appendWizard(FtuWizard *wizard)
+{
+    if (wizard && mWizardList.contains(wizard)) {
+        return;
+    }
+
+    mWizardList.append(wizard);
+
+    if (wizard) {
+        int index = mWizardList.size() - 1;
+        emit mFtuContentService->wizardAdded(index);
+    }
+}
+
+// ---------------------------------------------------------------------------
+// FtuContentServicePrivate::insertWizard()
+// ---------------------------------------------------------------------------
+//
+void FtuContentServicePrivate::insertWizard(int index, FtuWizard *wizard)
+{
+    if (wizard && mWizardList.contains(wizard)) {
+        return;
+    }
+
+    if (index < 0 || mWizardList.count() < index) {
+        return;
+    }
+
+    mWizardList.insert(index, wizard);
+
+    if (wizard) {
+        emit mFtuContentService->wizardAdded(index);
+    }
+}
+
+// ---------------------------------------------------------------------------
+// FtuContentServicePrivate::setActiveWizard()
+// ---------------------------------------------------------------------------
+//
+void FtuContentServicePrivate::setActiveWizard(int index)
+{
+    if (index < 0 || mWizardList.count() <= index) {
+        index = -1;
+    }
+
+    mActiveWizardIndex = index;
+}
+
+// ---------------------------------------------------------------------------
+// FtuContentServicePrivate::activeWizard()
+// ---------------------------------------------------------------------------
+//
+int FtuContentServicePrivate::activeWizard() const
+{
+    return mActiveWizardIndex;
+}
+
+// ---------------------------------------------------------------------------
+// FtuContentServicePrivate::wizard()
+// ---------------------------------------------------------------------------
+//
+FtuWizard* FtuContentServicePrivate::wizard(int index) const
+{
+    if (index < 0 || mWizardList.count() <= index) {
+        return 0;
+    }
+
+    return mWizardList[index];
+}
+
+// ---------------------------------------------------------------------------
+// FtuContentServicePrivate::wizards()
+// ---------------------------------------------------------------------------
+//
+QList<FtuWizard*> FtuContentServicePrivate::wizards() const
+{
+    return mWizardList;
+}
+
+// ---------------------------------------------------------------------------
+// FtuContentService::FtuContentService()
+// ---------------------------------------------------------------------------
+//
+FtuContentService::FtuContentService(QObject *parent)
+    : QObject(parent),
+	  mFtuContentServicePrivate(NULL)
+{
+    mFtuContentServicePrivate = new FtuContentServicePrivate(this);    
+}
+
+// ---------------------------------------------------------------------------
+// FtuContentService::~FtuContentService()
+// ---------------------------------------------------------------------------
+//
+FtuContentService::~FtuContentService()
+{
+    if(mFtuContentServicePrivate)
+	{
+		delete mFtuContentServicePrivate;
+	}
+}
+
+// ---------------------------------------------------------------------------
+// FtuContentService::appendWizard()
+// ---------------------------------------------------------------------------
+//
+void FtuContentService::appendWizard(FtuWizard *wizard)
+{
+    mFtuContentServicePrivate->appendWizard(wizard);
+}
+
+// ---------------------------------------------------------------------------
+// FtuContentService::insertWizard()
+// ---------------------------------------------------------------------------
+//
+void FtuContentService::insertWizard(int index, FtuWizard *wizard)
+{
+    mFtuContentServicePrivate->insertWizard(index, wizard);
+}
+
+// ---------------------------------------------------------------------------
+// FtuContentService::setActiveWizard()
+// ---------------------------------------------------------------------------
+//
+void FtuContentService::setActiveWizard(int index)
+{
+    mFtuContentServicePrivate->setActiveWizard(index);
+}
+
+// ---------------------------------------------------------------------------
+// FtuContentService::activeWizard()
+// ---------------------------------------------------------------------------
+//
+int FtuContentService::activeWizard() const
+{
+    return mFtuContentServicePrivate->activeWizard();
+}
+
+// ---------------------------------------------------------------------------
+// FtuContentService::wizard()
+// ---------------------------------------------------------------------------
+//
+FtuWizard *FtuContentService::wizard(int index) const
+{
+    return mFtuContentServicePrivate->wizard(index);
+}
+
+// ---------------------------------------------------------------------------
+// FtuContentService::wizards()
+// ---------------------------------------------------------------------------
+//
+QList<FtuWizard*> FtuContentService::wizards() const
+{
+    return mFtuContentServicePrivate->wizards();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/inc/ftutest_global.h	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,76 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  The dll header file.
+*
+*/
+
+
+#ifndef FTUTEST_GLOBAL_H
+#define FTUTEST_GLOBAL_H
+
+#include <QDebug>
+
+#ifdef NFT
+#ifdef Q_OS_SYMBIAN
+#include <e32hal.h>
+#endif
+#endif
+
+#ifndef FTU_TEST
+    #define FTU_TEST_CLASS(aClassName)
+#else
+    #define FTU_TEST_CLASS(aClassName) class aClassName;
+#endif //FTU_TEST
+
+#ifndef FTU_TEST
+    #define FTU_TEST_FRIEND_CLASS(aClassName)
+#else
+    #define FTU_TEST_FRIEND_CLASS(aClassName) friend class aClassName;
+#endif //FTU_TEST
+
+#define FTUCATCHDEBUG qDebug("Catched in: %s on line: %d",__FILE__,__LINE__);
+#define FTUDEBUG(a) qDebug("%s in: %s on line: %d", (a),  __FILE__,__LINE__);
+
+#ifdef NFT
+    #define FTUTEST(aText)                  qDebug() << QString(aText)
+#ifdef Q_OS_SYMBIAN
+    inline void FTUTestFreeRam(const QString &aFunction)
+    {
+    TMemoryInfoV1Buf meminfo;
+    UserHal::MemoryInfo(meminfo);
+    int memSize = meminfo().iTotalRamInBytes >> 10;
+    int memFree = meminfo().iFreeRamInBytes >> 10;
+
+    RHeap& ownHeap = User::Heap();
+    TInt biggestBlock = 0;
+    int heapFree = ownHeap.Available(biggestBlock) >> 10;
+    int heapSize = ownHeap.Size() >> 10;
+    qDebug()<< aFunction << "memFree" << memFree << "kb memSize" << memSize << "kb heapFree" << heapFree << "kb heapSize" << heapSize;
+    }
+    
+    #define FTUTEST_FUNC_ENTRY(aFunction)   FTUTestFreeRam(QString(aFunction)+" entry")
+    #define FTUTEST_FUNC_EXIT(aFunction)    FTUTestFreeRam(QString(aFunction)+" exit")
+#else
+    #define FTUTEST_FUNC_ENTRY(aFunction)   qDebug()<< aFunction << " entry";
+    #define FTUTEST_FUNC_EXIT(aFunction)    qDebug()<< aFunction << " exit";
+#endif
+    
+#else
+    #define FTUTEST(aText)
+    #define FTUTEST_FUNC_ENTRY(aFunction)
+    #define FTUTEST_FUNC_EXIT(aFunction)
+#endif
+
+#endif // FTUTEST_GLOBAL_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/layers.sysdef.xml	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<!DOCTYPE SystemDefinition SYSTEM "sysdef_1_5_1.dtd" [
+  <!ENTITY layer_real_source_path "sf/app/firsttimeuse" >
+]>
+
+<SystemDefinition name="firsttimeuse" schema="1.5.1">
+  <systemModel>
+    <layer name="app_layer">
+      <module name="firsttimeuse">
+        <unit name="firsttimeuse" unitID="orgdo.firsttimeuse.pro" bldFile="&layer_real_source_path;" mrp="" proFile="ftu.pro" qmakeArgs="-r -config rom"/>
+      </module>
+    </layer>
+
+   
+    </systemModel>
+</SystemDefinition>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rom/ftu.iby	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,48 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  The FTU iby file.
+*
+*/
+
+
+#ifndef __FTU_IBY__
+#define __FTU_IBY__
+
+
+// ---- ftuapplication --------------------------------------------------------
+
+file=ABI_DIR/BUILD_DIR/ftuapplication.exe                   PROGRAMS_DIR/ftuapplication.exe
+data=ZPRIVATE/10003a3f/import/apps/ftuapplication_reg.rsc   private/10003a3f/import/apps/ftuapplication_reg.rsc
+
+// ---- fturuntimeservices ----------------------------------------------------
+
+file=ABI_DIR/BUILD_DIR/fturuntimeservices.dll               SHARED_LIB_DIR/fturuntimeservices.dll
+
+// ---- ftudefaultruntimeprovider ---------------------------------------------
+
+file=ABI_DIR/BUILD_DIR/ftudefaultruntimeprovider.dll        SHARED_LIB_DIR/ftudefaultruntimeprovider.dll
+data=/epoc32/data/z/fturesources/plugins/runtimeproviders/ftudefaultruntimeprovider.qtplugin        fturesources/plugins/runtimeproviders/ftudefaultruntimeprovider.qtplugin
+data=/epoc32/data/z/fturesources/plugins/runtimeproviders/ftudefaultruntimeprovider.xml        fturesources/plugins/runtimeproviders/ftudefaultruntimeprovider.xml
+
+// ---- ftuwizardprovider -----------------------------------------------------
+
+file=ABI_DIR/BUILD_DIR/ftuwizardprovider.dll                SHARED_LIB_DIR/ftuwizardprovider.dll
+
+// ---- ftustateprovider ------------------------------------------------------
+
+file=ABI_DIR/BUILD_DIR/ftustateprovider.dll                 SHARED_LIB_DIR/ftustateprovider.dll
+//data=/epoc32/data/z/fturesources/plugins/stateproviders/ftustateprovider.qtplugin                   fturesources/plugins/stateproviders/ftustateprovider.qtplugin
+//data=/epoc32/data/z/fturesources/plugins/stateproviders/ftustateprovider.manifest                   fturesources/plugins/stateproviders/ftustateprovider.manifest
+
+#endif //__FTU_IBY__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/runtimeproviders/ftudefaultruntimeprovider/ftudefaultruntimeprovider.pri	Mon Apr 19 14:01:47 2010 +0300
@@ -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:  FTU default runtime provider list of files
+#
+
+HEADERS += ./inc/*.h
+SOURCES += ./src/*.cpp
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/runtimeproviders/ftudefaultruntimeprovider/ftudefaultruntimeprovider.pro	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,83 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:  FTU default runtime provider project file
+#
+
+TEMPLATE = lib
+
+
+symbian {
+    CONFIG(debug, debug|release) {
+        DESTDIR = debug
+    } else {  
+        DESTDIR = release
+    }
+}
+
+win32 {
+    CONFIG(debug, debug|release) {
+      SUBDIRPART = debug
+    } else {
+      SUBDIRPART = release
+    }
+    DESTDIR = $$PWD/../../../bin/$$SUBDIRPART/fturesources/plugins/runtimeproviders
+    LIBS += -L$$PWD/../../../bin/debug
+}
+
+LIBS +=  -lfturuntimeservices
+LIBS +=  -lftustateprovider
+    
+CONFIG += plugin debug_and_release
+
+CONFIG += hb
+
+CONFIG += hb mobility
+MOBILITY = serviceframework
+
+QT += xml sql
+
+DEFINES += FTUDEFAULTRUNTIMEPROVIDER_LIB
+
+coverage:DEFINES += COVERAGE_MEASUREMENT
+
+DEPENDPATH +=   ./inc \
+                ./src
+
+INCLUDEPATH += ./inc \
+               ../../inc \
+
+symbian {
+    TARGET.UID3 = 0x20026F97
+    TARGET.EPOCALLOWDLLDATA=1
+    TARGET.CAPABILITY = ALL -TCB
+    appkey:DEFINES += S60APP_KEY
+    INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE
+
+    include(ftudefaultruntimeprovider_installs_symbian.pri)
+}
+
+win32 {
+include(ftudefaultruntimeprovider_installs_win32.pri)
+}
+
+symbian:unix:include(ftudefaultruntimeprovider_installs_unix.pri)
+
+include(ftudefaultruntimeprovider.pri)
+
+symbian: plugin{
+    BLD_INF_RULES.prj_exports += "resource/$${TARGET}.s60xml z:$$qtplugins.path/$${TARGET}.xml"
+    
+    for(qtplugin, qtplugins.sources):BLD_INF_RULES.prj_exports += "./$$qtplugin z:$$qtplugins.path/$$basename(qtplugin)"
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/runtimeproviders/ftudefaultruntimeprovider/ftudefaultruntimeprovider_installs_symbian.pri	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,23 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+
+export.sources = resource/*.xml
+export.path = /fturesources/plugins/runtimeproviders
+
+pluginstub.sources = ftudefaultruntimeprovider.dll
+pluginstub.path = /fturesources/plugins/runtimeproviders
+
+DEPLOYMENT += export pluginstub
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/runtimeproviders/ftudefaultruntimeprovider/ftudefaultruntimeprovider_installs_unix.pri	Mon Apr 19 14:01:47 2010 +0300
@@ -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: 
+#
+#
+# Release
+#
+
+r01.path = ../../../bin/release/fturesources/plugins/runtimeproviders
+r01.files = ./release/*.so* \
+            ./resource/*.manifest
+
+INSTALLS += r01
+
+#
+# Debug
+#
+
+d01.path = ../../../bin/debug/fturesources/plugins/runtimeproviders
+d01.files = ./debug/*.so* \
+            ./resource/*.manifest
+
+INSTALLS += d01
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/runtimeproviders/ftudefaultruntimeprovider/ftudefaultruntimeprovider_installs_win32.pri	Mon Apr 19 14:01:47 2010 +0300
@@ -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: 
+#
+#
+# Release
+#
+
+r01.path = $$PWD/../../../bin/release/fturesources/plugins/runtimeproviders
+r01.files = ./release/*.* \
+            ./resource/*.manifest
+
+INSTALLS += r01
+
+#
+# Debug
+#
+
+d01.path = $$PWD/../../../bin/debug/fturesources/plugins/runtimeproviders
+d01.files = ./debug/*.* \
+            ./resource/*.manifest
+
+INSTALLS += d01
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/runtimeproviders/ftudefaultruntimeprovider/inc/ftudefaultruntime.h	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,150 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Declaration of the FTU default runtime.
+*
+*/
+
+
+#ifndef FTU_RUNTIMES_DEFAULTRUNTIME_H
+#define FTU_RUNTIMES_DEFAULTRUNTIME_H
+
+#include "ftutest_global.h"
+#include <QHash>
+#include <QStateMachine>
+
+FTU_TEST_CLASS(FtuDefaultRuntimeProviderTest)
+
+// Forward declarations
+class QStateMachine;
+class HbMainWindow;
+class FtuContentService;
+
+
+
+/**  @ingroup group_ftudefaultruntimeprovider
+ * @brief Default implementation of the ftu runtime.
+ *
+ * Creates an execution context (EC) and populates it with
+ * runtime services. States are loaded from state provider
+ * plugins. Each state is given an access to the EC. States
+ * are added to a state machine. Finally, the state machine
+ * is started.
+ *
+ * @lib ?library
+ * @since S60 ?S60_version
+ */
+class FtuDefaultRuntime : public QStateMachine
+{
+    Q_OBJECT
+
+public:
+
+    /**
+     * Constructor.
+     * @since S60 ?S60_version.
+     * @param parent - address of parent QObject instance, by default none
+     */
+    FtuDefaultRuntime(QObject* = 0);
+
+    /**
+     * Destructor.
+     * @since S60 ?S60_version.
+     */
+    ~FtuDefaultRuntime();
+
+private:
+    /**
+     * Copy constructor
+     */
+    Q_DISABLE_COPY(FtuDefaultRuntime)
+    
+public slots:
+
+private slots:
+
+    /**
+     * Called after the state machine has started.
+     * @since S60 ?S60_version.
+     */
+    void handleStateMachineStarted();
+
+    /**
+     * Called after the state machine has stopped.
+     * @since S60 ?S60_version.
+     */
+    void handleStateMachineStopped();
+
+signals:
+
+    /**
+     * Emission of this signal initiates a transition to the final state.     
+     */
+    void stopStateMachine();
+    
+private:
+
+    /**
+     * Creates content service parts
+     * @since S60 ?S60_version.
+     */
+    void createContentServiceParts();
+
+	/**
+     * Creates gui service parts
+     * @since S60 ?S60_version.
+     */
+    void createGuiServiceParts();
+    
+	/**
+     * Creates states
+     * @since S60 ?S60_version.
+     */
+    void createStates();
+
+    /**
+    * Assign services to states based on value of property HS_SERVICES_REGISTRATION_KEY
+    * @since S60 ?S60_version.
+    */
+    void assignServices();
+
+    /**
+     * Function create and initialize services shared between states
+     */
+    void initializeRuntimeServices();
+    
+private:
+
+
+    /**
+     * Content service delivered to runtime's states.
+     */
+    FtuContentService *mFtuContentService;
+
+    /**
+	 * Window to visualize scene
+	 */
+    HbMainWindow *mWindow;
+    
+    /**
+     * Contains address of runtime service.
+     * Ownership transfered to application. Don't remove it.
+     */
+    QHash<QString,QObject*> mServices;
+    
+    FTU_TEST_FRIEND_CLASS(FtuDefaultRuntimeProviderTest)
+
+};
+
+#endif // FTU_RUNTIMES_DEFAULTRUNTIME_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/runtimeproviders/ftudefaultruntimeprovider/inc/ftudefaultruntimeprovider.h	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,51 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Declaration of the FTU default runtime provider.
+*
+*/
+
+
+#ifndef FTU_RUNTIMEPROVIDERS_DEFAULTRUNTIMEPROVIDER_H
+#define FTU_RUNTIMEPROVIDERS_DEFAULTRUNTIMEPROVIDER_H
+
+#include <QObject>
+#include <qserviceplugininterface.h>
+
+
+QTM_USE_NAMESPACE
+
+/**
+ * @ingroup group_ftudefaultruntimeprovider
+ * @brief Provides a default implementation of the ftu runtime.
+ *
+ * This provider includes a default implementation of the ftu runtime.
+ * The runtime is described in the ftudefaultruntimeprovider.manifest file.
+ *
+ * @since S60 ?S60_version.
+ */
+class FtuDefaultRuntimeProvider : public QObject, public QServicePluginInterface
+{    
+    Q_OBJECT
+    Q_INTERFACES(QtMobility::QServicePluginInterface)
+public:
+
+public:
+    QObject *createInstance(const QServiceInterfaceDescriptor &descriptor,
+                            QServiceContext *context,
+                            QAbstractSecuritySession *session);
+
+};
+
+#endif //FTU_RUNTIMEPROVIDERS_DEFAULTRUNTIMEPROVIDER_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/runtimeproviders/ftudefaultruntimeprovider/resource/ftudefaultruntimeprovider.manifest	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<runtimeprovider>
+    <runtime library="ftudefaultruntimeprovider.dll"
+             uri="ftu.nokia.com/runtime/defaultruntime"/>
+</runtimeprovider>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/runtimeproviders/ftudefaultruntimeprovider/resource/ftudefaultruntimeprovider.s60xml	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<service>
+    <name>ftudefaultruntimeprovider</name>
+    <filepath>z:/fturesources/plugins/runtimeproviders/ftudefaultruntimeprovider.qtplugin</filepath>
+    <description>First Time Use Provider</description>
+    <interface>
+        <name>com.nokia.ftu.runtime.FtuRuntime</name>
+        <version>1.0</version>
+        <description>Default implementation for ftu runtime</description>
+        <capabilities></capabilities>
+    </interface>
+</service>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/runtimeproviders/ftudefaultruntimeprovider/resource/ftudefaultruntimeprovider.xml	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<service>
+    <name>ftudefaultruntimeprovider</name>
+    <filepath>ftudefaultruntimeprovider</filepath>
+    <description>First Time Use Runtime Plugin</description>
+    <interface>
+        <name>com.nokia.ftu.runtime.FtuRuntime</name>
+        <version>1.0</version>
+        <description>Default implementation for ftu runtime</description>
+        <capabilities></capabilities>
+    </interface>
+</service>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/runtimeproviders/ftudefaultruntimeprovider/src/ftudefaultruntime.cpp	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,210 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies 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 FTU default runtime.
+*
+*/
+
+
+#include "ftudefaultruntime.h"
+#include "ftutest_global.h"
+#include "ftucontentservice.h"
+
+#include "ftustateprovider.h"
+
+#include <QStateMachine>
+#include <QState>
+#include <QFinalState>
+#include <QDebug>
+
+#include <hbmainwindow.h>
+
+
+
+// plugin factory const
+
+// states
+const char wizardMenuStateUri []        = "ftu.nokia.com/state/wizardmenustate";
+const char wizardLoaderStateUri []      = "ftu.nokia.com/state/wizardloaderstate";
+const char wizardActivatedStateUri []   = "ftu.nokia.com/state/wizardactivatedstate";
+
+// ---------------------------------------------------------------------------
+// FtuDefaultRuntime::FtuDefaultRuntime
+// ---------------------------------------------------------------------------
+//
+FtuDefaultRuntime::FtuDefaultRuntime( QObject* aParent)
+    : 
+    QStateMachine(aParent),
+    mFtuContentService(0),
+    mWindow(0)    
+{
+    createContentServiceParts();
+    createGuiServiceParts();
+    initializeRuntimeServices();
+    createStates();
+    assignServices();
+}
+
+// ---------------------------------------------------------------------------
+// FtuDefaultRuntime::~FtuDefaultRuntime()
+// ---------------------------------------------------------------------------
+//
+FtuDefaultRuntime::~FtuDefaultRuntime()
+{
+    delete mWindow;
+    delete mFtuContentService;
+}
+
+// ---------------------------------------------------------------------------
+// FtuDefaultRuntime::handleStateMachineStarted()
+// ---------------------------------------------------------------------------
+//
+void FtuDefaultRuntime::handleStateMachineStarted()
+{
+    
+}
+
+// ---------------------------------------------------------------------------
+// FtuDefaultRuntime::handleStateMachineStopped()
+// ---------------------------------------------------------------------------
+//
+void FtuDefaultRuntime::handleStateMachineStopped()
+{
+    emit stopped();
+}
+
+// ---------------------------------------------------------------------------
+//createContentServiceParts() - implementation
+// ---------------------------------------------------------------------------
+//
+void FtuDefaultRuntime::createContentServiceParts()
+{
+    mFtuContentService = new FtuContentService(this);
+}
+
+// ---------------------------------------------------------------------------
+// FtuDefaultRuntime::createGuiServiceParts()
+// ---------------------------------------------------------------------------
+//
+void FtuDefaultRuntime::createGuiServiceParts()
+{
+    mWindow = new HbMainWindow();
+    mWindow->show();
+}
+
+// ---------------------------------------------------------------------------
+// FtuDefaultRuntime::createStates()
+// ---------------------------------------------------------------------------
+//
+void FtuDefaultRuntime::createStates()
+{    
+    
+    FtuStateProvider stateProvider;
+    
+    QFinalState* finalState = new QFinalState();
+    this->addState(finalState);
+    
+    // parallel state activates all children states
+    QState* parallel = new QState(QState::ParallelStates);
+    this->addState(parallel);
+    parallel->addTransition(this, SIGNAL(stopStateMachine()), finalState);
+    
+    // root GUI state
+    QState* guiRootState = new QState(parallel);
+    
+    // root FTU state
+    QState* ftuRootState = new QState(guiRootState);
+    
+    // create state based on token
+    QState* wizardMenuState = stateProvider.createState(wizardMenuStateUri);
+    // set state specific data
+    wizardMenuState->setParent(ftuRootState);
+    wizardMenuState->setObjectName(wizardMenuStateUri);
+    wizardMenuState->setProperty(FTU_SERVICES_REGISTRATION_KEY, 
+                                 QList<QVariant>() << FTU_CONTENT_SERVICE_KEY);
+    
+    connect(mFtuContentService, SIGNAL(wizardAdded(int)), wizardMenuState, 
+            SLOT(addWizardToListModel(int)));
+    
+    QState *wizardLoadingState = stateProvider.createState(wizardLoaderStateUri);
+    wizardLoadingState->setParent(parallel);
+    wizardLoadingState->setObjectName(wizardLoaderStateUri);
+    wizardLoadingState->setProperty(FTU_SERVICES_REGISTRATION_KEY, 
+            QList<QVariant>() << FTU_CONTENT_SERVICE_KEY);
+    
+    // Create activated state
+
+    
+    QState* wizardActivatedState = stateProvider.createState(wizardActivatedStateUri);
+    wizardActivatedState->setParent(ftuRootState);
+    wizardActivatedState->setObjectName(wizardActivatedStateUri);
+    wizardActivatedState->setProperty(FTU_SERVICES_REGISTRATION_KEY, 
+            QList<QVariant>() << FTU_CONTENT_SERVICE_KEY);
+    
+    
+    // Setup state transitions menu state <-> activated state
+    // From menu to activated
+    wizardMenuState->addTransition(wizardMenuState, SIGNAL(wizardSelected()),
+                                   wizardActivatedState);
+    
+    // From activated back to menu
+    wizardActivatedState->addTransition(wizardActivatedState, 
+                                        SIGNAL(backEventTriggered()), 
+                                        wizardMenuState);
+    
+    // set initial state for statemachine
+    ftuRootState->setInitialState(wizardMenuState);
+    guiRootState->setInitialState(ftuRootState);
+    this->setInitialState(parallel);
+
+    connect(this, SIGNAL(started()), SLOT(handleStateMachineStarted()));
+    connect(this, SIGNAL(stopped()), SLOT(handleStateMachineStopped()));
+    connect(this, SIGNAL(finished()), SLOT(handleStateMachineStopped()));
+   
+}
+
+// ---------------------------------------------------------------------------
+// FtuDefaultRuntime::assignServices()
+// ---------------------------------------------------------------------------
+//
+void FtuDefaultRuntime::assignServices()
+{
+    QList<QState*> children = this->findChildren<QState*>();
+    foreach (QState* state, children)
+    {
+        QList<QVariant> services = state->property(FTU_SERVICES_REGISTRATION_KEY).toList();
+
+        foreach (const QVariant& service, services)
+        {           
+            QString name = service.toString();
+            qDebug() << "Assign service:" << name << "\n to " << state->objectName();
+            if (name == FTU_CONTENT_SERVICE_KEY) 
+            {
+                state->setProperty(name.toAscii().data(), qVariantFromValue(mFtuContentService));
+            }
+            else 
+            {
+                qWarning() << "WARNING: Service " << name << " is unknown";
+            }
+        }
+    }
+}
+
+// ---------------------------------------------------------------------------
+//void initializeRuntimeServices() - implementation
+// ---------------------------------------------------------------------------
+//
+void FtuDefaultRuntime::initializeRuntimeServices()
+{
+    mServices[ FTU_CONTENT_SERVICE_KEY ] = mFtuContentService;     
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/runtimeproviders/ftudefaultruntimeprovider/src/ftudefaultruntimeprovider.cpp	Mon Apr 19 14:01:47 2010 +0300
@@ -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:  Implementation of the FTU default runtime provider.
+*
+*/
+
+
+#include "ftudefaultruntimeprovider.h"
+#include "ftudefaultruntime.h"
+
+
+#include <qserviceinterfacedescriptor.h>
+#include <qabstractsecuritysession.h>
+#include <qservicecontext.h>
+
+// ---------------------------------------------------------------------------
+// FtuDefaultRuntimeProvider::createInstance()
+// ---------------------------------------------------------------------------
+//
+QObject *FtuDefaultRuntimeProvider::createInstance(const QServiceInterfaceDescriptor &descriptor,
+                                                   QServiceContext *context,
+                                                   QAbstractSecuritySession *session)
+{
+    Q_UNUSED(context);
+    Q_UNUSED(session);
+
+    if (descriptor.interfaceName() == "com.nokia.ftu.runtime.FtuRuntime") {
+        return new FtuDefaultRuntime(this);
+    } else {
+        return 0;
+    }
+}
+
+#ifndef COVERAGE_MEASUREMENT
+Q_EXPORT_PLUGIN2(ftudefaultruntimeprovider, FtuDefaultRuntimeProvider)
+#endif //COVERAGE_MEASUREMENT
+
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/runtimeproviders/runtimeproviders.pro	Mon Apr 19 14:01:47 2010 +0300
@@ -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:  FTU runtime providers project file
+#
+
+TEMPLATE = subdirs
+SUBDIRS  = ftudefaultruntimeprovider
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sis/ftu.pkg	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,61 @@
+;
+; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description:  FTU package file
+;
+
+; Language
+&EN
+; 01
+
+; SIS header: name, uid, version
+#{"ftu"}, (0x20027007), 1, 0, 0
+
+; Localised Vendor name
+%{"Nokia"}
+
+; Unique Vendor name
+:"Nokia"
+
+; Supports S60 5th Edition
+[0x1028315F], 0, 0, 0, {"S60ProductID"}
+
+; ---- ftuapplication --------------------------------------------------------
+
+"/epoc32/release/armv5/urel/ftuapplication.exe"                      - "c:/sys/bin/ftuapplication.exe"
+"/epoc32/data/z/private/10003a3f/import/apps/ftuapplication_reg.rsc" - "c:/private/10003a3f/import/apps/ftuapplication_reg.rsc"
+"/epoc32/data/z/fturesources/ftu_app_icon.svg"                       - "c:/fturesources/ftu_app_icon.svg"
+
+; ---- fturuntimeservices ----------------------------------------------------
+
+"/epoc32/release/armv5/urel/fturuntimeservices.dll" - "c:/sys/bin/fturuntimeservices.dll"
+
+; ---- ftudefaultruntimeprovider ---------------------------------------------
+
+"/epoc32/release/armv5/urel/ftudefaultruntimeprovider.dll"                                - "c:/sys/bin/ftudefaultruntimeprovider.dll"
+"/epoc32/data/z/fturesources/plugins/runtimeproviders/ftudefaultruntimeprovider.qtplugin" - "c:/fturesources/plugins/runtimeproviders/ftudefaultruntimeprovider.qtplugin"
+"/epoc32/data/z/fturesources/plugins/runtimeproviders/ftudefaultruntimeprovider.manifest" - "c:/fturesources/plugins/runtimeproviders/ftudefaultruntimeprovider.manifest"
+
+
+; ---- ftuwizardprovider -----------------------------------------------------
+
+"/epoc32/release/armv5/urel/ftuwizardprovider.dll"                               - "c:/sys/bin/ftuwizardprovider.dll"
+
+; ---- ftustateprovider ------------------------------------------------------
+
+"/epoc32/release/armv5/urel/ftustateprovider.dll"                                - "c:/sys/bin/ftustateprovider.dll"
+"/epoc32/data/z/fturesources/plugins/stateproviders/ftustateprovider.qtplugin"   - "c:/fturesources/plugins/stateproviders/ftustateprovider.qtplugin"
+"/epoc32/data/z/fturesources/plugins/stateproviders/ftustateprovider.manifest"   - "c:/fturesources/plugins/stateproviders/ftustateprovider.manifest"
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sis/ftu_sisx.bat	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,29 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description: 
+@rem
+
+if exist ftu.sisx del ftu.sisx
+
+makesis ftu.pkg
+signsis ftu.sis ftu.sisx rd.cer rd-key.pem
+
+if exist ftu.sisx (
+echo  ftu.sisx creation SUCCEEDED
+del ftu.sis
+)
+
+if not exist ftu.sisx (
+echo  ftu.sisx creation FAILED
+)
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sis/ftu_unittest.pkg	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,51 @@
+;
+; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description:  FTU unit test package file
+;
+
+; Language
+&EN
+; 01
+
+; SIS header: name, uid, version
+#{"ftu_unittest"}, (0x20027008), 1, 0, 0
+
+; Localised Vendor name
+%{"Nokia"}
+
+; Unique Vendor name
+:"Nokia"
+
+; Supports S60 5th Edition
+[0x1028315F], 0, 0, 0, {"S60ProductID"}
+
+; FTU application unit test
+"/epoc32/release/armv5/urel/t_ftuapplication.exe"                                   - "c:/sys/bin/t_ftuapplication.exe"
+"/epoc32/data/z/private/10003a3f/import/apps/t_ftuapplication_reg.rsc"              - "c:/private/10003a3f/import/apps/t_ftuapplication_reg.rsc"
+"/epoc32/data/z/resource/apps/t_ftuapplication.rsc"                                 - "c:/resource/apps/t_ftuapplication.rsc"
+
+; FTU runtimeservices unit test
+"/epoc32/release/armv5/urel/t_fturuntimeservices.exe"                               - "c:/sys/bin/t_fturuntimeservices.exe"
+"/epoc32/data/z/private/10003a3f/import/apps/t_fturuntimeservices_reg.rsc"          - "c:/private/10003a3f/import/apps/t_fturuntimeservices_reg.rsc"
+"/epoc32/data/z/resource/apps/t_fturuntimeservices.rsc"                             - "c:/resource/apps/t_fturuntimeservices.rsc"
+
+; FTU defaultruntimeprovider unit test
+"/epoc32/release/armv5/urel/t_ftudefaultruntimeprovider.exe"                        - "c:/sys/bin/t_ftudefaultruntimeprovider.exe"
+"/epoc32/data/z/private/10003a3f/import/apps/t_ftudefaultruntimeprovider_reg.rsc"   - "c:/private/10003a3f/import/apps/t_ftudefaultruntimeprovider_reg.rsc"
+"/epoc32/data/z/resource/apps/t_ftudefaultruntimeprovider.rsc"                      - "c:/resource/apps/t_ftudefaultruntimeprovider.rsc"
+
+; FTU stateprovider unit test
+"/epoc32/release/armv5/urel/t_ftustateprovider.exe"                                 - "c:/sys/bin/t_ftustateprovider.exe"
+"/epoc32/data/z/private/10003a3f/import/apps/t_ftustateprovider_reg.rsc"            - "c:/private/10003a3f/import/apps/t_ftustateprovider_reg.rsc"
+"/epoc32/data/z/resource/apps/t_ftustateprovider.rsc"                               - "c:/resource/apps/t_ftustateprovider.rsc"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sis/ftu_unittest_sisx.bat	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,31 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description: 
+@rem
+
+set MAIN_SIS_DIR=%CD%
+
+if exist ftu_unittest.sisx del ftu_unittest.sisx
+
+makesis ftu_unittest.pkg
+signsis ftu_unittest.sis ftu_unittest.sisx rd.cer rd-key.pem
+
+if exist ftu_unittest.sisx (
+echo  ftu_unittest.sisx creation SUCCEEDED
+del ftu_unittest.sis
+)
+
+if not exist ftu_unittest.sisx (
+echo  ftu_unittest.sisx creation FAILED
+)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sis/rd-key.pem	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXAIBAAKBgQDLRF+r1FGGkCwTrb420kbnAps7gi1yYUcXYUdWeFTuBeQe5eW4
+6Y+LWaA8HMlDdoHRB0FgASisYcFagwno9+oFf4AJka4H1gWEs5XTGwAA1s0d8XGh
+7W7Dt9F5FZij8F7/9Pi6+FhhxZFIf1DD+yry9D7+Sp+BgdNALe4XOpf25QIBAwKB
+gQCHgupyjYuvCsgNHn7PNtnvVxInrB5MQNoPli+O+uNJWUK/Q+57Rl+yO8AoEzDX
+pFaLWiuVVhsdloDnAgabT/FXzYncs6uOHyEUV+dSXb78vtLPJqAX+Fg2i3hOXreB
+yskcZ13/OsKVOu5wgrJkx2baZufkqMwOSytf5y9nwjEIKwJBAP+inobagVNrN62j
+KQva3cC+UN/6XnKdTc0CA6bHyLOaJoH1xiMwG/VS2PGjHI0tiSMNtLn/QPpHJ003
+iabGhdUCQQDLjp/9UjFT6K6CF66Chqf30pZXhx+GTSQZmv/gvZiMly7X9fX9BGX3
+2MbJohBC4yI21XKTbisWywkF73Hwh+TRAkEAqmxprzxWN5zPyRdwspHpKymLP/w+
+9xOJM1atGdqFzRFvAU6EF3Vn+OHl9my9s3OwwgkjJqorUYTE3iUGby8D4wJBAIe0
+aqjhdjfwdFa6dFcEb/qMZDpaFQQzbWZnVUB+ZbMPdI/5TqitmU/l2dvBYCyXbCSO
+TGJJcg8yBgP09qBamIsCQFL7j1tM0XPVQJQ89WpKCld7O9ORxRGVj1eG0tWijrH8
+mGbYh8SGCVoWV3vrKSS8GBrFVgQnqUaHuEdtM7tpCAQ=
+-----END RSA PRIVATE KEY-----
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sis/rd.cer	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,17 @@
+-----BEGIN CERTIFICATE-----
+MIICzDCCAjWgAwIBAgIBADANBgkqhkiG9w0BAQUFADArMRAwDgYDVQQKEwdSRCBD
+ZXJ0MRcwFQYDVQQDEw5SRCBDZXJ0aWZpY2F0ZTAeFw0wNDExMTUxMjQyMDZaFw0z
+NzA5MjMxMjQyMDZaMCsxEDAOBgNVBAoTB1JEIENlcnQxFzAVBgNVBAMTDlJEIENl
+cnRpZmljYXRlMIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDLRF+r1FGGkCwT
+rb420kbnAps7gi1yYUcXYUdWeFTuBeQe5eW46Y+LWaA8HMlDdoHRB0FgASisYcFa
+gwno9+oFf4AJka4H1gWEs5XTGwAA1s0d8XGh7W7Dt9F5FZij8F7/9Pi6+FhhxZFI
+f1DD+yry9D7+Sp+BgdNALe4XOpf25QIBA6OCAQAwgf0wDAYDVR0TBAUwAwEB/zAL
+BgNVHQ8EBAMCAoQwHQYDVR0OBBYEFFi/kuGzxhVpjGxe9ZwlxC3fH9jFMFMGA1Ud
+IwRMMEqAFFi/kuGzxhVpjGxe9ZwlxC3fH9jFoS+kLTArMRAwDgYDVQQKEwdSRCBD
+ZXJ0MRcwFQYDVQQDEw5SRCBDZXJ0aWZpY2F0ZYIBADBsBgNVHSAEZTBjMGEGBFUd
+IAAwWTATBggrBgEFBQcCARYHaHR0cDovLzBCBggrBgEFBQcCAjA2GjRGb3IgUiZE
+IHVzYWdlIG9ubHkuIFRoaXMgY2VydGlmaWNhdGUgaXMgbm90IHRydXN0ZWQuMA0G
+CSqGSIb3DQEBBQUAA4GBAHGB4RQMAgBdeT2hxfOr6f2nA/dZm+M5yX5daUtZnET9
+Ed0A9sazLawfN2G1KFQT9kxEParAyoAkpbMAsRrnRz/9cM3OHgFm/NiKRnf50DpT
+7oCx0I/65mVD2kt+xXE62/Ii5KPnTufIkPi2uLvURCia1tTS8JmJ8dtxDGyQt8BR
+-----END CERTIFICATE-----
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stateproviders/ftustateprovider/ftustateprovider.pri	Mon Apr 19 14:01:47 2010 +0300
@@ -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:  FTU state provider list of files
+#
+
+HEADERS += ./inc/*.h
+SOURCES += ./src/*.cpp
+
+RESOURCES += resources/resources.qrc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stateproviders/ftustateprovider/ftustateprovider.pro	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,83 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:  FTU state provider project file
+#
+
+TEMPLATE = lib
+
+DEFINES += FTUSTATEPROVIDER_LIB
+
+
+symbian {
+    CONFIG(debug, debug|release) {
+      DESTDIR = debug      
+    } else {
+      DESTDIR = release
+    }
+}
+
+win32 {
+    CONFIG(debug, debug|release) {
+      SUBDIRPART = debug
+    } else {
+      SUBDIRPART = release
+    }
+    DESTDIR = $$PWD/../../../bin/$$SUBDIRPART/fturesources/plugins/stateproviders
+    LIBS += -L$$PWD/../../../bin/debug
+}
+
+LIBS += -lftuwizardmodel
+LIBS += -lftuwizardprovider
+LIBS += -lfturuntimeservices
+
+CONFIG += debug_and_release
+
+coverage:DEFINES += COVERAGE_MEASUREMENT
+
+CONFIG += hb
+
+QT += xml
+
+nft:DEFINES += NFT
+
+DEPENDPATH += ./inc \
+              ./src
+
+INCLUDEPATH += ./inc \
+               ../../inc \
+               ../../wizardproviders/ftuwizardprovider/inc
+               
+#TRANSLATIONS=ftustateprovider.ts
+
+symbian {
+    TARGET.UID2 = 0x20004C45
+    TARGET.UID3 = 0x20026F99
+    TARGET.EPOCALLOWDLLDATA=1
+    TARGET.CAPABILITY = ALL -TCB
+    INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE
+    
+    #include(ftustateprovider_installs_symbian.pri)
+    
+    BLD_INF_RULES.prj_exports += "./inc/ftustateprovider_global.h |../../inc/" \                             
+                             "./inc/ftustateprovider.h |../../inc/"
+}
+
+win32:include(ftustateprovider_installs_win32.pri)
+
+symbian:unix:include(ftustateprovider_installs_unix.pri)
+
+include(ftustateprovider.pri)
+
+#ONLY FOR DEVELOPMENT! REMOVE THIS BEFORE EACH HS_Domain RELEASE!
+symbian: MMP_RULES += EXPORTUNFROZEN
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stateproviders/ftustateprovider/ftustateprovider_installs_symbian.pri	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+
+export.sources = resource/*.manifest
+export.path = /fturesources/plugins/stateproviders
+
+pluginstub.sources = ftustateprovider.dll
+pluginstub.path = /fturesources/plugins/stateproviders
+
+DEPLOYMENT += export pluginstub
+
+#deploy.path = z:
+#qtplugins.path = /fturesources/plugins/stateproviders
+#qtplugins.sources += qmakepluginstubs/ftustateprovider.qtplugin
+#qtplugins.sources += resource/ftustateprovider.manifest
+
+#for(qtplugin, qtplugins.sources):BLD_INF_RULES.prj_exports += "./$$qtplugin $$deploy.path$$qtplugins.path/$$basename(qtplugin)"  
+  
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stateproviders/ftustateprovider/ftustateprovider_installs_unix.pri	Mon Apr 19 14:01:47 2010 +0300
@@ -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: 
+#
+#
+# Release
+#
+
+r01.path = ../../../bin/release/fturesources/plugins/stateproviders
+r01.files = ./release/*.so* \
+            ./resource/*.manifest
+
+INSTALLS += r01
+
+#
+# Debug
+#
+
+d01.path = ../../../bin/debug/fturesources/plugins/stateproviders
+d01.files = ./debug/*.so* \
+            ./resource/*.manifest
+
+INSTALLS += d01
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stateproviders/ftustateprovider/ftustateprovider_installs_win32.pri	Mon Apr 19 14:01:47 2010 +0300
@@ -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: 
+#
+#
+# Release
+#
+
+r01.path = $$PWD/../../../bin/release/fturesources/plugins/stateproviders
+r01.files = $$PWD/../../../bin/release/ftustateprovider.* \
+            ./resource/*.manifest
+
+INSTALLS += r01
+
+#
+# Debug
+#
+
+d01.path = $$PWD/../../../bin/debug/fturesources/plugins/stateproviders
+d01.files = $$PWD/../../../bin/debug/ftustateprovider.* \
+            ./resource/*.manifest
+
+INSTALLS += d01
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stateproviders/ftustateprovider/inc/ftustateprovider.h	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,72 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Declaration of the FTU state provider
+*
+*/
+
+
+#ifndef FTU_STATEPROVIDERS_STATEPROVIDER_H
+#define FTU_STATEPROVIDERS_STATEPROVIDER_H
+
+#include "ftutest_global.h"
+#include "ftustateprovider_global.h"
+
+FTU_TEST_CLASS(FtuStateProviderTest)
+
+class QState;
+class FtuStateProviderPrivate;
+
+
+    
+/**
+ * @ingroup group_ftustateprovider
+ * @brief Provides a default implementation for each FTU state.
+ *
+ * This provider includes a default implementation for each FTU state
+ * States are described in the ftustateprovider.manifest file.
+ *
+ * @lib ftustateprovider
+ * @since S60 ?S60_version.
+ */
+class FTUSTATEPROVIDER_EXPORT FtuStateProvider : public QObject
+{
+
+    Q_OBJECT
+public:
+
+    FtuStateProvider(QObject *parent=NULL);
+
+public:
+
+    /**
+     * Creates a state based on the given uri.
+     *
+     * @param uri Identifies the state to be created.
+     * @since S60 ?S60_version.
+     * @return Constructed QState, ownership transferred.
+     */
+    QState* createState(const QString& uri);
+
+private:
+
+    FtuStateProviderPrivate* mPrivate;
+    friend class FtuStateProviderPrivate; 
+    
+        
+
+    FTU_TEST_FRIEND_CLASS(FtuStateProviderTest)
+};
+
+
+#endif //FTU_STATEPROVIDERS_STATEPROVIDER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stateproviders/ftustateprovider/inc/ftustateprovider_global.h	Mon Apr 19 14:01:47 2010 +0300
@@ -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:  Library header.
+*
+*/
+
+
+#ifndef FTUSTATEPROVIDER_GLOBAL_H
+#define FTUSTATEPROVIDER_GLOBAL_H
+
+#include <Qt/qglobal.h>
+
+
+#ifdef FTUSTATEPROVIDER_LIB
+#define FTUSTATEPROVIDER_EXPORT Q_DECL_EXPORT
+#else
+#ifdef FTUSTATEPROVIDER_TEST
+        #define FTUSTATEPROVIDER_EXPORT
+    #else
+        #define FTUSTATEPROVIDER_EXPORT Q_DECL_IMPORT
+    #endif	
+#endif
+
+#endif // FTUSTATEPROVIDER_GLOBAL_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stateproviders/ftustateprovider/inc/ftustateprovider_p.h	Mon Apr 19 14:01:47 2010 +0300
@@ -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:  State provider private impl.
+*
+*/
+
+
+#ifndef FTU_STATEPROVIDERS_STATEPROVIDER_P_H
+#define FTU_STATEPROVIDERS_STATEPROVIDER_P_H
+
+#include "ftutest_global.h"
+
+FTU_TEST_CLASS(FtuStateProviderTest)
+
+class QState;
+class FtuStateProviderPrivate;
+
+
+    
+/**
+ * @ingroup group_ftustateprovider
+ * @brief PState provider private impl.
+ *
+ * @lib ftustateprovider
+ * @since S60 ?S60_version.
+ */
+class FtuStateProviderPrivate : public QObject
+{
+
+    Q_OBJECT
+public:
+    FtuStateProviderPrivate(QObject *parent=NULL);
+
+public:
+
+    /**
+     * Creates a state based on the given uri.
+     *
+     * @param uri Identifies the state to be created.
+     * @since S60 ?S60_version.
+     * @return Constructed QState, ownership transferred.
+     */
+    QState* createState(const QString& uri);
+
+private:            
+
+    FTU_TEST_FRIEND_CLASS(FtuStateProviderTest)
+};
+
+
+#endif //FTU_STATEPROVIDERS_STATEPROVIDER_P_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stateproviders/ftustateprovider/inc/ftuwizardactivatedstate.h	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,225 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies 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 FTU_STATES_WIZARDACTIVATEDSTATE_H
+#define FTU_STATES_WIZARDACTIVATEDSTATE_H
+
+#include <QState>
+#include <QAbstractItemModel>
+#include "ftutest_global.h"
+
+FTU_TEST_CLASS(FtuStateProviderTest)
+
+class QGraphicsWidget;
+class HbMainWindow;
+class HbLabel;
+class HbStackedWidget;
+class HbView;
+class HbDocumentLoader;
+class HbAction;
+class HbGridView;
+class QGraphicsLinearLayout;
+class FtuContentService;
+class FtuWizard;
+
+ 
+/** @ingroup group_ftustateprovider
+ * @brief The state handles wizard activation and interaction.
+ *
+ * @see StateMachine
+ *
+ * @lib ?library
+ * @since S60 ?S60_version
+ */
+class FtuWizardActivatedState : public QState
+{
+    Q_OBJECT
+public: 
+    /*
+     * The plugin's display mode enumeration.
+     * FullScreen means menustrip is not shown.
+     * PartialScreen means menustrip is shown.
+     */
+    enum PluginDisplayMode{FullScreen, PartialScreen};
+    
+public:
+
+    /**
+     * Constructor.
+     * @since S60 ?S60_version.     
+     * @param aParent Owner.
+     */
+    FtuWizardActivatedState(QState *aParent = 0);
+
+    /**
+     * Destructor.
+     * @since S60 ?S60_version.
+     */
+	virtual ~FtuWizardActivatedState();
+	
+protected:
+
+    /**
+     * @copydoc QState::onEntry()
+     */
+    void onEntry(QEvent *event);
+    
+    /**
+     * @copydoc QState::onExit()
+     */
+    void onExit(QEvent *event);
+
+private:
+    
+    /**
+     * Returns content service object.
+     * @return The content service pointer.
+     * @since S60 ?S60_version.
+     */
+    FtuContentService *content() const;
+    
+    /**
+     * Returns the main window handle.
+     * @since S60 ?S60_version.
+     * @return The pointer to the main window.
+     */
+    HbMainWindow* mainWindow();
+    
+    /**
+     * Creates the menustrip.
+     * @since S60 ?S60_version.
+     */   
+    void constructGrid();
+
+    /**
+     * Connects signals and slots for active wizard.
+     * @since S60 ?S60_version.
+     */  
+    void setActiveWizardConnections();
+        
+    /**
+     * Calculates the wizard's geometry.
+     * @since S60 ?S60_version.
+     * @return The calculated rect.
+     */       
+    QRectF calculateWizardGeometry();
+    
+public slots:
+    
+    /**
+     * Signalled when back action is triggerd from toolbaar.
+     * @since S60 ?S60_version.
+     */
+    void handleBackEvent();
+    
+    /**
+     * @copydoc FtuWizard::onViewChanged
+     */
+    void changeWizardView(FtuWizard *caller, QGraphicsWidget* viewWidget);
+    
+    /**
+      * @copydoc FtuWizard::fullScreenModeRequested
+      */
+    void enableFullScreenMode(FtuWizard *caller);
+     
+    /**
+      * @copydoc FtuWizard::partialScreenModeRequested
+      */
+    void enablePartialScreenMode(FtuWizard *caller);
+    
+    /**
+     * @copydoc FtuWizard::onInfoTextUpdated
+     */
+    void updateInfoText(FtuWizard *caller, QString text);
+    
+    /**
+     * Handles the item selection from grid.
+     * @param index The activated item.
+     * @sice S60 ?S60_version.
+     */
+    void activateWizard(const QModelIndex index);
+
+signals:
+        
+    /**
+     * Emitted when the menu state is to be activated.
+     * @since S60 ?S60_version.
+     */
+    void backEventTriggered();  
+ 
+private:
+
+    /**
+     * HbMainWindow instance.
+     */
+    HbMainWindow*           mMainWindow;
+    
+    /**
+     * HbDocumentLoader instance.
+     */
+    HbDocumentLoader*       mDocumentLoader;
+
+    /**
+     * Plugin view instance.
+     */
+    HbView*                 mPluginView;
+    
+    /**
+     * Pointer to the activated wizard. Not owned.
+     */
+    FtuWizard*              mActiveWizard;    
+   
+    /**
+     * Info text label.
+     */
+    HbLabel*                mPluginTitleLabel;
+
+    /**
+     * Wizard widget area.
+     */
+    HbStackedWidget*        mWizardStackedWidget;
+
+    /**
+     * Back action overriding the app exit functionality.
+     */
+    HbAction*               mBackAction;
+    
+    /**
+     * The menustrip component.
+     */     
+    HbGridView*             mMenustrip;
+    
+    /**
+     * Plugin's previously activated view.
+     */
+    QGraphicsWidget*        mPreviousView;
+
+    /**
+     * Plugin's currently activated view.
+     */
+    QGraphicsWidget*        mCurrentView;
+
+    /**
+     * The Plugin's display mode.
+     */
+    PluginDisplayMode       mPluginDisplayMode;
+    
+    FTU_TEST_FRIEND_CLASS(FtuStateProviderTest)    
+};
+
+#endif //FTU_STATES_WizardActivatedState_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stateproviders/ftustateprovider/inc/ftuwizardloaderstate.h	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,99 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies 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 FTU_STATES_WIZARDLOADERSTATE_H
+#define FTU_STATES_WIZARDLOADERSTATE_H
+
+#include "ftutest_global.h"
+#include <QState>
+
+FTU_TEST_CLASS(FtuStateProviderTest)
+
+class FtuWizardProvider;
+class FtuContentService;
+class FtuWizard;
+
+
+/** @ingroup group_ftustateprovider
+ * @brief Initial state after first boot
+ *
+ * @see StateMachine
+ *
+ * @lib ?library
+ * @since S60 ?S60_version
+ */
+class FtuWizardLoaderState : public QState
+{
+    Q_OBJECT
+
+public:
+
+    /**
+     * Constructor.
+     * @since S60 ?S60_version.     
+     * @param aParent Owner.
+     */
+    FtuWizardLoaderState(QState *aParent = 0);
+
+    /**
+     * Destructor.
+     * @since S60 ?S60_version.
+     */
+	virtual ~FtuWizardLoaderState();
+	
+public slots:
+
+    /**
+     * Received when wizard is initialized.
+     * @param wizard The caller object.
+     * @param success True if succesful, false otherwise.
+     */
+    void addWizard(FtuWizard* wizard, bool success);
+	
+signals:
+
+protected:
+
+    /**
+     * @copydoc QState::onEntry()
+     */
+    void onEntry(QEvent *event);
+    
+    /**
+     * @copydoc QState::onExit()
+     */
+    void onExit(QEvent *event);
+
+private:
+    /**
+     * Convenience method that returns the content service from dynamically
+     * added meta object property.
+     * @since S60 ?S60_version.
+     * @return Content service.
+     */
+    FtuContentService *content() const;
+private:
+    /*
+    * Wizard provider handle. Owned.    
+    */
+    FtuWizardProvider* mWizardProvider;
+
+    FTU_TEST_FRIEND_CLASS(FtuStateProviderTest)
+};
+
+#endif //FTU_STATES_WIZARDLOADERSTATE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stateproviders/ftustateprovider/inc/ftuwizardmenustate.h	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,151 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Declaration of the wizard menu state.
+*
+*/
+
+
+#ifndef FTU_STATES_WIZARDMENUSTATE_H
+#define FTU_STATES_WIZARDMENUSTATE_H
+
+#include <QAbstractItemModel>
+#include <QState>
+#include "ftutest_global.h"
+
+FTU_TEST_CLASS(FtuStateProviderTest)
+
+class HbMainWindow;
+class HbView;
+class HbListView;
+class HbLabel;
+class HbDocumentLoader;
+class QStandardItemModel;
+class FtuContentService;
+class QDate;
+class FtuWizard;
+class HbAction;
+
+/** @ingroup group_ftustateprovider
+ * @brief The state where wizard menu is shown
+ *
+ * @see StateMachine
+ *
+ * @lib ?library
+ * @since S60 ?S60_version
+ */
+class FtuWizardMenuState : public QState
+{
+    Q_OBJECT
+
+public:
+
+    /**
+     * Constructor.
+     * @since S60 ?S60_version.     
+     * @param aParent Owner.
+     */
+    FtuWizardMenuState(QState *aParent = 0);
+
+    /**
+     * Destructor.
+     * @since S60 ?S60_version.
+     */
+	virtual ~FtuWizardMenuState();
+	
+
+protected:
+
+    /**
+     * @copydoc QState::onEntry()
+     */
+    void onEntry(QEvent *event);
+    
+    /**
+     * @copydoc QState::onExit()
+     */
+    void onExit(QEvent *event);
+    
+private:
+    /**
+     * Creates table of contents widget.
+     * @since S60 ?S60_version.
+     */
+    void createTocList();
+	
+	/**
+     * Creates title text on a label.
+     * @since S60 ?S60_version.
+     */
+    void createInfoText();
+    	
+	/**
+     * Returns content service object.
+     * @since S60 ?S60_version.
+     */
+    FtuContentService *content() const;
+    /**
+     * Gets the date as string.
+     * @param date The date to convert as string.
+     * @since S60 ?S60_version.
+     */
+    QString updatedAsString(const QDate& date) const;
+    
+public slots: 
+
+    /**
+     * Called when new wizards arrives.
+     * @since S60 ?S60_version.
+     * @param index Wizard index in content service.
+     */
+    void addWizardToListModel(int aIndex);
+
+    /**
+     * Signalled when user selects an item from the list.
+     * @param index The index of the selected item.
+     */    
+    void activateWizard(const QModelIndex index);
+
+    /**
+     * @copydoc FtuWizard::progressUpdated()
+     */    
+    void updateProgress(FtuWizard *caller, bool show, int progress);
+    
+    /**
+     * Called when application has to exit
+     */  
+    void exitApp();
+    
+signals:
+
+    /**
+     * Signalled when user selects an item from the list and the
+     * plugin is activated.
+     */    
+     void wizardSelected();
+	
+private:
+
+    HbMainWindow*                           mMainWindow;
+    HbView*                                 mTocView;
+    HbLabel*                                mInfoText;
+    HbListView*                             mListView;    
+    HbDocumentLoader*                       mDocumentLoader;
+
+    QStandardItemModel*                     mModel;
+    HbAction*                               mExitAction;
+
+    FTU_TEST_FRIEND_CLASS(FtuStateProviderTest)
+};
+
+#endif //FTU_STATES_WIZARDMENUSTATE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stateproviders/ftustateprovider/resources/resources.qrc	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,5 @@
+<RCC>
+    <qresource prefix="/xml" >
+        <file alias="ftustateprovider.docml">ftustateprovider.docml</file>
+    </qresource>     
+</RCC>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stateproviders/ftustateprovider/src/ftustateprovider.cpp	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,80 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies 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 FTU state provider
+*
+*/
+
+
+#include "ftustateprovider.h"
+#include "ftustateprovider_p.h"
+#include "ftuwizardmenustate.h"
+#include "ftuwizardloaderstate.h"
+#include "ftuwizardactivatedstate.h"
+
+#include <QState>
+#include <QDebug>
+
+
+
+// constants
+const char wizardMenuStateUri [] = "ftu.nokia.com/state/wizardmenustate";
+const char wizardLoaderStateUri [] = "ftu.nokia.com/state/wizardloaderstate";
+const char wizardActivatedStateUri [] = "ftu.nokia.com/state/wizardactivatedstate";
+
+// ---------------------------------------------------------------------------
+// FtuStateProviderPrivate::FtuStateProviderPrivate
+// ---------------------------------------------------------------------------
+//
+FtuStateProviderPrivate::FtuStateProviderPrivate(QObject *parent)
+:QObject(parent)
+{
+}
+
+// ---------------------------------------------------------------------------
+// FtuStateProviderPrivate::createState
+// ---------------------------------------------------------------------------
+//
+QState* FtuStateProviderPrivate::createState(const QString& uri)
+{
+    if(uri == wizardMenuStateUri) {
+        return new FtuWizardMenuState();
+    } 
+    else if(uri == wizardLoaderStateUri){
+        return new FtuWizardLoaderState();
+    }
+    else if(uri == wizardActivatedStateUri){
+        return new FtuWizardActivatedState();
+    }
+    else {
+        qDebug() << "FTU: No state found for uri: " << uri;
+        return NULL;
+    }
+}
+// ---------------------------------------------------------------------------
+// FtuStateProvider::FtuStateProvider
+// ---------------------------------------------------------------------------
+//
+FtuStateProvider::FtuStateProvider(QObject *parent)
+:QObject(parent), mPrivate(new FtuStateProviderPrivate())
+{
+}
+
+// ---------------------------------------------------------------------------
+// FtuStateProviderPrivate::createState
+// ---------------------------------------------------------------------------
+//
+QState* FtuStateProvider::createState(const QString& uri)
+{
+    return mPrivate->createState(uri);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stateproviders/ftustateprovider/src/ftuwizardactivatedstate.cpp	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,416 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Implements the wizard activation and interactions.
+*
+*/
+
+
+#include "ftuwizardactivatedstate.h"
+#include "fturuntimeservices_global.h"
+#include "ftucontentservice.h"
+#include <ftuwizard.h>
+
+#include <hbmainwindow.h>
+#include <hbdocumentloader.h>
+#include <hbview.h>
+#include <hblabel.h>
+#include <hbstackedwidget.h>
+#include <hbicon.h>
+#include <hbinstance.h>
+#include <hbaction.h>
+#include <hbgridview.h>
+#include <QStandardItemModel>
+#include <QDebug>
+#include <QGraphicsWidget>
+#include <QDir>
+
+const int gridRowCount = 1;
+
+const char *FTUSTATEPROVIDER_DOCML2 = ":/xml/ftustateprovider.docml";
+const char *WIZARD_VIEW = "wizardView";
+const char *WIZARD_INFOTEXT_LABEL = "wizardInfoTextLabel";
+const char *WIZARD_STACKEDWIDGET = "wizardStackedWidget";
+const char *WIZARD_GRID_VIEW = "wizardGridView";
+
+/*
+#define LOG_GEOM(txt, r) logGeometry(txt, r)
+
+static void logGeometry(const char *txt, const QRectF& r)
+{
+    qDebug() << "ftu:" << txt << " x: " << r.topLeft().x() << " y: "  << r.topLeft().y() 
+             << " w: " << r.width() << " h: " << r.height();
+}
+*/
+
+// ---------------------------------------------------------------------------
+// FtuWizardActivatedState::FtuWizardActivatedState
+// ---------------------------------------------------------------------------
+//
+FtuWizardActivatedState::FtuWizardActivatedState(QState *parent) :
+    QState(parent),
+    mMainWindow(NULL),
+    mDocumentLoader(NULL),
+    mPluginView(NULL),
+    mActiveWizard(NULL),
+    mPluginTitleLabel(NULL),
+    mWizardStackedWidget(NULL),
+    mBackAction(NULL),
+    mMenustrip(NULL), 
+    mPreviousView(NULL), 
+    mCurrentView(NULL),
+    mPluginDisplayMode(PartialScreen) 
+{
+    mMainWindow = hbInstance->allMainWindows().at(0);
+    mDocumentLoader = new HbDocumentLoader();
+    mPluginView = new HbView();
+
+    bool ok = false;
+	mDocumentLoader->load(FTUSTATEPROVIDER_DOCML2, &ok);
+	QGraphicsWidget *widget = mDocumentLoader->findWidget(WIZARD_VIEW);
+	Q_ASSERT_X(ok && (widget != 0), "ftustateprovider", "invalid DocML file");
+
+    mPluginView->setWidget(widget);
+    mMainWindow->addView(mPluginView);
+
+    mPluginView->setTitle(qtTrId("txt_ftu_title_setup"));
+
+    mPluginTitleLabel = qobject_cast<HbLabel *>(mDocumentLoader->findWidget(WIZARD_INFOTEXT_LABEL)); 
+
+    mWizardStackedWidget = qobject_cast<HbStackedWidget *>(mDocumentLoader->findWidget(WIZARD_STACKEDWIDGET));
+
+    QString path = QDir::currentPath();
+    
+    mBackAction = new HbAction(Hb::BackAction, this);
+    
+}
+
+// ---------------------------------------------------------------------------
+// FtuWizardActivatedState::~FtuWizardActivatedState
+// ---------------------------------------------------------------------------
+//
+FtuWizardActivatedState::~FtuWizardActivatedState()
+{
+    delete mDocumentLoader;
+
+	if(mBackAction)
+	{		
+		delete mBackAction;
+	}
+}
+
+// ---------------------------------------------------------------------------
+// FtuWizardActivatedState::onEntry
+// ---------------------------------------------------------------------------
+//
+void FtuWizardActivatedState::onEntry(QEvent *event)
+{
+    qDebug() << "ftu:FtuWizardActivatedState::onEntry";
+    QState::onEntry(event);    
+
+    int activeIndex = content()->activeWizard();
+    mActiveWizard = content()->wizard(activeIndex);
+    
+    mPluginView->setNavigationAction(mBackAction);
+    // Make menustrip for testing purposes.
+    if(!mMenustrip)
+    {
+        constructGrid();
+    }
+    mMenustrip->setVisible(true);
+
+    connect(mBackAction, SIGNAL(triggered()),
+            this, SLOT(handleBackEvent()));
+
+    setActiveWizardConnections();
+
+    mActiveWizard->activateWizard();
+}
+
+// ---------------------------------------------------------------------------
+// FtuWizardActivatedState::onExit
+// ---------------------------------------------------------------------------
+//
+void FtuWizardActivatedState::onExit(QEvent *event)
+{
+    QState::onExit(event);
+    
+    disconnect(mBackAction, SIGNAL(triggered()),
+               this, SLOT(handleBackEvent()));
+    
+    disconnect(mActiveWizard, SIGNAL(viewChanged(FtuWizard *, 
+                                                 QGraphicsWidget* )),
+               this, SLOT(changeWizardView(FtuWizard*, QGraphicsWidget*)));
+    
+    disconnect(mActiveWizard, SIGNAL(fullScreenModeRequested(FtuWizard *)),
+               this, SLOT(enableFullScreenMode(FtuWizard*)));
+    
+    disconnect(mActiveWizard, SIGNAL(partialScreenModeRequested(FtuWizard * )),
+               this, SLOT(enablePartialScreenMode(FtuWizard*)));
+
+    disconnect(mActiveWizard, SIGNAL(infoTextUpdated(FtuWizard *, QString )),
+            this, SLOT(updateInfoText(FtuWizard *, QString)));
+}
+
+// ---------------------------------------------------------------------------
+// FtuWizardActivatedState::setActiveWizardConnections
+// ---------------------------------------------------------------------------
+//
+void FtuWizardActivatedState::setActiveWizardConnections()
+{
+    // first disconnect possible old connections with active wizard
+    disconnect(mActiveWizard, SIGNAL(viewChanged(FtuWizard *, 
+                                                 QGraphicsWidget* )),
+               this, SLOT(changeWizardView(FtuWizard*, QGraphicsWidget*)));
+    
+    disconnect(mActiveWizard, SIGNAL(fullScreenModeRequested(FtuWizard *)),
+               this, SLOT(enableFullScreenMode(FtuWizard*)));
+    
+    disconnect(mActiveWizard, SIGNAL(partialScreenModeRequested(FtuWizard * )),
+               this, SLOT(enablePartialScreenMode(FtuWizard*)));
+
+    disconnect(mActiveWizard, SIGNAL(infoTextUpdated(FtuWizard *, QString )),
+            this, SLOT(updateInfoText(FtuWizard *, QString)));
+
+    // then connect new ones to active wizard
+    connect(mActiveWizard, SIGNAL(viewChanged(FtuWizard *, QGraphicsWidget* )),
+            this, SLOT(changeWizardView(FtuWizard*, QGraphicsWidget*)));
+    
+    connect(mActiveWizard, SIGNAL(fullScreenModeRequested(FtuWizard *)),
+            this, SLOT(enableFullScreenMode(FtuWizard*)));
+    
+    connect(mActiveWizard, SIGNAL(partialScreenModeRequested(FtuWizard * )),
+            this, SLOT(enablePartialScreenMode(FtuWizard*)));
+    
+    connect(mActiveWizard, SIGNAL(infoTextUpdated(FtuWizard *, QString )),
+            this, SLOT(updateInfoText(FtuWizard *, QString)));
+}
+
+// ---------------------------------------------------------------------------
+// FtuWizardActivatedState::content
+// ---------------------------------------------------------------------------
+//
+FtuContentService *FtuWizardActivatedState::content() const
+{
+    return property(FTU_CONTENT_SERVICE_KEY).value<FtuContentService*>();
+}
+
+// ---------------------------------------------------------------------------
+// FtuWizardActivatedState::handleBackEvent
+// ---------------------------------------------------------------------------
+//
+
+void FtuWizardActivatedState::handleBackEvent()
+{
+    if(!mActiveWizard->handleBackEvent())
+    {
+        emit backEventTriggered();
+    }    
+}
+
+// ---------------------------------------------------------------------------
+// FtuWizardActivatedState::changeWizardView
+// ---------------------------------------------------------------------------
+//
+void FtuWizardActivatedState::changeWizardView(FtuWizard *caller, 
+                                            QGraphicsWidget* viewWidget)
+{
+    if(caller == mActiveWizard)        
+    {
+        if(viewWidget)
+        {
+            if (mWizardStackedWidget->indexOf(viewWidget) == -1)
+            {
+                // add wizard's widget to stacked widget if not yet there
+                mWizardStackedWidget->addWidget(viewWidget);
+            }
+            // set wizard's widget as current widget
+            mWizardStackedWidget->setCurrentWidget(viewWidget);
+            
+            qDebug() << "Ftu: switching view due plugin view change";
+            mainWindow()->setCurrentView(mPluginView, true);
+            
+            QList<FtuWizard*> wizards = content()->wizards();
+            // get index of active wizard
+            int index = wizards.indexOf(mActiveWizard);
+            
+            // temp solution to skip edge indexes - start
+            if (index == 0) { index++; }
+            if (index == wizards.count()-1) { index--; }
+            // temp solution to skip edge indexes - end  
+                      
+            // create model index for active wizard
+            QModelIndex modelIndex = mMenustrip->model()->index(index, 0);
+            // scroll to correct position in menustrip
+            HbAbstractItemView::ScrollHint hint = HbAbstractItemView::PositionAtCenter;
+            mMenustrip->scrollTo(modelIndex, hint);
+        }        
+    }
+}
+
+// ---------------------------------------------------------------------------
+// FtuWizardActivatedState::enableFullScreenMode
+// ---------------------------------------------------------------------------
+//
+void FtuWizardActivatedState::enableFullScreenMode(FtuWizard *caller)
+{
+    if(caller == mActiveWizard)
+    {
+        mPluginDisplayMode = FullScreen;
+        // Remove menustrip
+		mMenustrip->setVisible(false);
+        caller->resizeWizard(calculateWizardGeometry()); 
+    }    
+}
+
+// ---------------------------------------------------------------------------
+// FtuWizardActivatedState::enablePartialScreenMode
+// ---------------------------------------------------------------------------
+//
+void FtuWizardActivatedState::enablePartialScreenMode(FtuWizard *caller)
+{
+    if(caller == mActiveWizard)
+    {
+        mPluginDisplayMode = PartialScreen;
+        mMenustrip->setVisible(true);
+        caller->resizeWizard(calculateWizardGeometry());
+    }
+}
+
+// ---------------------------------------------------------------------------
+// FtuWizardActivatedState::updateInfoText
+// ---------------------------------------------------------------------------
+//
+void FtuWizardActivatedState::updateInfoText(FtuWizard *caller, 
+                                                QString text)
+{
+    if(caller == mActiveWizard)
+    {
+        mPluginTitleLabel->setPlainText(text);
+    }    
+}
+
+// ---------------------------------------------------------------------------
+// FtuWizardActivatedState::mainWindow
+// ---------------------------------------------------------------------------
+//
+HbMainWindow* FtuWizardActivatedState::mainWindow()
+{
+    return hbInstance->allMainWindows().at(0);
+}
+
+// ---------------------------------------------------------------------------
+// FtuWizardActivatedState::constructGrid
+// ---------------------------------------------------------------------------
+//
+void FtuWizardActivatedState::constructGrid()
+{
+    // fetch grid view from docml
+    mMenustrip = qobject_cast<HbGridView *>(mDocumentLoader->findWidget(WIZARD_GRID_VIEW));
+    // set row amount for grid
+    mMenustrip->setRowCount(gridRowCount);
+
+    mMenustrip->setScrollDirections(Qt::Horizontal);
+
+    FtuContentService* ftuContentService = content();
+    // get wizards
+    QList<FtuWizard*> wizards = ftuContentService->wizards();
+    
+    QStandardItemModel* model = new QStandardItemModel(this);
+    
+    for(int i = 0 ; i < wizards.size() ; ++i)
+    {
+        // get wizard settings
+        const FtuWizardSetting& settings = wizards.at(i)->wizardSettings();
+        QStandardItem* item = new QStandardItem();
+        HbIcon icon(settings.mMenustripDefaultIcon.absoluteFilePath());
+
+        item->setBackground(QBrush(Qt::lightGray));
+        item->setData(icon, Qt::DecorationRole);
+        
+        QStringList data;
+        data << settings.mMenustripLabel;
+        
+        item->setData(QVariant(data), Qt::DisplayRole);
+
+        model->appendRow(item);
+    }
+    // set above defined model for menustrip
+    mMenustrip->setModel(model);
+
+    connect(mMenustrip, SIGNAL(activated(const QModelIndex)),
+            this, SLOT(activateWizard(const QModelIndex)));
+}
+
+// ---------------------------------------------------------------------------
+// FtuWizardActivatedState::activateWizard
+// ---------------------------------------------------------------------------
+//
+void FtuWizardActivatedState::activateWizard(const QModelIndex index)
+{   
+    // get index for selected wizard
+    int wizardIndex = index.row();
+    if (wizardIndex != -1)
+    {
+        // check if other wizard than current is activated
+        if (mActiveWizard != content()->wizard(wizardIndex))
+        {
+            // first deactivate current active wizard
+		    if(mActiveWizard)
+		    {
+			    mActiveWizard->deactivateWizard();
+		    }
+            // set selected wizard active (precaution, as state does not change)
+            content()->setActiveWizard(wizardIndex);
+            // save active wizard
+            mActiveWizard = content()->wizard(wizardIndex);
+            // reset connections for new active wizard
+            setActiveWizardConnections();
+            // set new active wizard visible
+            mActiveWizard->activateWizard();
+        }
+        
+        // temp solution to skip edge indexes - start
+        if (wizardIndex == 0) { wizardIndex++; }
+        if (wizardIndex == content()->wizards().count()-1) { wizardIndex--; }
+        QModelIndex modelIndex = mMenustrip->model()->index(wizardIndex, 0);
+        // temp solution to skip edge indexes - end         
+              
+        HbAbstractItemView::ScrollHint hint = HbAbstractItemView::PositionAtCenter;
+        // scroll to correct position in menustrip
+        mMenustrip->scrollTo(modelIndex, hint);
+    }
+}
+
+// ---------------------------------------------------------------------------
+// FtuWizardActivatedState::calculateWizardGeometry
+// ---------------------------------------------------------------------------
+//
+QRectF FtuWizardActivatedState::calculateWizardGeometry()
+{
+	QRectF widgetRect = mWizardStackedWidget->geometry();
+	QRectF pluginRect = mPluginView->geometry();	
+    if(mPluginDisplayMode == FullScreen)
+    {		
+		pluginRect.setSize(QSizeF(widgetRect.width(),
+								  (widgetRect.height() +
+						           mMenustrip->geometry().height())));
+    }
+	else
+	{	
+		pluginRect.setSize(QSizeF(widgetRect.width(),
+			                      widgetRect.height()));	
+	}
+
+    return pluginRect;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stateproviders/ftustateprovider/src/ftuwizardloaderstate.cpp	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,114 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies 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 "ftuwizardloaderstate.h"
+#include "ftuwizardprovider.h"
+#include "ftucontentservice.h"
+#include <ftuwizardfactory.h>
+#include <ftuwizard.h>
+#include "ftutest_global.h"
+
+#include <QDebug>
+
+// ---------------------------------------------------------------------------
+// FtuWizardLoaderState::FtuWizardLoaderState
+// ---------------------------------------------------------------------------
+//
+FtuWizardLoaderState::FtuWizardLoaderState(QState *parent) :
+    QState(parent),
+	mWizardProvider(NULL)
+{
+    mWizardProvider = new FtuWizardProvider();
+}
+
+// ---------------------------------------------------------------------------
+// FtuWizardLoaderState::~FtuWizardLoaderState
+// ---------------------------------------------------------------------------
+//
+FtuWizardLoaderState::~FtuWizardLoaderState()
+{
+    delete mWizardProvider;
+}
+// ---------------------------------------------------------------------------
+// FtuWizardLoaderState::addWizard
+// ---------------------------------------------------------------------------
+//
+void FtuWizardLoaderState::addWizard(FtuWizard* wizard, bool success)
+{
+    if(NULL!=wizard) {
+        qDebug() << "Wizard " << wizard->objectName() << " initialized with " << success;
+     }
+    else {
+       qFatal("void FtuWizardLoaderState::addWizard(FtuWizard* wizard, bool success): Null pointer argument wizard");
+     }
+
+    if(wizard && success)
+    {   
+        content()->appendWizard(wizard);
+        
+        // Disconnect the signal, for it is no longer needed.
+        disconnect(wizard, SIGNAL(wizardInitialized(FtuWizard*, bool)),
+                   this, SLOT(addWizard(FtuWizard*, bool)));
+    }
+}
+
+// ---------------------------------------------------------------------------
+// FtuWizardLoaderState::onEntry
+// ---------------------------------------------------------------------------
+//
+void FtuWizardLoaderState::onEntry(QEvent *event)
+{
+    QState::onEntry(event);
+    
+    QList<FtuWizardFactory*> pluginList;   
+    mWizardProvider->loadFTUPlugins(pluginList);
+    int size = pluginList.size();
+    
+    if(size > 0)
+    {     
+        for(int i = 0; i < size; i++)
+        {
+        	FtuWizard* wizard = pluginList[i]->createWizard();
+        	if(wizard)
+        	{                
+                
+                connect(wizard, SIGNAL(wizardInitialized(FtuWizard*, bool)),
+                        this, SLOT(addWizard(FtuWizard*, bool)));
+                wizard->initializeWizard();
+        	}
+        }	
+    }
+}
+
+// ---------------------------------------------------------------------------
+// FtuWizardLoaderState::onExit
+// ---------------------------------------------------------------------------
+//
+void FtuWizardLoaderState::onExit(QEvent *event)
+{
+    QState::onExit(event);
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+FtuContentService *FtuWizardLoaderState::content() const
+{
+    return property(FTU_CONTENT_SERVICE_KEY).value<FtuContentService*>();
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stateproviders/ftustateprovider/src/ftuwizardmenustate.cpp	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,283 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies 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 wizard menu state.
+*
+*/
+
+
+#include "ftuwizardmenustate.h"
+#include "ftucontentservice.h"
+#include <ftuwizard.h>
+
+#include <hbmainwindow.h>
+#include <hbview.h>
+#include <hblabel.h>
+#include <hbicon.h>
+#include <hbinstance.h>
+#include <hblistview.h>
+
+#include <hbdocumentloader.h>
+
+#include <QStandardItemModel>
+#include <QDate>
+#include <hbaction.h>
+
+const int progressCompelete = 100;
+const char* emptyLine = " ";
+
+#define WMS_LOG qDebug() << "ftu:FtuWizardMenuState"
+
+const char *FTUSTATEPROVIDER_DOCML = ":/xml/ftustateprovider.docml";
+const char *TOC_VIEW = "tocView";
+const char *TOC_INFOTEXT_LABEL = "tocInfoTextLabel";
+const char *TOC_LIST_VIEW = "tocListView";
+
+
+
+// ---------------------------------------------------------------------------
+// FtuWizardMenuState::FtuWizardMenuState
+// ---------------------------------------------------------------------------
+//
+FtuWizardMenuState::FtuWizardMenuState(QState *parent) :
+    QState(parent),
+    mMainWindow(NULL),
+    mTocView(NULL),
+    mInfoText(NULL),
+    mListView(NULL),
+	mDocumentLoader(NULL),
+    mModel(NULL)   
+{
+    mMainWindow = hbInstance->allMainWindows().at(0);
+    mModel = new QStandardItemModel(this);
+
+	mDocumentLoader = new HbDocumentLoader();
+	bool ok = false;
+	mDocumentLoader->load(FTUSTATEPROVIDER_DOCML, &ok);
+	QGraphicsWidget *widget = mDocumentLoader->findWidget(TOC_VIEW);
+	Q_ASSERT_X(ok && (widget != 0), "ftustateprovider", "invalid DocML file");
+	mTocView = qobject_cast<HbView*>(widget);
+
+    mTocView->setTitle(qtTrId("txt_ftu_title_setup"));
+
+	mMainWindow->addView(mTocView);
+    // Set as initial view.
+    mMainWindow->setCurrentView(mTocView);
+    mExitAction = new HbAction(Hb::QuitNaviAction, this);
+    mTocView->setNavigationAction(mExitAction);
+    QObject::connect( mExitAction, SIGNAL(triggered()), this, SLOT(exitApp()));
+}
+
+// ---------------------------------------------------------------------------
+// FtuWizardMenuState::~FtuWizardMenuState
+// ---------------------------------------------------------------------------
+//
+FtuWizardMenuState::~FtuWizardMenuState()
+{
+	if(mModel)
+	{
+		delete mModel;
+	}
+	delete mDocumentLoader;
+}
+
+// ---------------------------------------------------------------------------
+// FtuWizardMenuState::onEntry
+// ---------------------------------------------------------------------------
+//
+void FtuWizardMenuState::onEntry(QEvent *event)
+{    
+    WMS_LOG << "::onEntry";
+    QState::onEntry(event);
+
+    if(!mInfoText)
+    {    
+        createInfoText();
+    }    
+    if(!mListView)
+    {
+        createTocList();
+    }
+
+    // If this is not the current view, we're getting back from plugin view
+    if(mMainWindow->currentView() != mTocView)
+    {
+        mMainWindow->setCurrentView(mTocView, true);
+    }
+
+    mMainWindow->show();
+}
+
+// ---------------------------------------------------------------------------
+// FtuWizardMenuState::onExit
+// ---------------------------------------------------------------------------
+//
+void FtuWizardMenuState::onExit(QEvent *event)
+{
+    QState::onExit(event);
+}
+
+// ---------------------------------------------------------------------------
+// FtuWizardMenuState::content
+// ---------------------------------------------------------------------------
+//
+FtuContentService *FtuWizardMenuState::content() const
+{
+    return property(FTU_CONTENT_SERVICE_KEY).value<FtuContentService*>();
+}
+
+// ---------------------------------------------------------------------------
+// FtuWizardMenuState::updatedAsString
+// ---------------------------------------------------------------------------
+//
+QString FtuWizardMenuState::updatedAsString(const QDate& date) const
+{
+    QString status;
+
+    if(date == QDate().currentDate() )
+    { 	
+        status.append(qtTrId("txt_ftu_list_update_today"));
+    }
+    else
+    {
+        status.append(qtTrId("txt_ftu_list_update_date").arg(date.toString()));
+    }
+    return status;
+}
+
+// ---------------------------------------------------------------------------
+// FtuWizardMenuState::addWizardToListModel
+// ---------------------------------------------------------------------------
+//
+void FtuWizardMenuState::addWizardToListModel(int aIndex)
+{    
+    WMS_LOG << "::addWizardToListModel idx : " << aIndex;
+    FtuContentService* ftuContentService = content();
+
+    FtuWizard* addedWizard = ftuContentService->wizard(aIndex);
+    if(addedWizard)
+    {    
+        // Connect for progress updates.
+        connect(addedWizard, SIGNAL(progressUpdated(FtuWizard *, bool, int)), 
+                this, SLOT(updateProgress(FtuWizard *, bool, int)));
+
+    	const FtuWizardSetting& settings = addedWizard->wizardSettings();
+	    QStandardItem* newItem = new QStandardItem();
+	    HbIcon icon (settings.mTocDefaultIcon.absoluteFilePath());
+        QStringList data;
+        data << settings.mTocLabel;
+        QDate date = addedWizard->wizardCompletedDate();
+        if(date.isNull())
+        {
+            data << emptyLine;
+        }
+        else
+        {
+            data << updatedAsString(date);
+        }
+
+        newItem->setBackground(QBrush(Qt::lightGray));
+        newItem->setData(icon, Qt::DecorationRole);
+        newItem->setData(QVariant(data), Qt::DisplayRole);
+
+        mModel->appendRow(newItem);        
+    }
+}
+
+// ---------------------------------------------------------------------------
+// FtuWizardMenuState::createTocList
+// ---------------------------------------------------------------------------
+//
+void FtuWizardMenuState::createTocList()
+{
+    if (!mListView)
+    {
+		mListView = qobject_cast<HbListView *>(mDocumentLoader->findWidget(
+															TOC_LIST_VIEW));
+	    connect(mListView,
+                SIGNAL(activated(const QModelIndex)),
+                this,
+                SLOT(activateWizard(const QModelIndex)));
+
+        mListView->setModel(mModel);
+    }
+}
+
+// ---------------------------------------------------------------------------
+// FtWizardMenuState::createInfoText
+// ---------------------------------------------------------------------------
+//
+void FtuWizardMenuState::createInfoText()
+{
+    mInfoText = qobject_cast<HbLabel *>(mDocumentLoader->findWidget(TOC_INFOTEXT_LABEL));                               
+    mInfoText->setPlainText(qtTrId("txt_ftu_subtitle_toc"));
+}
+
+// ---------------------------------------------------------------------------
+// FtuWizardMenuState::activateWizard
+// ---------------------------------------------------------------------------
+//
+void FtuWizardMenuState::activateWizard(const QModelIndex index)
+{
+    // Set the active wizard index
+    content()->setActiveWizard(index.row());
+    // signal to activated state
+    emit wizardSelected();
+}
+
+// ---------------------------------------------------------------------------
+// FtuWizardMenuState::updateProgress
+// ---------------------------------------------------------------------------
+//
+void FtuWizardMenuState::updateProgress(FtuWizard *caller, bool show, 
+                                           int progress)
+{
+    Q_UNUSED(show)
+    QList<FtuWizard*> wizards = content()->wizards();
+    int index = -1;
+    
+    // Get the index of the wizard
+    for(int i = 0 ; i < wizards.size() ; ++i)
+    {
+        if(caller == wizards[i])
+        {
+            WMS_LOG << "::updateProgress wizard found at: " << i;
+            index = i;
+        }
+    }
+    if(index != -1)
+    {  
+        QStringList data;
+        data << wizards[index]->wizardSettings().mTocLabel;           
+        
+        if(progress < progressCompelete)
+        {
+            QString progressStr;
+            QString progressNumber;
+            progressNumber.setNum(progress);
+            progressStr = qtTrId("txt_ftu_list_progress_status").arg(progressNumber);
+            data << progressStr;
+        }
+        else
+        {         
+            QDate date = wizards[index]->wizardCompletedDate();
+            data << updatedAsString(date);            
+        }
+        mModel->item(index)->setData(QVariant(data), Qt::DisplayRole);
+    }
+}
+
+void FtuWizardMenuState::exitApp()
+    {
+    qApp->exit();
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stateproviders/stateproviders.pro	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,19 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:  FTU state providers project file
+#
+
+TEMPLATE = subdirs
+SUBDIRS  = ftustateprovider
+CONFIG  += ordered
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sysdef_1_5_1.dtd	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,88 @@
+ <!ELEMENT SystemDefinition (systemModel?, build?)>
+ <!ATTLIST SystemDefinition
+  name CDATA #REQUIRED
+  schema CDATA #REQUIRED>
+ <!ELEMENT systemModel (layer+)>
+ <!ELEMENT layer (logicalset* | module*)*>
+ <!ATTLIST layer
+  name CDATA #REQUIRED
+  levels CDATA #IMPLIED
+  span CDATA #IMPLIED>
+ <!ELEMENT logicalset (logicalsubset* | module* | unit* | package* | prebuilt*)*>
+ <!ATTLIST logicalset name CDATA #REQUIRED>
+ <!ELEMENT logicalsubset (module* | unit* | package* | prebuilt*)*>
+ <!ATTLIST logicalsubset name CDATA #REQUIRED>
+ <!ELEMENT module (component* | unit* | package* | prebuilt*)*>
+ <!ATTLIST module
+  name CDATA #REQUIRED
+  level CDATA #IMPLIED>
+ <!ELEMENT component (unit* | package* | prebuilt*)*>
+ <!ATTLIST component name CDATA #REQUIRED>
+ <!ELEMENT unit EMPTY>
+ <!ATTLIST unit
+  unitID ID #REQUIRED
+  name CDATA #REQUIRED
+  mrp CDATA #REQUIRED
+  filter CDATA #IMPLIED
+  bldFile CDATA #REQUIRED
+  priority CDATA #IMPLIED
+  contract CDATA #IMPLIED
+  proFile CDATA #IMPLIED
+  qmakeArgs CDATA #IMPLIED>
+ <!ELEMENT package EMPTY>
+ <!ATTLIST package
+  name CDATA #REQUIRED
+  mrp CDATA #REQUIRED
+  filter CDATA #IMPLIED
+  contract CDATA #IMPLIED>
+ <!ELEMENT prebuilt EMPTY>
+ <!ATTLIST prebuilt
+  name CDATA #REQUIRED
+  version CDATA #REQUIRED
+  late (Y|N) #IMPLIED
+  filter CDATA #IMPLIED
+  contract CDATA #IMPLIED>
+ <!ELEMENT build (option* | target+ | targetList+ | unitList+ | configuration+)*>
+ <!ELEMENT unitList (unitRef+)>
+ <!ATTLIST unitList
+  name ID #REQUIRED
+  description CDATA #REQUIRED>
+ <!ELEMENT unitRef EMPTY>
+ <!ATTLIST unitRef unit IDREF #REQUIRED>
+ <!ELEMENT targetList EMPTY>
+ <!ATTLIST targetList
+  name ID #REQUIRED
+  description CDATA #REQUIRED
+  target IDREFS #REQUIRED>
+ <!ELEMENT target EMPTY>
+ <!ATTLIST target
+  name ID #REQUIRED
+  abldTarget CDATA #REQUIRED
+  description CDATA #REQUIRED>
+ <!ELEMENT option EMPTY>
+ <!ATTLIST option
+  name ID #REQUIRED
+  abldOption CDATA #REQUIRED
+  description CDATA #REQUIRED
+  enable (Y | N | y | n) #REQUIRED>
+ <!ELEMENT configuration (unitListRef+ | layerRef+ | task+)*>
+ <!ATTLIST configuration
+  name ID #REQUIRED
+  description CDATA #REQUIRED
+  filter CDATA #REQUIRED>
+ <!ELEMENT task ( unitListRef* , (buildLayer | specialInstructions))>
+ <!ELEMENT unitListRef EMPTY>
+ <!ATTLIST unitListRef unitList IDREF #REQUIRED>
+ <!ELEMENT layerRef EMPTY>
+ <!ATTLIST layerRef layerName CDATA #REQUIRED>
+ <!ELEMENT buildLayer EMPTY>
+ <!ATTLIST buildLayer
+  command CDATA #REQUIRED
+  targetList IDREFS #IMPLIED
+  unitParallel (Y | N | y | n) #REQUIRED
+  targetParallel (Y | N | y | n) #IMPLIED>
+ <!ELEMENT specialInstructions EMPTY>
+ <!ATTLIST specialInstructions
+  name CDATA #REQUIRED
+  cwd CDATA #REQUIRED
+  command CDATA #REQUIRED>  
Binary file translations/FTU_textmap_10_1_v4_edit.xls has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/translations/ftu_en.ts	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,316 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="3.0" language="en_GB" sourcelanguage="en_GB">
+<context>
+<message numerus="no" id="txt_ftu_info_sign_to_tips">
+    <comment>markable setting item: marked or unmarked , shown only in some marketing areas</comment>        
+    <source>Sign up for tips &amp; tricks</source>
+    <translation variants="no">Sign up for tips &amp; tricks</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftu_07</extra-loc-viewid>
+    <extra-loc-positionid>setlabel</extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_ftu_list_import_Data">
+    <comment>TOC item, data sync </comment>        
+    <source>Import data</source>
+    <translation variants="no">Import data</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftu_09</extra-loc-viewid>
+    <extra-loc-positionid>list item</extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_ftu_button_accept">
+    <comment>related to terms of use below</comment>        
+    <source>Accept</source>
+    <translation variants="no">Accept</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftu_07</extra-loc-viewid>
+    <extra-loc-positionid>button</extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_ftu_grid_email">
+    <comment>menustrip item</comment>        
+    <source>Email accounts</source>
+    <translation variants="no">Email accounts</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftu_10</extra-loc-viewid>
+    <extra-loc-positionid>grid </extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_ftu_list_time_date_location">
+    <comment>TOC item, setting in sync with control panel´s settings</comment>        
+    <source>Time, date and location</source>
+    <translation variants="no">Time, date and location</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftu_09</extra-loc-viewid>
+    <extra-loc-positionid>dblist</extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_ftu_grid_import_data">
+    <comment>menustrip item</comment>        
+    <source>Import data</source>
+    <translation variants="no">Import data</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftu_10</extra-loc-viewid>
+    <extra-loc-positionid>grid </extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_ftu_list_email">
+    <comment>TOC item, email account creation</comment>        
+    <source>Email accounts</source>
+    <translation variants="no">Email accounts</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftu_09</extra-loc-viewid>
+    <extra-loc-positionid>dblist</extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_ftu_list_im ">
+    <comment>TOC item, IM account creation</comment>        
+    <source>Instant messaging</source>
+    <translation variants="no">Instant messaging</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftu_09</extra-loc-viewid>
+    <extra-loc-positionid>dblist</extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_ftu_dialog_button_no">
+    <comment></comment>        
+    <source>no</source>
+    <translation variants="no">no</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftu_08</extra-loc-viewid>
+    <extra-loc-positionid>button</extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_ftu_grid_time_data_location">
+    <comment>menustrip item</comment>        
+    <source>time, date&amp; location</source>
+    <translation variants="no">time, date&amp; location</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftu_10</extra-loc-viewid>
+    <extra-loc-positionid>grid </extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_ftu_dialog_settings_found_later">
+    <comment>info text that user can find settings later, dialog view</comment>        
+    <source>You can find later link to setup from your home screen. </source>
+    <translation variants="no">You can find later link to setup from your home screen. </translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftu_08</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_ftu_subtitle_terms_of_use">
+    <comment>subtitle hints to the view</comment>        
+    <source>Please read terms of use and accept to continue</source>
+    <translation variants="no">Please read terms of use and accept to continue</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftu_07</extra-loc-viewid>
+    <extra-loc-positionid>subhead</extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_ftu_list_update_today">
+    <comment>TOC item, second row, tells last time user has edited plugin/module, shown only if the update has been today</comment>        
+    <source>updated today</source>
+    <translation variants="no">updated today</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftu_09</extra-loc-viewid>
+    <extra-loc-positionid>dblist_val</extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_ftu_dialog_settings_now_or_later">
+    <comment>info text for user choices, related to buttons below, dialog view</comment>        
+    <source>Do you want to do start up settings now (recommended)?</source>
+    <translation variants="no">Do you want to do start up settings now (recommended)?</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftu_08</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_ftu_list_mycard">
+    <comment>TOC item, sync with the Phonebook mycard</comment>        
+    <source>My contact card</source>
+    <translation variants="no">My contact card</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftu_09</extra-loc-viewid>
+    <extra-loc-positionid>list item</extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_ftu_dialog_button_yes">
+    <comment></comment>        
+    <source>yes</source>
+    <translation variants="no">yes</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftu_08</extra-loc-viewid>
+    <extra-loc-positionid>button</extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_ftu_grid_importing ">
+    <comment>menustrip item</comment>        
+    <source>Importing…</source>
+    <translation variants="no">Importing…</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftu_10</extra-loc-viewid>
+    <extra-loc-positionid>grid </extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_ftu_grid_im ">
+    <comment>menustrip item</comment>        
+    <source>Instant messaging</source>
+    <translation variants="no">Instant messaging</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftu_10</extra-loc-viewid>
+    <extra-loc-positionid>grid </extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_ftu_list_importing_data">
+    <comment>TOC item, data sync list item, where U is the source where the data is imported in to the phone (e.g. name of the PC or phone)</comment>        
+    <source>Import data from %1</source>
+    <translation variants="no">Import data from %1</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftu_09</extra-loc-viewid>
+    <extra-loc-positionid>list item</extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_ftu_info_terms_of_use">
+    <comment>placeholder, correct text from services later</comment>        
+    <source>&lt;terms of use&gt;</source>
+    <translation variants="no">&lt;terms of use&gt;</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftu_07</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_ftu_grid_style">
+    <comment>menustrip item</comment>        
+    <source>Style of phone</source>
+    <translation variants="no">Style of phone</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftu_10</extra-loc-viewid>
+    <extra-loc-positionid>grid </extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_ftu_grid_social_networks">
+    <comment>menustrip item</comment>        
+    <source>Social media</source>
+    <translation variants="no">Social media</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftu_10</extra-loc-viewid>
+    <extra-loc-positionid>grid </extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_ftu_grid_mycard">
+    <comment>menustrip item, these items open same stuff as TOC items </comment>        
+    <source>My contact card</source>
+    <translation variants="no">My contact card</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftu_10</extra-loc-viewid>
+    <extra-loc-positionid>grid </extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_ftu_title_setup">
+    <comment>Title shown in all FTU views, excluding videos&amp; pin code query</comment>        
+    <source>Setup</source>
+    <translation variants="no">Setup</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftu</extra-loc-viewid>
+    <extra-loc-positionid>title</extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_ftu_list_progress_status">
+    <comment>TOC item, second row, tells the status of the user initiated progress (data sync from source x)</comment>        
+    <source>%1% done…</source>
+    <translation variants="no">%1% done…</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftu_09</extra-loc-viewid>
+    <extra-loc-positionid>dblist_val</extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_ftu_list_update_date">
+    <comment>TOC item, second row, tells last time user has edited plugin/module, where U is the date</comment>        
+    <source>updated %1</source>
+    <translation variants="no">updated %1</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftu_09</extra-loc-viewid>
+    <extra-loc-positionid>dblist_val</extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_ftu_info_set_language">
+    <comment>info text for language selection, uses main view</comment>        
+    <source>Set your phone language:</source>
+    <translation variants="no">Set your phone language:</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftu_06</extra-loc-viewid>
+    <extra-loc-positionid>setlabel</extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_ftu_list_style">
+    <comment>TOC item, main phone style settings (ringing tone, wallpaper, theme)</comment>        
+    <source>Style of phone</source>
+    <translation variants="no">Style of phone</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftu_09</extra-loc-viewid>
+    <extra-loc-positionid>dblist</extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_ftu_subtitle_toc">
+    <comment>text hints what user can do with the the Table Of Concents (TOC) items</comment>        
+    <source>Select setting you want to edit</source>
+    <translation variants="no">Select setting you want to edit</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftu_09</extra-loc-viewid>
+    <extra-loc-positionid>subhead</extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_ftu_subtitle_change_language">
+    <comment>info text to user´s choices, uses main view</comment>        
+    <source>Select language you want to use</source>
+    <translation variants="no">Select language you want to use</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftu_06</extra-loc-viewid>
+    <extra-loc-positionid>subhead</extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_ftu_list_social_networks">
+    <comment>TOC item, SM account creation (facebook etc) </comment>        
+    <source>Social media</source>
+    <translation variants="no">Social media</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftu_09</extra-loc-viewid>
+    <extra-loc-positionid>dblist</extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+</context>
+</TS>
Binary file translations/ftu_en_GB.qm has changed
Binary file translations/ftu_en_US.qm has changed
Binary file translations/ftu_fi.qm has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/translations/ftu_fi.ts	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,315 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fi_FI" sourcelanguage="en_GB">
+<context>
+    <name></name>
+    <message id="txt_ftu_info_sign_to_tips">
+        <source>Sign up for tips &amp; tricks</source>
+        <comment>markable setting item: marked or unmarked , shown only in some marketing areas</comment>
+        <translation type="unfinished">Tillaan kikat ja vinkit</translation>
+        <extra-loc-viewid>Comment</extra-loc-viewid>
+        <extra-loc-positionid>setlabel</extra-loc-positionid>
+        <extra-loc-feature>Co</extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>
+    <message id="txt_ftu_list_import_Data">
+        <source>Import data</source>
+        <comment>TOC item, data sync </comment>
+        <translation type="unfinished">Sisääntuo tietoa</translation>
+        <extra-loc-viewid></extra-loc-viewid>
+        <extra-loc-positionid>list item</extra-loc-positionid>
+        <extra-loc-feature></extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>
+    <message id="txt_ftu_button_accept">
+        <source>Accept</source>
+        <comment>related to terms of use below</comment>
+        <translation type="unfinished">Hyväksy</translation>
+        <extra-loc-viewid>Text ID</extra-loc-viewid>
+        <extra-loc-positionid>button</extra-loc-positionid>
+        <extra-loc-feature>Te</extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>
+    <message id="txt_ftu_grid_import_data">
+        <source>Import data</source>
+        <comment>menustrip item</comment>
+        <translation type="unfinished">Sisääntuo tietoa</translation>
+        <extra-loc-viewid></extra-loc-viewid>
+        <extra-loc-positionid>grid </extra-loc-positionid>
+        <extra-loc-feature></extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>
+    <message id="txt_ftu_grid_email">
+        <source>Email accounts</source>
+        <comment>menustrip item</comment>
+        <translation type="unfinished">Postilootat</translation>
+        <extra-loc-viewid></extra-loc-viewid>
+        <extra-loc-positionid>grid </extra-loc-positionid>
+        <extra-loc-feature></extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>
+    <message id="txt_ftu_list_time_date_location">
+        <source>Time, date and location</source>
+        <comment>TOC item, setting in sync with control panel´s settings</comment>
+        <translation type="unfinished">Tapa, paikka ja aika</translation>
+        <extra-loc-viewid></extra-loc-viewid>
+        <extra-loc-positionid>dblist</extra-loc-positionid>
+        <extra-loc-feature></extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>
+    <message id="txt_ftu_list_email">
+        <source>Email accounts</source>
+        <comment>TOC item, email account creation</comment>
+        <translation type="unfinished">Postilootat</translation>
+        <extra-loc-viewid></extra-loc-viewid>
+        <extra-loc-positionid>dblist</extra-loc-positionid>
+        <extra-loc-feature></extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>
+    <message id="txt_ftu_list_im ">
+        <source>Instant messaging</source>
+        <comment>TOC item, IM account creation</comment>
+        <translation type="unfinished">Välitön viestintä</translation>
+        <extra-loc-viewid></extra-loc-viewid>
+        <extra-loc-positionid>dblist</extra-loc-positionid>
+        <extra-loc-feature></extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>
+    <message id="txt_ftu_dialog_button_no">
+        <source>no</source>
+        <translation type="unfinished">ei</translation>
+        <extra-loc-viewid></extra-loc-viewid>
+        <extra-loc-positionid>button</extra-loc-positionid>
+        <extra-loc-feature></extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>
+    <message id="txt_ftu_grid_time_data_location">
+        <source>time, date&amp; location</source>
+        <comment>menustrip item</comment>
+        <translation type="unfinished">Tapa, aika ja paikka</translation>
+        <extra-loc-viewid></extra-loc-viewid>
+        <extra-loc-positionid>grid </extra-loc-positionid>
+        <extra-loc-feature></extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>
+    <message id="txt_ftu_dialog_settings_found_later">
+        <source>You can find later link to setup from your home screen. </source>
+        <comment>info text that user can find settings later, dialog view</comment>
+        <translation type="unfinished">Löyvät linkin käyttöönottoon myöhemmin kotinäytöltä </translation>
+        <extra-loc-viewid></extra-loc-viewid>
+        <extra-loc-positionid>info</extra-loc-positionid>
+        <extra-loc-feature></extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>
+    <message id="txt_ftu_subtitle_terms_of_use">
+        <source>Please read terms of use and accept to continue</source>
+        <comment>subtitle hints to the view</comment>
+        <translation type="unfinished">Hyväksyhhän lakihöpinät ja paina nappulaa</translation>
+        <extra-loc-viewid>File name</extra-loc-viewid>
+        <extra-loc-positionid>subhead</extra-loc-positionid>
+        <extra-loc-feature>Fi</extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>
+    <message id="txt_ftu_list_update_today">
+        <source>updated today</source>
+        <comment>TOC item, second row, tells last time user has edited plugin/module, shown only if the update has been today</comment>
+        <translation type="unfinished">Päivitetty tänään</translation>
+        <extra-loc-viewid></extra-loc-viewid>
+        <extra-loc-positionid>dblist_val</extra-loc-positionid>
+        <extra-loc-feature></extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>
+    <message id="txt_ftu_dialog_settings_now_or_later">
+        <source>Do you want to do start up settings now (recommended)?</source>
+        <comment>info text for user choices, related to buttons below, dialog view</comment>
+        <translation type="unfinished">Halluukko tehä käyttöönottoasetukset nytten?</translation>
+        <extra-loc-viewid></extra-loc-viewid>
+        <extra-loc-positionid>info</extra-loc-positionid>
+        <extra-loc-feature></extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>
+    <message id="txt_ftu_list_mycard">
+        <source>My contact card</source>
+        <comment>TOC item, sync with the Phonebook mycard</comment>
+        <translation type="unfinished">Mun kontaktikortti</translation>
+        <extra-loc-viewid></extra-loc-viewid>
+        <extra-loc-positionid>list item</extra-loc-positionid>
+        <extra-loc-feature></extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>
+    <message id="txt_ftu_dialog_button_yes">
+        <source>yes</source>
+        <translation type="unfinished">joo</translation>
+        <extra-loc-viewid></extra-loc-viewid>
+        <extra-loc-positionid>button</extra-loc-positionid>
+        <extra-loc-feature></extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>
+    <message id="txt_ftu_grid_importing ">
+        <source>ImportingÂ…</source>
+        <comment>menustrip item</comment>
+        <translation type="unfinished">Sisääntuonti</translation>
+        <extra-loc-viewid></extra-loc-viewid>
+        <extra-loc-positionid>grid </extra-loc-positionid>
+        <extra-loc-feature></extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>
+    <message id="txt_ftu_grid_im ">
+        <source>Instant messaging</source>
+        <comment>menustrip item</comment>
+        <translation type="unfinished">Välitön viestintä</translation>
+        <extra-loc-viewid></extra-loc-viewid>
+        <extra-loc-positionid>grid </extra-loc-positionid>
+        <extra-loc-feature></extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>
+    <message id="txt_ftu_list_importing_data">
+        <source>Import data from %1</source>
+        <comment>TOC item, data sync list item, where U is the source where the data is imported in to the phone (e.g. name of the PC or phone)</comment>
+        <translation type="unfinished">Sisääntuodaan tietoa lähteestä %1</translation>
+        <extra-loc-viewid></extra-loc-viewid>
+        <extra-loc-positionid>list item</extra-loc-positionid>
+        <extra-loc-feature></extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>
+    <message id="txt_ftu_info_terms_of_use">
+        <source>&lt;terms of use&gt;</source>
+        <comment>placeholder, correct text from services later</comment>
+        <translation type="unfinished">Käyttöehedot</translation>
+        <extra-loc-viewid></extra-loc-viewid>
+        <extra-loc-positionid>info</extra-loc-positionid>
+        <extra-loc-feature></extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>
+    <message id="txt_ftu_grid_style">
+        <source>Style of phone</source>
+        <comment>menustrip item</comment>
+        <translation type="unfinished">Puhelimen tyyli</translation>
+        <extra-loc-viewid></extra-loc-viewid>
+        <extra-loc-positionid>grid </extra-loc-positionid>
+        <extra-loc-feature></extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>
+    <message id="txt_ftu_grid_social_networks">
+        <source>Social media</source>
+        <comment>menustrip item</comment>
+        <translation type="unfinished">Sosiaaliverkot</translation>
+        <extra-loc-viewid></extra-loc-viewid>
+        <extra-loc-positionid>grid </extra-loc-positionid>
+        <extra-loc-feature></extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>
+    <message id="txt_ftu_grid_mycard">
+        <source>My contact card</source>
+        <comment>menustrip item, these items open same stuff as TOC items </comment>
+        <translation type="unfinished">Mun kontaktikortti</translation>
+        <extra-loc-viewid></extra-loc-viewid>
+        <extra-loc-positionid>grid </extra-loc-positionid>
+        <extra-loc-feature></extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>
+    <message id="txt_ftu_title_setup">
+        <source>Setup</source>
+        <comment>Title shown in all FTU views, excluding videos&amp; pin code query</comment>
+        <translation type="unfinished">Käyttöönotto</translation>
+        <extra-loc-viewid>View ID (draft)</extra-loc-viewid>
+        <extra-loc-positionid>title</extra-loc-positionid>
+        <extra-loc-feature>Vi</extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>
+    <message id="txt_ftu_list_progress_status">
+        <source>%1'%' doneÂ…</source>
+        <comment>TOC item, second row, tells the status of the user initiated progress (data sync from source x)</comment>
+        <translation type="unfinished">%1% duunattu</translation>
+        <extra-loc-viewid></extra-loc-viewid>
+        <extra-loc-positionid>dblist_val</extra-loc-positionid>
+        <extra-loc-feature></extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>
+    <message id="txt_ftu_list_update_date">
+        <source>updated %1</source>
+        <comment>TOC item, second row, tells last time user has edited plugin/module, where U is the date</comment>
+        <translation type="unfinished">Päivitetty %1</translation>
+        <extra-loc-viewid></extra-loc-viewid>
+        <extra-loc-positionid>dblist_val</extra-loc-positionid>
+        <extra-loc-feature></extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>
+    <message id="txt_ftu_info_set_language">
+        <source>Set your phone language:</source>
+        <comment>info text for language selection, uses main view</comment>
+        <translation type="unfinished">Asetappa luurin kieli:</translation>
+        <extra-loc-viewid>Layout ID</extra-loc-viewid>
+        <extra-loc-positionid>setlabel</extra-loc-positionid>
+        <extra-loc-feature>La</extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>
+    <message id="txt_ftu_list_style">
+        <source>Style of phone</source>
+        <comment>TOC item, main phone style settings (ringing tone, wallpaper, theme)</comment>
+        <translation type="unfinished">Puhelimen tyyli</translation>
+        <extra-loc-viewid></extra-loc-viewid>
+        <extra-loc-positionid>dblist</extra-loc-positionid>
+        <extra-loc-feature></extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>
+    <message id="txt_ftu_subtitle_toc">
+        <source>Select setting you want to edit</source>
+        <comment>text hints what user can do with the the Table Of Concents (TOC) items</comment>
+        <translation type="unfinished">Valitse asetus jota haluat säätää</translation>
+        <extra-loc-viewid></extra-loc-viewid>
+        <extra-loc-positionid>subhead</extra-loc-positionid>
+        <extra-loc-feature></extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>
+    <message id="txt_ftu_subtitle_change_language">
+        <source>Select language you want to use</source>
+        <comment>info text to user´s choices, uses main view</comment>
+        <translation type="unfinished">Valitteppa kieli jolla haluat pamlata</translation>
+        <extra-loc-viewid>Position ID</extra-loc-viewid>
+        <extra-loc-positionid>subhead</extra-loc-positionid>
+        <extra-loc-feature>Po</extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>
+    <message id="txt_ftu_list_social_networks">
+        <source>Social media</source>
+        <comment>TOC item, SM account creation (facebook etc) </comment>
+        <translation type="unfinished">Sosiaaliverkot</translation>
+        <extra-loc-viewid></extra-loc-viewid>
+        <extra-loc-positionid>dblist</extra-loc-positionid>
+        <extra-loc-feature></extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>
+</context>
+</TS>
Binary file translations/ftuexamplewizards.xls has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/translations/ftuexamplewizards_en.ts	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="3.0" language="en_GB" sourcelanguage="en_GB">
+<context>
+<message numerus="no" id="txt_ftuemailwizard_othermail">
+    <comment></comment>        
+    <source>Other</source>
+    <translation variants="no">Other</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftuemailwizard</extra-loc-viewid>
+    <extra-loc-positionid></extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_ftuemailwizard_note_bad_choice">
+    <comment></comment>        
+    <source>Please choose again!</source>
+    <translation variants="no">Please choose again!</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftuemailwizard</extra-loc-viewid>
+    <extra-loc-positionid></extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_ftusocialmediawizard_button">
+    <comment></comment>        
+    <source>Get socialized</source>
+    <translation variants="no">Get socialized</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftusocialmediawizard</extra-loc-viewid>
+    <extra-loc-positionid></extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_ftusocialmediawizard_note">
+    <comment></comment>        
+    <source>You are now a social person</source>
+    <translation variants="no">You are now a social person</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftusocialmediawizard</extra-loc-viewid>
+    <extra-loc-positionid></extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_ftuexamplewizard_infotext">
+    <comment>Info text shown when user enters the wizard</comment>        
+    <source>Set up data transfer</source>
+    <translation variants="no">Set up data transfer</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftuexamplewizard</extra-loc-viewid>
+    <extra-loc-positionid></extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_ftuexamplewizard_transfer_button">
+    <comment>Text in button</comment>        
+    <source>Start data transfer</source>
+    <translation variants="no">Start data transfer</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftuexamplewizard</extra-loc-viewid>
+    <extra-loc-positionid></extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_ftuemailwizard_infotext">
+    <comment></comment>        
+    <source>Select your email account type</source>
+    <translation variants="no">Select your email account type</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftuemailwizard</extra-loc-viewid>
+    <extra-loc-positionid></extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_ftudatetimelocationwizard_note">
+    <comment></comment>        
+    <source>Time is set now</source>
+    <translation variants="no">Time is set now</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftudatetimelocationwizard</extra-loc-viewid>
+    <extra-loc-positionid></extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_ftuemailwizard_infotext_great_choice">
+    <comment></comment>        
+    <source>Great choice!</source>
+    <translation variants="no">Great choice!</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftuemailwizard</extra-loc-viewid>
+    <extra-loc-positionid></extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_ftusocialmediawizard_infotext">
+    <comment></comment>        
+    <source>Set social media accounts</source>
+    <translation variants="no">Set social media accounts</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftusocialmediawizard</extra-loc-viewid>
+    <extra-loc-positionid></extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_ftudatetimelocationwizard_button">
+    <comment></comment>        
+    <source>Set time</source>
+    <translation variants="no">Set time</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftudatetimelocationwizard</extra-loc-viewid>
+    <extra-loc-positionid></extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_ftudatetimelocationwizard_infotext">
+    <comment></comment>        
+    <source>Date, time and location</source>
+    <translation variants="no">Date, time and location</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>ftudatetimelocationwizard</extra-loc-viewid>
+    <extra-loc-positionid></extra-loc-positionid>
+    <extra-loc-feature>ft</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+</context>
+</TS>
Binary file translations/ftuexamplewizards_en_GB.qm has changed
Binary file translations/ftuexamplewizards_en_US.qm has changed
Binary file translations/ftuexamplewizards_fi.qm has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/translations/ftuexamplewizards_fi.ts	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fi_FI" sourcelanguage="en_GB">
+<context>
+    <message id="txt_ftuemailwizard_othermail">
+        <source>Other</source>
+        <translation type="unfinished">Muu</translation>
+        <extra-loc-viewid>ftuemailwizard</extra-loc-viewid>
+        <extra-loc-positionid></extra-loc-positionid>
+        <extra-loc-feature>ft</extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>    
+    <message id="txt_ftuemailwizard_note_bad_choice">
+        <source>Please choose again!</source>
+        <translation type="unfinished">Valittehan uudelleen!</translation>
+        <extra-loc-viewid>ftuemailwizard</extra-loc-viewid>
+        <extra-loc-positionid></extra-loc-positionid>
+        <extra-loc-feature>ft</extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>
+    <message id="txt_ftusocialmediawizard_button">
+        <source>Get socialized</source>
+        <translation type="unfinished">Sosialisoidu</translation>
+        <extra-loc-viewid>ftusocialmediawizard</extra-loc-viewid>
+        <extra-loc-positionid></extra-loc-positionid>
+        <extra-loc-feature>ft</extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>
+    <message id="txt_ftusocialmediawizard_note">
+        <source>You are now a social person</source>
+        <translation type="unfinished">Sä olet nyt tosi sosiaalinen tyyppi</translation>
+        <extra-loc-viewid>ftusocialmediawizard</extra-loc-viewid>
+        <extra-loc-positionid></extra-loc-positionid>
+        <extra-loc-feature>ft</extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>
+    <message id="txt_ftuexamplewizard_infotext">
+        <source>Set up data transfer</source>
+        <comment>Info text shown when user enters the wizard</comment>
+        <translation type="unfinished">Aseta tiedonsiirto</translation>
+        <extra-loc-viewid>ftuexamplewizard</extra-loc-viewid>
+        <extra-loc-positionid></extra-loc-positionid>
+        <extra-loc-feature>ft</extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>
+    <message id="txt_ftuexamplewizard_transfer_button">
+        <source>Start data transfer</source>
+        <comment>Text in button</comment>
+        <translation type="unfinished">Aloita tiedonsiirto</translation>
+        <extra-loc-viewid>ftuexamplewizard</extra-loc-viewid>
+        <extra-loc-positionid></extra-loc-positionid>
+        <extra-loc-feature>ft</extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>
+    <message id="txt_ftuemailwizard_infotext">
+        <source>Select your email account type</source>
+        <translation type="unfinished">Valitse sähköpostisi tyyppi</translation>
+        <extra-loc-viewid>ftuemailwizard</extra-loc-viewid>
+        <extra-loc-positionid></extra-loc-positionid>
+        <extra-loc-feature>ft</extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>
+    <message id="txt_ftudatetimelocationwizard_note">
+        <source>Time is set now</source>
+        <translation type="unfinished">Kello on nyt asetettu</translation>
+        <extra-loc-viewid>ftudatetimelocationwizard</extra-loc-viewid>
+        <extra-loc-positionid></extra-loc-positionid>
+        <extra-loc-feature>ft</extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>
+    <message id="txt_ftuemailwizard_infotext_great_choice">
+        <source>Great choice!</source>
+        <translation type="unfinished">Oikea valinta!</translation>
+        <extra-loc-viewid>ftuemailwizard</extra-loc-viewid>
+        <extra-loc-positionid></extra-loc-positionid>
+        <extra-loc-feature>ft</extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>
+    <message id="txt_ftusocialmediawizard_infotext">
+        <source>Set social media accounts</source>
+        <translation type="unfinished">Aseta sosiaalimediapalvelut</translation>
+        <extra-loc-viewid>ftusocialmediawizard</extra-loc-viewid>
+        <extra-loc-positionid></extra-loc-positionid>
+        <extra-loc-feature>ft</extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>
+    <message id="txt_ftudatetimelocationwizard_button">
+        <source>Set time</source>
+        <translation type="unfinished">Aseta aika</translation>
+        <extra-loc-viewid>ftudatetimelocationwizard</extra-loc-viewid>
+        <extra-loc-positionid></extra-loc-positionid>
+        <extra-loc-feature>ft</extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>
+    <message id="txt_ftudatetimelocationwizard_infotext">
+        <source>Date, time and location</source>
+        <translation type="unfinished">Päivämäärä, aika ja sijainti</translation>
+        <extra-loc-viewid>ftudatetimelocationwizard</extra-loc-viewid>
+        <extra-loc-positionid></extra-loc-positionid>
+        <extra-loc-feature>ft</extra-loc-feature>
+        <extra-loc-layout_id></extra-loc-layout_id>
+        <extra-loc-blank>False</extra-loc-blank>
+    </message>
+</context>
+</TS>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/translations/translations.qrc	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,8 @@
+<RCC>
+    <qresource prefix="/translations" >
+        <file alias="ftu_en_US">ftu_en_US.qm</file>
+    </qresource>
+    <qresource prefix="/translations" >
+        <file alias="ftu_en_GB">ftu_en_GB.qm</file>
+    </qresource>  
+</RCC>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wizardproviders/ftuwizardprovider/conf/ftuwizardprovider.confml	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration xmlns="http://www.s60.com/xml/confml/1" name="FtuWizardConfiguration" version="1">
+  <feature ref="KCrUidFtuWizardProvider" name="First Time Use Wizard Plugins">
+    <desc>Defines which FTU Wizards are displayed when application is run.</desc>
+    <setting ref="KFtuNumberOfWizardPlugins" name="Number of Ftu Wizard Plugins" type="int">
+      <desc>Configures how many ftu plug-ins will be loaded. List plug-ins below. The value of a single key is the interface identifier in literal format.</desc>
+    </setting>
+    <setting ref="KFtuWizardPluginPlaceholder1" name="Undefined 1" type="string">
+      <desc>Value is the interface identifier in literal format.</desc>
+    </setting>
+    <setting ref="KFtuWizardPluginPlaceholder2" name="Undefined 2" type="string">
+      <desc>Value is the interface identifier in literal format.</desc>
+    </setting>
+    <setting ref="KFtuWizardPluginPlaceholder3" name="Undefined 3" type="string">
+      <desc>Value is the interface identifier in literal format.</desc>
+    </setting>
+    <setting ref="KFtuWizardPluginPlaceholder4" name="Undefined 4" type="string">
+      <desc>Value is the interface identifier in literal format.</desc>
+    </setting>
+    <setting ref="KFtuWizardPluginPlaceholder5" name="Undefined 5" type="string">
+      <desc>Value is the interface identifier in literal format.</desc>
+    </setting>
+    <setting ref="KFtuWizardPluginPlaceholder6" name="Undefined 6" type="string">
+      <desc>Value is the interface identifier in literal format.</desc>
+    </setting>
+    <setting ref="KFtuWizardPluginPlaceholder7" name="Undefined 7" type="string">
+      <desc>Value is the interface identifier in literal format.</desc>
+    </setting>
+    <setting ref="KFtuWizardPluginPlaceholder8" name="Undefined 8" type="string">
+      <desc>Value is the interface identifier in literal format.</desc>
+    </setting>
+    <setting ref="KFtuWizardPluginPlaceholder9" name="Undefined 9" type="string">
+      <desc>Value is the interface identifier in literal format.</desc>
+    </setting>
+    <setting ref="KFtuWizardPluginPlaceholder10" name="Undefined 10" type="string">
+      <desc>Value is the interface identifier in literal format.</desc>
+    </setting>
+    <setting ref="KFtuWizardPluginPlaceholder11" name="Undefined 11" type="string">
+      <desc>Value is the interface identifier in literal format.</desc>
+    </setting>
+    <setting ref="KFtuWizardPluginPlaceholder12" name="Undefined 12" type="string">
+      <desc>Value is the interface identifier in literal format.</desc>
+    </setting>
+    <setting ref="KFtuWizardPluginPlaceholder13" name="Undefined 13" type="string">
+      <desc>Value is the interface identifier in literal format.</desc>
+    </setting>
+    <setting ref="KFtuWizardPluginPlaceholder14" name="Undefined 14" type="string">
+      <desc>Value is the interface identifier in literal format.</desc>
+    </setting>
+    <setting ref="KFtuWizardPluginPlaceholder15" name="Undefined 15" type="string">
+      <desc>Value is the interface identifier in literal format.</desc>
+    </setting>
+  </feature>
+  <data>
+    <KCrUidFtuWizardProvider>
+      <KFtuNumberOfWizardPlugins>5</KFtuNumberOfWizardPlugins>
+      <KFtuWizardPluginPlaceholder1>ftudatetimelocationwizard.manifest</KFtuWizardPluginPlaceholder1>
+      <KFtuWizardPluginPlaceholder2>ftuemailwizard.manifest</KFtuWizardPluginPlaceholder2>
+      <KFtuWizardPluginPlaceholder3>ftusocialmediawizard.manifest</KFtuWizardPluginPlaceholder3>
+      <KFtuWizardPluginPlaceholder4>ftudatetimewizard.manifest</KFtuWizardPluginPlaceholder4>
+      <KFtuWizardPluginPlaceholder5>dataimportftuwizard.manifest</KFtuWizardPluginPlaceholder5>
+      <KFtuWizardPluginPlaceholder6></KFtuWizardPluginPlaceholder6>
+      <KFtuWizardPluginPlaceholder7></KFtuWizardPluginPlaceholder7>
+      <KFtuWizardPluginPlaceholder8></KFtuWizardPluginPlaceholder8>
+      <KFtuWizardPluginPlaceholder9></KFtuWizardPluginPlaceholder9>
+      <KFtuWizardPluginPlaceholder10></KFtuWizardPluginPlaceholder10>
+      <KFtuWizardPluginPlaceholder11></KFtuWizardPluginPlaceholder11>
+      <KFtuWizardPluginPlaceholder12></KFtuWizardPluginPlaceholder12>
+      <KFtuWizardPluginPlaceholder13></KFtuWizardPluginPlaceholder13>
+      <KFtuWizardPluginPlaceholder14></KFtuWizardPluginPlaceholder14>
+      <KFtuWizardPluginPlaceholder15></KFtuWizardPluginPlaceholder15>
+    </KCrUidFtuWizardProvider>
+  </data>
+</configuration>
Binary file wizardproviders/ftuwizardprovider/conf/ftuwizardprovider_20026F9B.crml has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wizardproviders/ftuwizardprovider/ftuwizardprovider.pri	Mon Apr 19 14:01:47 2010 +0300
@@ -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:  FTU wizard provider list of files
+#
+
+HEADERS += ./inc/*.h
+SOURCES += ./src/*.cpp
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wizardproviders/ftuwizardprovider/ftuwizardprovider.pro	Mon Apr 19 14:01:47 2010 +0300
@@ -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:  FTU wizard provider project file
+#
+
+
+TEMPLATE = lib
+CONFIG += hb
+ 
+INCLUDEPATH += ./inc                         
+
+
+DEFINES += FTUWIZARDPROVIDER_LIB
+
+win32 {
+    CONFIG(debug, debug|release) {
+      SUBDIRPART = debug
+    } else {
+      SUBDIRPART = release
+    }
+    DESTDIR = $$PWD/../../../bin/$$SUBDIRPART
+    LIBS += -L$$PWD/../../../bin/debug
+}
+
+DEPENDPATH += ./inc \
+              ./src
+
+INCLUDEPATH += ./inc \
+               ../../inc 
+
+LIBS += -lftuwizardmodel
+
+QT -= webkit
+QT += xml
+
+symbian {
+        TARGET.UID3 = 0x20026F9B
+        TARGET.CAPABILITY = ALL -TCB
+        TARGET.EPOCALLOWDLLDATA=1        
+        TARGET.EPOCHEAPSIZE =  0x020000 0x1F00000
+        INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE
+        LIBS += -lxqsettingsmanager
+	BLD_INF_RULES.prj_exports += \
+		"conf/ftuwizardprovider.confml	APP_LAYER_CONFML(ftuwizardprovider.confml)" \
+		"conf/ftuwizardprovider_20026F9B.crml     APP_LAYER_CRML(ftuwizardprovider_20026F9B.crml)" 
+}
+
+include(ftuwizardprovider.pri)
+
+#ONLY FOR DEVELOPMENT! REMOVE THIS BEFORE EACH HS_Domain RELEASE!
+symbian: MMP_RULES += EXPORTUNFROZEN
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wizardproviders/ftuwizardprovider/inc/ftumanifestparser.h	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,92 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Wizard provider manifest parser.
+*
+*/
+
+
+#ifndef FTU_WIZARPROVIDER_MANIFESTPARSER_H
+#define FTU_WIZARPROVIDER_MANIFESTPARSER_H
+
+#include <QObject>
+
+class QDomElement;
+/**
+ * @ingroup wizardprovider
+ * @brief Loads ftu plugins from an XML manifest file.
+ *
+ * @lib ?library
+ * @since S60 ?S60_version
+ */
+class FtuManifestParser : public QObject
+{
+    Q_OBJECT
+
+public:
+
+    /**
+     * Constructor.
+     * @since S60 ?S60_version.
+     * @param aParent Parent object.
+     */
+    FtuManifestParser(QObject* aParent = 0);
+    
+    /**
+     * Destructor.
+     * @since S60 ?S60_version.
+     */
+    virtual ~FtuManifestParser();
+    
+    /**
+     * Parses plugin list from manifest file.
+     * @since S60 ?S60_version.
+     * @param path The path where manifest file is found.
+     * @return Parsed plugin paths.
+     */    
+    QStringList parsePluginList(const QString& path);
+
+private:
+
+    Q_DISABLE_COPY(FtuManifestParser)
+    
+    /**
+     * Parses the plugin paths from a manifest file.
+     * @since S60 ?S60_version.
+     * @param fileName Manifest file name.
+     * @return Parsed path.
+     */
+    QString loadFromXml(const QString& fileName);
+    
+    /**
+     * Parses the attribute.
+     * @since S60 ?S60_version.
+     * @param element The element from which the attribute is parsed.
+     * @param attributeName The name of the attribute to be parsed. 
+     * @return Parsed attribute.
+     */
+    QString parseAttribute(QDomElement& element, const QString& attributeName) const;
+    
+    /**
+     * Reads the configured plugins.
+     * @since S60 ?S60_version.
+     * @return List of configured manifest files.
+     */    
+    QStringList readManifestFilesFromConfig();
+
+private:
+    
+};
+
+#endif //FTU_WIZARPROVIDER_MANIFESTPARSER_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wizardproviders/ftuwizardprovider/inc/ftuwizardprovider.h	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,85 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  FTU wirzard provider.
+*
+*/
+
+
+#ifndef FTU_WIZARDPROVIDER_H
+#define FTU_WIZARDPROVIDER_H
+
+#include "ftuwizardprovider_global.h"
+#include "ftutest_global.h"
+#include <QObject>
+#include <QVector>
+#include <QDir>
+
+class FtuWizard;
+class FtuWizardFactory;
+
+FTU_TEST_CLASS(FtuWizardProviderTest)
+
+
+/**
+ * @ingroup group_ftuwizardprovider
+ * @brief Loads and connects FTU plugins
+ *
+ * This service is responsible for loading FTU plugins.
+ *
+ * @since S60 ?S60_version.
+ */
+class FTUWIZARDPROVIDER_EXPORT FtuWizardProvider : public QObject
+{
+
+    Q_OBJECT
+
+public:
+
+    /**
+     * Default constructor.
+     *
+     * @since S60 ?S60_version.
+     */
+    FtuWizardProvider(QObject* =0);
+
+    /**
+     * Destructor.
+     *
+     * @since S60 ?S60_version.
+     */
+	virtual ~FtuWizardProvider();
+
+    /**
+     * Loads all FTU plugins.
+     * @param plugins The list will contain all found plugins on return.      
+     * @since S60 ?S60_version.
+     */
+    void loadFTUPlugins(QList<FtuWizardFactory*>& plugins);
+    
+private:
+
+    
+private slots:
+
+private:
+    
+    QString mWizardManifestDir;
+    
+    FTU_TEST_FRIEND_CLASS(FtuWizardProviderTest)
+};
+
+
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wizardproviders/ftuwizardprovider/inc/ftuwizardprovider_global.h	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,36 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies 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 dll header file.
+*
+*/
+
+
+#ifndef FTUWIZARDPROVIDER_GLOBAL
+#define FTUWIZARDPROVIDER_GLOBAL
+
+#include <Qt/qglobal.h>
+
+
+#ifdef FTUWIZARDPROVIDER_LIB
+	#define FTUWIZARDPROVIDER_EXPORT Q_DECL_EXPORT
+#else
+    #ifdef FTUWIZARDPROVIDER_TEST
+        #define FTUWIZARDPROVIDER_EXPORT
+    #else
+        #define FTUWIZARDPROVIDER_EXPORT Q_DECL_IMPORT
+    #endif	
+#endif
+
+
+#endif // FTUWIZARDPROVIDER_GLOBAL
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wizardproviders/ftuwizardprovider/inc/ftuwizardproviderinternalcrkeys.h	Mon Apr 19 14:01:47 2010 +0300
@@ -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:  Wizard provider manifest parser.
+*
+*/
+
+#ifndef FTUWIZARDPROVIDERINTERNALCRKEYS_H
+#define FTUWIZARDPROVIDERINTERNALCRKEYS_H
+
+#include <e32cmn.h>
+
+
+/**
+* Ftu Wizard plugin configuration
+*/
+const qint32 KCrUidFtuWizardProvider = {0x20026F9B};
+
+/**
+* Describes how many ftu wizard plug-ins are listed in the configuration
+* Type: int
+*/
+const quint32 KFtuNumberOfWizardPlugins = {0x00000001};
+
+#endif // FTUWIZARDPROVIDERINTERNALCRKEYS_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wizardproviders/ftuwizardprovider/src/ftumanifestparser.cpp	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,227 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  FTU manifest parser.
+*
+*/
+
+
+#include "ftumanifestparser.h"
+#ifdef Q_OS_SYMBIAN
+#include "ftuwizardproviderinternalcrkeys.h"
+#endif
+#include <QDomDocument>
+#include <QFile>
+#include <QStringList>
+#include <QFileInfo>
+#include <QDir>
+#include <QDebug>
+
+#ifdef Q_OS_SYMBIAN
+
+#include <XQSettingsManager> // for reading cenrep keys
+#endif // Q_OS_SYMBIAN
+
+// ---------------------------------------------------------------------------
+// FtuManifestParser::FtuManifestParser
+// ---------------------------------------------------------------------------
+//
+FtuManifestParser::FtuManifestParser(QObject* aParent)
+    : QObject(aParent)
+{
+}
+
+// ---------------------------------------------------------------------------
+// FtuManifestParser::~FtuManifestParser
+// ---------------------------------------------------------------------------
+//
+FtuManifestParser::~FtuManifestParser()
+{
+
+}
+
+
+// ---------------------------------------------------------------------------
+// FtuManifestParser::parsePluginList
+// ---------------------------------------------------------------------------
+//
+QStringList FtuManifestParser::parsePluginList(const QString& manifestPath)
+{
+    QStringList dllNameList;
+    QStringList pathList;
+    
+    //Check plugin dirs from root of different drives
+    QFileInfoList drives = QDir::drives();
+    int i;
+    for(i = 0; i < drives.count(); i++)
+    {
+        QFileInfo drive = drives.at(i);
+        QString driveLetter = drive.absolutePath();
+        QString path = driveLetter + manifestPath;
+        if(QDir(path).exists())
+        {
+            qDebug() << "ftu:: append to path list: " << path;
+            pathList << path;
+        }
+    }      
+    // Read the configured plugin list.
+    QStringList filesToRead = readManifestFilesFromConfig();
+
+    for(i=0; i < pathList.count(); i++)
+    {
+        QString path = pathList.at(i);
+        QDir dir(path);
+
+        // Use the configured list as a filter while getting the 
+        // manifest files.
+        dir.setNameFilters(filesToRead);
+        QStringList entries = dir.entryList(filesToRead, QDir::Files);
+    
+        qDebug() << "ftu: Configured manifest file count " 
+                 << filesToRead.count()
+                 << " found manifest files from system " << entries.count();
+        
+        // Go through the configured list and find the manifest files.
+        for(int j=0; j < filesToRead.count() ; ++j)
+        {
+            int index = entries.indexOf(filesToRead[j]);
+            qDebug() << "ftu:reading manifest file from "<< index;
+            if(index > -1 && index <= entries.count())
+            {
+                QString fileName = entries[index]; 
+                qDebug() << "ftu:: loading from manifest file: " << fileName;
+                QString path = loadFromXml(dir.absoluteFilePath(fileName));
+                qDebug() << "ftu:: path from manifest: " << path;
+                if(!path.isEmpty())
+                {
+                    dllNameList << path;
+                }
+            }
+        }    
+    }
+    return dllNameList;
+}
+
+// ---------------------------------------------------------------------------
+// FtuManifestParser::readManifestFilesFromConfig
+// ---------------------------------------------------------------------------
+//
+
+QStringList FtuManifestParser::readManifestFilesFromConfig()
+{
+    QStringList filesFromConf;
+#ifdef Q_OS_SYMBIAN
+    
+    XQSettingsManager* settingsManager = new XQSettingsManager();
+    
+    XQSettingsKey numberOfPluginsKey(XQSettingsKey::TargetCentralRepository,
+                                     KCrUidFtuWizardProvider,
+                                     KFtuNumberOfWizardPlugins);
+    
+    bool ok = false;
+    int numberOfPlugins = settingsManager->readItemValue(
+                                              numberOfPluginsKey).toInt(&ok);
+
+    qDebug() << "Ftu:FtuManifestParser reading the nbr of plugins resulted: "
+             << ok;
+    
+    if(ok)
+    {
+        qDebug() << "Ftu:reading config for " << numberOfPlugins 
+                 << " plugins";
+        
+        
+        for(int i=1; i <= numberOfPlugins ; ++i)
+        {
+            XQSettingsKey fileKey(XQSettingsKey::TargetCentralRepository,
+                                  KCrUidFtuWizardProvider,
+                                  KFtuNumberOfWizardPlugins + i);
+            
+            QString file = settingsManager->readItemValue(fileKey, 
+                                   XQSettingsManager::TypeString).toString();
+            qDebug() << "Ftu:Reading filename from conf :" << file;            
+            filesFromConf << file;
+        }
+    }
+    delete settingsManager;
+#else
+    // Add hardcoded strings for windows environment,
+    // currently the settings manager is not available for windows.
+	filesFromConf << "ftusocialmediawizard.manifest"
+                  << "ftudatetimelocationwizard.manifest"
+				  << "ftuexamplewizard.manifest"
+				  << "ftuemailwizard.manifest";
+#endif    
+    return filesFromConf;
+}
+
+// ---------------------------------------------------------------------------
+// FtuManifestParser::loadFromXml
+// ---------------------------------------------------------------------------
+//
+QString FtuManifestParser::loadFromXml(const QString& aFileName)
+{
+
+    qDebug() << "ftu:: ManifestParser::loadFromXml " << aFileName;
+    QFile file(aFileName);
+    
+    if(!file.exists())
+    {
+        qDebug() << "ftu: file does not exist";
+        return QString();
+    }
+
+    QDomDocument document;
+    if(!document.setContent(&file))
+    {
+        return QString();
+    }
+
+    QDomElement element = document.documentElement();
+    if(element.tagName() != "plugin")
+    {
+        qDebug() << "ftu: Tag name plugin not found";
+        return QString();
+    }
+
+    QDomNodeList plugins = element.elementsByTagName("runtime");
+
+    for(int i = 0; i < plugins.count(); ++i)
+    {
+        element = plugins.at(i).toElement();
+        QString attr = parseAttribute(element, "library");
+        qDebug() << "ftu::parsed attr " << attr;
+        return attr;
+    }
+    return QString();
+}
+
+
+// ---------------------------------------------------------------------------
+// FtuManifestParser::parseAttribute
+// ---------------------------------------------------------------------------
+//
+QString FtuManifestParser::parseAttribute(QDomElement& element, 
+                                          const QString& attributeName) const
+{
+    QDomAttr attribute = element.attributeNode(attributeName);
+    if(attribute.isNull() || attribute.value().isEmpty())
+    {
+        qDebug() << "ftu: attribute not parsed [attr name]" << attributeName;
+        return QString();
+    }
+
+    return attribute.value();
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wizardproviders/ftuwizardprovider/src/ftuwizardprovider.cpp	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,159 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  FTU wizard provider.
+*
+*/
+
+
+#include "ftuwizardprovider.h"
+#include "ftumanifestparser.h"
+
+#include <ftuwizardfactory.h>
+
+#include <QDebug>
+#include <QPluginLoader>
+#ifdef Q_OS_SYMBIAN
+#include <QLibraryInfo>
+#else
+#include <QCoreApplication>
+#endif
+#include <QDir>
+
+//#define _USE_SERVICEFW
+
+#ifdef _USE_SERVICEFW
+#include "ftuwizardproviderinternalcrkeys.h"
+
+#include <qservicemanager.h>
+#include <qserviceinterfacedescriptor.h>
+#include <XQSettingsManager> // for reading cenrep keys
+
+#endif
+
+
+#ifndef FTUWIZARDPROVIDER_TEST
+const char wizardManifestDir [] = "/fturesources/plugins/wizardproviders";
+#else
+const char wizardManifestDir [] = "/fturesources/testresources/plugins/wizardproviders";
+#endif
+    
+// ---------------------------------------------------------------------------
+// FtuWizardProvider::FtuWizardProvider
+// ---------------------------------------------------------------------------
+//
+FtuWizardProvider::FtuWizardProvider(QObject* parent):
+    QObject(parent), mWizardManifestDir(wizardManifestDir)
+{	
+
+}
+
+// ---------------------------------------------------------------------------
+// FtuWizardProvider::~FtuWizardProvider
+// ---------------------------------------------------------------------------
+//
+FtuWizardProvider::~FtuWizardProvider()
+{
+}
+
+// ---------------------------------------------------------------------------
+// FtuWizardProvider::loadFTUPlugins
+// ---------------------------------------------------------------------------
+//
+void FtuWizardProvider::loadFTUPlugins(QList<FtuWizardFactory*>& plugins)
+{
+#ifdef Q_OS_SYMBIAN
+    QDir pluginsDir = QLibraryInfo::location(QLibraryInfo::PluginsPath) 
+                        + "/FTU";
+#else
+    QDir pluginsDir = QCoreApplication::applicationDirPath() 
+                                + "/resource/qt/plugins/FTU";
+#endif
+
+    QStringList pluginList;
+
+    FtuManifestParser parser;
+#ifdef Q_OS_SYMBIAN
+    pluginList = parser.parsePluginList(mWizardManifestDir);
+#else
+	QString manifestDir = QCoreApplication::applicationDirPath() 
+                                + mWizardManifestDir;
+	// Remove c:/
+    manifestDir.remove(0,3);
+	pluginList = parser.parsePluginList(manifestDir);
+#endif 
+	
+#ifdef _USE_SERVICEFW	
+	
+    XQSettingsManager settingsManager;
+    
+    XQSettingsKey numberOfPluginsKey(XQSettingsKey::TargetCentralRepository,
+                                     KCrUidFtuWizardProvider,
+                                     KFtuNumberOfWizardPlugins);
+    
+    bool ok;
+    int numberOfPlugins = settingsManager.readItemValue(
+                                        numberOfPluginsKey).toInt(&ok);     
+    
+    QServiceManager* serviceManager = new QServiceManager();
+    
+    if(ok)
+    {
+        qDebug() << "Ftu:reading config for " << numberOfPlugins 
+                 << " plugins";
+        
+        
+        for(int i=1; i <= numberOfPlugins ; ++i)
+        {
+            XQSettingsKey fileKey(XQSettingsKey::TargetCentralRepository,
+                                  KCrUidFtuWizardProvider,
+                                  KFtuNumberOfWizardPlugins + i);
+            
+            QString interface = settingsManager.readItemValue(fileKey,
+                                    XQSettingsManager::TypeString).toString();
+            qDebug() << "Ftu:Reading interface name from conf :" << interface;
+            QObject* obj = serviceManager->loadInterface(interface);
+            if(obj)
+            {
+                FtuWizardFactory* factory = qobject_cast<FtuWizardFactory*>
+                                                                    (obj);
+                if(factory)
+                {
+                    plugins.append(factory);
+                }
+            }
+            
+        }
+    }    	
+    delete serviceManager;
+
+#else
+    foreach (QString filename, pluginList) 
+    {
+        qDebug () << "Ftu: Loading instance from : "<< filename;
+        QPluginLoader loader(pluginsDir.absoluteFilePath(filename));
+        QObject* instance = loader.instance();
+        if(instance)
+        {
+            qDebug() << "ftu: instance loaded";
+            FtuWizardFactory* factory = qobject_cast<FtuWizardFactory*>
+                                                    (instance);
+            if(factory)
+            {
+                qDebug() << "ftu: appending factory to list";
+                plugins.append(factory);
+            }
+        }
+    }
+#endif        
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wizardproviders/wizardproviders.pro	Mon Apr 19 14:01:47 2010 +0300
@@ -0,0 +1,21 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+
+TEMPLATE = subdirs
+
+SUBDIRS  = ftuwizardprovider
+
+CONFIG  += ordered