Revision: 201031 RCL_3
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 19 Aug 2010 10:43:30 +0300
branchRCL_3
changeset 8 885c2596c964
parent 7 e2d33e235f7e
child 9 5d007b20cfd0
Revision: 201031 Kit: 201033
group/qtmobilityheaders.flm
qtmobility/bin/servicedbgen
qtmobility/bin/servicedbgen.exe
qtmobility/common.pri
qtmobility/config.pri
qtmobility/configure
qtmobility/configure.bat
qtmobility/data/qtmobility.pkg
qtmobility/data/qtmobility.sisx
qtmobility/data/qtmobility_stub.pkg
qtmobility/data/qtmobility_stub.sis
qtmobility/data/qtmobilityexampleapps.pkg
qtmobility/examples/bearercloud/cloud.cpp
qtmobility/examples/s60installs/s60installs.pro
qtmobility/features/deploy.pri
qtmobility/features/mobility.prf
qtmobility/features/mobility.prf.template
qtmobility/features/mobilityconfig.prf
qtmobility/features/qtservice.meta
qtmobility/features/qtservice.prf
qtmobility/qtmobility.pro
qtmobility/src/bearer/qcorewlanengine_mac.mm
qtmobility/src/bearer/qgenericengine.cpp
qtmobility/src/bearer/qnetworkconfigmanager_s60_p.cpp
qtmobility/src/bearer/qnetworkconfigmanager_s60_p.h
qtmobility/src/bearer/qnetworksession.cpp
qtmobility/src/bearer/qnetworksession_maemo.cpp
qtmobility/src/bearer/qnetworksession_maemo_p.h
qtmobility/src/bearer/qnetworksession_s60_p.cpp
qtmobility/src/bearer/qnetworksession_s60_p.h
qtmobility/src/global/qmobilityglobal.h
qtmobility/src/s60installs/s60installs.pro
qtmobility/staticconfig.pri
qtmobility/tests/auto/qnetworksession/tst_qnetworksession/tst_qnetworksession.cpp
qtmobility/tests/bearerex/bearerex.cpp
qtmobility/tests/bearerex/bearerex.pro
qtmobility/tests/tests.pro
--- a/group/qtmobilityheaders.flm	Thu Jul 15 19:34:35 2010 +0300
+++ b/group/qtmobilityheaders.flm	Thu Aug 19 10:43:30 2010 +0300
@@ -9,16 +9,16 @@
 QTMOBILITY_ROOT := $(subst group,,$(subst \,/,$(EXTENSION_ROOT)qtmobility/))
 QTMOBILITY_BIN := $(QTMOBILITY_ROOT)bin
 QTMOBILITY_INCLUDE := $(QTMOBILITY_ROOT)include
-QTMOBILITY_BEARER_INCLUDE := $(QTMOBILITY_INCLUDE)/QtmBearer
-QTMOBILITY_CONTACTS_INCLUDE := $(QTMOBILITY_INCLUDE)/QtmContacts
-QTMOBILITY_LOCATION_INCLUDE := $(QTMOBILITY_INCLUDE)/QtmLocation
-QTMOBILITY_MESSAGING_INCLUDE := $(QTMOBILITY_INCLUDE)/QtmMessaging
-QTMOBILITY_MULTIMEDIA_INCLUDE := $(QTMOBILITY_INCLUDE)/QtMultimedia
-QTMOBILITY_PUBLISHSUBSCRIBE_INCLUDE := $(QTMOBILITY_INCLUDE)/QtmPubSub
-QTMOBILITY_SYSTEMINFO_INCLUDE := $(QTMOBILITY_INCLUDE)/QtmSystemInfo
-QTMOBILITY_SERVICEFRAMEWORK_INCLUDE := $(QTMOBILITY_INCLUDE)/QtmServiceFramework
-QTMOBILITY_VERSIT_INCLUDE := $(QTMOBILITY_INCLUDE)/QtmVersit
-QTMOBILITY_SENSORS_INCLUDE := $(QTMOBILITY_INCLUDE)/QtmSensors
+QTMOBILITY_BEARER_INCLUDE := $(QTMOBILITY_INCLUDE)/QtBearer
+QTMOBILITY_CONTACTS_INCLUDE := $(QTMOBILITY_INCLUDE)/QtContacts
+QTMOBILITY_LOCATION_INCLUDE := $(QTMOBILITY_INCLUDE)/QtLocation
+QTMOBILITY_MESSAGING_INCLUDE := $(QTMOBILITY_INCLUDE)/QtMessaging
+QTMOBILITY_MULTIMEDIA_INCLUDE := $(QTMOBILITY_INCLUDE)/QtMultimediaKit
+QTMOBILITY_PUBLISHSUBSCRIBE_INCLUDE := $(QTMOBILITY_INCLUDE)/QtPublishSubscribe
+QTMOBILITY_SYSTEMINFO_INCLUDE := $(QTMOBILITY_INCLUDE)/QtSystemInfo
+QTMOBILITY_SERVICEFRAMEWORK_INCLUDE := $(QTMOBILITY_INCLUDE)/QtServiceFramework
+QTMOBILITY_VERSIT_INCLUDE := $(QTMOBILITY_INCLUDE)/QtVersit
+QTMOBILITY_SENSORS_INCLUDE := $(QTMOBILITY_INCLUDE)/QtSensors
 QTMOBILITY_SRC := $(QTMOBILITY_ROOT)src
 QTMOBILITY_GLOBAL_SRC := $(QTMOBILITY_SRC)/global
 QTMOBILITY_BEARER_SRC := $(QTMOBILITY_SRC)/bearer
Binary file qtmobility/bin/servicedbgen has changed
Binary file qtmobility/bin/servicedbgen.exe has changed
--- a/qtmobility/common.pri	Thu Jul 15 19:34:35 2010 +0300
+++ b/qtmobility/common.pri	Thu Aug 19 10:43:30 2010 +0300
@@ -88,7 +88,7 @@
         contains(TEMPLATE,.*lib) {
             DESTDIR = $$OUTPUT_DIR/lib
             symbian:defFilePath=../s60installs
-#            VERSION = 1.0.1
+#            VERSION = 1.0.2
         } else {
             DESTDIR = $$OUTPUT_DIR/bin
         }
@@ -162,6 +162,9 @@
 symbian {
     #For some reason the default include path doesn't include MOC_DIR on symbian
     INCLUDEPATH += $$MOC_DIR
+    
+    #This is supposed to be defined in symbian_os.hrh
+    DEFINES += SYMBIAN_EMULATOR_SUPPORTS_PERPROCESS_WSD
 }
 
 # Add the output dirs to the link path too
--- a/qtmobility/config.pri	Thu Jul 15 19:34:35 2010 +0300
+++ b/qtmobility/config.pri	Thu Aug 19 10:43:30 2010 +0300
@@ -16,7 +16,9 @@
 symbiancntsim_enabled = yes 
 MOBILITY_SD_MCL_BUILD = yes
 sensors_symbian_enabled = yes
+hb_symbian_enabled = no
 audiorouting_s60_enabled = yes
 radioutility_s60_enabled = yes
-openmaxal_symbian_enabled = yes
+openmaxal_symbian_enabled = no
 surfaces_s60_enabled = yes
+messaging_freestyle_enabled = yes
--- a/qtmobility/configure	Thu Jul 15 19:34:35 2010 +0300
+++ b/qtmobility/configure	Thu Aug 19 10:43:30 2010 +0300
@@ -445,7 +445,7 @@
     printf "."
     "$MAKE" >> "$CONFIG_LOG" 2>&1
     printf ". "
-    if ./$2 >> "$CONFIG_LOG" 2>&1; then
+    if [ -e ./$2 ]; then
         echo "OK"
         echo "$2_enabled = yes" >> "$CONFIG_IN"
     else
@@ -462,39 +462,13 @@
 compileTest "Maemo ICD" maemo-icd
 compileTest "Maemo ICD WLAN" maemo-icd-network-wlan
 compileTest "Maemo5 contacts dependencies" maemo5-contacts
+compileTest "Bluez" bluez
 if [ "$LINUX_TARGET" = maemo6 ]; then
     compileTest sensord sensord
 else
     echo "sensord_enabled = no" >> "$CONFIG_IN"
 fi
 
-# Now module selection
-# using 'expr match ....' should help a bit
-#if [ -n "$MOBILITY_MODULES_UNPARSED" ]; then
-    # In theory we should do some sanity checking here.
-#    MOBILITY_MODULES="$MOBILITY_MODULES_UNPARSED"
-#fi
-
-# Test if able to build multimedia
-for module in $MOBILITY_MODULES; do
-    case "$module" in
-        multimedia)
-            echo "contains(QT_CONFIG,multimedia):message(1)" > 1.pro
-            SOMETHING=`qmake 1.pro 2>&1`
-            if [ "$SOMETHING" = "Project MESSAGE: 1" ]; then
-                MOBILITY_MODULES="$(echo $MOBILITY_MODULES | sed 's:multimedia::g')"
-                echo "Only one multimedia module allowed, please rebuild Qt with -no-multimedia"
-            fi
-            rm 1.pro
-            ;;
-    esac
-done
-
-if [ -z "$MOBILITY_MODULES" ]; then
-    echo "No module available to build."
-    exit 1
-fi
-
 # It's a lot easier to make qmake do the dependency checking...
 echo "mobility_modules = $MOBILITY_MODULES" >> "$CONFIG_IN"
 echo "contains(mobility_modules,versit): mobility_modules *= contacts" >> "$CONFIG_IN"
@@ -512,44 +486,44 @@
 for module in $MOBILITY_MODULES; do
     case "$module" in 
         bearer)
-            $relpath/bin/syncheaders $shadowpath/include/QtmBearer $relpath/src/bearer
+            $relpath/bin/syncheaders $shadowpath/include/QtBearer $relpath/src/bearer
             ;;
         publishsubscribe)
-            $relpath/bin/syncheaders $shadowpath/include/QtmPubSub $relpath/src/publishsubscribe
+            $relpath/bin/syncheaders $shadowpath/include/QtPublishSubscribe $relpath/src/publishsubscribe
             ;;
         location)
-            $relpath/bin/syncheaders $shadowpath/include/QtmLocation $relpath/src/location
+            $relpath/bin/syncheaders $shadowpath/include/QtLocation $relpath/src/location
             ;;
         serviceframework)
-            $relpath/bin/syncheaders $shadowpath/include/QtmServiceFramework $relpath/src/serviceframework
+            $relpath/bin/syncheaders $shadowpath/include/QtServiceFramework $relpath/src/serviceframework
             ;;
         systeminfo)
-            $relpath/bin/syncheaders $shadowpath/include/QtmSystemInfo $relpath/src/systeminfo
+            $relpath/bin/syncheaders $shadowpath/include/QtSystemInfo $relpath/src/systeminfo
             ;;
         contacts)
-            $relpath/bin/syncheaders $shadowpath/include/QtmContacts $relpath/src/contacts
-            $relpath/bin/syncheaders $shadowpath/include/QtmContacts $relpath/src/contacts/details
-            $relpath/bin/syncheaders $shadowpath/include/QtmContacts $relpath/src/contacts/requests
-            $relpath/bin/syncheaders $shadowpath/include/QtmContacts $relpath/src/contacts/filters
+            $relpath/bin/syncheaders $shadowpath/include/QtContacts $relpath/src/contacts
+            $relpath/bin/syncheaders $shadowpath/include/QtContacts $relpath/src/contacts/details
+            $relpath/bin/syncheaders $shadowpath/include/QtContacts $relpath/src/contacts/requests
+            $relpath/bin/syncheaders $shadowpath/include/QtContacts $relpath/src/contacts/filters
             ;;
         multimedia)
-            $relpath/bin/syncheaders $shadowpath/include/QtMultimedia $relpath/src/multimedia
-            $relpath/bin/syncheaders $shadowpath/include/QtMultimedia $relpath/src/multimedia/audio
-            $relpath/bin/syncheaders $shadowpath/include/QtMultimedia $relpath/src/multimedia/video
+            $relpath/bin/syncheaders $shadowpath/include/QtMultimediaKit $relpath/src/multimedia
+            $relpath/bin/syncheaders $shadowpath/include/QtMultimediaKit $relpath/src/multimedia/audio
+            $relpath/bin/syncheaders $shadowpath/include/QtMultimediaKit $relpath/src/multimedia/video
             ;;
         messaging)
-            $relpath/bin/syncheaders $shadowpath/include/QtmMessaging $relpath/src/messaging
+            $relpath/bin/syncheaders $shadowpath/include/QtMessaging $relpath/src/messaging
             ;;
         versit)
             #versit implies contacts
-            $relpath/bin/syncheaders $shadowpath/include/QtmVersit $relpath/src/versit
-            $relpath/bin/syncheaders $shadowpath/include/QtmContacts $relpath/src/contacts
-            $relpath/bin/syncheaders $shadowpath/include/QtmContacts $relpath/src/contacts/details
-            $relpath/bin/syncheaders $shadowpath/include/QtmContacts $relpath/src/contacts/requests
-            $relpath/bin/syncheaders $shadowpath/include/QtmContacts $relpath/src/contacts/filters
+            $relpath/bin/syncheaders $shadowpath/include/QtVersit $relpath/src/versit
+            $relpath/bin/syncheaders $shadowpath/include/QtContacts $relpath/src/contacts
+            $relpath/bin/syncheaders $shadowpath/include/QtContacts $relpath/src/contacts/details
+            $relpath/bin/syncheaders $shadowpath/include/QtContacts $relpath/src/contacts/requests
+            $relpath/bin/syncheaders $shadowpath/include/QtContacts $relpath/src/contacts/filters
             ;;
         sensors)
-            $relpath/bin/syncheaders $shadowpath/include/QtmSensors $relpath/src/sensors
+            $relpath/bin/syncheaders $shadowpath/include/QtSensors $relpath/src/sensors
             ;;
         *)
             echo "Cannot generate headers for $module"
--- a/qtmobility/configure.bat	Thu Jul 15 19:34:35 2010 +0300
+++ b/qtmobility/configure.bat	Thu Aug 19 10:43:30 2010 +0300
@@ -59,11 +59,19 @@
 set BUILD_TOOLS=yes
 set MOBILITY_MODULES=bearer location contacts multimedia publishsubscribe versit messaging systeminfo serviceframework sensors
 set MOBILITY_MODULES_UNPARSED=
-set MOBILITY_MULTIMEDIA=yes
 set VC_TEMPLATE_OPTION=
 set QT_PATH=
 set QMAKE_CACHE=%BUILD_PATH%\.qmake.cache
 
+REM We use these variables to indicate which modules are selected
+REM They are used for example to see which modules need config.tests built
+set CONTACTS_SELECTED=yes
+set BEARER_SELECTED=yes
+set SYSTEMINFO_SELECTED=yes
+set SENSORS_SELECTED=yes
+set MESSAGING_SELECTED=yes
+set MULTIMEDIA_SELECTED=yes
+set LOCATION_SELECTED=yes
 if exist "%QMAKE_CACHE%" del /Q %QMAKE_CACHE%
 if exist "%PROJECT_LOG%" del /Q %PROJECT_LOG%
 if exist "%PROJECT_CONFIG%" del /Q %PROJECT_CONFIG%
@@ -72,22 +80,6 @@
 echo QT_MOBILITY_BUILD_TREE = %BUILD_PATH% >> %QMAKE_CACHE%
 set QMAKE_CACHE=
 
-if %BUILD_PATH% == %SOURCE_PATH% (
-    cd %SOURCE_PATH%\config.tests\qtmultimedia
-    if exist make del qtmultimedia
-) else (
-    rmdir /S /Q config.tests\qtmultimedia
-    mkdir config.tests\qtmultimedia
-    cd config.tests\qtmultimedia
-)
-for /f "tokens=3" %%i in ('call %QT_PATH%qmake %SOURCE_PATH%\config.tests\qtmultimedia\qtmultimedia.pro 2^>^&1 1^>NUL') do set QTMULTIMEDIA=%%i 
-if %QTMULTIMEDIA% == no-multimedia (
-    set MOBILITY_MULTIMEDIA=yes
-) else (
-    set MOBILITY_MULTIMEDIA=no
-)
-cd /D %BUILD_PATH%
-
 :cmdline_parsing
 if "%1" == ""                   goto startProcessing
 if "%1" == "-debug"             goto debugTag
@@ -264,6 +256,13 @@
 REM reset default modules as we expect a modules list
 set MOBILITY_MODULES=
 
+set CONTACTS_SELECTED=
+set BEARER_SELECTED=
+set SYSTEMINFO_SELECTED=
+set SENSORS_SELECTED=
+set MESSAGING_SELECTED=
+set MULTIMEDIA_SELECTED=
+set LOCATION_SELECTED=
 echo Checking selected modules:
 :modulesTag2
 
@@ -276,38 +275,38 @@
 : distinguish between false and correct module names being passed
 if %FIRST% == bearer (
     echo     Bearer Management selected
+    set BEARER_SELECTED=yes
 ) else if %FIRST% == contacts (
     echo     Contacts selected
+    set CONTACTS_SELECTED=yes
 ) else if %FIRST% == location (
     echo     Location selected
+    set LOCATION_SELECTED=yes
 ) else if %FIRST% == messaging (
     echo     Messaging selected
+    set MESSAGING_SELECTED=yes
 ) else if %FIRST% == multimedia (
     echo     Multimedia selected
+    set MULTIMEDIA_SELECTED=yes
 ) else if %FIRST% == publishsubscribe (
     echo     PublishSubscribe selected
 ) else if %FIRST% == systeminfo (
     echo     Systeminfo selected
+    set SYSTEMINFO_SELECTED=yes
 ) else if %FIRST% == serviceframework (
     echo     ServiceFramework selected
 ) else if %FIRST% == versit (
     echo     Versit selected ^(implies Contacts^)
+    set CONTACTS_SELECTED=yes
 ) else if %FIRST% == sensors (
     echo     Sensors selected
+    set SENSORS_SELECTED=yes
 ) else (
     echo     Unknown module %FIRST%
     goto errorTag
 )
 
-if %FIRST% == multimedia (
-    if %MOBILITY_MULTIMEDIA% == yes (
-        set MOBILITY_MODULES=%MOBILITY_MODULES% %FIRST%
-    ) else (
-        echo "Only one multimedia module allowed, please rebuild Qt with -no-multimedia"
-    )
-) else (
-    set MOBILITY_MODULES=%MOBILITY_MODULES% %FIRST%
-)
+set MOBILITY_MODULES=%MOBILITY_MODULES% %FIRST%
 
 if "%REMAINING%" == "" (
     shift
@@ -320,41 +319,8 @@
 SET FIRST=
 goto cmdline_parsing
 
-:removeMultimedia
-set MOBILITY_MODULES_TEMP=%MOBILITY_MODULES%
-set MOBILITY_MODULES=
-
-:removeMultimedia2
-
-for /f "tokens=1,*" %%a in ("%MOBILITY_MODULES_TEMP%") do (
-    set FIRST=%%a
-    set REMAINING=%%b
-)
-if NOT %FIRST% == multimedia (
-    set MOBILITY_MODULES=%MOBILITY_MODULES% %FIRST%
-)
-if "%REMAINING%" == "" (
-    goto startProcessing2
-) else (
-    set MOBILITY_MODULES_TEMP=%REMAINING%
-    goto removeMultimedia2
-)
-
-goto startProcessing2
-
 :startProcessing
 
-for %%a in (%MOBILITY_MODULES%) do (
-    if %%a == multimedia (
-        if %MOBILITY_MULTIMEDIA% == no (
-            echo "Only one multimedia module allowed, please rebuild Qt with -no-multimedia"
-            goto removeMultimedia
-        )
-    )
-)
-
-:startProcessing2
-
 echo CONFIG += %RELEASEMODE% >> %PROJECT_CONFIG%
 echo CONFIG_WIN32 += %WIN32_RELEASEMODE% %RELEASEMODE% >> %PROJECT_CONFIG%
 set RELEASEMODE=
@@ -397,10 +363,10 @@
 
 echo qmf_enabled = no >> %PROJECT_CONFIG%
 
-echo isEmpty($$QT_MOBILITY_INCLUDE):QT_MOBILITY_INCLUDE=$$QT_MOBILITY_PREFIX/include >> %PROJECT_CONFIG%
-echo isEmpty($$QT_MOBILITY_LIB):QT_MOBILITY_LIB=$$QT_MOBILITY_PREFIX/lib >> %PROJECT_CONFIG%
-echo isEmpty($$QT_MOBILITY_BIN):QT_MOBILITY_BIN=$$QT_MOBILITY_PREFIX/bin >> %PROJECT_CONFIG%
-echo isEmpty($$QT_MOBILITY_PLUGINS):QT_MOBILITY_PLUGINS=$$QT_MOBILITY_PREFIX/plugins >> %PROJECT_CONFIG%
+echo !symbian:isEmpty(QT_MOBILITY_INCLUDE):QT_MOBILITY_INCLUDE=$$QT_MOBILITY_PREFIX/include >> %PROJECT_CONFIG%
+echo isEmpty(QT_MOBILITY_LIB):QT_MOBILITY_LIB=$$QT_MOBILITY_PREFIX/lib >> %PROJECT_CONFIG%
+echo isEmpty(QT_MOBILITY_BIN):QT_MOBILITY_BIN=$$QT_MOBILITY_PREFIX/bin >> %PROJECT_CONFIG%
+echo isEmpty(QT_MOBILITY_PLUGINS):QT_MOBILITY_PLUGINS=$$QT_MOBILITY_PREFIX/plugins >> %PROJECT_CONFIG%
 
 echo mobility_modules = %MOBILITY_MODULES%  >> %PROJECT_CONFIG%
 REM no Sysinfo support on Maemo yet
@@ -505,9 +471,11 @@
     if "%MOBILITY_BUILDSYSTEM%" == "symbian-sbsv2" (
         call %MOBILITY_MAKE% release-armv5 >> %PROJECT_LOG% 2>&1
         for /f "tokens=2" %%i in ('%MOBILITY_MAKE% release-armv5 SBS^="@sbs --check"') do set FAILED=1
+        call %MOBILITY_MAKE% clean >> %PROJECT_LOG% 2>&1
     ) else if "%MOBILITY_BUILDSYSTEM%" == "symbian-abld" (
         call %MOBILITY_MAKE% release-gcce >> %PROJECT_LOG% 2>&1
         for /f "tokens=2" %%i in ('%MOBILITY_MAKE% release-gcce ABLD^="@ABLD.BAT -c" 2^>^&1') do if not %%i == bldfiles set FAILED=1
+        call %MOBILITY_MAKE% clean >> %PROJECT_LOG% 2>&1
     ) else {
         REM Make for other builds
         call %MOBILITY_MAKE% >> %PROJECT_LOG% 2>&1
@@ -536,20 +504,47 @@
 for /f "tokens=3" %%i in ('call %QT_PATH%qmake %SOURCE_PATH%\config.tests\make\make.pro 2^>^&1 1^>NUL') do set BUILDSYSTEM=%%i
 if "%BUILDSYSTEM%" == "symbian-abld" goto symbianTests
 if "%BUILDSYSTEM%" == "symbian-sbsv2" goto symbianTests
-goto noTests
+goto windowsTests
 
 :symbianTests
-call :compileTest LBT lbt
-call :compileTest SNAP snap
-call :compileTest OCC occ
-call :compileTest SymbianContactSIM symbiancntsim
-call :compileTest S60_Sensor_API sensors_s60_31
-call :compileTest Symbian_Sensor_Framework sensors_symbian
-call :compileTest Audiorouting_s60 audiorouting_s60
-call :compileTest Tunerlibrary_for_3.1 tunerlib_s60
-call :compileTest RadioUtility_for_post_3.1 radioutility_s60
-call :compileTest OpenMaxAl_support openmaxal_symbian
-call :compileTest Surfaces_s60 surfaces_s60
+
+if "%MULTIMEDIA_SELECTED%" == "yes" (
+    call :compileTest Audiorouting_s60 audiorouting_s60
+    call :compileTest Tunerlibrary_for_3.1 tunerlib_s60
+    call :compileTest RadioUtility_for_post_3.1 radioutility_s60
+    call :compileTest OpenMaxAl_support openmaxal_symbian
+    call :compileTest Surfaces_s60 surfaces_s60
+)
+if "%CONTACTS_SELECTED%" == "yes" (
+    call :compileTest SymbianContactSIM symbiancntsim
+)
+if "%BEARER_SELECTED%" == "yes" (
+    call :compileTest SNAP snap
+    call :compileTest OCC occ
+)
+if "%SENSORS_SELECTED%" == "yes" (
+    call :compileTest S60_Sensor_API sensors_s60_31
+    call :compileTest Symbian_Sensor_Framework sensors_symbian
+)
+if "%MESSAGING_SELECTED%" == "yes" (
+    call :compileTest Symbian_Messaging_Freestyle messaging_freestyle
+)
+if "%SYSTEMINFO_SELECTED%" == "yes" (
+    call :compileTest Symbian_Hb hb_symbian
+)
+if "%LOCATION_SELECTED%" == "yes" (
+    call :compileTest LBT lbt
+)
+goto noTests
+
+:windowsTests
+
+if "%MULTIMEDIA_SELECTED%" == "yes" (
+    call :compileTest DirectShow directshow
+    call :compileTest WindowsMediaSDK wmsdk
+    call :compileTest WindowMediaPlayer wmp
+    call :compileTest EnhancedVideoRenderer evr
+)
 
 :noTests
 
@@ -575,37 +570,35 @@
 )
 
 if %FIRST% == bearer (
-    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include\QtmBearer %SOURCE_PATH%\src\bearer
+    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include\QtBearer %SOURCE_PATH%\src\bearer
 ) else if %FIRST% == contacts (
-    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include\QtmContacts %SOURCE_PATH%\src\contacts
-    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include\QtmContacts %SOURCE_PATH%\src\contacts\requests
-    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include\QtmContacts %SOURCE_PATH%\src\contacts\filters
-    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include\QtmContacts %SOURCE_PATH%\src\contacts\details
+    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include\QtContacts %SOURCE_PATH%\src\contacts
+    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include\QtContacts %SOURCE_PATH%\src\contacts\requests
+    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include\QtContacts %SOURCE_PATH%\src\contacts\filters
+    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include\QtContacts %SOURCE_PATH%\src\contacts\details
 ) else if %FIRST% == location (
-    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include\QtmLocation %SOURCE_PATH%\src\location
+    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include\QtLocation %SOURCE_PATH%\src\location
 ) else if %FIRST% == messaging (
-    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include\QtmMessaging %SOURCE_PATH%\src\messaging
+    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include\QtMessaging %SOURCE_PATH%\src\messaging
 ) else if %FIRST% == multimedia (
-    if %MOBILITY_MULTIMEDIA% == yes (
-        perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include\QtMultimedia %SOURCE_PATH%\src\multimedia
-        perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include\QtMultimedia %SOURCE_PATH%\src\multimedia\audio
-        perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include\QtMultimedia %SOURCE_PATH%\src\multimedia\video
-    )
+    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include\QtMultimediaKit %SOURCE_PATH%\src\multimedia
+    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include\QtMultimediaKit %SOURCE_PATH%\src\multimedia\audio
+    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include\QtMultimediaKit %SOURCE_PATH%\src\multimedia\video
 ) else if %FIRST% == publishsubscribe (
-    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include\QtmPubSub %SOURCE_PATH%\src\publishsubscribe
+    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include\QtPublishSubscribe %SOURCE_PATH%\src\publishsubscribe
 ) else if %FIRST% == systeminfo (
-    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include\QtmSystemInfo %SOURCE_PATH%\src\systeminfo
+    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include\QtSystemInfo %SOURCE_PATH%\src\systeminfo
 ) else if %FIRST% == serviceframework (
-    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include\QtmServiceFramework %SOURCE_PATH%\src\serviceframework
+    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include\QtServiceFramework %SOURCE_PATH%\src\serviceframework
 ) else if %FIRST% == versit (
     REM versit implies contacts
-    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include\QtmVersit %SOURCE_PATH%\src\versit
-    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include\QtmContacts %SOURCE_PATH%\src\contacts
-    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include\QtmContacts %SOURCE_PATH%\src\contacts\requests
-    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include\QtmContacts %SOURCE_PATH%\src\contacts\filters
-    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include\QtmContacts %SOURCE_PATH%\src\contacts\details
+    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include\QtVersit %SOURCE_PATH%\src\versit
+    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include\QtContacts %SOURCE_PATH%\src\contacts
+    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include\QtContacts %SOURCE_PATH%\src\contacts\requests
+    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include\QtContacts %SOURCE_PATH%\src\contacts\filters
+    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include\QtContacts %SOURCE_PATH%\src\contacts\details
 ) else if %FIRST% == sensors (
-    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include\QtmSensors %SOURCE_PATH%\src\sensors
+    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include\QtSensors %SOURCE_PATH%\src\sensors
 )
 
 if "%REMAINING%" == "" (
@@ -650,6 +643,13 @@
 SET REMAINING=
 SET FIRST=
 SET MODULES_TEMP=
+set CONTACTS_SELECTED=
+set BEARER_SELECTED=
+set SYSTEMINFO_SELECTED=
+set SENSORS_SELECTED=
+set MESSAGING_SELECTED=
+set MULTIMEDIA_SELECTED=
+set LOCATION_SELECTED=
 exit /b 1
 
 :exitTag
@@ -667,4 +667,11 @@
 SET REMAINING=
 SET FIRST=
 SET MODULES_TEMP=
+set CONTACTS_SELECTED=
+set BEARER_SELECTED=
+set SYSTEMINFO_SELECTED=
+set SENSORS_SELECTED=
+set MESSAGING_SELECTED=
+set MULTIMEDIA_SELECTED=
+set LOCATION_SELECTED=
 exit /b 0
--- a/qtmobility/data/qtmobility.pkg	Thu Jul 15 19:34:35 2010 +0300
+++ b/qtmobility/data/qtmobility.pkg	Thu Aug 19 10:43:30 2010 +0300
@@ -3,7 +3,7 @@
 &EN
 
 ; SIS header: name, uid, version
-#{"QtMobility"},(0x2002AC89),1,0,1,TYPE=SA,RU
+#{"QtMobility"},(0x2002AC89),1,0,2,TYPE=SA,RU
 
 ; Localised Vendor name
 %{"Nokia"}
Binary file qtmobility/data/qtmobility.sisx has changed
--- a/qtmobility/data/qtmobility_stub.pkg	Thu Jul 15 19:34:35 2010 +0300
+++ b/qtmobility/data/qtmobility_stub.pkg	Thu Aug 19 10:43:30 2010 +0300
@@ -3,7 +3,7 @@
 &EN
 
 ; SIS header: name, uid, version
-#{"QtMobility"},(0x2002AC89),1,0,1,TYPE=SA
+#{"QtMobility"},(0x2002AC89),1,0,2,TYPE=SA
 
 ; Localised Vendor name
 %{"Nokia"}
Binary file qtmobility/data/qtmobility_stub.sis has changed
--- a/qtmobility/data/qtmobilityexampleapps.pkg	Thu Jul 15 19:34:35 2010 +0300
+++ b/qtmobility/data/qtmobilityexampleapps.pkg	Thu Aug 19 10:43:30 2010 +0300
@@ -2,7 +2,7 @@
 &EN
 
 ; SIS header: name, uid, version
-#{"QtMobilityExamples"},(0xE001E61D),1,0,0,TYPE=SA
+#{"QtMobilityExamples"},(0xE001E61D),1,0,2,TYPE=SA
  
 ; Localised Vendor name
 %{"Nokia, Qt"}
--- a/qtmobility/examples/bearercloud/cloud.cpp	Thu Jul 15 19:34:35 2010 +0300
+++ b/qtmobility/examples/bearercloud/cloud.cpp	Thu Aug 19 10:43:30 2010 +0300
@@ -245,6 +245,8 @@
     else
         finalOpacity = 1.0;
 
+#if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6) && \
+    !defined(Q_OS_SYMBIAN) && !defined(Q_OS_WINCE)
     QString tooltip;
 
     if (configuration.name().isEmpty())
@@ -300,6 +302,9 @@
     tooltip += tr("<br>Sent data: %1 bytes").arg(session->bytesWritten());
 
     setToolTip(tooltip);
+#else
+    Q_UNUSED(state);
+#endif
 }
 //! [2]
 
--- a/qtmobility/examples/s60installs/s60installs.pro	Thu Jul 15 19:34:35 2010 +0300
+++ b/qtmobility/examples/s60installs/s60installs.pro	Thu Aug 19 10:43:30 2010 +0300
@@ -8,17 +8,17 @@
 #BearerManagement examples
 contains(mobility_modules, bearer) {
     SUBDIRS += ../bearermonitor \
-        ../../tests/bearerex
+                ../bearercloud
     executables.sources += \
         bearermonitor.exe \
-        BearerEx.exe
+        bearercloud.exe
 
     reg_resource.sources += \
-         $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/bearermonitor_reg.rsc \
-         $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/BearerEx_reg.rsc
+        $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/bearermonitor_reg.rsc \
+        $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/bearercloud_reg.rsc
     resource.sources += \
-         $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/bearermonitor.rsc \
-         $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/BearerEx.rsc
+        $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/bearermonitor.rsc \
+        $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/bearercloud.rsc
 }
 
 executables.path = /sys/bin
--- a/qtmobility/features/deploy.pri	Thu Jul 15 19:34:35 2010 +0300
+++ b/qtmobility/features/deploy.pri	Thu Aug 19 10:43:30 2010 +0300
@@ -1,5 +1,5 @@
 headers.files = $$PUBLIC_HEADERS
-headers.path = $$QT_MOBILITY_INCLUDE
+headers.path = $$QT_MOBILITY_INCLUDE/$$TARGET
 
 contains(TEMPLATE,.*lib) {
     target.path=$$QT_MOBILITY_LIB
--- a/qtmobility/features/mobility.prf	Thu Jul 15 19:34:35 2010 +0300
+++ b/qtmobility/features/mobility.prf	Thu Aug 19 10:43:30 2010 +0300
@@ -17,6 +17,7 @@
 
 contains(MOBILITY, bearer) {
     DEFINES += QT_MOBILITY_BEARER
+    INCLUDEPATH += $${MOBILITY_INCLUDE}/QtBearer
     qtAddLibrary(QtBearer)
     !equals(QT_MAJOR_VERSION,4)|!equals(QT_MINOR_VERSION, 6) {
         message(Qt Mobility Bearer API is deprecated when using Qt 4.7 or higher.)
@@ -25,44 +26,51 @@
 }
 
 contains(MOBILITY, publishsubscribe) {
+    INCLUDEPATH += $${MOBILITY_INCLUDE}/QtPublishSubscribe
     qtAddLibrary(QtPublishSubscribe)
 }
 
 contains(MOBILITY, location) {
+    INCLUDEPATH += $${MOBILITY_INCLUDE}/QtLocation
     qtAddLibrary(QtLocation)
 }
 
 contains(MOBILITY, serviceframework) {
+    INCLUDEPATH += $${MOBILITY_INCLUDE}/QtServiceFramework
     qtAddLibrary(QtServiceFramework)
 }
 
 contains(MOBILITY, systeminfo) {
     #QSystemInfo header requires QNetworkInterface
     QT += network
+    INCLUDEPATH += $${MOBILITY_INCLUDE}/QtSystemInfo
     qtAddLibrary(QtSystemInfo)
 }
 
 contains(MOBILITY, multimedia) {
     QT += network
     contains(QT_CONFIG, opengl): QT += opengl
-    mac:LIBS += -framework QtMultimedia
-    else:win32:contains(QT_CONFIG, debug):LIBS += -lQtMultimediad
-    else:LIBS += -lQtMultimedia
+    INCLUDEPATH += $${MOBILITY_INCLUDE}/QtMultimediaKit
+    qtAddLibrary(QtMultimediaKit)
 }
 
 contains(MOBILITY, contacts) {
+    INCLUDEPATH += $${MOBILITY_INCLUDE}/QtContacts
     qtAddLibrary(QtContacts)
 }
 
 contains(MOBILITY, messaging) {
+    INCLUDEPATH += $${MOBILITY_INCLUDE}/QtMessaging
     qtAddLibrary(QtMessaging)
 }
 
 contains(MOBILITY, versit) {
+    INCLUDEPATH += $${MOBILITY_INCLUDE}/QtVersit
     qtAddLibrary(QtVersit)
 }
 
 contains(MOBILITY, sensors) {
+    INCLUDEPATH += $${MOBILITY_INCLUDE}/QtSensors
     qtAddLibrary(QtSensors)
 }
 
@@ -72,7 +80,7 @@
 symbian:contains(CONFIG, mobility):!contains(TARGET.UID3, 0x2002AC89):!contains(TARGET.UID3, 0xE002AC89) {
     mobility_default_deployment.pkg_prerules += \
         "; Default dependency to QtMobility libraries" \
-        "(0x2002AC89), 1, 0, 1, {\"QtMobility\"}"
+        "(0x2002AC89), 1, 0, 2, {\"QtMobility\"}"
     DEPLOYMENT += mobility_default_deployment
 }
 
--- a/qtmobility/features/mobility.prf.template	Thu Jul 15 19:34:35 2010 +0300
+++ b/qtmobility/features/mobility.prf.template	Thu Aug 19 10:43:30 2010 +0300
@@ -17,6 +17,7 @@
 
 contains(MOBILITY, bearer) {
     DEFINES += QT_MOBILITY_BEARER
+    INCLUDEPATH += $${MOBILITY_INCLUDE}/QtBearer
     qtAddLibrary(QtBearer)
     !equals(QT_MAJOR_VERSION,4)|!equals(QT_MINOR_VERSION, 6) {
         message(Qt Mobility Bearer API is deprecated when using Qt 4.7 or higher.)
@@ -25,44 +26,51 @@
 }
 
 contains(MOBILITY, publishsubscribe) {
+    INCLUDEPATH += $${MOBILITY_INCLUDE}/QtPublishSubscribe
     qtAddLibrary(QtPublishSubscribe)
 }
 
 contains(MOBILITY, location) {
+    INCLUDEPATH += $${MOBILITY_INCLUDE}/QtLocation
     qtAddLibrary(QtLocation)
 }
 
 contains(MOBILITY, serviceframework) {
+    INCLUDEPATH += $${MOBILITY_INCLUDE}/QtServiceFramework
     qtAddLibrary(QtServiceFramework)
 }
 
 contains(MOBILITY, systeminfo) {
     #QSystemInfo header requires QNetworkInterface
     QT += network
+    INCLUDEPATH += $${MOBILITY_INCLUDE}/QtSystemInfo
     qtAddLibrary(QtSystemInfo)
 }
 
 contains(MOBILITY, multimedia) {
     QT += network
     contains(QT_CONFIG, opengl): QT += opengl
-    mac:LIBS += -framework QtMultimedia
-    else:win32:contains(QT_CONFIG, debug):LIBS += -lQtMultimediad
-    else:LIBS += -lQtMultimedia
+    INCLUDEPATH += $${MOBILITY_INCLUDE}/QtMultimediaKit
+    qtAddLibrary(QtMultimediaKit)
 }
 
 contains(MOBILITY, contacts) {
+    INCLUDEPATH += $${MOBILITY_INCLUDE}/QtContacts
     qtAddLibrary(QtContacts)
 }
 
 contains(MOBILITY, messaging) {
+    INCLUDEPATH += $${MOBILITY_INCLUDE}/QtMessaging
     qtAddLibrary(QtMessaging)
 }
 
 contains(MOBILITY, versit) {
+    INCLUDEPATH += $${MOBILITY_INCLUDE}/QtVersit
     qtAddLibrary(QtVersit)
 }
 
 contains(MOBILITY, sensors) {
+    INCLUDEPATH += $${MOBILITY_INCLUDE}/QtSensors
     qtAddLibrary(QtSensors)
 }
 
@@ -72,7 +80,7 @@
 symbian:contains(CONFIG, mobility):!contains(TARGET.UID3, 0x2002AC89):!contains(TARGET.UID3, 0xE002AC89) {
     mobility_default_deployment.pkg_prerules += \
         "; Default dependency to QtMobility libraries" \
-        "(0x2002AC89), 1, 0, 1, {\"QtMobility\"}"
+        "(0x2002AC89), 1, 0, 2, {\"QtMobility\"}"
     DEPLOYMENT += mobility_default_deployment
 }
 
--- a/qtmobility/features/mobilityconfig.prf	Thu Jul 15 19:34:35 2010 +0300
+++ b/qtmobility/features/mobilityconfig.prf	Thu Aug 19 10:43:30 2010 +0300
@@ -1,1 +1,5 @@
 MOBILITY_CONFIG=bearer 
+MOBILITY_VERSION = 1.0.2
+MOBILITY_MAJOR_VERSION = 1
+MOBILITY_MINOR_VERSION = 0
+MOBILITY_PATCH_VERSION = 2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qtmobility/features/qtservice.meta	Thu Aug 19 10:43:30 2010 +0300
@@ -0,0 +1,3 @@
+platform    win32
+makefile    gnumake
+techstream  qt
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qtmobility/features/qtservice.prf	Thu Aug 19 10:43:30 2010 +0300
@@ -0,0 +1,43 @@
+###############################################################################
+# Service FW plug-in
+###############################################################################
+
+symbian {
+    isEmpty(QTSERVICE.DESCRIPTOR) {
+       error("Missing service descriptor file")
+    }
+    else {
+       QTSERVICEDBGEN = servicedbgen.exe
+       QTC_COMMAND = add
+       contains(QTSERVICE.INITIALIZE, yes) {
+          QTSERVICE_INITIALIZE = -i
+       }
+
+       #deploy descriptor file to service framework server's private folder
+       #so batch mode tool execution can include the service
+       QtService.sources = $$QTSERVICE.DESCRIPTOR
+       QtService.path = $$EPOCROOT/private/2002AC7F/des
+       DEPLOYMENT += QtService
+
+       symbian-sbsv2{
+           sfwextension = \
+              "START EXTENSION qt/qtservice" \
+              "OPTION QTSERVICE_DESCRIPTOR $$basename(QTSERVICE.DESCRIPTOR)" \
+              "OPTION QTSERVICE_INITIALIZE $$QTSERVICE_INITIALIZE" \
+              "END"
+           BLD_INF_RULES.prj_extensions += sfwextension
+       }
+
+       symbian-abld{
+          DUMMY = qtservice.out
+          qtc.output = $$DUMMY
+          QTC_INPUT = .
+          qtc.input = QTC_INPUT
+          qtc.CONFIG = no_link explicit_dependencies
+          qtc.variable_out = PRE_TARGETDEPS
+          qtc.commands = $$QTSERVICEDBGEN $$QTSERVICE_INITIALIZE $$QTC_COMMAND $$QTSERVICE.DESCRIPTOR
+          QMAKE_EXTRA_COMPILERS += qtc
+       }
+       
+    }
+}
--- a/qtmobility/qtmobility.pro	Thu Jul 15 19:34:35 2010 +0300
+++ b/qtmobility/qtmobility.pro	Thu Aug 19 10:43:30 2010 +0300
@@ -45,6 +45,10 @@
 
     PRF_CONFIG=$${QT_MOBILITY_BUILD_TREE}/features/mobilityconfig.prf
     system(echo MOBILITY_CONFIG=$${mobility_modules} > $$PRF_CONFIG)
+    system(echo MOBILITY_VERSION = 1.0.2 >> $$PRF_CONFIG)
+    system(echo MOBILITY_MAJOR_VERSION = 1 >> $$PRF_CONFIG)
+    system(echo MOBILITY_MINOR_VERSION = 0 >> $$PRF_CONFIG)
+    system(echo MOBILITY_PATCH_VERSION = 2 >> $$PRF_CONFIG)
 
     #symbian does not generate make install rule. we have to copy prf manually 
     symbian {
@@ -76,39 +80,88 @@
 !symbian:defined(qtPrepareTool):SUBDIRS += translations
 
 # install Qt style headers
-qtmheaders.path = $${QT_MOBILITY_INCLUDE}
 
 !symbian {
-    qtmheaders.files = $${QT_MOBILITY_BUILD_TREE}/include/QtmBearer/* \
-                         $${QT_MOBILITY_BUILD_TREE}/include/QtmContacts/* \
-                         $${QT_MOBILITY_BUILD_TREE}/include/QtmLocation/* \
-                         $${QT_MOBILITY_BUILD_TREE}/include/QtmMessaging/* \
-                         $${QT_MOBILITY_BUILD_TREE}/include/QtMultimedia/* \
-                         $${QT_MOBILITY_BUILD_TREE}/include/QtmPubSub/* \
-                         $${QT_MOBILITY_BUILD_TREE}/include/QtmServiceFramework/* \
-                         $${QT_MOBILITY_BUILD_TREE}/include/QtmVersit/* \
-                         $${QT_MOBILITY_BUILD_TREE}/include/QtmSystemInfo/* \
-                         $${QT_MOBILITY_BUILD_TREE}/include/QtmSensors/*
-    INSTALLS += qtmheaders
+    contains(mobility_modules,bearer) {
+        qtmheadersbearer.path = $${QT_MOBILITY_INCLUDE}/QtBearer
+        qtmheadersbearer.files = $${QT_MOBILITY_BUILD_TREE}/include/QtBearer/*
+        INSTALLS += qtmheadersbearer
+    }
+
+    contains(mobility_modules,contacts) {
+        qtmheaderscontacts.path = $${QT_MOBILITY_INCLUDE}/QtContacts
+        qtmheaderscontacts.files = $${QT_MOBILITY_BUILD_TREE}/include/QtContacts/*
+        INSTALLS += qtmheaderscontacts
+    }
+
+    contains(mobility_modules,location) {
+        qtmheaderslocation.path = $${QT_MOBILITY_INCLUDE}/QtLocation
+        qtmheaderslocation.files = $${QT_MOBILITY_BUILD_TREE}/include/QtLocation/*
+        INSTALLS += qtmheaderslocation
+    }
+
+    contains(mobility_modules,messaging) {
+        qtmheadersmessaging.path = $${QT_MOBILITY_INCLUDE}/QtMessaging
+        qtmheadersmessaging.files = $${QT_MOBILITY_BUILD_TREE}/include/QtMessaging/*
+        INSTALLS += qtmheadersmessaging
+    }
+
+    contains(mobility_modules,multimedia) {
+        qtmheadersmultimedia.path = $${QT_MOBILITY_INCLUDE}/QtMultimediaKit
+        qtmheadersmultimedia.files = $${QT_MOBILITY_BUILD_TREE}/include/QtMultimediaKit/*
+        INSTALLS += qtmheadersmultimedia
+    }
+
+    contains(mobility_modules,publishsubscribe) {
+        qtmheaderspubsub.path = $${QT_MOBILITY_INCLUDE}/QtPublishSubscribe
+        qtmheaderspubsub.files = $${QT_MOBILITY_BUILD_TREE}/include/QtPublishSubscribe/*
+        INSTALLS += qtmheaderspubsub
+    }
+
+    contains(mobility_modules,serviceframework) {
+        qtmheaderssfw.path = $${QT_MOBILITY_INCLUDE}/QtServiceFramework
+        qtmheaderssfw.files = $${QT_MOBILITY_BUILD_TREE}/include/QtServiceFramework/*
+        INSTALLS += qtmheaderssfw
+    }
+
+    contains(mobility_modules,versit) {
+        qtmheadersversit.path = $${QT_MOBILITY_INCLUDE}/QtVersit
+        qtmheadersversit.files = $${QT_MOBILITY_BUILD_TREE}/include/QtVersit/*
+        INSTALLS += qtmheadersversit
+    }
+
+    contains(mobility_modules,systeminfo) {
+        qtmheaderssysteminfo.path = $${QT_MOBILITY_INCLUDE}/QtSystemInfo
+        qtmheaderssysteminfo.files = $${QT_MOBILITY_BUILD_TREE}/include/QtSystemInfo/*
+        INSTALLS += qtmheaderssysteminfo
+    }
+
+    contains(mobility_modules,sensors) {
+        qtmheaderssensors.path = $${QT_MOBILITY_INCLUDE}/QtSensors
+        qtmheaderssensors.files = $${QT_MOBILITY_BUILD_TREE}/include/QtSensors/*
+        INSTALLS += qtmheaderssensors
+    }
 } else {
-    #absolute path does not work and so is shadow building for Symbian
-    qtmAppHeaders = include/QtmContacts/* \
-                          include/QtmVersit/*
+    #absolute path does not work and 
+    #include <QtMyLibrary/class.h> style does not work either
+    qtmAppHeaders = include/QtContacts/* \
+                          include/QtVersit/*
 
-    qtmMwHeaders = include/QtmBearer/* \
-                       include/QtmLocation/* \
-                       include/QtmMessaging/* \
-                       include/QtMultimedia/* \
-                       include/QtmPubSub/* \
-                       include/QtmServiceFramework/* \
-                       include/QtmSystemInfo/* \
-                       include/QtmSensors/*
+    qtmMwHeaders = include/QtBearer/* \
+                       include/QtLocation/* \
+                       include/QtMessaging/* \
+                       include/QtMultimediaKit/* \
+                       include/QtPublishSubscribe/* \
+                       include/QtServiceFramework/* \
+                       include/QtSystemInfo/* \
+                       include/QtSensors/*
 
     contains(mobility_modules,contacts|versit) {
         for(api, qtmAppHeaders) {
             INCLUDEFILES=$$files($$api);
             #files() attaches a ';' at the end which we need to remove
             cleanedFiles=$$replace(INCLUDEFILES, ;,)
+            cleanedFiles=$$replace(cleanedFiles, \\\,/)
             for(header, cleanedFiles) {
                 exists($$header):
                     BLD_INF_RULES.prj_exports += "$$header $$APP_LAYER_PUBLIC_EXPORT_PATH($$basename(header))"
@@ -121,6 +174,7 @@
             INCLUDEFILES=$$files($$api);
             #files() attaches a ';' at the end which we need to remove
             cleanedFiles=$$replace(INCLUDEFILES, ;,)
+            cleanedFiles=$$replace(cleanedFiles, \\\, /)
             for(header, cleanedFiles) {
                 exists($$header):
                     BLD_INF_RULES.prj_exports += "$$header $$MW_LAYER_PUBLIC_EXPORT_PATH($$basename(header))"
--- a/qtmobility/src/bearer/qcorewlanengine_mac.mm	Thu Jul 15 19:34:35 2010 +0300
+++ b/qtmobility/src/bearer/qcorewlanengine_mac.mm	Thu Aug 19 10:43:30 2010 +0300
@@ -160,7 +160,7 @@
 }
 
 QScanThread::QScanThread(QObject *parent)
-    :QThread(parent), interfaceName(nil)
+    :QThread(parent)
 {
 }
 
--- a/qtmobility/src/bearer/qgenericengine.cpp	Thu Jul 15 19:34:35 2010 +0300
+++ b/qtmobility/src/bearer/qgenericengine.cpp	Thu Aug 19 10:43:30 2010 +0300
@@ -58,6 +58,7 @@
 #include <sys/ioctl.h>
 #include <net/if.h>
 #include <net/if_arp.h>
+#include <unistd.h>
 #endif
 
 QTM_BEGIN_NAMESPACE
--- a/qtmobility/src/bearer/qnetworkconfigmanager_s60_p.cpp	Thu Jul 15 19:34:35 2010 +0300
+++ b/qtmobility/src/bearer/qnetworkconfigmanager_s60_p.cpp	Thu Aug 19 10:43:30 2010 +0300
@@ -223,7 +223,7 @@
     QList<QString> knownConfigs = accessPointConfigurations.keys();
     QList<QString> knownSnapConfigs = snapConfigurations.keys();
 
-#ifdef SNAP_FUNCTIONALITY_AVAILABLE    
+#ifdef SNAP_FUNCTIONALITY_AVAILABLE
     // S60 version is >= Series60 3rd Edition Feature Pack 2
     TInt error = KErrNone;
     
@@ -251,6 +251,8 @@
                     // which propagate here --> must be converted to leaves (standard
                     // std::exception would cause any TRAP trapping this function to terminate
                     // program).
+                    QT_TRYCATCH_LEAVING(updateActiveAccessPoints());
+                    updateStatesToSnaps();
                     QT_TRYCATCH_LEAVING(emit configurationAdded(item));
                 }
             }
@@ -265,19 +267,27 @@
     iCmManager.AllDestinationsL(destinations);
     for(int i = 0; i < destinations.Count(); i++) {
         RCmDestination destination;
-        destination = iCmManager.DestinationL(destinations[i]);
+
+        // Some destinatsions require ReadDeviceData -capability (MMS/WAP)
+        // The below function will leave in these cases. Don't. Proceed to
+        // next destination (if any).
+        TRAPD(error, destination = iCmManager.DestinationL(destinations[i]));
+        if (error == KErrPermissionDenied) {
+            continue;
+        } else {
+            User::LeaveIfError(error);
+        }
+
         CleanupClosePushL(destination);
         QString ident = QT_BEARERMGMT_CONFIGURATION_SNAP_PREFIX+QString::number(qHash(destination.Id()));
         if (snapConfigurations.contains(ident)) {
             knownSnapConfigs.removeOne(ident);
         } else {
             QNetworkConfigurationPrivate* cpPriv = new QNetworkConfigurationPrivate();
-    
             HBufC *pName = destination.NameLC();
             QT_TRYCATCH_LEAVING(cpPriv->name = QString::fromUtf16(pName->Ptr(),pName->Length()));
             CleanupStack::PopAndDestroy(pName);
             pName = NULL;
-    
             cpPriv->isValid = true;
             cpPriv->id = ident;
             cpPriv->numericId = destination.Id();
@@ -293,6 +303,8 @@
             if (!iFirstUpdate) {
                 QNetworkConfiguration item;
                 item.d = ptr;
+                QT_TRYCATCH_LEAVING(updateActiveAccessPoints());
+                updateStatesToSnaps();
                 QT_TRYCATCH_LEAVING(emit configurationAdded(item));
             }
         }
@@ -313,12 +325,14 @@
                     QExplicitlySharedDataPointer<QNetworkConfigurationPrivate> ptr(cpPriv);
                     ptr.data()->serviceNetworkPtr = privSNAP;
                     accessPointConfigurations.insert(cpPriv->id, ptr);
+                    privSNAP->serviceNetworkMembers.append(ptr);
                     if (!iFirstUpdate) {
                         QNetworkConfiguration item;
                         item.d = ptr;
+                        QT_TRYCATCH_LEAVING(updateActiveAccessPoints());
+                        updateStatesToSnaps();
                         QT_TRYCATCH_LEAVING(emit configurationAdded(item));
                     }
-                    privSNAP->serviceNetworkMembers.append(ptr);
                 }
             } else {
                 knownConfigs.removeOne(iface);
@@ -335,19 +349,16 @@
                     privSNAP->serviceNetworkMembers.append(priv);
                 }
             }
-            
             CleanupStack::PopAndDestroy(&connectionMethod);
         }
-        
         if (privSNAP->serviceNetworkMembers.count() > 1) {
             // Roaming is supported only if SNAP contains more than one IAP
             privSNAP->roamingSupported = true;
         }
-        
         CleanupStack::PopAndDestroy(&destination);
     }
     CleanupStack::PopAndDestroy(&destinations);
-    
+
 #else
     // S60 version is < Series60 3rd Edition Feature Pack 2
     CCommsDbTableView* pDbTView = ipCommsDB->OpenTableLC(TPtrC(IAP));
@@ -368,6 +379,8 @@
                 if (!iFirstUpdate) {
                     QNetworkConfiguration item;
                     item.d = ptr;
+                    QT_TRYCATCH_LEAVING(updateActiveAccessPoints());
+                    updateStatesToSnaps();
                     QT_TRYCATCH_LEAVING(emit configurationAdded(item));
                 }
             } else {
@@ -378,8 +391,9 @@
     }
     CleanupStack::PopAndDestroy(pDbTView);
 #endif
+
     QT_TRYCATCH_LEAVING(updateActiveAccessPoints());
-    
+
     foreach (const QString &oldIface, knownConfigs) {
         //remove non existing IAP
         QExplicitlySharedDataPointer<QNetworkConfigurationPrivate> priv = accessPointConfigurations.take(oldIface);
@@ -411,6 +425,9 @@
             QT_TRYCATCH_LEAVING(emit configurationRemoved(item));
         }
     }
+#ifdef SNAP_FUNCTIONALITY_AVAILABLE
+    updateStatesToSnaps();
+#endif
 }
 
 #ifdef SNAP_FUNCTIONALITY_AVAILABLE
@@ -574,7 +591,6 @@
         TRAP_IGNORE(config = defaultConfigurationL());
         startCommsDatabaseNotifications();
     }
-
     return config;
 }
 
@@ -637,15 +653,20 @@
             User::WaitForRequest(status);
             QString ident = QT_BEARERMGMT_CONFIGURATION_IAP_PREFIX+QString::number(qHash(apId));
             QExplicitlySharedDataPointer<QNetworkConfigurationPrivate> priv = accessPointConfigurations.value(ident);
-#ifdef OCC_FUNCTIONALITY_AVAILABLE
+#if defined(OCC_FUNCTIONALITY_AVAILABLE) && defined(SNAP_FUNCTIONALITY_AVAILABLE)
             if (!priv.data()) {
                 // If IAP was not found, check if the update was about EasyWLAN
                 priv = configurationFromEasyWlan(apId, connectionId);
+                // Change the ident correspondingly
+                if (priv.data()) {
+                    ident = QT_BEARERMGMT_CONFIGURATION_IAP_PREFIX+QString::number(qHash(priv.data()->numericId));
+                }
             }
 #endif
             if (priv.data()) {
                 iConnectionMonitor.GetIntAttribute(connectionId, subConnectionCount, KConnectionStatus, connectionStatus, status);
-                User::WaitForRequest(status);          
+                User::WaitForRequest(status);
+
                 if (connectionStatus == KLinkLayerOpen) {
                     online = true;
                     inactiveConfigs.removeOne(ident);
@@ -935,14 +956,14 @@
 
             QString ident = QT_BEARERMGMT_CONFIGURATION_IAP_PREFIX+QString::number(qHash(apId));
             QExplicitlySharedDataPointer<QNetworkConfigurationPrivate> priv = accessPointConfigurations.value(ident);
-#ifdef OCC_FUNCTIONALITY_AVAILABLE
+#if defined(OCC_FUNCTIONALITY_AVAILABLE) && defined(SNAP_FUNCTIONALITY_AVAILABLE)
             if (!priv.data()) {
                 // Check if status was regarding EasyWLAN
                 priv = configurationFromEasyWlan(apId, connectionId);
             }
 #endif
             if (priv.data()) {
-                priv.data()->connectionId = connectionId;                
+                priv.data()->connectionId = connectionId;
                 QT_TRYCATCH_LEAVING(emit this->configurationStateChanged(priv.data()->numericId, connectionId, QNetworkSession::Connecting));
             }
         } else if (connectionStatus == KLinkLayerOpen) {
@@ -955,7 +976,7 @@
             User::WaitForRequest(status);
             QString ident = QT_BEARERMGMT_CONFIGURATION_IAP_PREFIX+QString::number(qHash(apId));
             QExplicitlySharedDataPointer<QNetworkConfigurationPrivate> priv = accessPointConfigurations.value(ident);
-#ifdef OCC_FUNCTIONALITY_AVAILABLE
+#if defined(OCC_FUNCTIONALITY_AVAILABLE) && defined(SNAP_FUNCTIONALITY_AVAILABLE)
             if (!priv.data()) {
                 // Check for EasyWLAN
                 priv = configurationFromEasyWlan(apId, connectionId);
@@ -1035,6 +1056,8 @@
                 QT_TRYCATCH_LEAVING(changeConfigurationStateAtMaxTo(priv, QNetworkConfiguration::Defined));
             }
         }
+        // Something has in IAPs, update states to SNAPs
+        updateStatesToSnaps();
         }
         break;
 
@@ -1051,7 +1074,7 @@
         User::WaitForRequest(status);
         QString ident = QT_BEARERMGMT_CONFIGURATION_IAP_PREFIX+QString::number(qHash(apId));
         QExplicitlySharedDataPointer<QNetworkConfigurationPrivate> priv = accessPointConfigurations.value(ident);
-#ifdef OCC_FUNCTIONALITY_AVAILABLE
+#if defined(OCC_FUNCTIONALITY_AVAILABLE) && defined(SNAP_FUNCTIONALITY_AVAILABLE)
         if (!priv.data()) {
             // If IAP was not found, check if the update was about EasyWLAN
             priv = configurationFromEasyWlan(apId, connectionId);
@@ -1071,7 +1094,7 @@
     }
 }
 
-#ifdef OCC_FUNCTIONALITY_AVAILABLE
+#if defined(OCC_FUNCTIONALITY_AVAILABLE) && defined(SNAP_FUNCTIONALITY_AVAILABLE)
 // Tries to derive configuration from EasyWLAN.
 // First checks if the interface brought up was EasyWLAN, then derives the real SSID,
 // and looks up configuration based on that one.
@@ -1104,6 +1127,43 @@
     }
     return QExplicitlySharedDataPointer<QNetworkConfigurationPrivate>();
 }
+
+bool QNetworkConfigurationManagerPrivate::easyWlanTrueIapId(TUint32& trueIapId)
+{
+    // Check if this is easy wlan id in the first place
+    if (trueIapId != iCmManager.EasyWlanIdL()) {
+        return false;
+    }
+    // Loop through all connections that connection monitor is aware
+    // and check for IAPs based on easy WLAN
+    TRequestStatus status;
+    TUint connectionCount;
+    iConnectionMonitor.GetConnectionCount(connectionCount, status);
+    User::WaitForRequest(status);
+    TUint connectionId;
+    TUint subConnectionCount;
+    TUint apId;
+    if (status.Int() == KErrNone) {
+        for (TUint i = 1; i <= connectionCount; i++) {
+            iConnectionMonitor.GetConnectionInfo(i, connectionId, subConnectionCount);
+            iConnectionMonitor.GetUintAttribute(connectionId, subConnectionCount, KIAPId, apId, status);
+            User::WaitForRequest(status);
+            if (apId == trueIapId) {
+                QExplicitlySharedDataPointer<QNetworkConfigurationPrivate> priv =
+                        configurationFromEasyWlan(apId, connectionId);
+                if (priv.data()) {
+#ifdef QT_BEARERMGMT_SYMBIAN_DEBUG
+                    qDebug() << "QNCM easyWlanTrueIapId(), found true IAP ID: " << priv.data()->numericId;
+#endif
+                    trueIapId = priv.data()->numericId;
+                    return true;
+                }
+            }
+        }
+    }
+    return false;
+}
+
 #endif
 
 // Sessions may use this function to report configuration state changes,
--- a/qtmobility/src/bearer/qnetworkconfigmanager_s60_p.h	Thu Jul 15 19:34:35 2010 +0300
+++ b/qtmobility/src/bearer/qnetworkconfigmanager_s60_p.h	Thu Aug 19 10:43:30 2010 +0300
@@ -151,6 +151,7 @@
                                    QNetworkSession::State newState);
 #ifdef OCC_FUNCTIONALITY_AVAILABLE
     QExplicitlySharedDataPointer<QNetworkConfigurationPrivate> configurationFromEasyWlan(TUint32 apId, TUint connectionId);
+    bool easyWlanTrueIapId(TUint32& trueIapId);
 #endif
 
 public: // Data
--- a/qtmobility/src/bearer/qnetworksession.cpp	Thu Jul 15 19:34:35 2010 +0300
+++ b/qtmobility/src/bearer/qnetworksession.cpp	Thu Aug 19 10:43:30 2010 +0300
@@ -630,8 +630,10 @@
     If the session is based on a service network configuration the number of 
     sent bytes across all active member configurations are returned.
 
-    This function may not always be supported on all platforms and returns
-    0. The platform capability can be detected via QNetworkConfigurationManager::DataStatistics.
+    This function may not always be supported on all platforms and returns 0.
+    The platform capability can be detected via QNetworkConfigurationManager::DataStatistics.
+
+    \note On some platforms this function may run the main event loop.
 */
 quint64 QNetworkSession::bytesWritten() const
 {
@@ -647,8 +649,10 @@
     If the session is based on a service network configuration the number of 
     sent bytes across all active member configurations are returned.
 
-    This function may not always be supported on all platforms and returns
-    0. The platform capability can be detected via QNetworkConfigurationManager::DataStatistics.
+    This function may not always be supported on all platforms and returns 0.
+    The platform capability can be detected via QNetworkConfigurationManager::DataStatistics.
+
+    \note On some platforms this function may run the main event loop.
 */
 quint64 QNetworkSession::bytesReceived() const
 {
--- a/qtmobility/src/bearer/qnetworksession_maemo.cpp	Thu Jul 15 19:34:35 2010 +0300
+++ b/qtmobility/src/bearer/qnetworksession_maemo.cpp	Thu Aug 19 10:43:30 2010 +0300
@@ -208,7 +208,7 @@
 }
 
 
-quint64 QNetworkSessionPrivate::getStatistics(bool sent) const
+QNetworkSessionPrivate::Statistics QNetworkSessionPrivate::getStatistics() const
 {
     /* This could be also implemented by using the Maemo::Icd::statistics()
      * that gets the statistics data for a specific IAP. Change if
@@ -216,52 +216,47 @@
      */
     Maemo::Icd icd;
     QList<Maemo::IcdStatisticsResult> stats_results;
-    quint64 counter_rx = 0, counter_tx = 0;
+    Statistics stats = { 0, 0, 0};
 
-    if (!icd.statistics(stats_results)) {
-	return 0;
-    }
+    if (!icd.statistics(stats_results))
+        return stats;
 
     foreach (const Maemo::IcdStatisticsResult &res, stats_results) {
-	if (res.params.network_attrs & ICD_NW_ATTR_IAPNAME) {
-	    /* network_id is the IAP UUID */
-	    if (QString(res.params.network_id.data()) == activeConfig.identifier()) {
-		counter_tx = res.bytes_sent;
-		counter_rx = res.bytes_received;
-	    }
-	} else {
-	    /* We probably will never get to this branch */
-	    QNetworkConfigurationPrivate *d = activeConfig.d.data();
-	    if (res.params.network_id == d->network_id) {
-		counter_tx = res.bytes_sent;
-		counter_rx = res.bytes_received;
-	    }
-	}
+        if (res.params.network_attrs & ICD_NW_ATTR_IAPNAME) {
+            /* network_id is the IAP UUID */
+            if (QString(res.params.network_id.data()) == activeConfig.identifier()) {
+                stats.txData = res.bytes_sent;
+                stats.rxData = res.bytes_received;
+                stats.activeTime = res.time_active;
+            }
+        } else {
+            /* We probably will never get to this branch */
+            QNetworkConfigurationPrivate *d = activeConfig.d.data();
+            if (res.params.network_id == d->network_id) {
+                stats.txData = res.bytes_sent;
+                stats.rxData = res.bytes_received;
+                stats.activeTime = res.time_active;
+            }
+        }
     }
 
-    if (sent)
-	return counter_tx;
-    else
-	return counter_rx;
+    return stats;
 }
 
 
 quint64 QNetworkSessionPrivate::bytesWritten() const
 {
-    return getStatistics(true);
+    return getStatistics().txData;
 }
 
 quint64 QNetworkSessionPrivate::bytesReceived() const
 {
-    return getStatistics(false);
+    return getStatistics().rxData;
 }
 
 quint64 QNetworkSessionPrivate::activeTime() const
 {
-    if (startTime.isNull()) {
-        return 0;
-    }
-    return startTime.secsTo(QDateTime::currentDateTime());
+    return getStatistics().activeTime;
 }
 
 
--- a/qtmobility/src/bearer/qnetworksession_maemo_p.h	Thu Jul 15 19:34:35 2010 +0300
+++ b/qtmobility/src/bearer/qnetworksession_maemo_p.h	Thu Aug 19 10:43:30 2010 +0300
@@ -81,7 +81,7 @@
     Q_OBJECT
 public:
     QNetworkSessionPrivate() : 
-        tx_data(0), rx_data(0), m_activeTime(0), isOpen(false),
+        isOpen(false),
         connectFlags(ICD_CONNECTION_FLAG_USER_EVENT),
         currentState(QNetworkSession::Invalid),
         m_asynchCallActive(false)
@@ -161,9 +161,11 @@
 private:
     QNetworkConfigurationManager manager;
 
-    quint64 tx_data;
-    quint64 rx_data;
-    quint64 m_activeTime;
+    struct Statistics {
+        quint64 txData;
+        quint64 rxData;
+        quint64 activeTime;
+    };
 
     // The config set on QNetworkSession.
     QNetworkConfiguration publicConfig;
@@ -196,7 +198,7 @@
     friend class IcdListener;
     void updateState(QNetworkSession::State);
     void updateIdentifier(const QString &newId);
-    quint64 getStatistics(bool sent) const;
+    Statistics getStatistics() const;
     void cleanupSession(void);
 
     void updateProxyInformation();
--- a/qtmobility/src/bearer/qnetworksession_s60_p.cpp	Thu Jul 15 19:34:35 2010 +0300
+++ b/qtmobility/src/bearer/qnetworksession_s60_p.cpp	Thu Aug 19 10:43:30 2010 +0300
@@ -55,8 +55,8 @@
     : CActive(CActive::EPriorityUserInput), state(QNetworkSession::Invalid),
       isOpen(false), iDynamicUnSetdefaultif(0), ipConnectionNotifier(0),
       iHandleStateNotificationsFromManager(false), iFirstSync(true), iStoppedByUser(false),
-      iClosedByUser(false), iDeprecatedConnectionId(0), iError(QNetworkSession::UnknownSessionError),
-      iALREnabled(0), iConnectInBackground(false)
+      iClosedByUser(false), iError(QNetworkSession::UnknownSessionError), iALREnabled(0),
+      iConnectInBackground(false), isOpening(false)
 {
     CActiveScheduler::Add(this);
 
@@ -72,9 +72,9 @@
 #ifdef QT_BEARERMGMT_SYMBIAN_DEBUG
     qDebug() << "QNS this : " << QString::number((uint)this) << " - ";
     if (iDynamicUnSetdefaultif)
-        qDebug() << "dynamic setdefaultif() resolution succeeded. ";
+        qDebug() << "dynamic unsetdefaultif() is present in PIPS library. ";
     else
-        qDebug() << "dynamic setdefaultif() resolution failed. ";
+        qDebug() << "dynamic unsetdefaultif() not present in PIPS library. ";
 #endif
 
     TRAP_IGNORE(iConnectionMonitor.ConnectL());
@@ -83,6 +83,7 @@
 QNetworkSessionPrivate::~QNetworkSessionPrivate()
 {
     isOpen = false;
+    isOpening = false;
 
     // Cancel Connection Progress Notifications first.
     // Note: ConnectionNotifier must be destroyed before Canceling RConnection::Start()
@@ -107,6 +108,9 @@
     
     iConnectionMonitor.Close();
     iOpenCLibrary.Close();
+#ifdef QT_BEARERMGMT_SYMBIAN_DEBUG
+    qDebug() << "QNS this : " << QString::number((uint)this) << " - destroyed (and setdefaultif(0))";
+#endif
 }
 
 void QNetworkSessionPrivate::configurationStateChanged(TUint32 accessPointId, TUint32 connMonId, QNetworkSession::State newState)
@@ -114,18 +118,12 @@
     if (iHandleStateNotificationsFromManager) {
 #ifdef QT_BEARERMGMT_SYMBIAN_DEBUG
         qDebug() << "QNS this : " << QString::number((uint)this) << " - "
-                << "configurationStateChanged from manager for IAP : " << QString::number(accessPointId)
-                << "configurationStateChanged connMon ID : " << QString::number(connMonId)
-                << " : to a state: " << newState
-                << " whereas my current state is: " << state;
+                 << "configurationStateChanged from manager for IAP : " << QString::number(accessPointId)
+                 << "connMon ID : " << QString::number(connMonId) << " : to a state: " << newState
+                 << "whereas my current state is: " << state;
+#else
+      Q_UNUSED(connMonId);
 #endif
-        if (connMonId == iDeprecatedConnectionId) {
-#ifdef QT_BEARERMGMT_SYMBIAN_DEBUG
-            qDebug() << "QNS this : " << QString::number((uint)this) << " - "
-                    << "however status update from manager ignored because it related to already closed connection.";
-#endif
-            return;
-        }
         this->newState(newState, accessPointId);
     }
 }
@@ -144,13 +142,29 @@
     }
 }
 
+void QNetworkSessionPrivate::configurationAdded(const QNetworkConfiguration& config)
+{
+    Q_UNUSED(config);
+    // If session is based on service network, some other app may create new access points
+    // to the SNAP --> synchronize session's state with that of interface's.
+    if (!publicConfig.d.data() || publicConfig.type() != QNetworkConfiguration::ServiceNetwork) {
+        return;
+    }
+#ifdef QT_BEARERMGMT_SYMBIAN_DEBUG
+        qDebug() << "QNS this : " << QString::number((uint)this) << " - "
+                 << "configurationAdded IAP: " << QString::number(config.d.data()->numericId);
+#endif
+        syncStateWithInterface();
+}
+
+// Function sets the state of the session to match the state
+// of the underlying interface (the configuration this session is based on)
 void QNetworkSessionPrivate::syncStateWithInterface()
 {
-    if (!publicConfig.d) {
+    if (!publicConfig.d || !publicConfig.d.data()) {
         return;
     }
-
-    if (iFirstSync && publicConfig.d.data()) {
+    if (iFirstSync) {
         QObject::connect(((QNetworkConfigurationManagerPrivate*)publicConfig.d.data()->manager), SIGNAL(configurationStateChanged(TUint32, TUint32, QNetworkSession::State)),
                          this, SLOT(configurationStateChanged(TUint32, TUint32, QNetworkSession::State)));
         // Listen to configuration removals, so that in case the configuration
@@ -158,50 +172,35 @@
         QObject::connect(((QNetworkConfigurationManagerPrivate*)publicConfig.d.data()->manager),
                          SIGNAL(configurationRemoved(QNetworkConfiguration)),
                          this, SLOT(configurationRemoved(QNetworkConfiguration)));
+        // Connect to configuration additions, so that in case a configuration is added
+        // in a SNAP this session is based on, the session knows to synch its state with its
+        // interface.
+        QObject::connect(((QNetworkConfigurationManagerPrivate*)publicConfig.d.data()->manager),
+                         SIGNAL(configurationAdded(QNetworkConfiguration)),
+                         this, SLOT(configurationAdded(QNetworkConfiguration)));
     }
     // Start listening IAP state changes from QNetworkConfigurationManagerPrivate
     iHandleStateNotificationsFromManager = true;    
 
-    // Check open connections to see if there is already
-    // an open connection to selected IAP or SNAP
-    TUint count;
-    TRequestStatus status;
-    iConnectionMonitor.GetConnectionCount(count, status);
-    User::WaitForRequest(status);
-    if (status.Int() != KErrNone) {
-        return;
-    }
-
-    TUint numSubConnections;
-    TUint connectionId;
-    for (TUint i = 1; i <= count; i++) {
-        TInt ret = iConnectionMonitor.GetConnectionInfo(i, connectionId, numSubConnections);
-        if (ret == KErrNone) {
-            TUint apId;
-            iConnectionMonitor.GetUintAttribute(connectionId, 0, KIAPId, apId, status);
-            User::WaitForRequest(status);
-            if (status.Int() == KErrNone) {
-                TInt connectionStatus;
-                iConnectionMonitor.GetIntAttribute(connectionId, 0, KConnectionStatus, connectionStatus, status);
-                User::WaitForRequest(status);
-                if (connectionStatus == KLinkLayerOpen) {
-                    if (state != QNetworkSession::Closing) {
-                        if (newState(QNetworkSession::Connected, apId)) {
-                            return;
-                        }
-                    }
-                }
-            }
-        }
-    }
-
-    if (state != QNetworkSession::Connected) {
-        if ((publicConfig.d.data()->state & QNetworkConfiguration::Discovered) ==
-            QNetworkConfiguration::Discovered) {
-            newState(QNetworkSession::Disconnected);
-        } else {
-            newState(QNetworkSession::NotAvailable);
-        }
+    // Check what is the state of the configuration this session is based on
+    // and set the session in appropriate state.
+#ifdef QT_BEARERMGMT_SYMBIAN_DEBUG
+    qDebug() << "QNS this : " << QString::number((uint)this) << " - "
+             << "syncStateWithInterface() state of publicConfig is: " << publicConfig.d.data()->state;
+#endif
+    switch (publicConfig.d.data()->state) {
+    case QNetworkConfiguration::Active:
+        newState(QNetworkSession::Connected);
+        break;
+    case QNetworkConfiguration::Discovered:
+        newState(QNetworkSession::Disconnected);
+        break;
+    case QNetworkConfiguration::Defined:
+        newState(QNetworkSession::NotAvailable);
+        break;
+    case QNetworkConfiguration::Undefined:
+    default:
+        newState(QNetworkSession::Invalid);
     }
 }
 
@@ -245,6 +244,15 @@
 
 QNetworkInterface QNetworkSessionPrivate::currentInterface() const
 {
+#ifdef QT_BEARERMGMT_SYMBIAN_DEBUG
+    qDebug() << "QNS this : " << QString::number((uint)this) << " - "
+             << "currentInterface() requested, state: " << state
+             << "publicConfig validity: " << publicConfig.isValid();
+    if (activeInterface.isValid())
+        qDebug() << "QNS this : " << QString::number((uint)this) << " - "
+                 << "interface is: " << activeInterface.humanReadableName();
+#endif
+
     if (!publicConfig.isValid() || state != QNetworkSession::Connected) {
         return QNetworkInterface();
     }
@@ -302,10 +310,11 @@
                 << "open() called, session state is: " << state << " and isOpen is: "
                 << isOpen;
 #endif
-    if (isOpen || (state == QNetworkSession::Connecting)) {
+    if (isOpen || isOpening)
         return;
-    }
     
+    isOpening = true;
+
     // Stop handling IAP state change signals from QNetworkConfigurationManagerPrivate
     // => RConnection::ProgressNotification will be used for IAP/SNAP monitoring
     iHandleStateNotificationsFromManager = false;
@@ -333,7 +342,6 @@
     // Clear possible previous states
     iStoppedByUser = false;
     iClosedByUser = false;
-    iDeprecatedConnectionId = 0;
 
     TInt error = iSocketServ.Connect();
     if (error != KErrNone) {
@@ -366,7 +374,7 @@
     }
     
     if (publicConfig.type() == QNetworkConfiguration::InternetAccessPoint) {
-#ifdef OCC_FUNCTIONALITY_AVAILABLE
+#if defined(OCC_FUNCTIONALITY_AVAILABLE) && defined(SNAP_FUNCTIONALITY_AVAILABLE)
             // With One Click Connectivity (Symbian^3 onwards) it is possible
             // to connect silently, without any popups.
             TConnPrefList pref;
@@ -385,9 +393,13 @@
             if (!IsActive()) {
                 SetActive();
             }
-            newState(QNetworkSession::Connecting);
+            // Avoid flip flop of states if the configuration is already
+            // active. IsOpen/opened() will indicate when ready.
+            if (state != QNetworkSession::Connected) {
+                newState(QNetworkSession::Connecting);
+            }
     } else if (publicConfig.type() == QNetworkConfiguration::ServiceNetwork) {
-#ifdef OCC_FUNCTIONALITY_AVAILABLE
+#if defined(OCC_FUNCTIONALITY_AVAILABLE) && defined(SNAP_FUNCTIONALITY_AVAILABLE)
         // On Symbian^3 if service network is not reachable, it triggers a UI (aka EasyWLAN) where
         // user can create new IAPs. To detect this, we need to store the number of IAPs
         // there was before connection was started.
@@ -406,7 +418,11 @@
         if (!IsActive()) {
             SetActive();
         }
-        newState(QNetworkSession::Connecting);
+        // Avoid flip flop of states if the configuration is already
+        // active. IsOpen/opened() will indicate when ready.
+        if (state != QNetworkSession::Connected) {
+            newState(QNetworkSession::Connecting);
+        }
     } else if (publicConfig.type() == QNetworkConfiguration::UserChoice) {
         iKnownConfigsBeforeConnectionStart = ((QNetworkConfigurationManagerPrivate*)publicConfig.d.data()->manager)->accessPointConfigurations.keys();
         iConnection.Start(iStatus);
@@ -418,6 +434,7 @@
  
     if (error != KErrNone) {
         isOpen = false;
+        isOpening = false;
         iError = QNetworkSession::UnknownSessionError;
         emit q->error(iError);
         if (ipConnectionNotifier) {
@@ -470,12 +487,8 @@
     // when reporting.
     iClosedByUser = true;
     isOpen = false;
+    isOpening = false;
 
-#ifndef OCC_FUNCTIONALITY_AVAILABLE
-    // On Symbian^3 we need to keep track of active configuration longer
-    // in case of empty-SNAP-triggered EasyWLAN.
-    activeConfig = QNetworkConfiguration();
-#endif
     serviceConfig = QNetworkConfiguration();
     
 #ifdef SNAP_FUNCTIONALITY_AVAILABLE
@@ -512,15 +525,9 @@
     // to go down.
     if (publicConfig.type() == QNetworkConfiguration::UserChoice || state == QNetworkSession::Connecting) {
 #ifdef QT_BEARERMGMT_SYMBIAN_DEBUG
-    qDebug() << "QNS this : " << QString::number((uint)this) << " - "
-            << "going Disconnected right away. Deprecating connection monitor ID: " << publicConfig.d.data()->connectionId;
+        qDebug() << "QNS this : " << QString::number((uint)this) << " - "
+                 << "going disconnected right away, since either UserChoice or Connecting";
 #endif
-
-        // The connection has gone down, and processing of status updates must be
-        // stopped. Depending on platform, there may come 'connecting/connected' states
-        // considerably later (almost a second). Connection id is an increasing
-        // number, so this does not affect next _real_ 'conneting/connected' states.
-        iDeprecatedConnectionId = publicConfig.d.data()->connectionId;
         newState(QNetworkSession::Closing);
         newState(QNetworkSession::Disconnected);
     }
@@ -581,6 +588,7 @@
 #endif
         // Since we are open, use RConnection to stop the interface
         isOpen = false;
+        isOpening = false;
         iStoppedByUser = true;
         newState(QNetworkSession::Closing);
         if (ipConnectionNotifier) {
@@ -590,6 +598,7 @@
         }
         iConnection.Stop(RConnection::EStopAuthoritative);
         isOpen = true;
+        isOpening = false;
         close(false);
         emit q->closed();
     }
@@ -721,6 +730,7 @@
 #endif
     if (isOpen) {
         isOpen = false;
+        isOpening = false;
         activeConfig = QNetworkConfiguration();
         serviceConfig = QNetworkConfiguration();
         iError = QNetworkSession::RoamingError;
@@ -870,6 +880,13 @@
     if (iapId == 0) {
         _LIT(KSetting, "IAP\\Id");
         iConnection.GetIntSetting(KSetting, iapId);
+#if defined(OCC_FUNCTIONALITY_AVAILABLE) && defined(SNAP_FUNCTIONALITY_AVAILABLE)
+        // Check if this is an Easy WLAN configuration. On Symbian^3 RConnection may report
+        // the used configuration as 'EasyWLAN' IAP ID if someone has just opened the configuration
+        // from WLAN Scan dialog, _and_ that connection is still up. We need to find the
+        // real matching configuration. Function alters the Easy WLAN ID to real IAP ID (only if easy WLAN):
+        ((QNetworkConfigurationManagerPrivate*)publicConfig.d.data()->manager)->easyWlanTrueIapId(iapId);
+#endif
     }
 
 #ifdef SNAP_FUNCTIONALITY_AVAILABLE
@@ -900,7 +917,7 @@
                 }
             }
         } else {
-#ifdef OCC_FUNCTIONALITY_AVAILABLE
+#if defined(OCC_FUNCTIONALITY_AVAILABLE) && defined(SNAP_FUNCTIONALITY_AVAILABLE)
             // On Symbian^3 (only, not earlier or Symbian^4) if the SNAP was not reachable, it triggers
             // user choice type of activity (EasyWLAN). As a result, a new IAP may be created, and
             // hence if was not found yet. Therefore update configurations and see if there is something new.
@@ -938,7 +955,7 @@
             qDebug() << "QNS this : " << QString::number((uint)this) << " - "
                     << "configuration was not found, returning invalid.";
 #endif
-#endif // OCC_FUNCTIONALITY_AVAILABLE
+#endif
             // Given IAP Id was not found from known IAPs array
             return QNetworkConfiguration();
         }
@@ -1001,6 +1018,11 @@
             TInt error = KErrNone;
             QNetworkConfiguration newActiveConfig = activeConfiguration();
             if (!newActiveConfig.isValid()) {
+                // RConnection startup was successfull but no configuration
+                // was found. That indicates that user has chosen to create a
+                // new WLAN configuration (from scan results), but that new
+                // configuration does not have access to Internet (Internet
+                // Connectivity Test, ICT, failed).
                 error = KErrGeneral;
             } else {
                 // Use name of the IAP to open global 'Open C' RConnection
@@ -1010,15 +1032,24 @@
                 strcpy(ifr.ifr_name, nameAsByteArray.constData());
                 error = setdefaultif(&ifr);
             }
-            
             if (error != KErrNone) {
                 isOpen = false;
+                isOpening = false;
                 iError = QNetworkSession::UnknownSessionError;
                 QT_TRYCATCH_LEAVING(emit q->error(iError));
-                Cancel();
                 if (ipConnectionNotifier) {
                     ipConnectionNotifier->StopNotifications();
                 }
+                if (!newActiveConfig.isValid()) {
+                    // No valid configuration, bail out.
+                    // Status updates from QNCM won't be received correctly
+                    // because there is no configuration to associate them with so transit here.
+                    iConnection.Close();
+                    newState(QNetworkSession::Closing);
+                    newState(QNetworkSession::Disconnected);
+                } else {
+                    Cancel();
+                }
                 QT_TRYCATCH_LEAVING(syncStateWithInterface());
                 return;
             }
@@ -1030,6 +1061,7 @@
             }
 #endif
             isOpen = true;
+            isOpening = false;
             activeConfig = newActiveConfig;
             activeInterface = interface(activeConfig.d.data()->numericId);
             if (publicConfig.type() == QNetworkConfiguration::UserChoice) {
@@ -1048,6 +1080,7 @@
             break;
         case KErrNotFound: // Connection failed
             isOpen = false;
+            isOpening = false;
             activeConfig = QNetworkConfiguration();
             serviceConfig = QNetworkConfiguration();
             iError = QNetworkSession::InvalidConfigurationError;
@@ -1062,9 +1095,12 @@
         case KErrAlreadyExists: // Connection already exists
         default:
             isOpen = false;
+            isOpening = false;
             activeConfig = QNetworkConfiguration();
             serviceConfig = QNetworkConfiguration();
-            if (publicConfig.state() == QNetworkConfiguration::Undefined ||
+            if (statusCode == KErrCancel) {
+                iError = QNetworkSession::SessionAbortedError;
+            } else if (publicConfig.state() == QNetworkConfiguration::Undefined ||
                 publicConfig.state() == QNetworkConfiguration::Defined) {
                 iError = QNetworkSession::InvalidConfigurationError;
             } else {
@@ -1127,6 +1163,12 @@
         return false;
     }
 
+    // Make sure that some lagging 'connecting' state-changes do not overwrite
+    // if we are already connected (may righfully still happen with roaming though).
+    if (state == QNetworkSession::Connected && newState == QNetworkSession::Connecting) {
+        return false;
+    }
+
     bool emitSessionClosed = false;
 
     // If we abruptly go down and user hasn't closed the session, we've been aborted.
@@ -1140,6 +1182,7 @@
         // application or session stops connection or when network drops
         // unexpectedly).
         isOpen = false;
+        isOpening = false;
         activeConfig = QNetworkConfiguration();
         serviceConfig = QNetworkConfiguration();
         iError = QNetworkSession::SessionAbortedError;
@@ -1216,7 +1259,7 @@
                     }
                 }
             }
-#ifdef OCC_FUNCTIONALITY_AVAILABLE
+#if defined(OCC_FUNCTIONALITY_AVAILABLE) && defined(SNAP_FUNCTIONALITY_AVAILABLE)
             // If the retVal is not true here, it means that the status update may apply to an IAP outside of
             // SNAP (session is based on SNAP but follows IAP outside of it), which may occur on Symbian^3 EasyWlan.
             if (retVal == false && activeConfig.d.data() && activeConfig.d.data()->numericId == accessPointId) {
@@ -1233,20 +1276,12 @@
 #endif
         }
     }
-    
     if (emitSessionClosed) {
         emit q->closed();
     }
     if (state == QNetworkSession::Disconnected) {
-        // The connection has gone down, and processing of status updates must be
-        // stopped. Depending on platform, there may come 'connecting/connected' states
-        // considerably later (almost a second). Connection id is an increasing
-        // number, so this does not affect next _real_ 'conneting/connected' states.
-        iDeprecatedConnectionId = publicConfig.d.data()->connectionId;
-#ifdef OCC_FUNCTIONALITY_AVAILABLE
         // Just in case clear activeConfiguration.
         activeConfig = QNetworkConfiguration();
-#endif
     }
     return retVal;
 }
--- a/qtmobility/src/bearer/qnetworksession_s60_p.h	Thu Jul 15 19:34:35 2010 +0300
+++ b/qtmobility/src/bearer/qnetworksession_s60_p.h	Thu Aug 19 10:43:30 2010 +0300
@@ -64,7 +64,7 @@
 #ifdef SNAP_FUNCTIONALITY_AVAILABLE
     #include <comms-infras/cs_mobility_apiext.h>
 #endif
-#ifdef OCC_FUNCTIONALITY_AVAILABLE
+#if defined(OCC_FUNCTIONALITY_AVAILABLE) && defined(SNAP_FUNCTIONALITY_AVAILABLE)
     #include <extendedconnpref.h>
 #endif
 
@@ -132,6 +132,7 @@
 private Q_SLOTS:
     void configurationStateChanged(TUint32 accessPointId, TUint32 connMonId, QNetworkSession::State newState);
     void configurationRemoved(const QNetworkConfiguration& config);
+    void configurationAdded(const QNetworkConfiguration& config);
     
 private:
     TUint iapClientCount(TUint aIAPId) const;
@@ -175,7 +176,6 @@
     bool iFirstSync;
     bool iStoppedByUser;
     bool iClosedByUser;
-    TUint32 iDeprecatedConnectionId;
     
 #ifdef SNAP_FUNCTIONALITY_AVAILABLE    
     CActiveCommsMobilityApiExt* iMobility;
@@ -191,6 +191,8 @@
     TUint32 iOldRoamingIap;
     TUint32 iNewRoamingIap;
 
+    bool isOpening;
+
     friend class QNetworkSession;
     friend class ConnectionProgressNotifier;
 };
--- a/qtmobility/src/global/qmobilityglobal.h	Thu Jul 15 19:34:35 2010 +0300
+++ b/qtmobility/src/global/qmobilityglobal.h	Thu Aug 19 10:43:30 2010 +0300
@@ -42,13 +42,13 @@
 #define QMOBILITYGLOBAL_H
 
 
-#define QTM_VERSION_STR   "1.0.1"
+#define QTM_VERSION_STR   "1.0.2"
 /*
    QTM_VERSION is (major << 16) + (minor << 8) + patch.
 */
-#define QTM_VERSION 0x010001
+#define QTM_VERSION 0x010002
 /*
-   can be used like #if (QTM_VERSION >= QTM_VERSION_CHECK(1, 0, 1))
+   can be used like #if (QTM_VERSION >= QTM_VERSION_CHECK(1, 0, 2))
 */
 #define QTM_VERSION_CHECK(major, minor, patch) ((major<<16)|(minor<<8)|(patch))
 
@@ -64,108 +64,120 @@
 #endif
 #include <QtCore/qglobal.h>
 
-#if defined(SYMBIAN_DATABASEMANAGER_SERVER)
-#  define Q_SERVICEFW_EXPORT
-#else
-#  if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
-#    if defined(QT_NODLL)
-#      undef QT_MAKEDLL
+#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+#  if defined(QT_NODLL)
+#    undef QT_MAKEDLL
+#    undef QT_DLL
+#  elif defined(QT_MAKEDLL)
+#    if defined(QT_DLL)
 #      undef QT_DLL
-#    elif defined(QT_MAKEDLL)
-#      if defined(QT_DLL)
-#        undef QT_DLL
-#      endif
-#      if defined(QT_BUILD_BEARER_LIB)
-#        define Q_BEARER_EXPORT Q_DECL_EXPORT
-#      else
-#        define Q_BEARER_EXPORT Q_DECL_IMPORT
-#      endif
-#      if defined(QT_BUILD_CFW_LIB)
-#        define Q_PUBLISHSUBSCRIBE_EXPORT Q_DECL_EXPORT
-#      else
-#        define Q_PUBLISHSUBSCRIBE_EXPORT Q_DECL_IMPORT
-#      endif
-#      if defined(QT_BUILD_CONTACTS_LIB)
-#        define Q_CONTACTS_EXPORT Q_DECL_EXPORT
-#      else
-#        define Q_CONTACTS_EXPORT Q_DECL_IMPORT
-#      endif
-#      if defined(QT_BUILD_VERSIT_LIB)
-#        define Q_VERSIT_EXPORT Q_DECL_EXPORT
-#      else
-#        define Q_VERSIT_EXPORT Q_DECL_IMPORT
-#      endif
-#      if defined(QT_BUILD_LOCATION_LIB)
-#        define Q_LOCATION_EXPORT Q_DECL_EXPORT
-#      else
-#        define Q_LOCATION_EXPORT Q_DECL_IMPORT
-#      endif
-#      if defined(QT_BUILD_MESSAGING_LIB)
-#        define Q_MESSAGING_EXPORT Q_DECL_EXPORT
-#      else
-#        define Q_MESSAGING_EXPORT Q_DECL_IMPORT
-#      endif
+#    endif
+#    if defined(QT_BUILD_BEARER_LIB)
+#      define Q_BEARER_EXPORT Q_DECL_EXPORT
+#    else
+#      define Q_BEARER_EXPORT Q_DECL_IMPORT
+#    endif
+#    if defined(QT_BUILD_CFW_LIB)
+#      define Q_PUBLISHSUBSCRIBE_EXPORT Q_DECL_EXPORT
+#    else
+#      define Q_PUBLISHSUBSCRIBE_EXPORT Q_DECL_IMPORT
+#    endif
+#    if defined(QT_BUILD_CONTACTS_LIB)
+#      define Q_CONTACTS_EXPORT Q_DECL_EXPORT
+#    else
+#      define Q_CONTACTS_EXPORT Q_DECL_IMPORT
+#    endif
+#    if defined(QT_BUILD_VERSIT_LIB)
+#      define Q_VERSIT_EXPORT Q_DECL_EXPORT
+#    else
+#      define Q_VERSIT_EXPORT Q_DECL_IMPORT
+#    endif
+#    if defined(QT_BUILD_LOCATION_LIB)
+#      define Q_LOCATION_EXPORT Q_DECL_EXPORT
+#    else
+#      define Q_LOCATION_EXPORT Q_DECL_IMPORT
+#    endif
+#    if defined(QT_BUILD_MESSAGING_LIB)
+#      define Q_MESSAGING_EXPORT Q_DECL_EXPORT
+#    else
+#      define Q_MESSAGING_EXPORT Q_DECL_IMPORT
+#    endif
 #      if defined(QT_BUILD_MULTIMEDIA_LIB)
 #        define Q_MULTIMEDIA_EXPORT Q_DECL_EXPORT
-#      else
+#    else
 #        define Q_MULTIMEDIA_EXPORT Q_DECL_IMPORT
-#      endif
-#      if defined(QT_BUILD_SFW_LIB)
-#        define Q_SERVICEFW_EXPORT Q_DECL_EXPORT
-#      else
-#        define Q_SERVICEFW_EXPORT Q_DECL_IMPORT
-#      endif
-#      if defined(QT_BUILD_SYSINFO_LIB)
-#        define Q_SYSINFO_EXPORT Q_DECL_EXPORT
-#      else
-#        define Q_SYSINFO_EXPORT Q_DECL_IMPORT
-#      endif
-#      if defined(QT_BUILD_SENSORS_LIB)
-#        define Q_SENSORS_EXPORT Q_DECL_EXPORT
-#      else
-#        define Q_SENSORS_EXPORT Q_DECL_IMPORT
-#      endif
-#    elif defined(QT_DLL) /* use a Qt DLL library */
-#      define Q_BEARER_EXPORT Q_DECL_IMPORT
-#      define Q_PUBLISHSUBSCRIBE_EXPORT Q_DECL_IMPORT
-#      define Q_CONTACTS_EXPORT Q_DECL_IMPORT
-#      define Q_VERSIT_EXPORT Q_DECL_IMPORT
-#      define Q_LOCATION_EXPORT Q_DECL_IMPORT
-#      define Q_MULTIMEDIA_EXPORT Q_DECL_IMPORT
-#      define Q_MESSAGING_EXPORT Q_DECL_IMPORT
+#    endif
+#    if defined(QT_BUILD_SFW_LIB)
+#      define Q_SERVICEFW_EXPORT Q_DECL_EXPORT
+#    else
 #      define Q_SERVICEFW_EXPORT Q_DECL_IMPORT
+#    endif
+#    if defined(QT_BUILD_SYSINFO_LIB)
+#      define Q_SYSINFO_EXPORT Q_DECL_EXPORT
+#    else
 #      define Q_SYSINFO_EXPORT Q_DECL_IMPORT
+#    endif
+#    if defined(QT_BUILD_SENSORS_LIB)
+#      define Q_SENSORS_EXPORT Q_DECL_EXPORT
+#    else
 #      define Q_SENSORS_EXPORT Q_DECL_IMPORT
 #    endif
-#  else
+#  elif defined(QT_DLL) /* use a Qt DLL library */
+#    define Q_BEARER_EXPORT Q_DECL_IMPORT
+#    define Q_PUBLISHSUBSCRIBE_EXPORT Q_DECL_IMPORT
+#    define Q_CONTACTS_EXPORT Q_DECL_IMPORT
+#    define Q_VERSIT_EXPORT Q_DECL_IMPORT
+#    define Q_LOCATION_EXPORT Q_DECL_IMPORT
+#      define Q_MULTIMEDIA_EXPORT Q_DECL_IMPORT
+#    define Q_MESSAGING_EXPORT Q_DECL_IMPORT
+#    if QTM_SERVICEFW_SYMBIAN_DATABASEMANAGER_SERVER
+#      define Q_SERVICEFW_EXPORT
+#    else
+#      define Q_SERVICEFW_EXPORT Q_DECL_IMPORT
+#    endif
+#    define Q_SYSINFO_EXPORT Q_DECL_IMPORT
+#    define Q_SENSORS_EXPORT Q_DECL_IMPORT
 #  endif
-#  if !defined(Q_SERVICEFW_EXPORT)
-#    if defined(QT_SHARED)
-#      define Q_BEARER_EXPORT Q_DECL_EXPORT
-#      define Q_PUBLISHSUBSCRIBE_EXPORT Q_DECL_EXPORT
-#      define Q_CONTACTS_EXPORT Q_DECL_EXPORT
-#      define Q_VERSIT_EXPORT Q_DECL_EXPORT
-#      define Q_LOCATION_EXPORT Q_DECL_EXPORT
-#      define Q_MULTIMEDIA_EXPORT Q_DECL_EXPORT
-#      define Q_MESSAGING_EXPORT Q_DECL_EXPORT
-#      define Q_SERVICEFW_EXPORT Q_DECL_EXPORT
-#      define Q_SYSINFO_EXPORT Q_DECL_EXPORT
-#      define Q_SENSORS_EXPORT Q_DECL_EXPORT
-#    else
-#      define Q_BEARER_EXPORT
-#      define Q_PUBLISHSUBSCRIBE_EXPORT
-#      define Q_CONTACTS_EXPORT
-#      define Q_VERSIT_EXPORT
-#      define Q_LOCATION_EXPORT
-#      define Q_MULTIMEDIA_EXPORT
-#      define Q_MESSAGING_EXPORT
-#      define Q_SERVICEFW_EXPORT
-#      define Q_SYSINFO_EXPORT
-#      define Q_SENSORS_EXPORT
-#    endif
+#endif
+
+#if !defined(Q_SERVICEFW_EXPORT)
+#  if defined(QT_SHARED)
+#    define Q_BEARER_EXPORT Q_DECL_EXPORT
+#    define Q_PUBLISHSUBSCRIBE_EXPORT Q_DECL_EXPORT
+#    define Q_CONTACTS_EXPORT Q_DECL_EXPORT
+#    define Q_VERSIT_EXPORT Q_DECL_EXPORT
+#    define Q_LOCATION_EXPORT Q_DECL_EXPORT
+#    define Q_MULTIMEDIA_EXPORT Q_DECL_EXPORT
+#    define Q_MESSAGING_EXPORT Q_DECL_EXPORT
+#    define Q_SERVICEFW_EXPORT Q_DECL_EXPORT
+#    define Q_SYSINFO_EXPORT Q_DECL_EXPORT
+#    define Q_SENSORS_EXPORT Q_DECL_EXPORT
+#  else
+#    define Q_BEARER_EXPORT
+#    define Q_PUBLISHSUBSCRIBE_EXPORT
+#    define Q_CONTACTS_EXPORT
+#    define Q_VERSIT_EXPORT
+#    define Q_LOCATION_EXPORT
+#    define Q_MULTIMEDIA_EXPORT
+#    define Q_MESSAGING_EXPORT
+#    define Q_SERVICEFW_EXPORT
+#    define Q_SYSINFO_EXPORT
+#    define Q_SENSORS_EXPORT
 #  endif
 #endif
 
+
+#ifdef QTM_SERVICEFW_SYMBIAN_DATABASEMANAGER_SERVER
+#  ifdef Q_SERVICEFW_EXPORT
+#    undef Q_SERVICEFW_EXPORT
+#  endif
+#  define Q_SERVICEFW_EXPORT
+#  ifdef Q_AUTOTEST_EXPORT
+#    undef Q_AUTOTEST_EXPORT
+#  endif
+#  define Q_AUTOTEST_EXPORT
+#endif
+
 // The namespace is hardcoded as moc has issues resolving
 // macros which would be a prerequisite for a dynmamic namespace
 #define QTM_NAMESPACE QtMobility
--- a/qtmobility/src/s60installs/s60installs.pro	Thu Jul 15 19:34:35 2010 +0300
+++ b/qtmobility/src/s60installs/s60installs.pro	Thu Aug 19 10:43:30 2010 +0300
@@ -9,7 +9,7 @@
     TARGET = "QtMobility"
     TARGET.UID3 = 0x2002AC89
 
-    VERSION = 1.0.1
+    VERSION = 1.0.2
 
     vendorinfo = \
         "; Localised Vendor name" \
--- a/qtmobility/staticconfig.pri	Thu Jul 15 19:34:35 2010 +0300
+++ b/qtmobility/staticconfig.pri	Thu Aug 19 10:43:30 2010 +0300
@@ -4,7 +4,8 @@
 # Symbian MCL builds do not run configure and hence don't have 
 # .qmake.cache which set QT_MOBILITY_SOURCE_TREE and 
 # QT_MOBILITY_BUILD_TREE. Therefore we need to define a fallback.
-# This has the disadvantage that shadow builds are not supported.
+# This has the disadvantage that shadow builds are not supported for symbian
+# but they are on other platforms.
 
 
 isEmpty(QT_MOBILITY_SOURCE_TREE):QT_MOBILITY_SOURCE_TREE = $$PWD 
--- a/qtmobility/tests/auto/qnetworksession/tst_qnetworksession/tst_qnetworksession.cpp	Thu Jul 15 19:34:35 2010 +0300
+++ b/qtmobility/tests/auto/qnetworksession/tst_qnetworksession/tst_qnetworksession.cpp	Thu Aug 19 10:43:30 2010 +0300
@@ -87,7 +87,7 @@
     void sessionStop();
 
     void roamingErrorCodes();
-    
+
     void sessionProperties_data();
     void sessionProperties();
 
@@ -672,7 +672,7 @@
         QVERIFY(openSession(&innocentSession));    
         qDebug("Waiting for %d ms after open to make sure all platform indications are propagated", configWaitdelayInMs);
         QTest::qWait(configWaitdelayInMs);
-    qDebug("----------4.2 Calling closedSession.stop()");
+        qDebug("----------4.2 Calling closedSession.stop()");
         closedSession.stop();
         qDebug("Waiting for %d ms to get all configurationChange signals from platform..", configWaitdelayInMs);
         QTest::qWait(configWaitdelayInMs); // Wait to get all relevant configurationChange() signals
@@ -878,7 +878,7 @@
     // The remaining tests require the session to be not NotAvailable.
     if (session.state() == QNetworkSession::NotAvailable)
         QSKIP("Network is not available.", SkipSingle);
-
+        
     QSignalSpy sessionOpenedSpy(&session, SIGNAL(opened()));
     QSignalSpy sessionClosedSpy(&session, SIGNAL(closed()));
     QSignalSpy stateChangedSpy(&session, SIGNAL(stateChanged(QNetworkSession::State)));
@@ -906,9 +906,14 @@
         session.waitForOpened();
 #endif        
 
+         // Wait until the configuration is uptodate as well, it may be signaled 'connected' 
+         // bit later than the session
+         QTRY_VERIFY(configuration.state() == QNetworkConfiguration::Active);
+
         if (session.isOpen())
             QVERIFY(!sessionOpenedSpy.isEmpty() || !errorSpy.isEmpty());
         if (!errorSpy.isEmpty()) {
+        
             QNetworkSession::SessionError error =
                 qvariant_cast<QNetworkSession::SessionError>(errorSpy.first().at(0));
 
@@ -1072,21 +1077,28 @@
                 if (configuration.type() == QNetworkConfiguration::ServiceNetwork) {
                     bool roamedSuccessfully = false;
 
-                    QCOMPARE(stateChangedSpy2.count(), 4);
+                    QNetworkSession::State state;
+                    if (stateChangedSpy2.count() == 4) {
+                        state = qvariant_cast<QNetworkSession::State>(stateChangedSpy2.at(0).at(0));
+                        QVERIFY(state == QNetworkSession::Connecting);
 
-                    QNetworkSession::State state =
-                        qvariant_cast<QNetworkSession::State>(stateChangedSpy2.at(0).at(0));
-                    QVERIFY(state == QNetworkSession::Connecting);
+                        state = qvariant_cast<QNetworkSession::State>(stateChangedSpy2.at(1).at(0));
+                        QVERIFY(state == QNetworkSession::Connected);
+
+                        state = qvariant_cast<QNetworkSession::State>(stateChangedSpy2.at(2).at(0));
+                        QVERIFY(state == QNetworkSession::Closing);
 
-                    state = qvariant_cast<QNetworkSession::State>(stateChangedSpy2.at(1).at(0));
-                    QVERIFY(state == QNetworkSession::Connected);
+                        state = qvariant_cast<QNetworkSession::State>(stateChangedSpy2.at(3).at(0));
+                        QVERIFY(state == QNetworkSession::Disconnected);
+                    } else if (stateChangedSpy2.count() == 2) {
+                        state = qvariant_cast<QNetworkSession::State>(stateChangedSpy2.at(0).at(0));
+                        QVERIFY(state == QNetworkSession::Closing);
 
-                    state = qvariant_cast<QNetworkSession::State>(stateChangedSpy2.at(2).at(0));
-                    QVERIFY(state == QNetworkSession::Closing);
-
-                    state = qvariant_cast<QNetworkSession::State>(stateChangedSpy2.at(3).at(0));
-                    QVERIFY(state == QNetworkSession::Disconnected);
-                    
+                        state = qvariant_cast<QNetworkSession::State>(stateChangedSpy2.at(1).at(0));
+                        QVERIFY(state == QNetworkSession::Disconnected);
+                    } else {
+                        QFAIL("Unexpected amount of state changes when roaming.");
+                    }
 			
                     QTRY_VERIFY(session.state() == QNetworkSession::Roaming ||
                                 session.state() == QNetworkSession::Connected ||
@@ -1108,8 +1120,9 @@
                         roamedSuccessfully = true;
                     } else if (state == QNetworkSession::Closing) {
                         QTRY_VERIFY(session2.state() == QNetworkSession::Disconnected);
-                        QTRY_VERIFY(session.state() == QNetworkSession::Connected);
-                        roamedSuccessfully = true;
+                        QTRY_VERIFY(session.state() == QNetworkSession::Connected || 
+                        	session.state() == QNetworkSession::Disconnected);
+                        roamedSuccessfully = false;
                     } else if (state == QNetworkSession::Disconnected) {
                         QTRY_VERIFY(!errorSpy.isEmpty());
                         QTRY_VERIFY(session2.state() == QNetworkSession::Disconnected);
@@ -1121,16 +1134,18 @@
                             QVERIFY(state == QNetworkSession::Roaming);
                         }
                         roamedSuccessfully = true;
-                  	}
+                    }
 
                     if (roamedSuccessfully) {
+                        // Verify that you can open session based on the disconnected configuration
                         QString configId = session.sessionProperty("ActiveConfiguration").toString();
-                        QNetworkConfiguration config = manager.configurationFromIdentifier(configId); 
+                        QNetworkConfiguration config = manager.configurationFromIdentifier(configId);
                         QNetworkSession session3(config);
                         QSignalSpy errorSpy3(&session3, SIGNAL(error(QNetworkSession::SessionError)));
                         QSignalSpy sessionOpenedSpy3(&session3, SIGNAL(opened()));
                         session3.open();
-                        session3.waitForOpened();      
+                        session3.waitForOpened();
+                        QTest::qWait(1000); // Wait awhile to get all signals from platform
                         if (session.isOpen())
                             QVERIFY(!sessionOpenedSpy3.isEmpty() || !errorSpy3.isEmpty());
                         session.stop();
--- a/qtmobility/tests/bearerex/bearerex.cpp	Thu Jul 15 19:34:35 2010 +0300
+++ b/qtmobility/tests/bearerex/bearerex.cpp	Thu Aug 19 10:43:30 2010 +0300
@@ -432,6 +432,7 @@
             iapLineEdit->setText(config.name()+" ("+config.identifier()+")");
         }
     }
+    newState(m_NetworkSession->state()); // Update the "(open)"
 
     if (m_NetworkSession->configuration().type() == QNetworkConfiguration::UserChoice) {
         QVariant identifier = m_NetworkSession->sessionProperty("UserChoiceConfiguration");
@@ -522,7 +523,7 @@
 
     QString active;
     if (m_NetworkSession->isOpen()) {
-        active = " (O)";
+        active = " (open)";
     }
     stateLineEdit->setText(stateString(state)+active);
 }
--- a/qtmobility/tests/bearerex/bearerex.pro	Thu Jul 15 19:34:35 2010 +0300
+++ b/qtmobility/tests/bearerex/bearerex.pro	Thu Aug 19 10:43:30 2010 +0300
@@ -34,4 +34,4 @@
 
 CONFIG += mobility
 MOBILITY = bearer
-symbian:TARGET.CAPABILITY = NetworkServices NetworkControl ReadUserData
+symbian:TARGET.CAPABILITY = NetworkServices NetworkControl ReadUserData WriteDeviceData ReadDeviceData
--- a/qtmobility/tests/tests.pro	Thu Jul 15 19:34:35 2010 +0300
+++ b/qtmobility/tests/tests.pro	Thu Aug 19 10:43:30 2010 +0300
@@ -8,5 +8,5 @@
 }
 
 symbian {
-    SUBDIRS += s60installs/s60installs.pro
+    SUBDIRS += s60installs
 }