Revision: 201025
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 06 Jul 2010 14:26:20 +0300
changeset 49 76883296a0d5
parent 48 2222076f5c60
child 52 6cd49ffea600
child 56 11a052f4b02e
Revision: 201025 Kit: 2010127
appfw/apparchitecture/group/BLD.INF
appfw/apparchitecture/tef/testapp/testforceregistrationapp1/testforceregistrationapp1.mmp
appfw/apparchitecture/tef/tssaac/tssaac.mmp
appsupport.pro
appsupport_plat/startup_configuration_api/inc/startupdomaincrkeys.h
commonappservices/alarmserver/Documentation/AlarmStateTransitionAndAlarmAlertCom.xls
commonappservices/alarmserver/doc_pub/AlarmStateTransitionAndAlarmAlertCom.xls
commonappservices/alarmserver/doc_pub/SGL.GT0257.207_Rev1.1_Alarm_Server_Configuration_how_to.doc
commonappservices/appservicesdocs/app-services_documentation.history.xml
commonappservices/appservicesdocs/app-services_documentation.mrp
commonappservices/appservicesdocs/architecturaldescription.eap
commonappservices/doc_pub/App-Services_Architectural_Description.doc
commonappservices/doc_pub/App-Services_Functional_Specification.doc
commonappservices/doc_pub/PIMTestCodeOrganisationHowTo.doc
commonappservices/doc_pub/SGL.GT0109.110_Rev1.2_AppServices_Subsystem_Release_Note.doc
commonappservices/doc_pub/app-services_documentation.history.xml
commonappservices/doc_pub/app-services_documentation.mrp
commonappservices/doc_pub/architecturaldescription.eap
contenthandling/webrecognisers/Documentation/Uid.txt
contenthandling/webrecognisers/doc_pub/Uid.txt
contextframework/cfw/conf/contextframework.confml
contextframework/cfw/conf/contextframework_10282BCD.crml
coreapplicationuis/SysAp/Group/SysAp.mmp
coreapplicationuis/SysAp/Inc/SysApAppUi.h
coreapplicationuis/SysAp/Src/CenRepObservers/sysapcenrepofflinemodeobserver.cpp
coreapplicationuis/SysAp/Src/CenRepObservers/sysapcenrepofflinemodeobserver.h
coreapplicationuis/SysAp/Src/OfflineModeController/SysApOfflineModeControllerImpl.cpp
coreapplicationuis/SysAp/Src/OfflineModeController/SysApOfflineModeControllerImpl.h
coreapplicationuis/SysAp/Src/SysApAppUi.cpp
coreapplicationuis/SysAp/Src/SysApSimChanged.cpp
coreapplicationuis/advancedtspcontroller/data/keyevent.rul
coreapplicationuis/advancedtspcontroller/group/RemConTspController.mmp
coreapplicationuis/advancedtspcontroller/inc/remcontspcontroller.h
coreapplicationuis/advancedtspcontroller/inc/tsptriggerevents.h
coreapplicationuis/advancedtspcontroller/src/remcontspcontroller.cpp
coreapplicationuis/advancedtspcontroller/src/tsptriggerevents.cpp
coreapplicationuis/devicepowermenuplugin/docml/powermenu.docml
coreapplicationuis/devicepowermenuplugin/inc/hbdevicepowermenuwidegt_p.h
coreapplicationuis/devicepowermenuplugin/src/hbdevicepowermenuwidegt.cpp
package_definition.xml
printingsupport/printinguisupport/group/BLD.INF
startupservices/Startup/conf/startup.confml
startupservices/Startup/conf/startup_101F8763.crml
startupservices/Startup/src/StartupAppUi.cpp
systemsettings/accindicatorplugin/inc/accindicator.h
systemsettings/accindicatorplugin/src/accindicator.cpp
systemsettings/group/bld.inf
tzpcside/tzcompiler/group/BLD.INF
tzservices/tzserver/group/release.txt
--- a/appfw/apparchitecture/group/BLD.INF	Wed Jun 23 18:22:59 2010 +0300
+++ b/appfw/apparchitecture/group/BLD.INF	Tue Jul 06 14:26:20 2010 +0300
@@ -29,7 +29,7 @@
 // specify the source file followed by its destination here
 // copy will be used to copy the source file to its destination
 // If there's no destination then the source file will be copied
-// to the same name in \epoc32\include
+// to the same name in /epoc32/include
 
 // Files from aincc.prj
 ../inc/APACLN.H SYMBIAN_MW_LAYER_PLATFORM_EXPORT_PATH(apacln.h)
@@ -95,7 +95,7 @@
 
 ../group/apparc.iby /epoc32/rom/include/apparc.iby
 
-// File from ..\inc (which is relocated from app-framework\aiftool\inc)
+// File from ../inc (which is relocated from app-framework/aiftool/inc)
 ../inc/AIFTOOL.RH /epoc32/include/aiftool.rh
 
 //Backup and restore exports
@@ -199,13 +199,13 @@
 
 // testupdregappuninstallation is used in t_serviceregistry test. If any changes done to
 // this application, uncomment testupdregappuninstallation.mmp file and build it.
-// Then comment it and copy the testupdregappuninstallation_reg.rsc file to ..\tdata folder.
+// Then comment it and copy the testupdregappuninstallation_reg.rsc file to ../tdata folder.
 // Delete any testupdregappuninstallation* files from epoc32 directory.
 //../tef/testapp/testupdregappuninstallation/testupdregappuninstallation.mmp
 
 // testupgradeupdregappuninstallation is used in t_serviceregistry test. If any changes done to
 // this application, uncomment testupdregappuninstallation.mmp file and build it.
-// Then comment it and copy the testupgradeupdregappuninstallation_reg.rsc file to ..\tdata folder.
+// Then comment it and copy the testupgradeupdregappuninstallation_reg.rsc file to ../tdata folder.
 // Delete any testupdregappuninstallation* files from epoc32 directory.
 //../tef/testapp/testupgradeupdregappuninstallation/testupgradeupdregappuninstallation.mmp
 
@@ -245,7 +245,7 @@
 
 //*****************************************************************************************************************************************************************************************************
 //recupgrade_1 plug-in is used to upgrade the mime type recognizer during runtime in T_RecUpgrade test.  
-//              It is build for armv5 and rename to recupgrade_armv5_rel.dll and copied to apparc\Tdata before actual code builds.  If you are making any change in recupgrade_1.cpp then uncomment 
+//              It is build for armv5 and rename to recupgrade_armv5_rel.dll and copied to apparc/Tdata before actual code builds.  If you are making any change in recupgrade_1.cpp then uncomment 
 //              “recupgrade_1.MMP” , build , rename (.dll) and copy as mentioned above .
 //*****************************************************************************************************************************************************************************************************
 //../tef/TRecUpgrade_1/recupgrade_1.MMP
@@ -253,7 +253,7 @@
 
 // ***************************************************************************************************************************************************************************************************
 // recupgrade_2 plug-in is used to upgrade the mime type recognizer during runtime in T_RecUpgrade test.  
-//              It is build for armv5 and rename to recupgrade2_armv5_rel.dll and copied to apparc\Tdata before actual code builds.  If you are making any change in recupgrade_2.cpp then uncomment 
+//              It is build for armv5 and rename to recupgrade2_armv5_rel.dll and copied to apparc/Tdata before actual code builds.  If you are making any change in recupgrade_2.cpp then uncomment 
 //              “recupgrade_2.MMP” , build , rename (.dll) and copy as mentioned above .
 // ***************************************************************************************************************************************************************************************************
 //../tef/TRecUpgrade_2/recupgrade_2.MMP
@@ -378,7 +378,7 @@
 
 ../tef/tupgradeiconapp/tupgradeiconapp.mbm					/epoc32/release/winscw/udeb/z/apparctestregfiles/tupgradeiconapp.mbm
 
-// epoc32\data
+// epoc32/data
 
 // export certificates for creating sis files
 ../tef/testpkg/Nokia_RnDCert_02.der							/epoc32/tools/Nokia_RnDCert_02.der
--- a/appfw/apparchitecture/tef/testapp/testforceregistrationapp1/testforceregistrationapp1.mmp	Wed Jun 23 18:22:59 2010 +0300
+++ b/appfw/apparchitecture/tef/testapp/testforceregistrationapp1/testforceregistrationapp1.mmp	Tue Jul 06 14:26:20 2010 +0300
@@ -27,11 +27,11 @@
 
 
 START RESOURCE      testforceregistrationapp1_reg.rss
-    TARGETPATH      \apparctest
+    TARGETPATH      /apparctest
 END
 
 START RESOURCE      testforceregistrationapp1_loc.rss
-    TARGETPATH      \apparctest
+    TARGETPATH      /apparctest
 END
 
 library  euser.lib
--- a/appfw/apparchitecture/tef/tssaac/tssaac.mmp	Wed Jun 23 18:22:59 2010 +0300
+++ b/appfw/apparchitecture/tef/tssaac/tssaac.mmp	Tue Jul 06 14:26:20 2010 +0300
@@ -1,4 +1,4 @@
-// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -41,7 +41,7 @@
 #else
 // startup with tssaac application for hardware
 START RESOURCE	tssaac_hardware.rss
-TARGETPATH		\private\10205C44
+TARGETPATH		/private/10205C44
 END
 #endif
 
--- a/appsupport.pro	Wed Jun 23 18:22:59 2010 +0300
+++ b/appsupport.pro	Tue Jul 06 14:26:20 2010 +0300
@@ -21,4 +21,6 @@
 symbian: {
 :BLD_INF_RULES.prj_mmpfiles += $$LITERAL_HASH"include \"group/bld.inf\""
 SUBDIRS += coreapplicationuis\devicepowermenuplugin
+SUBDIRS += systemsettings\accindicatorplugin
+SUBDIRS += systemsettings\accindicatorplugin\accindicatorsettings
 }
--- a/appsupport_plat/startup_configuration_api/inc/startupdomaincrkeys.h	Wed Jun 23 18:22:59 2010 +0300
+++ b/appsupport_plat/startup_configuration_api/inc/startupdomaincrkeys.h	Tue Jul 06 14:26:20 2010 +0300
@@ -263,6 +263,13 @@
 */
 const TUint32 KStartupDefaultTime = 0x00000016;
 
+/**
+ * Enables or disables the FTU StartupSequence. This key is modified by ftu when user accepts the eterms
+ * Possible values true or false
+ */
+const TUint32 KFtuStartupEnabled = 0x0000001A;
+
+
 #endif // STARTUPDOMAINCRKEYS_H
 
 // End of File
Binary file commonappservices/alarmserver/Documentation/AlarmStateTransitionAndAlarmAlertCom.xls has changed
Binary file commonappservices/alarmserver/doc_pub/AlarmStateTransitionAndAlarmAlertCom.xls has changed
Binary file commonappservices/alarmserver/doc_pub/SGL.GT0257.207_Rev1.1_Alarm_Server_Configuration_how_to.doc has changed
--- a/commonappservices/appservicesdocs/app-services_documentation.history.xml	Wed Jun 23 18:22:59 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<relnotes name="DEVELOPERLIBRARY">
-  <purpose>
-  </purpose>
-</relnotes>
--- a/commonappservices/appservicesdocs/app-services_documentation.mrp	Wed Jun 23 18:22:59 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-component	app-services_documentation
-
-source	\sf\mw\appsupport\commonappservices\appservicesdocs\
-
-notes_source	\component_defs\release.src
-
-
-ipr E 
-
Binary file commonappservices/appservicesdocs/architecturaldescription.eap has changed
Binary file commonappservices/doc_pub/App-Services_Architectural_Description.doc has changed
Binary file commonappservices/doc_pub/App-Services_Functional_Specification.doc has changed
Binary file commonappservices/doc_pub/PIMTestCodeOrganisationHowTo.doc has changed
Binary file commonappservices/doc_pub/SGL.GT0109.110_Rev1.2_AppServices_Subsystem_Release_Note.doc has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commonappservices/doc_pub/app-services_documentation.history.xml	Tue Jul 06 14:26:20 2010 +0300
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<relnotes name="DEVELOPERLIBRARY">
+  <purpose>
+  </purpose>
+</relnotes>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commonappservices/doc_pub/app-services_documentation.mrp	Tue Jul 06 14:26:20 2010 +0300
@@ -0,0 +1,9 @@
+component	app-services_documentation
+
+source	\sf\mw\appsupport\commonappservices\doc_pub\
+
+notes_source	\component_defs\release.src
+
+
+ipr E 
+
Binary file commonappservices/doc_pub/architecturaldescription.eap has changed
--- a/contenthandling/webrecognisers/Documentation/Uid.txt	Wed Jun 23 18:22:59 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-UIDs Allocated for Application-Protocol Recognisers
-
-KUidAppProtRecognisers
-
-101FD8D0	KUidRecogTestEcomInterface	ECom Interface for recogniser test plugins
-101FD8D1	KUidWebUrlRecogTestDll		Web URL recogniser test plugin DLL UID
-101FD8D2	KUidWebUrlRecogTest		Web URL recogniser ECom implementation UID
-101FD8D3	KUidEBookmarkRecogTestDll	EBookmark recogniser test plugin DLL UID
-101FD8D4	KUidEBookmarkRecogTest		EBookmark recogniser ECom implementation UID
-101FD8D5	KUidRecWebRecogTestDll		Web (html/xml) recogniser test plugin DLL UID
-101FD8D6	KUidRecWebRecogTest		Web (html/xml) recogniser ECom implementation UID
-101FD8D7
-101FD8D8
-101FD8D9
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contenthandling/webrecognisers/doc_pub/Uid.txt	Tue Jul 06 14:26:20 2010 +0300
@@ -0,0 +1,30 @@
+// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+
+UIDs Allocated for Application-Protocol Recognisers
+
+KUidAppProtRecognisers
+
+101FD8D0	KUidRecogTestEcomInterface	ECom Interface for recogniser test plugins
+101FD8D1	KUidWebUrlRecogTestDll		Web URL recogniser test plugin DLL UID
+101FD8D2	KUidWebUrlRecogTest		Web URL recogniser ECom implementation UID
+101FD8D3	KUidEBookmarkRecogTestDll	EBookmark recogniser test plugin DLL UID
+101FD8D4	KUidEBookmarkRecogTest		EBookmark recogniser ECom implementation UID
+101FD8D5	KUidRecWebRecogTestDll		Web (html/xml) recogniser test plugin DLL UID
+101FD8D6	KUidRecWebRecogTest		Web (html/xml) recogniser ECom implementation UID
+101FD8D7
+101FD8D8
+101FD8D9
\ No newline at end of file
Binary file contextframework/cfw/conf/contextframework.confml has changed
Binary file contextframework/cfw/conf/contextframework_10282BCD.crml has changed
--- a/coreapplicationuis/SysAp/Group/SysAp.mmp	Wed Jun 23 18:22:59 2010 +0300
+++ b/coreapplicationuis/SysAp/Group/SysAp.mmp	Tue Jul 06 14:26:20 2010 +0300
@@ -153,6 +153,8 @@
 SOURCE CenRepObservers/SysApCenRepHacSettingObserver.cpp
 SOURCE CenRepObservers/sysapcenreplightsettingsobserver.cpp
 SOURCE CenRepObservers/SysApCenRepLogsObserver.cpp
+SOURCE CenRepObservers/sysapcenrepofflinemodeobserver.cpp
+
 LIBRARY centralrepository.lib
 LIBRARY cenrepnotifhandler.lib
 
@@ -199,7 +201,7 @@
 
 SOURCEPATH ../Src
 SOURCE sysapkeymanagement.cpp SysApTaskList.cpp
-
+SOURCE SysApKeySndHandler.cpp SysApKeySndAnim.cpp SysApAnimKeySndControl.cpp
 
 //For Shutdown
 LIBRARY	    SVGEngine.lib
--- a/coreapplicationuis/SysAp/Inc/SysApAppUi.h	Wed Jun 23 18:22:59 2010 +0300
+++ b/coreapplicationuis/SysAp/Inc/SysApAppUi.h	Tue Jul 06 14:26:20 2010 +0300
@@ -318,9 +318,7 @@
 
 #endif // SYSAP_USE_STARTUP_UI_PHASE
 
-//        RFs iFsSession;
-//        RWsSession iWsSession;
-        
+     
      private:
          /**
          * Frees SysAp's reserved memory, closes connections to servers etc.
@@ -372,6 +370,7 @@
           
           CSysApAudioRoutingObserver* iSysApAudioRoutingObserver;
           CSysApPsmController* iSysApPsmController;
+		  CHbSymbianVariant* iVariantAccState ;
           CSysApSsSettingsObserver*       iSysApSsSettingsObserver;
           CSystemLock*                    iSysApSystemLock;
           CSysApCenRepCallForwardingObserver* iSysApCenRepCallForwardingObserver;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/coreapplicationuis/SysAp/Src/CenRepObservers/sysapcenrepofflinemodeobserver.cpp	Tue Jul 06 14:26:20 2010 +0300
@@ -0,0 +1,149 @@
+/*
+ * Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:
+ * CSysApCenRepOfflineModeObserver is a an observer for the Offline Mode central Repository key.
+ * This class handles the changes to the offline mode changes done from Power Menu or Control Panel 
+ *
+ */
+
+#include "sysapcenrepofflinemodeobserver.h"
+#include "CoreApplicationUIsSDKCRKeys.h"
+#include "SysAp.hrh"
+
+#ifdef _DEBUG
+#include <e32debug.h>
+#endif
+
+// ----------------------------------------------------------------------------
+// CSysApCenRepOfflineModeObserver::NewL( MSysApOfflineModeController& )
+// Creates an instance of CSysApCenRepOfflineModeObserver and returns
+// ----------------------------------------------------------------------------
+
+CSysApCenRepOfflineModeObserver* CSysApCenRepOfflineModeObserver::NewL( 
+                    MSysApOfflineModeController& aSysApOfflineModeController )
+    {
+    TRACES( RDebug::Printf("CSysApCenRepOfflineModeObserver::NewL") );
+    CSysApCenRepOfflineModeObserver* self = 
+    new (ELeave) CSysApCenRepOfflineModeObserver(aSysApOfflineModeController);
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop(); //self
+    return self;
+    }
+
+
+// ----------------------------------------------------------------------------
+// CSysApCenRepOfflineModeObserver::CSysApCenRepOfflineModeObserver( MSysApOfflineModeController& )
+// ----------------------------------------------------------------------------
+
+CSysApCenRepOfflineModeObserver::CSysApCenRepOfflineModeObserver( 
+                MSysApOfflineModeController& aSysApOfflineModeController  )
+            : iSysApOfflineModeController( aSysApOfflineModeController )
+    {
+    TRACES( RDebug::Printf("CSysApCenRepOfflineModeObserver::CSysApCenRepOfflineModeObserver" ) );
+    }
+
+// ----------------------------------------------------------------------------
+// CSysApCenRepOfflineModeObserver::~CSysApCenRepOfflineModeObserver()
+// ----------------------------------------------------------------------------
+
+CSysApCenRepOfflineModeObserver::~CSysApCenRepOfflineModeObserver()
+    {
+    TRACES( RDebug::Printf("~CSysApCenRepOfflineModeObserver" ) );
+    if( iOfflineModeHandler )
+    {
+    iOfflineModeHandler->StopListening();
+    }
+    delete iOfflineModeHandler;
+    delete iOfflineCenRep;
+    }
+
+// ----------------------------------------------------------------------------
+// CSysApCenRepOfflineModeObserver::ConstructL()
+// ----------------------------------------------------------------------------
+
+void CSysApCenRepOfflineModeObserver::ConstructL()
+    {
+    TRACES(RDebug::Printf("CSysApCenRepOfflineModeObserver::ConstructL: trying CRepository::NewL(KCRUidCoreApplicationUIs)"));
+    
+    iOfflineCenRep = CRepository::NewL( KCRUidCoreApplicationUIs );
+    
+    iOfflineModeHandler =
+    CCenRepNotifyHandler::NewL( *this,
+    *iOfflineCenRep,
+    CCenRepNotifyHandler::EIntKey,
+    KCoreAppUIsNetworkConnectionAllowed );
+    iOfflineModeHandler->StartListeningL();    
+    }
+
+// ----------------------------------------------------------------------------
+// CSysApCenRepOfflineModeObserver::HandleNotifyInt()
+// Handles the changes to offline mode state
+// ----------------------------------------------------------------------------
+
+void CSysApCenRepOfflineModeObserver::HandleNotifyInt( TUint32 aId, TInt aNewValue  )
+    {
+    TRACES(RDebug::Printf("CSysApCenRepOfflineModeObserver::HandleNotifyInt(), aId=0x%x, aNewValue=%d", aId, aNewValue));    
+    if ( aId == KCoreAppUIsNetworkConnectionAllowed )
+    {
+        if( aNewValue == ECoreAppUIsNetworkConnectionNotAllowed )
+        {
+        // Offline mode enabled. Go Offline
+        TRACES( RDebug::Printf("CSysApCenRepOfflineModeObserver::HandleNotifyInt() Offline mode Enabled"));
+        // Ignore any leave because it will have already been handled by showing an 
+        // error notification to the user
+        TRAP_IGNORE(iSysApOfflineModeController.SwitchFromOnlineToOfflineModeL());
+        }
+    else if( aNewValue == ECoreAppUIsNetworkConnectionAllowed )
+    {
+        // Offline mode disabled. Go Online
+        TRACES( RDebug::Printf("CSysApCenRepOfflineModeObserver::HandleNotifyInt() Offline mode Disabled"));
+        // Ignore any leave because it will have already been handled by showing an 
+        // error notification to the user
+        TRAP_IGNORE(iSysApOfflineModeController.GoOnlineIfOkL());
+    }
+    else
+    {		
+        // Any other value is invalid	
+        TRACES(RDebug::Printf("CSysApCenRepOfflineModeObserver::HandleNotifyInt() Invalid Value %d", aNewValue));
+    }
+    }
+    }
+
+// ----------------------------------------------------------------------------
+// CSysApCenRepOfflineModeObserver::HandleNotifyError()
+// ----------------------------------------------------------------------------
+
+void CSysApCenRepOfflineModeObserver::HandleNotifyError( TUint32, TInt, CCenRepNotifyHandler* )
+    {
+    TRACES(RDebug::Printf("CSysApCenRepOfflineModeObserver::HandleNotifyError()"));
+    // Nothing to do if start listening leaves
+    TRAP_IGNORE(iOfflineModeHandler->StartListeningL());    
+    }
+
+
+
+// ----------------------------------------------------------------------------
+// CSysApCenRepOfflineModeObserver::IsOffline()
+// Fetches the Cen Rep for Offline mode and 
+// Return true if Offline mode is enabled, false otherwise
+// ----------------------------------------------------------------------------
+TBool CSysApCenRepOfflineModeObserver::IsOffline() const
+    {
+    TRACES(RDebug::Printf("CSysApCenRepOfflineModeObserver::IsOffline"));
+    TBool nwConnAllowed = ETrue;
+    iOfflineCenRep->Get(KCoreAppUIsNetworkConnectionAllowed, nwConnAllowed);
+    TRACES(RDebug::Printf("CSysApCenRepOfflineModeObserver::IsOffline returns %d",!nwConnAllowed));
+    return !nwConnAllowed;
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/coreapplicationuis/SysAp/Src/CenRepObservers/sysapcenrepofflinemodeobserver.h	Tue Jul 06 14:26:20 2010 +0300
@@ -0,0 +1,102 @@
+/*
+ * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:
+ * CSysApCenRepOfflineModeObserver is a an observer for the Offline Mode central Repository key.
+ * This class handles the changes to the offline mode changes done from Power Menu or Control Panel 
+ *
+ */
+
+
+#ifndef SYSAPCENREPOFFLINEMODEOBSERVER_H
+#define SYSAPCENREPOFFLINEMODEOBSERVER_H
+
+// INCLUDES
+#include <e32base.h>
+#include <centralrepository.h>
+#include <cenrepnotifyhandler.h>
+
+#include "MSysApOfflineModeController.h"
+
+NONSHARABLE_CLASS(CSysApCenRepOfflineModeObserver) : public CBase, 
+                                                     public MCenRepNotifyHandlerCallback
+    {
+public: // Constructors and destructor
+    /**
+    * Default constructor
+    */
+    static CSysApCenRepOfflineModeObserver* NewL( 
+            MSysApOfflineModeController& aSysApOfflineModeController );
+    
+    /**
+    * Destructor.
+    */
+    ~CSysApCenRepOfflineModeObserver();
+    
+private:    
+    /**
+    * Two phase ConstructL
+    */
+    void ConstructL( );
+    
+    /**
+    * Constructor 
+    * @param aSysApOfflineModeController is the instance of Offline mode controller
+    */
+    CSysApCenRepOfflineModeObserver( MSysApOfflineModeController& aSysApOfflineModeController );
+    
+    /**
+    * default constructor.
+    */
+    CSysApCenRepOfflineModeObserver();
+    
+public: // From MCenRepNotifyHandlerCallback
+    /**
+    * Handles the changes to offline mode state
+    * @param aId is the cen rep key which was changed
+    * @param aNewValue is the new value		
+    */
+    void HandleNotifyInt( TUint32 aId, TInt aNewValue );
+    
+    /**
+    * Handles the error in changing offline mode state
+    * @param aId is the cen rep key which was changed
+    * @param aError is the error id		
+    * @param aHandler is Offline cep rep handler same as iOfflineModeHandler		
+    */
+    void HandleNotifyError( TUint32 aId, TInt aError, CCenRepNotifyHandler* aHandler );
+    
+    /**
+    * Returns whether Offline mode is currently active or not
+    * @return ETrue if Offline mode is active, else EFalse
+    */		
+    TBool IsOffline() const;
+    
+private:
+    /**
+    * Instance of Offline mode controller. Used for enabling or disabling offline mode
+    */	
+    MSysApOfflineModeController& iSysApOfflineModeController;
+    
+    /**
+    * Central Repository for gettting the Offline Mode
+    */	
+    CRepository*          iOfflineCenRep;
+    
+    /**
+    * Handler to the cen rep for listening to the offline changes
+    */
+    CCenRepNotifyHandler* iOfflineModeHandler;
+    };
+
+#endif      // SYSAPCENREPBTOBSERVER_H
--- a/coreapplicationuis/SysAp/Src/OfflineModeController/SysApOfflineModeControllerImpl.cpp	Wed Jun 23 18:22:59 2010 +0300
+++ b/coreapplicationuis/SysAp/Src/OfflineModeController/SysApOfflineModeControllerImpl.cpp	Tue Jul 06 14:26:20 2010 +0300
@@ -1,19 +1,22 @@
 /*
-* Copyright (c) 2005-2008 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  CSysApOfflineModeController implementation
+ * Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
  *
-*/
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:
+ * CSysApOfflineModeController controls the offline mode.
+ * It turns OFF RF, BT and WLAN when offline mode is enabled and turns them ON when
+ * Offline mode is disabled
+ *
+ */
 
 
 // INCLUDES
@@ -23,8 +26,10 @@
 #include "SysAp.hrh"
 #include "DosSvrServices.h"
 #include "SysApCenRepController.h"
+#include "sysapcenrepofflinemodeobserver.h"
 #include <startupdomainpskeys.h>
 #include <PSVariables.h>
+#include <wlandevicesettingsinternalcrkeys.h> // For Turning ON/OFF WLAN
 
 
 MSysApOfflineModeController* CreateSysApOfflineModeControllerL( CSysApAppUi& aSysApAppUi )
@@ -53,22 +58,18 @@
 void CSysApOfflineModeController::ConstructL()
     {
     TRACES( RDebug::Print( _L("CSysApOfflineModeController::ConstructL") ) ); 
-    // Check the active profile
-//    TInt activeProfile( iSysApAppUi.ActiveProfileId() );
-//    activeProfile = iSysApAppUi.ActiveProfileId();
-//    if ( activeProfile == KOfflineModeProfileId )
-        {
-        iOfflineModeActive = ETrue;
-        }
+    
+    // create an observer for Offline Mode
+    TRACES( RDebug::Print( _L("CSysApOfflineModeController::ConstructL: trying CSysApCenRepOfflineModeObserver::NewL") ) );
+    iSysApCenRepOfflineModeObserver = CSysApCenRepOfflineModeObserver::NewL(*this );         
+    iOfflineModeActive = iSysApCenRepOfflineModeObserver->IsOffline();
     }
 
 // ----------------------------------------------------------------------------
 // CSysApOfflineModeController::CSysApOfflineModeController() 
 // ----------------------------------------------------------------------------
 CSysApOfflineModeController::CSysApOfflineModeController( CSysApAppUi& aSysApAppUi ) :
-  iSysApAppUi( aSysApAppUi ),
-  iOfflineModeActive( EFalse ),
-  iDoNotActivateRF( EFalse )
+  iSysApAppUi( aSysApAppUi )
     {
 
     }
@@ -79,6 +80,7 @@
 
 CSysApOfflineModeController::~CSysApOfflineModeController()
     {
+    delete iSysApCenRepOfflineModeObserver;
     }
 
 // ----------------------------------------------------------------------------
@@ -87,6 +89,7 @@
 
 TBool CSysApOfflineModeController::OfflineModeActive()
     {
+    TRACES( RDebug::Print( _L("CSysApOfflineModeController::OfflineModeActive returns %d"), iOfflineModeActive ) );
     return iOfflineModeActive;
     }
 
@@ -97,6 +100,7 @@
 void CSysApOfflineModeController::SwitchFromOnlineToOfflineModeL()
     {
     TRACES( RDebug::Print( _L("CSysApOfflineModeController::SwitchFromOnlineToOfflineModeL") ) ); 
+        
     TInt err ( 0 );
 
     // Set state to starter. Note that if state is same as the current state, then nothing happens.
@@ -104,7 +108,6 @@
 
     if ( err )
         {
-//        iSysApAppUi.RestoreProfileL( EFalse );
         iSysApAppUi.ShowUiNoteL( ECannotActivateOfflineModeNote );
         }
     else
@@ -119,8 +122,22 @@
             SetBtActiveBeforeOfflineMode( ETrue );       // Update "BT active" setting
             TRACES( RDebug::Print( _L("CSysApOfflineModeController SetBtPowerStateL returned %d"), err ) );
             }
-        
-        iSysApAppUi.OfflineModeChangedL();
+        /* Turn OFF WLAN */        
+        TInt err( KErrNone );
+        CRepository* repository = CRepository::NewL( KCRUidWlanDeviceSettingsRegistryId );
+        err = repository->Set(KWlanOnOff, 0);
+        delete repository;
+        if(err) 
+		{
+           TRACES( RDebug::Printf("CSysApOfflineModeController::SwitchFromOnlineToOfflineModeL Could not disable WLAN") );
+		    User::Leave(err);
+        }
+        else 
+		{
+            TRACES( RDebug::Printf("CSysApOfflineModeController::SwitchFromOnlineToOfflineModeL WLAN Disabled" ) );
+        }
+		
+		iSysApAppUi.OfflineModeChangedL();
         }
     }
 
@@ -144,7 +161,6 @@
         
     if ( err )
         {
-//        iSysApAppUi.RestoreProfileL( ETrue );
         iSysApAppUi.ShowUiNoteL( ECannotDeactivateOfflineModeNote );
         }
     else
@@ -159,11 +175,25 @@
             TRACES( RDebug::Print( _L("CSysApOfflineModeController SetBtPowerStateL returned %d"), err ) );
             }
         
-        iSysApAppUi.OfflineModeChangedL();
+		        /* Turn ON WLAN */    
+           TInt err( KErrNone );
+           CRepository* repository = CRepository::NewL( KCRUidWlanDeviceSettingsRegistryId );
+           err = repository->Set(KWlanOnOff, 1);
+           delete repository;
+           if(err)
+		   {
+               TRACES( RDebug::Printf("CSysApOfflineModeController::SwitchFromOfflineToOnlineModeL Could not enable WLAN") );
+		       User::Leave(err);
+           }
+           else
+		   {
+               TRACES( RDebug::Printf("CSysApOfflineModeController::SwitchFromOfflineToOnlineModeL WLAN Enabled") );
+           }
 
-        iSysApAppUi.SetNetworkConnectionAllowed( ECoreAppUIsNetworkConnectionAllowed );
-        }
-    }
+        iSysApAppUi.OfflineModeChangedL();
+		iSysApAppUi.SetNetworkConnectionAllowed( ECoreAppUIsNetworkConnectionAllowed );
+		}
+	}
 
 // ----------------------------------------------------------------------------
 // CSysApOfflineModeController::CheckOfflineModeInitialStatusesL()
@@ -204,10 +234,12 @@
          ( iSysApAppUi.BtSapEnabled() && simStatus != ESimNotPresent ) ||     
          simStatus == ESimUsable )
         {
-        iSysApAppUi.ShowQueryL( ESysApLeaveOfflineModeQuery );
+        TRACES( RDebug::Printf("CSysApOfflineModeController::GoOnlineIfOkL SIM check PASSED") );
+        SwitchFromOfflineToOnlineModeL();
         }
     else    
         {
+        TRACES( RDebug::Printf("CSysApOfflineModeController::GoOnlineIfOkL SIM check FALIED" ) );
         iSysApAppUi.ShowUiNoteL( EInsertSimNote );
         }
     }
--- a/coreapplicationuis/SysAp/Src/OfflineModeController/SysApOfflineModeControllerImpl.h	Wed Jun 23 18:22:59 2010 +0300
+++ b/coreapplicationuis/SysAp/Src/OfflineModeController/SysApOfflineModeControllerImpl.h	Tue Jul 06 14:26:20 2010 +0300
@@ -1,19 +1,22 @@
 /*
-* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  The stub implementation of MSysApOfflineModeController.
-*
-*/
+ * Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:
+ * CSysApOfflineModeController controls the offline mode.
+ * It turns OFF RF, BT and WLAN when offline mode is enabled and turns them ON when
+ * Offline mode is disabled
+ *
+ */
 
 
 #ifndef SYSAPOFFLINEMODECONTROLLERIMPL_H
@@ -27,6 +30,7 @@
 // FORWARD DECLARATIONS
 
 class CSysApAppUi;
+class CSysApCenRepOfflineModeObserver;
 
 // CLASS DECLARATION
 /**
@@ -160,6 +164,11 @@
 private:
 
     CSysApAppUi&        iSysApAppUi;
+	
+    /**
+    * Instance of the Offline mode observer. Listens to offline mode changes
+	*/	
+    CSysApCenRepOfflineModeObserver*         iSysApCenRepOfflineModeObserver;
 
     TBool               iOfflineModeActive;
     TBool               iDoNotActivateRF;
--- a/coreapplicationuis/SysAp/Src/SysApAppUi.cpp	Wed Jun 23 18:22:59 2010 +0300
+++ b/coreapplicationuis/SysAp/Src/SysApAppUi.cpp	Tue Jul 06 14:26:20 2010 +0300
@@ -32,6 +32,7 @@
 #include <HbDeviceNotificationDialogSymbian.h>
 //#include <HbDeviceInputDialogSymbian.h>
 #include <hbsymbianvariant.h>
+//#include <hbtextresolversymbian.h>
 #include <UikonInternalPSKeys.h>
 
 //#include "SysApWsClient.h"
@@ -52,8 +53,12 @@
 #include "MSysApBtSapController.h"
 #include "MSysApBtController.h"
 #include "MSysApUsbIndicator.h"
+//#include <hbindicatorsymbian.h>
+//#include <psmclient.h>
+//#include <psmsettings.h>
 #include "sysapkeymanagement.h"
 #include "SysApShutdownImage.h"
+#include "SysApKeySndHandler.h"
 
 #include <settingsinternalcrkeys.h>
 #include <keyguardaccessapi.h>
@@ -65,6 +70,16 @@
 _LIT_SECURITY_POLICY_PASS(KAlwaysPassPolicy);
 _LIT_SECURITY_POLICY_C1(KWriteDeviceDataPolicy, ECapabilityWriteDeviceData);
 const TInt KDelayBeforeNextScanningRound( 1000000 );
+/*
+_LIT(KPsmPlugin,"com.nokia.hb.powersavemodeplugin/1.0");
+_LIT(KPsm,"PSM");
+_LIT(KCharging,"Charging");
+_LIT(KPsmlocalisationfile, "powermanagement_");
+_LIT(KtsfilePath, "z:/resource/qt/translations/");
+_LIT(KlowbatteryIcon,"qtg_small_bt_low_battery.svg");
+_LIT(KbatteryFullIcon,"qtg_status_battery.svg");
+
+*/
 
 // ============================ MEMBER FUNCTIONS ==============================
 
@@ -204,6 +219,7 @@
     iActiveProfileBeforeOfflineMode = iSysApCenRepController->GetInt( KCRUidCoreApplicationUIsSysAp, KSysApProfileBeforeOfflineMode );    
            
     iSysApFeatureManager->FeatureVariationCheckDone();        
+    // iHbIndicatorSymbian = CHbIndicatorSymbian::NewL();
     
     TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL: trying CSysApLightsController::NewL()") ) );
     iSysApLightsController = CSysApLightsController::NewL( *this,
@@ -228,13 +244,24 @@
         TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL : CSysApKeyManagement::NewL returns error=%d"), keyManagementErr ) );
         }
     
+    // Initialize animdll for handling side volume keys
+    // (needed before normal mode in case emergency number is dialed from PIN query)
+    iSysApKeySndHandler = CSysApKeySndHandler::NewL(iEikonEnv->WsSession());
     iKeyguardController = CKeyguardAccessApi::NewL();
     TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL: trying CSysApShutdownImage::NewL()") ) );
     iSysApShutdownImage = CSysApShutdownImage::NewL();//NULL; //
     
+    // Initialize nsps handler. Needed for proper lights control during PIN query.
+    TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL: trying CSysApNspsHandler::NewL") ) );
+    iSysApNspsHandler = CSysApNspsHandler::NewL( iEikonEnv->WsSession(), iSysApShutdownImage->ShutdownCoeControlWindow() );
+
     RProperty::Define( KPSUidCoreApplicationUIs,KCoreAppUIsPowerMenuCustomDialogStatus, RProperty::EInt, KAlwaysPassPolicy, KWriteDeviceDataPolicy );
     RProperty::Set( KPSUidCoreApplicationUIs, KCoreAppUIsPowerMenuCustomDialogStatus, ECoreAppUIsPowerMenuCustomDialogUninitialized );
     
+
+                    
+    // TBool result = HbTextResolverSymbian::Init(KPsmlocalisationfile, KtsfilePath);
+    
     TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL: END") ) );    
     }
 
@@ -247,6 +274,8 @@
     TRACES( RDebug::Print( _L("CSysApAppUi::FreeResources") ) );
     delete iSysApBatteryInfoController;
     delete iSysApPsmController;
+    //delete iVariantAccState; 
+
     delete iSysApAudioRoutingObserver;
 
     if ( iSapTimer )
@@ -282,7 +311,7 @@
     
     delete iSysApUsbIndicatorController;
     delete iKeyguardController;
-    
+    // delete iHbIndicatorSymbian; 
     delete iSysApKeyManagement;
     iSysApKeyManagement = NULL;
     
@@ -377,15 +406,20 @@
 
     UpdateBatteryBarsL( state );   
     DoSwStateNormalConstructionL();
-    HandleAccessoryProfileInStartupL();
+    HandleAccessoryProfileInStartupL();       
+   
+    if ( !iSysApPsmController ) // created here if first state change has not occurred yet
+       {
+       iSysApPsmController = CSysApPsmController::NewL( *this );        
+       }
 
     if ( iSysApPsmController )
-        {
+       {
         if ( iCharging ) // if charger is connected on boot PSM queries may need to be shown
-            {
-            HandleChargingStatusL( StateOfProperty( KPSUidHWRMPowerState, KHWRMChargingStatus ) );
-            }
+        {
+         HandleChargingStatusL( StateOfProperty( KPSUidHWRMPowerState, KHWRMChargingStatus ) );
         }
+       }
     
     TInt batteryStatus = StateOfProperty( KPSUidHWRMPowerState, KHWRMBatteryStatus );
     TRACES( RDebug::Print(_L("CSysApAppUi::HandleUiReadyAfterBootL: batteryStatus %d" ), batteryStatus ) );
@@ -434,11 +468,11 @@
             iSysApPsmController = CSysApPsmController::NewL( *this );        
             }
 
-        // in charger boot explicitly disable partial power save mode
+        // in charger boot explicitly disable  power save mode
         if ( aSwState == RStarterSession::ECharging )
             {
             iSysApPsmController->ChargerConnected();
-            iSysApPsmController->DoEnablePartialPsm( EFalse ); // disable partial power save now
+            iSysApPsmController->DoEnablePartialPsm( EFalse ); // disable  power save now
             }
         }
 
@@ -496,6 +530,7 @@
       {
         FreeResources();
       }
+    delete iSysApStartupController;
     }
         
 TBool CSysApAppUi::ResourcesFreed() const
@@ -768,7 +803,9 @@
         }
 #endif // SYSAP_USE_STARTUP_UI_PHASE
 
+#if 0 // Not used as of now
     SetHacIndicatorL();
+#endif //0	
     }
 
 // ----------------------------------------------------------------------------
@@ -1582,14 +1619,14 @@
     switch ( aStatus )
         {
         case MSysApPsmControllerNotifyCallback::EPsmActivationComplete:
-            UpdateBatteryBarsL( StateOfProperty( KPSUidHWRMPowerState, KHWRMBatteryLevel ) );
-            ShowUiNoteL( EPowerSaveModeActivated );
-            break;
+             UpdateBatteryBarsL( StateOfProperty( KPSUidHWRMPowerState, KHWRMBatteryLevel ) );
+             ShowUiNoteL( EPowerSaveModeActivated );
+             break;
         
         case MSysApPsmControllerNotifyCallback::EPsmDeactivationComplete:
-            UpdateBatteryBarsL( StateOfProperty( KPSUidHWRMPowerState, KHWRMBatteryLevel ) );
-            ShowUiNoteL( EPowerSaveModeDeactivated );
-            break;
+             UpdateBatteryBarsL( StateOfProperty( KPSUidHWRMPowerState, KHWRMBatteryLevel ) );
+             ShowUiNoteL( EPowerSaveModeDeactivated );
+             break;
             
         case MSysApPsmControllerNotifyCallback::EPsmActivationFailed:
             ShowUiNoteL( ECannotActivatePowerSaveMode );
@@ -1807,6 +1844,7 @@
             {
             iSysApPsmController->BatteryLow( ETrue );
             
+                       
             if ( iSysApPsmController->ShowActivateQuery())
                 {
                 // show activation query, replaces the first battery low query
@@ -1823,16 +1861,16 @@
         else
             {
             //Display Battery Low note.
-            ShowUiNoteL( EBatteryLowNote );    
+            ShowUiNoteL( EBatteryLowNote );     
             }            
         }
-    
+        
     if ( iSysApBatteryInfoController )
-        {
-        iSysApBatteryInfoController->BatteryStatusUpdated( aValue );
-        }
-            
+    {
+     iSysApBatteryInfoController->BatteryStatusUpdated( aValue );
     }
+      
+   }
 
 // ----------------------------------------------------------------------------
 // CSysApAppUi::ShowUiNoteL( const TSysApNoteIds aNote ) const
@@ -1895,14 +1933,24 @@
                 break;
             case EBatteryFullUnplugChargerNote:
                 {
-                  iSysApLightsController->BatteryEmptyL( ETrue );
-                  _LIT(KPowerPressKey,"Charging complete. Unplug charger to save energy.");
-                  HBufC* aString = HBufC16::NewLC(200);
+                /*	
+                TRACES( RDebug::Print( _L("CSysApWsClient::RunL(): Key EEventKeyUp 01") ) ); 
+                iSysApLightsController->BatteryEmptyL( ETrue );
+                 _LIT(KunplugCharger,"txt_power_dpopinfo_unplug_charger_to_save_energy");                 
+                 HBufC* unplugCharger = HbTextResolverSymbian::LoadL(KunplugCharger);
+                 _LIT(KbatteryFull,"txt_power_management_dpophead_100_full");
+                 HBufC* batteryFull = HbTextResolverSymbian::LoadL(KbatteryFull);
+                 CHbDeviceNotificationDialogSymbian::NotificationL(KbatteryFullIcon,*unplugCharger,*batteryFull);  
+                 */
+                 
+                 iSysApLightsController->BatteryEmptyL( ETrue );
+                 _LIT(KPowerPressKey,"Charging complete. Unplug charger to save energy.");
+                 HBufC* aString = HBufC16::NewLC(200);
                  TPtrC aStringPointer = aString->Des();
-                  aStringPointer.Set(KPowerPressKey);
+                 aStringPointer.Set(KPowerPressKey);
                  TRACES( RDebug::Print( _L("CSysApWsClient::RunL(): Key EEventKeyUp 01") ) );   
                  ShowExampleUiNoteL( aStringPointer );
-                 CleanupStack::PopAndDestroy(); // aString
+                 CleanupStack::PopAndDestroy(); // aString     
                  }
                 break;
             case EUnplugChargerNote:
@@ -1963,7 +2011,6 @@
         if ( iCharging && !iSysApPsmController->ChargerConnected() ) // first time after charger connection
             {
             iSysApPsmController->ConnectCharger( ETrue );
-            
             if ( iSysApPsmController->ShowDeactivateQuery() )
                 {
                 ShowQueryL( ESysApBattChargingPowerSavingQuery );
@@ -1973,7 +2020,7 @@
             else
                 {
                 iSysApPsmController->DoEnablePartialPsm( EFalse );
-                }                
+                }              
             }
         else if ( aValue == EChargingStatusNotConnected )
             {
@@ -2103,11 +2150,12 @@
             }            
         }
         
-    if ( iSysApBatteryInfoController )        
+       if ( iSysApBatteryInfoController )        
         {
-        iSysApBatteryInfoController->BatteryLevelUpdatedL();
+         iSysApBatteryInfoController->BatteryLevelUpdatedL();
         }
-    }
+        
+     }
 
 
 
@@ -2132,6 +2180,13 @@
         TRACES( RDebug::Print( _L("CSysApAppUi::ShowChargingNoteL KCTsyCallState=%d"), StateOfProperty( KPSUidCtsyCallInformation, KCTsyCallState ) ) );
         if ( showNote ) // Power Mgmt UI spec defines that no Charging note is shown while the phone is ringing/alerting
             {
+            /* 
+            TRACES( RDebug::Print( _L("CSysApWsClient::RunL(): Key EEventKeyUp 01") ) );   
+            _LIT(KChargingNote,"txt_power_management_dblist_charging");
+            HBufC* chargingNote = HbTextResolverSymbian::LoadL(KChargingNote);
+            CHbDeviceNotificationDialogSymbian::NotificationL(KNullDesC,*chargingNote);     
+            */
+             
             _LIT(KChargingNote,"Charging");
             HBufC* aString = HBufC16::NewLC(50);
             TPtrC aStringPointer = aString->Des();
@@ -2539,7 +2594,11 @@
             }
 #endif // _DEBUG
 
-        TKeyResponse response( EKeyWasNotConsumed );
+        TKeyResponse response(EKeyWasNotConsumed);
+        if (response)
+            {
+            //Do nothing:: To supress warning
+            }
         if (iSysApKeyManagement && aKeyEvent.iCode != EKeyPowerOff && aKeyEvent.iCode != 'E')
             {
             response = iSysApKeyManagement->HandleKeyEventL(aKeyEvent, aType );
--- a/coreapplicationuis/SysAp/Src/SysApSimChanged.cpp	Wed Jun 23 18:22:59 2010 +0300
+++ b/coreapplicationuis/SysAp/Src/SysApSimChanged.cpp	Tue Jul 06 14:26:20 2010 +0300
@@ -171,7 +171,7 @@
     if ( simNotOwned )
         {
         ClearRepositoriesL();
-        ClearLogsL();
+//        ClearLogsL();
         }
     }
 // =============== CShareActive MEMBER FUNCTIONS ===============================
--- a/coreapplicationuis/advancedtspcontroller/data/keyevent.rul	Wed Jun 23 18:22:59 2010 +0300
+++ b/coreapplicationuis/advancedtspcontroller/data/keyevent.rul	Tue Jul 06 14:26:20 2010 +0300
@@ -22,9 +22,9 @@
             />
             
             <Tsp
-            routingTable='01'            
+            routingTable='01'           
+	    ruleActiveAudio='00' 
             ruleForeground='01'
-            ruleActiveAudio='00'
             ruleLastPlayedAudio='03'
             ruleDefaultApp='02'
             defaultApplicationPhone='100058B3'
@@ -113,9 +113,8 @@
             ruleActiveAudio='00'
             ruleLastPlayedAudio='03'
             ruleForeground='01' 
-            ruleDefaultApp='02'
-            defaultApplicationPhone='100058B3'
-            transparentApplicationBTAudioMan='10208971'
+	    ruleLaunchDefaultApp='04'
+            defaultLaunchApp='102072C3'
             />
             
             <Tsp
@@ -130,7 +129,6 @@
             ruleLastPlayedAudio='03'
             ruleDefaultApp='02'
             defaultApplicationPhone='100058B3'
-            transparentApplicationBTAudioMan='10208971'
 	    />
             
             <Tsp
--- a/coreapplicationuis/advancedtspcontroller/group/RemConTspController.mmp	Wed Jun 23 18:22:59 2010 +0300
+++ b/coreapplicationuis/advancedtspcontroller/group/RemConTspController.mmp	Tue Jul 06 14:26:20 2010 +0300
@@ -29,7 +29,8 @@
 SOURCE          remcontspcontrollermain.cpp
 SOURCE          remcontspcontroller.cpp
 SOURCE          remconidlelistener.cpp
-SOURCE          remconeventtable.cpp
+SOURCE          remconeventtable.cpp 
+SOURCE          tsptriggerevents.cpp
 
 START RESOURCE  ../data/10282CD5.rss
 target          advancedtspcontroller.rsc
--- a/coreapplicationuis/advancedtspcontroller/inc/remcontspcontroller.h	Wed Jun 23 18:22:59 2010 +0300
+++ b/coreapplicationuis/advancedtspcontroller/inc/remcontspcontroller.h	Tue Jul 06 14:26:20 2010 +0300
@@ -29,9 +29,10 @@
 #include <cfclient.h>
 #include <cflistener.h>
 #include <AudioClientsListPSData.h>
+#include <remcon/clientinfo.h>
 #include "remconidlelistener.h"
 #include "remconeventtable.h"
-
+#include "tsptriggerevents.h"
 // CONSTANTS
 
 // MACROS
@@ -57,7 +58,10 @@
 class CRemConTspController : public CRemConTargetSelectorPlugin,
                  public MRemConTargetSelectorPluginInterfaceV2,
                  public MRemConTargetSelectorPluginInterfaceV3,
-			     public MCFListener
+                 public MRemConTargetSelectorPluginInterfaceV4,
+                 public MRemConTargetSelectorPluginInterfaceV5,
+			     public MCFListener,
+                 public MTspRulesTriggerObserver
 	{
 	public:		// Constructors and destructor
 		
@@ -243,6 +247,85 @@
                 const TClientInfo& aSender,
                 const TRemConAddress& aConnection);
         
+        /**
+        Called by RemCon to get the TSP to permit an incoming command. This is called
+        if the bearer has provided a target client for the command.  
+        
+        The implementor should decide if they wish to allow this command and then call
+        IncomingCommandPermitted on the observer with a suitable error. 
+        
+        @param aInterfaceUid The UID of the client interface.
+        @param aOperationId The operation ID of the command.
+        @param aClient a TClientInfo referring to the selected client
+        */
+        virtual void PermitIncomingCommand(
+            TUid aInterfaceUid,
+            TUint aOperationId, 
+            const TClientInfo& aClient);
+        
+        /**
+        Called by RemCon to get the TSP to permit an incoming Notify. This is called
+        if the bearer has provided a target client for the Notify.  
+        
+        The implementor should decide if they wish to allow this Notify and then call
+        IncomingNotifyPermitted on the observer with a suitable error. 
+        
+        @param aInterfaceUid The UID of the client interface.
+        @param aOperationId The operation ID of the Notify.
+        @param aClient a TClientInfo referring to the selected client
+        */
+        virtual void PermitIncomingNotify(
+            TUid aInterfaceUid,
+            TUint aOperationId, 
+            const TClientInfo& aClient);
+
+        /** 
+        Called by RemCon when a bearer that can address commands wishes to
+        inform the system that there has been a remote user action to 
+        select a different addressed client.
+        
+        The bearer will then route addressed commands to this client until
+        such time as SetRemoteAddressedClient is called again or the TSP
+        calls SetLocalAddressedClient.
+        
+        @param aBearerUid The bearer that has changed its addressed client
+        @param aClient The RemCon client that is now selected by the bearer
+        */
+        virtual void SetRemoteAddressedClient(const TUid& aBearerUid, 
+                const TClientInfo& aClient);
+        /** Called by RemCon when a new target client has connected.
+         
+         @aClientInfo The information about the new client.
+         */
+        void TargetClientAvailable(const TClientInfo& aClientInfo);
+        
+        /** Called by RemCon when a target client has disconnected. 
+         
+         @aClientInfo The information about the client that has disconnected.
+         */
+        void TargetClientUnavailable(const TClientInfo& aClientInfo);
+        
+        /** Called by RemCon when a bearer wishes to begin being informed when
+        the locally addressed player changes.  Once this function has been called
+        the TSP should inform RemCon via SetLocalAddressedPlayer each time the
+        player to which incoming commands from aBearer would be routed changes.
+        This might occur for example if a new application is launched, or if the
+        foreground application changes, depending on what the TSP's rules are
+        for deciding the target of the incoming message.  These updates should
+        occur until UnregisterLocalAddressedClientObserver is called.
+        
+        @param aBearerUid The bearer that wishes to be informed of updates
+        */
+        TInt RegisterLocalAddressedClientObserver(const TUid& aBearerUid);
+
+        /** Called by RemCon when a bearer wishes to stop being informed of 
+        changes to the local addresse client.
+        
+        @param aBearerUid The bearer that no longer wishes to be informed of updates
+        */
+        TInt UnregisterLocalAddressedClientObserver(const TUid& aBearerUid);
+
+        
 	    // From MCFListener
 	    
 	    /**
@@ -291,6 +374,8 @@
             const TDesC& aSource,
             const TDesC& aType );
             
+        // from MTspRulesTriggerObserver
+        void MtrtoEvaluateRoutingRules();
         /**
         * Gets the foreground application.
         * 
@@ -329,8 +414,9 @@
 	    void GetCorrectClientL(
             TUid aInterfaceUid,
         	TUint aKeyEvent,
-        	TSglQue<TClientInfo>& aClients );
-        
+        	TSglQue<TClientInfo>& aClients,
+        	TBool aLaunchingNewApplicationAllowed);
+
         void SetKeyEventTableL( const CCFActionIndication& aActionToExecute );        
 
         void ActivateApplicationL( const TUid aUid ) const;
@@ -352,12 +438,26 @@
         */
         TBool DeviceLocked() const;
 
-	private:    // Data
-	    
-	    // owned
-		CRemConIdleListener* iIdle;
-		
-		// Interface to P&S key that returns call state
+        /**
+         * Decide if locally addressed client should be updated.
+         */
+        TClientInfo* GetLocalAddressedClient();
+
+private:
+        NONSHARABLE_STRUCT(TClientObserver)
+            {
+        public:
+            TClientObserver(TUid aBearerUid) : iBearerUid(aBearerUid) {};
+        public:
+            TUid iBearerUid;
+            TSglQueLink iClientObserverQueLink;
+            };
+
+private:    // Data
+        // owned
+        CRemConIdleListener* iIdle;
+
+        // Interface to P&S key that returns call state
         RProperty iProperty;
         
         CCFClient* iCFClient;
@@ -371,6 +471,16 @@
         TProcessId iProcessIdActive;
 
         RPointerArray<CRemConEventTable> iArrayOfStoredTables;
+        
+        TSglQue<TClientObserver> iClientObservers;
+        
+        TSglQue<TClientInfo> iAvailableTargets;
+        
+        TSglQue<TClientInfo> iTargetsForAddressing;
+        
+        TClientInfo* iLocalAddressedClient;
+        
+        CTspTriggerEventsWatcher* iTriggerEventsWatcher;
 	
 	public:     // Friend classes
 	
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/coreapplicationuis/advancedtspcontroller/inc/tsptriggerevents.h	Tue Jul 06 14:26:20 2010 +0300
@@ -0,0 +1,104 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Observes changes in the default player that should be used for a bearer
+*/
+
+#include <e32base.h>
+#include <e32property.h>
+#include <w32std.h>
+
+
+NONSHARABLE_CLASS(MTspRulesTriggerObserver)
+    {
+public:
+    virtual void MtrtoEvaluateRoutingRules() = 0;
+    };
+
+NONSHARABLE_CLASS(CActiveAudioClientObserver) : public CActive
+    {
+public:
+    static CActiveAudioClientObserver* NewL(MTspRulesTriggerObserver& aObserver);
+    ~CActiveAudioClientObserver();
+
+private:
+    // from CActive
+    void RunL();
+    void DoCancel();
+    
+    CActiveAudioClientObserver(MTspRulesTriggerObserver& aObserver);
+    void ConstructL();
+
+private:
+    MTspRulesTriggerObserver& iObserver;
+    RProperty iAudioApplication;
+    };
+
+NONSHARABLE_CLASS(CTspClientMapperObserver) : public CActive
+    {
+public:
+    static CTspClientMapperObserver* NewL(MTspRulesTriggerObserver& aObserver);
+    ~CTspClientMapperObserver();
+
+private:
+    // from CActive
+    void RunL();
+    void DoCancel();
+    
+    CTspClientMapperObserver(MTspRulesTriggerObserver& aObserver);
+    void ConstructL();
+
+private:
+    MTspRulesTriggerObserver& iObserver;
+    RProperty iPlayingClients;
+    };
+
+NONSHARABLE_CLASS(CWsEventsObserver) : public CActive
+    {
+public:
+    static CWsEventsObserver* NewL(MTspRulesTriggerObserver& aObserver);
+    ~CWsEventsObserver();
+    
+private:
+    // from CActive
+    void RunL();
+    void DoCancel();
+    
+    CWsEventsObserver(MTspRulesTriggerObserver& aObserver);
+    void ConstructL();
+    
+private:
+    MTspRulesTriggerObserver& iObserver;
+    RWsSession iWsSession;
+    RWindowGroup iWindowGroup;
+    };
+
+NONSHARABLE_CLASS(CTspTriggerEventsWatcher) : public CBase
+    {
+public:
+    static CTspTriggerEventsWatcher* NewL(MTspRulesTriggerObserver& aObserver);
+    ~CTspTriggerEventsWatcher();
+    TInt AddBearer(TUid& aBearerUid);
+    TInt RemoveBearer(TUid& aBearerUid);
+
+private:
+    CTspTriggerEventsWatcher(MTspRulesTriggerObserver& aObserver);
+    void ConstructL();
+
+private:
+    MTspRulesTriggerObserver& iObserver;
+    CActiveAudioClientObserver* iAudioClientObserver;
+    CWsEventsObserver* iWsEventsObserver;
+    CTspClientMapperObserver* iClientMapperObserver;
+    };
+
--- a/coreapplicationuis/advancedtspcontroller/src/remcontspcontroller.cpp	Wed Jun 23 18:22:59 2010 +0300
+++ b/coreapplicationuis/advancedtspcontroller/src/remcontspcontroller.cpp	Tue Jul 06 14:26:20 2010 +0300
@@ -61,6 +61,8 @@
 // LOCAL CONSTANTS AND MACROS
 
 const TUint32 KUid3MusicPlayer = 0x102072C3;
+const TUint32 KUid3PhoneApp = 0x100058B3; 
+const TUint32 KUid3VoiceCmdApp = 0x102818e7;
 
 //#define __MODULE_TEST__
 
@@ -108,9 +110,11 @@
 // -----------------------------------------------------------------------------
 //
 
-CRemConTspController::CRemConTspController( 
-								MRemConTargetSelectorPluginObserver& aObserver )
-:	CRemConTargetSelectorPlugin( aObserver )
+CRemConTspController::CRemConTspController(MRemConTargetSelectorPluginObserver& aObserver )
+    : CRemConTargetSelectorPlugin( aObserver )
+    , iClientObservers(_FOFF(TClientObserver, iClientObserverQueLink))
+    , iAvailableTargets(_FOFF(TClientInfo, iLink))
+    , iTargetsForAddressing(_FOFF(TClientInfo, iLink2))
 	{
 	}
     
@@ -154,6 +158,24 @@
 	    }
     iArrayOfTables.ResetAndDestroy();
     iArrayOfStoredTables.ResetAndDestroy();
+    
+    TClientInfo* clientInfo;
+    while(!iAvailableTargets.IsEmpty())
+        {
+        clientInfo = iAvailableTargets.First();
+        iAvailableTargets.Remove(*clientInfo);
+        delete clientInfo;
+        }
+
+    TClientObserver* clientObserver;
+    while(!iClientObservers.IsEmpty())
+        {
+        clientObserver = iClientObservers.First();
+        iClientObservers.Remove(*clientObserver);
+        delete clientObserver;
+        }
+    iTargetsForAddressing.Reset(); 
+    delete iTriggerEventsWatcher;
 	COM_TRACE_( "[REMCONTSPCONTROLLER] CRemConTspController::~CRemConTspController() - return" );
 	}
 
@@ -186,6 +208,16 @@
 		ret = reinterpret_cast<TAny*>(
 			static_cast<MRemConTargetSelectorPluginInterfaceV3*>(this) );
 		}
+    else if ( aUid == TUid::Uid(KRemConTargetSelectorInterface4) )
+        {
+        ret = reinterpret_cast<TAny*>(
+            static_cast<MRemConTargetSelectorPluginInterfaceV4*>(this) );
+        }
+    else if ( aUid == TUid::Uid(KRemConTargetSelectorInterface5) )
+        {
+        ret = reinterpret_cast<TAny*>(
+            static_cast<MRemConTargetSelectorPluginInterfaceV5*>(this) );
+        }
 	COM_TRACE_1( "[REMCONTSPCONTROLLER] CRemConTspController::GetInterface() this=%d", ret );
 	return ret;
 	}
@@ -338,9 +370,7 @@
 #ifdef _DEBUG	
 	TraceRemconTargets( aClients );
 #endif
-	
-	TRAPD( err, GetCorrectClientL( aInterfaceUid, aOperationId, aClients ) );
-	
+	TRAPD( err, GetCorrectClientL( aInterfaceUid, aOperationId, aClients, ETrue ) );
 	Observer().IncomingCommandAddressed( err );
 	
 	COM_TRACE_( "[REMCONTSPCONTROLLER] CRemConTspController::AddressIncomingCommand() ends" );
@@ -397,6 +427,228 @@
     }
 
 // -----------------------------------------------------------------------------
+// CRemConTspController::PermitIncomingCommand
+// By default, permit all incoming addressed commands.  Check if the command
+// comes from the AVRCP bearer an if so launch the music player.
+// -----------------------------------------------------------------------------
+void CRemConTspController::PermitIncomingCommand(
+    TUid aInterfaceUid,
+    TUint aOperationId, 
+    const TClientInfo& aClient)
+    {
+	(void) aClient;  // Not used. 
+    // Here we need to check the incoming command.  If it is an AVRCP play
+    // command and there is no sensible handler running we should launch the
+    // MPX Music Player.  This is the same as for AddressIncomingCommand.
+    // Check if appropriate handler running
+    if ((aInterfaceUid != TUid::Uid(KRemConCoreApiUid)) ||
+         (aOperationId != ERemConCoreApiPlay) ||
+         GetLocalAddressedClient())
+        {
+        // no action needed, allow commmand
+        Observer().IncomingCommandPermitted(ETrue);
+        }
+     else 
+        {
+        // Launch an appropriate player in playing state. 
+        TRAPD(err, ActivateApplicationL(TUid::Uid(KUid3MusicPlayer)))
+        if(err != KErrNone)
+            {
+
+            }
+
+        //deny this command
+        Observer().IncomingCommandPermitted(EFalse);
+
+        // We will be informed when the MPX music player connects its client 
+        // session.  That will trigger a rules evaluation which will result in
+        // us informing interested bearers of the new local addressed player.
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CRemConTspController::PermitIncomingNotify
+// By default, permit all incoming addressed commands.  Check if the command
+// comes from the AVRCP bearer an if so launch the music player.
+// -----------------------------------------------------------------------------
+void CRemConTspController::PermitIncomingNotify(
+    TUid /*aInterfaceUid*/,
+    TUint /*aOperationId*/, 
+    const TClientInfo& /*aClient*/)
+    {
+    // No reason to stop these, just allow all
+    Observer().IncomingNotifyPermitted(ETrue);
+    }
+
+// -----------------------------------------------------------------------------
+// CRemConTspController::SetRemoteAddressedClient
+// Ignore this event.  We don't use what the remote has selected to influence
+// our routing policy.
+// -----------------------------------------------------------------------------
+void CRemConTspController::SetRemoteAddressedClient(const TUid& /*aBearerUid*/, 
+        const TClientInfo& /*aClient*/)
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CRemConTspController::TargetClientAvailable
+// A new client has connected.  Trigger a rule evaluation to see if we want to switch
+// to this client.
+// -----------------------------------------------------------------------------
+void CRemConTspController::TargetClientAvailable(const TClientInfo& aClientInfo)
+    {
+    COM_TRACE_1("[REMCONTSPCONTROLLER] CRemConTspController::TargetClientAvailable aClientInfo.SecureId=0x%x", aClientInfo.SecureId().iId);
+
+    TClientInfo* clientInfo;
+    TSglQueIter<TClientInfo> iter(iAvailableTargets);
+    
+    while((clientInfo = iter++) != NULL)
+        {
+        if(clientInfo->SecureId() == aClientInfo.SecureId())
+            {
+            // Found a client and clientInfo points to that now. 
+            break; 
+            }
+        }
+    
+    // If clientInfo was not found, create it and add to the available targets queue. 
+    if(!clientInfo)
+        {
+        TClientInfo* newTarget = new TClientInfo();
+        if(newTarget)
+            {
+            newTarget->ProcessId() = aClientInfo.ProcessId();
+            newTarget->SecureId() = aClientInfo.SecureId();
+            
+            // Add to our list of available targets
+            iAvailableTargets.AddLast(*newTarget);
+            }
+        }
+
+    // Re-evaluate what the default addressed player should be if someone is interested to know 
+    if(!iClientObservers.IsEmpty())
+        {
+        MtrtoEvaluateRoutingRules();
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CRemConTspController::TargetClientUnavailable
+// A client has disconnected.  Trigger a rule evaluation to see if our default
+// player has changed.
+// -----------------------------------------------------------------------------
+void CRemConTspController::TargetClientUnavailable(const TClientInfo& aClientInfo)
+    {
+    COM_TRACE_1("[REMCONTSPCONTROLLER] CRemConTspController::TargetClientUnavailable aClientInfo.SecureId=0x%x", aClientInfo.SecureId().iId);
+
+    // Remove this from our list of available targets
+    if(!iAvailableTargets.IsEmpty())
+        {
+        TClientInfo* clientInfo;
+        TSglQueIter<TClientInfo> iter(iAvailableTargets);
+        while((clientInfo = iter++) != NULL)
+            {
+            if(clientInfo->SecureId() == aClientInfo.SecureId())
+                {
+                iAvailableTargets.Remove(*clientInfo);
+                delete clientInfo;
+                break;
+                }
+            }
+        }
+
+    if(!iClientObservers.IsEmpty())
+        {
+        // Re-evaluate what the default addressed player should be if someone is listening. 
+        MtrtoEvaluateRoutingRules();
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CRemConTspController::RegisterLocalAddressedClientObserver
+// A bearer is interested in what the local addressed player is.  Start observing.
+// -----------------------------------------------------------------------------
+TInt CRemConTspController::RegisterLocalAddressedClientObserver(const TUid& aBearerUid)
+    {
+    COM_TRACE_1("[REMCONTSPCONTROLLER] CRemConTspController::RegisterLocalAddressedClientObserver aBearerUid.SecureId=0x%x", aBearerUid.iUid);
+    TInt err = KErrNone;
+    // Add this to our list of bearers interested in the default addressed player
+    TClientObserver* clientObserver = new TClientObserver(aBearerUid);
+
+    if(!clientObserver)
+        {
+        err = KErrNoMemory; 
+        }
+
+    // If this is our first interested bearer kick off the trigger events watcher.
+    // This will let us know if any event occurs that should trigger us to re-evaluate
+    // our addressing rules
+    if(!iTriggerEventsWatcher && err == KErrNone)
+        {
+        TRAP(err, iTriggerEventsWatcher = CTspTriggerEventsWatcher::NewL(*this));
+        if(err != KErrNone)
+            {
+            // If we couldn't create the events watcher the client Observer is not needed either.
+            delete clientObserver;
+            }
+        }
+
+    if(err == KErrNone)
+        {
+        // Finally add the observer to the queue if it's not there yet. 
+        TSglQueIter<TClientObserver> iter(iClientObservers);
+        TClientObserver* obsInQueue;
+        while((obsInQueue = iter++) != NULL)
+            {
+            if(obsInQueue->iBearerUid == aBearerUid)
+                {
+                err = KErrAlreadyExists; 
+                break;
+                }
+            }
+
+        if(!obsInQueue)
+            {
+            iClientObservers.AddLast(*clientObserver);
+            MtrtoEvaluateRoutingRules();
+            }
+        }
+
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CRemConTspController::UnregisterLocalAddressedClientObserver
+// The bearer is no longer interested in observering default client changes.
+// -----------------------------------------------------------------------------
+TInt CRemConTspController::UnregisterLocalAddressedClientObserver(const TUid& aBearerUid)
+    {
+    COM_TRACE_1("[REMCONTSPCONTROLLER] CRemConTspController::UnregisterLocalAddressedClientObserver aBearerUid.SecureId=0x%x", aBearerUid.iUid);
+    // Remove this from our list of bearers interested in the default addressed player.
+    // If there are no interested bearers left then we can stop watching for rules
+    // triggers.
+    TSglQueIter<TClientObserver> iter(iClientObservers);
+    TClientObserver* clientObserver;
+    while((clientObserver = iter++) != NULL)
+        {
+        if(clientObserver->iBearerUid == aBearerUid)
+            {
+            iClientObservers.Remove(*clientObserver);
+	    delete clientObserver;
+            break;
+            }
+        }
+    
+    if(iClientObservers.IsEmpty())
+        {
+        delete iTriggerEventsWatcher;
+        iTriggerEventsWatcher = NULL;
+        }
+    
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
 // CRemConTspController::GetCorrectClientL
 // Defines remote targets to which command will be sent.
 // (other items were commented in a header).
@@ -405,10 +657,12 @@
 void CRemConTspController::GetCorrectClientL(
     TUid aInterfaceUid,
 	TUint aKeyEvent,
-	TSglQue<TClientInfo>& aClients )
+	TSglQue<TClientInfo>& aClients,
+	TBool aLaunchingNewApplicationAllowed)
 	{
 	COM_TRACE_1( "[REMCONTSPCONTROLLER] CRemConTspController::GetCorrectClientL() Start aInterfaceUid %d", aInterfaceUid );
 	COM_TRACE_1( "[REMCONTSPCONTROLLER] CRemConTspController::GetCorrectClientL() Start aKeyEvent %d", aKeyEvent );
+
     TInt numOfTables = iArrayOfTables.Count();
     RArray<TInt> rulesArray;
     CleanupClosePushL( rulesArray );
@@ -513,6 +767,7 @@
             	    TProcessId processId = target->ProcessId();
             	    if( iProcessIdForeground == processId )
             	        {
+                        COM_TRACE_( "[REMCONTSPCONTROLLER] CRemConTspController::GetCorrectClientL() Foreground client found" );
             	        aClients.Reset();
             	        aClients.AddFirst( *target );
             	        found = ETrue;
@@ -613,7 +868,7 @@
             case CRemConEventTable::ELaunchDefaultApp:
                 {
                 COM_TRACE_( "[REMCONTSPCONTROLLER] CRemConTspController::GetCorrectClientL() Launch default application" );                
-                if ( !DeviceLocked() )
+                if ( !DeviceLocked() && aLaunchingNewApplicationAllowed )
                     {
                     TUid defaultLaunchAppUid;
                     
@@ -648,6 +903,9 @@
         else if( rulesArray.Count() - 1 == i )
             {
             COM_TRACE_( "[REMCONTSPCONTROLLER] CRemConTspController::GetCorrectClientL() No client found");
+            // Reset the list to reflect the fact that no clients were found. 
+            // The possible transparent clients will be added still. 
+            aClients.Reset();
             }
         }
 
@@ -657,7 +915,8 @@
         TClientInfo* target = transparentClients[ i ];
         if ( !FindRemconConnection( target->SecureId(), aClients ) ) // Add client only if not already found
             {
-            aClients.AddFirst( *target );
+            // Add to the end of the list, any other client should take priority over the transparent clients. 
+            aClients.AddLast( *target );  
             COM_TRACE_1( "[REMCONTSPCONTROLLER] CRemConTspController::GetCorrectClientL() transparent client 0x%x added", target->SecureId().iId );
             }
         }
@@ -1059,6 +1318,40 @@
     }
 
 // -----------------------------------------------------------------------------
+// CRemConTspController::MtrtoEvaluateRoutingRules
+// Evaluates the TSP's routing rules to determine if the local addressed player
+// has changed, and if so informs interested bearers
+// -----------------------------------------------------------------------------
+void CRemConTspController::MtrtoEvaluateRoutingRules()
+    {
+    COM_TRACE_( "[REMCONTSPCONTROLLER] CRemConTspController::MtrtoEvaluateRoutingRules() - Enter" ); 
+    TClientInfo* localAddressedClient = GetLocalAddressedClient();
+
+    if(!localAddressedClient)
+        {
+        // If there's no suitable client, then there's nothing to do here.   
+        COM_TRACE_( "[REMCONTSPCONTROLLER] CRemConTspController::MtrtoEvaluateRoutingRules() No local addressed client found" ); 
+        return; 
+        }
+
+    if(!iLocalAddressedClient || (localAddressedClient->SecureId() != iLocalAddressedClient->SecureId()))
+        {
+        // Local addressed player has changed (or wasn't set before).  
+        iLocalAddressedClient = localAddressedClient;
+        COM_TRACE_( "[REMCONTSPCONTROLLER] CRemConTspController::MtrtoEvaluateRoutingRules() Local addressed client has changed" ); 
+        TSglQueIter<TClientObserver> iter(iClientObservers);
+        TClientObserver* clientObserver;
+        while((clientObserver = iter++) != NULL)
+            {
+            COM_TRACE_( "[REMCONTSPCONTROLLER] CRemConTspController::MtrtoEvaluateRoutingRules() - informing observer" ); 
+            Observer().SetLocalAddressedClient(clientObserver->iBearerUid, *iLocalAddressedClient);
+            }
+        }
+    COM_TRACE_1( "[REMCONTSPCONTROLLER] CRemConTspController::MtrtoEvaluateRoutingRules() Local addressed client SID = 0x%x",  iLocalAddressedClient->SecureId().iId);
+    COM_TRACE_( "[REMCONTSPCONTROLLER] CRemConTspController::MtrtoEvaluateRoutingRules() - Return" ); 
+    }
+
+// -----------------------------------------------------------------------------
 // CRemConTspController::CreateAfterIdleL
 // Define the contexts when idle state has been loaded.
 // (other items were commented in a header).
@@ -1247,6 +1540,8 @@
             CApaCommandLine* apaCommandLine = CApaCommandLine::NewLC();
             apaCommandLine->SetExecutableNameL( appInfo.iFullName );
             apaCommandLine->SetCommandL( EApaCommandRun );            
+            _LIT8(Kparam, "play");
+            apaCommandLine->SetTailEndL( Kparam );
             apaLsSession.StartApp( *apaCommandLine );
             CleanupStack::PopAndDestroy( apaCommandLine );
             }
@@ -1485,4 +1780,50 @@
     return EFalse;
     }
 
+//----------------------------------------------------------------------------------
+// CRemConTspController::GetLocalAddressedClient
+// Uses TSP rules to determine what local addressed client should be.
+//-----------------------------------------------------------------------------------
+TClientInfo* CRemConTspController::GetLocalAddressedClient()
+    {
+    COM_TRACE_( "[REMCONTSPCONTROLLER] CRemConTspController::GetLocalAddressedClient() Entry");
+    // Create list of available clients to allow re-use of existing rule 
+    // evaluation function, GetCorrectClientL
+    iTargetsForAddressing.Reset();
+    TSglQueIter<TClientInfo> iter(iAvailableTargets);
+    TClientInfo* clientInfo;
+    while((clientInfo = iter++) != NULL)
+        {
+        iTargetsForAddressing.AddLast(*clientInfo);
+        }
+    
+#ifdef _DEBUG   
+    TraceRemconTargets( iTargetsForAddressing );
+#endif
+    
+    TRAPD(err, GetCorrectClientL(TUid::Uid(KRemConCoreApiUid), ERemConCoreApiPlay, iTargetsForAddressing, EFalse));
+    if(iTargetsForAddressing.IsEmpty() || err)
+        {
+        clientInfo = NULL;
+        COM_TRACE_( "[REMCONTSPCONTROLLER] CRemConTspController::GetLocalAddressedClient() No target Found");
+        }
+    else
+        {
+        // We don't want to set the phone application or voice command handler as local addressed client. 
+        // So choose the first item that is neither of those. The clientInfo may be NULL in the end. 
+        TSglQueIter<TClientInfo> localAddressedIter(iTargetsForAddressing);
+        while((clientInfo = localAddressedIter++) != NULL)
+            {
+            if( clientInfo->SecureId() != TSecureId(KUid3PhoneApp) || 
+                clientInfo->SecureId() != TSecureId(KUid3VoiceCmdApp) )
+                {
+                COM_TRACE_1( "[REMCONTSPCONTROLLER] CRemConTspController::GetLocalAddressedClient() Local addressed client SID = %08x",  clientInfo->SecureId().iId);
+                break;
+                }
+            }
+        }
+
+    return clientInfo;
+    }
+
 // End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/coreapplicationuis/advancedtspcontroller/src/tsptriggerevents.cpp	Tue Jul 06 14:26:20 2010 +0300
@@ -0,0 +1,212 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Observes changes in the default player that should be used for a bearer
+*/
+
+#include <AudioClientsListPSKeys.h>
+#include "tsptriggerevents.h"
+#include "RemConDebug.h"
+//-----------------------------------------------------------------------
+// CTspTriggerEventsWatcher
+//-----------------------------------------------------------------------
+CTspTriggerEventsWatcher* CTspTriggerEventsWatcher::NewL(MTspRulesTriggerObserver& aObserver)
+    {
+    CTspTriggerEventsWatcher* self = new(ELeave)CTspTriggerEventsWatcher(aObserver);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+CTspTriggerEventsWatcher::CTspTriggerEventsWatcher(MTspRulesTriggerObserver& aObserver)
+    : iObserver(aObserver)
+    {
+    }
+
+void CTspTriggerEventsWatcher::ConstructL()
+    {
+    // Create WServ event watcher
+    iWsEventsObserver = CWsEventsObserver::NewL(iObserver);
+    
+    // Create observer for audio routing
+    iAudioClientObserver = CActiveAudioClientObserver::NewL(iObserver);
+    
+    // Create observer for TSP client mapper
+    iClientMapperObserver = CTspClientMapperObserver::NewL(iObserver);
+    }
+
+CTspTriggerEventsWatcher::~CTspTriggerEventsWatcher()
+    {
+    delete iAudioClientObserver;
+    delete iWsEventsObserver;
+    delete iClientMapperObserver;
+    }
+
+//-----------------------------------------------------------------------
+// CWsEventsObserver
+//-----------------------------------------------------------------------
+CWsEventsObserver* CWsEventsObserver::NewL(MTspRulesTriggerObserver& aObserver)
+    {
+    CWsEventsObserver* self = new(ELeave)CWsEventsObserver(aObserver);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+CWsEventsObserver::~CWsEventsObserver()
+    {
+    Cancel(); 
+    iWindowGroup.Close(); 
+    iWsSession.Close();
+    }
+
+CWsEventsObserver::CWsEventsObserver(MTspRulesTriggerObserver& aObserver)
+    : CActive(CActive::EPriorityStandard), iObserver(aObserver), iWsSession(), iWindowGroup(iWsSession)
+    {
+    }
+
+void CWsEventsObserver::ConstructL()
+    {
+    // Register to recieve WServ events
+    CActiveScheduler::Add(this);    
+    User::LeaveIfError(iWsSession.Connect());
+    iWindowGroup = RWindowGroup(iWsSession); 
+    User::LeaveIfError(iWindowGroup.Construct(reinterpret_cast<TUint32>(this), EFalse));
+    iWindowGroup.SetOrdinalPosition(-1); 
+    iWindowGroup.DefaultOwningWindow(); 
+    iWindowGroup.EnableReceiptOfFocus(EFalse);    
+    iWindowGroup.EnableGroupListChangeEvents(); // For changes in z-order 
+    iWsSession.EventReady(&iStatus);
+    SetActive(); 
+    }
+
+
+void CWsEventsObserver::RunL()
+    {
+    COM_TRACE_( "[REMCONTSPCONTROLLER] CWsEventsObserver::RunL" );
+    TWsEvent event;
+    iWsSession.GetEvent(event);
+    iWsSession.EventReady(&iStatus);
+    SetActive(); 
+    if(event.Type() == EEventWindowGroupListChanged)
+        {
+        COM_TRACE_( "[REMCONTSPCONTROLLER] CWsEventsObserver::RunL - EEventWindowGroupListChanged" );
+        iObserver.MtrtoEvaluateRoutingRules();
+        }
+    }
+
+void CWsEventsObserver::DoCancel()
+    {
+    iWsSession.EventReadyCancel();
+    }
+
+//-----------------------------------------------------------------------
+// CActiveAudioClientObserver
+//-----------------------------------------------------------------------
+CActiveAudioClientObserver* CActiveAudioClientObserver::NewL(MTspRulesTriggerObserver& aObserver)
+    {
+    CActiveAudioClientObserver* self = new(ELeave)CActiveAudioClientObserver(aObserver);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+CActiveAudioClientObserver::~CActiveAudioClientObserver()
+    {
+    Cancel(); 
+    iAudioApplication.Close();
+    }
+
+CActiveAudioClientObserver::CActiveAudioClientObserver(MTspRulesTriggerObserver& aObserver)
+    : CActive(CActive::EPriorityStandard), iObserver(aObserver)
+    {
+    }
+
+void CActiveAudioClientObserver::ConstructL()
+    {
+    User::LeaveIfError(iAudioApplication.Attach(KPSUidMMFAudioServer, KAudioPolicyApplicationAudioStatePlaying));
+    CActiveScheduler::Add(this);    
+    iAudioApplication.Subscribe(iStatus);
+    SetActive(); 
+    }
+
+
+void CActiveAudioClientObserver::RunL()
+    {
+    // Doesn't matter what the value is - that'll be checked when evaluation
+    // the TSP target rules.  Inform the TSP of the value change and 
+    // re-subscribe.
+    COM_TRACE_( "[REMCONTSPCONTROLLER] CWsEventsObserver::RunL" );
+    iAudioApplication.Subscribe(iStatus);
+    SetActive(); 
+    iObserver.MtrtoEvaluateRoutingRules();
+    }
+
+void CActiveAudioClientObserver::DoCancel()
+    {
+    iAudioApplication.Cancel();
+    }
+
+//-----------------------------------------------------------------------
+// CTspClientMapperObserver
+//-----------------------------------------------------------------------
+CTspClientMapperObserver* CTspClientMapperObserver::NewL(MTspRulesTriggerObserver& aObserver)
+    {
+    CTspClientMapperObserver* self = new(ELeave)CTspClientMapperObserver(aObserver);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+CTspClientMapperObserver::~CTspClientMapperObserver()
+    {
+    Cancel(); 
+    }
+
+CTspClientMapperObserver::CTspClientMapperObserver(MTspRulesTriggerObserver& aObserver)
+    : CActive(CActive::EPriorityStandard), iObserver(aObserver)
+    {
+    }
+
+void CTspClientMapperObserver::ConstructL()
+    {
+    const TUid KTspClientMapperProperty = { 0x10200C70 };
+    const TUint32 KTspClientMapperKeyPlaying = 0x00000001;
+    User::LeaveIfError(iPlayingClients.Attach(KTspClientMapperProperty, KTspClientMapperKeyPlaying));
+    CActiveScheduler::Add(this);    
+    iPlayingClients.Subscribe(iStatus);
+    SetActive(); 
+    }
+
+
+void CTspClientMapperObserver::RunL()
+    {
+    // Doesn't matter what the value is - that'll be checked when evaluating
+    // the TSP target rules.  Inform the TSP of the value change and 
+    // re-subscribe.
+    COM_TRACE_( "[REMCONTSPCONTROLLER] CWsEventsObserver::RunL" );
+    iPlayingClients.Subscribe(iStatus);
+    SetActive(); 
+    iObserver.MtrtoEvaluateRoutingRules();
+    }
+
+void CTspClientMapperObserver::DoCancel()
+    {
+    iPlayingClients.Cancel();
+    }
+
+
--- a/coreapplicationuis/devicepowermenuplugin/docml/powermenu.docml	Wed Jun 23 18:22:59 2010 +0300
+++ b/coreapplicationuis/devicepowermenuplugin/docml/powermenu.docml	Tue Jul 06 14:26:20 2010 +0300
@@ -1,56 +1,70 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <hbdocument context="pwr_grid" version="1.1">
     <widget name="maindialog" type="HbDialog">
-        <rect height="51.79105un" name="geometry" width="49.73134un" x="1.19403un" y="0.44776un"/>
-        <sizehint height="61.79105un" type="PREFERRED" width="49.55224un"/>
-        <widget name="container_1" role="HbDialog:headingWidget" type="HbWidget">
+        <point name="pos" x="1.19403un" y="0.44776un"/>
+        <widget name="container_1" role="HbDialog:contentWidget" type="HbWidget">
             <widget name="Silence" type="HbPushButton">
                 <real name="z" value="2"/>
-                <sizehint height="10.44776un" type="PREFERRED" width="53.5un"/>
                 <string locid="txt_pm_button_silence" name="text" value="Silence"/>
                 <bool name="visible" value="TRUE"/>
                 <string name="state" value="normal"/>
+                <sizepolicy horizontalPolicy="MinimumExpanding" />
             </widget>
             <widget name="label" type="HbLabel">
                 <real name="z" value="4"/>
-                <sizehint height="3.888un" type="PREFERRED" width="53.5un"/>
                 <string locid="txt_pm_setlabel_ringing_volume" name="plainText" value="Ringing volume"/>
+                <sizepolicy horizontalPolicy="MinimumExpanding" />
             </widget>
             <widget name="Volume" type="HbSlider">
                 <integer name="majorTickInterval" value="5"/>
                 <real name="z" value="3"/>
-                <sizehint height="7.61194un" type="PREFERRED" width="53.5un"/>
                 <enums name="orientation" value="Horizontal"/>
                 <integer name="minorTickInterval" value="2"/>
                 <integer name="value" value="30"/>
+                <sizepolicy horizontalPolicy="MinimumExpanding" />
             </widget>
             <widget name="Vibrate" type="HbCheckBox">
-                <sizehint height="9.55224un" type="PREFERRED" width="53.5un"/>
                 <string locid="txt_pm_list_vibrate" name="text" value="Vibrate"/>
+                <sizepolicy horizontalPolicy="MinimumExpanding" />
             </widget>
             <widget name="Offline" type="HbCheckBox">
-                <sizehint height="9.70149un" type="PREFERRED" width="53.5un"/>
                 <string locid="txt_pm_list_offline_airplane_mode" name="text" value="Offline (Airplane Mode)"/>
+                <sizepolicy horizontalPolicy="MinimumExpanding" />
             </widget>
             <widget name="PowerOff" type="HbPushButton">
-                <sizehint height="10.44776un" type="PREFERRED" width="53.5un"/>
                 <string locid="txt_pm_button_power_off" name="text" value="Power Off"/>
                 <string name="state" value="normal"/>
+                <sizepolicy horizontalPolicy="MinimumExpanding" />
             </widget>
             <real name="z" value="0"/>
             <layout type="anchor">
-                <anchoritem dst="Silence" dstEdge="LEFT" spacing="-0un" src="" srcEdge="LEFT"/>
-                <anchoritem dst="Silence" dstEdge="TOP" spacing="-0un" src="" srcEdge="TOP"/>
-                <anchoritem dst="label" dstEdge="LEFT" spacing="-0un" src="" srcEdge="LEFT"/>
-                <anchoritem dst="label" dstEdge="TOP" spacing="10.29851un" src="" srcEdge="TOP"/>
-                <anchoritem dst="Volume" dstEdge="LEFT" spacing="-0un" src="" srcEdge="LEFT"/>
-                <anchoritem dst="Volume" dstEdge="TOP" spacing="14.02985un" src="" srcEdge="TOP"/>
-                <anchoritem dst="Vibrate" dstEdge="LEFT" spacing="-0un" src="" srcEdge="LEFT"/>
-                <anchoritem dst="Vibrate" dstEdge="TOP" spacing="21.9403un" src="" srcEdge="TOP"/>
-                <anchoritem dst="Offline" dstEdge="LEFT" spacing="-0un" src="" srcEdge="LEFT"/>
-                <anchoritem dst="Offline" dstEdge="TOP" spacing="31.49254un" src="" srcEdge="TOP"/>
-                <anchoritem dst="PowerOff" dstEdge="LEFT" spacing="-0un" src="" srcEdge="LEFT"/>
-                <anchoritem dst="PowerOff" dstEdge="TOP" spacing="41.04478un" src="" srcEdge="TOP"/>
+                <anchoritem dst="" dstEdge="LEFT" spacing="-0un" src="Silence" srcEdge="LEFT"/>
+                <anchoritem dst="" dstEdge="RIGHT" spacing="0un" src="Silence" srcEdge="RIGHT"/>
+                <anchoritem dst="" dstEdge="TOP" spacing="0un" src="Silence" srcEdge="TOP"/>
+                
+                <anchoritem dst="" dstEdge="LEFT" spacing="-0un" src="label" srcEdge="LEFT"/>
+                <anchoritem dst="" dstEdge="RIGHT" spacing="0un" src="label" srcEdge="RIGHT"/>
+                <anchoritem dst="Silence" dstEdge="BOTTOM" spacing="-1un" src="label" srcEdge="TOP"/>
+
+
+                <anchoritem dst="" dstEdge="LEFT" spacing="-0un" src="Volume" srcEdge="LEFT"/>
+                <anchoritem dst="" dstEdge="RIGHT" spacing="0un" src="Volume" srcEdge="RIGHT"/>
+                <anchoritem dst="label" dstEdge="BOTTOM" spacing="-1un" src="Volume" srcEdge="TOP"/>
+
+                <anchoritem dst="" dstEdge="LEFT" spacing="-0un" src="Vibrate" srcEdge="LEFT"/>
+                <anchoritem dst="" dstEdge="RIGHT" spacing="0un" src="Vibrate" srcEdge="RIGHT"/>
+                <anchoritem dst="Volume" dstEdge="BOTTOM" spacing="-0un" src="Vibrate" srcEdge="TOP"/>
+
+                <anchoritem dst="" dstEdge="LEFT" spacing="-0un" src="Offline" srcEdge="LEFT"/>
+                <anchoritem dst="" dstEdge="RIGHT" spacing="0un" src="Offline" srcEdge="RIGHT"/>
+                <anchoritem dst="Vibrate" dstEdge="BOTTOM" spacing="-0un" src="Offline" srcEdge="TOP"/>
+
+                <anchoritem dst="" dstEdge="LEFT" spacing="-0un" src="PowerOff" srcEdge="LEFT"/>
+                <anchoritem dst="" dstEdge="RIGHT" spacing="0un" src="PowerOff" srcEdge="RIGHT"/>
+                <anchoritem dst="Offline" dstEdge="BOTTOM" spacing="-1un" src="PowerOff" srcEdge="TOP"/>
+
+                <anchoritem dst="" dstEdge="BOTTOM" spacing="0un" src="PowerOff" srcEdge="BOTTOM"/>
+                                
             </layout>
         </widget>
     </widget>
--- a/coreapplicationuis/devicepowermenuplugin/inc/hbdevicepowermenuwidegt_p.h	Wed Jun 23 18:22:59 2010 +0300
+++ b/coreapplicationuis/devicepowermenuplugin/inc/hbdevicepowermenuwidegt_p.h	Tue Jul 06 14:26:20 2010 +0300
@@ -52,8 +52,6 @@
 private:    
     bool preConstructDialog();
     void constructDialog(const QVariantMap &parameters);
-    void hideEvent(QHideEvent *event);
-    void showEvent(QShowEvent *event);
     void cleanupMemory();
     
 private:
@@ -67,7 +65,6 @@
     void handleVibrationToggled(int aVibrationToggel);
     void handleOfflineToggled(int aOfflineToggel);
     void handlePowerOff(bool aState);
-    //void setDialogWidget(Qt::Orientation);
     void closedialog();
     
 signals:
@@ -92,7 +89,6 @@
     HbCheckBox*			mOffline;                         //Handle for Offline CheckBox
     HbPushButton *		mPowerOffButton;                //Handle for PowerOff Button
     HbDocumentLoader* 	mLoader;                         //Hnadle for Documnet Loader to load docml 
-    //HbMainWindow*       mMainWindow;                    //Handle for mainWindow, used to Catch Orientation changes
     HbTranslator*       mHbTranslator;                  //Translator used for localization; loads translation files
 };
 
--- a/coreapplicationuis/devicepowermenuplugin/src/hbdevicepowermenuwidegt.cpp	Wed Jun 23 18:22:59 2010 +0300
+++ b/coreapplicationuis/devicepowermenuplugin/src/hbdevicepowermenuwidegt.cpp	Tue Jul 06 14:26:20 2010 +0300
@@ -51,6 +51,7 @@
 qreal KVerticalX = 175;
 //width of PowerMenu
 qreal KPMWidth = 360;
+
 /**
  * Constructor
  */
@@ -87,8 +88,7 @@
 HbDevicePowerMenuWidget::~HbDevicePowerMenuWidget()
     {
     TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::Destructor()") ) );
-	delete mLoader;
-	delete mHbTranslator;
+    cleanupMemory();
     }
 
 /**
@@ -266,18 +266,8 @@
         mDialogWidget->setTimeout(HbPopup::NoTimeout);
         mDialogWidget->setDismissPolicy(HbPopup::TapOutside);
         mDialogWidget->setPreferredWidth(KPMWidth);
-        //Sets Dialog position on screen
-/*        
-        HbInstance* instance = HbInstance::instance();
-        mMainWindow = instance->allMainWindows().first();
-        ok = connect(mMainWindow , SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(setDialogWidget(Qt::Orientation)));
-        //This is required to launch menu in right place for very first time
-        setDialogWidget(mMainWindow->orientation());
         
-        Q_ASSERT_X(ok, "Orientation", "Invalid Orientation");
-*/
         connect(mDialogWidget,SIGNAL(aboutToClose()),this, SLOT(closedialog()));
-        
 	    TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::constructDialog:dialogLoaded:End") ) );
 		}
     TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::constructDialog:End") ) );
@@ -338,33 +328,15 @@
 	}
 
 /**
- * Widget is about to hide. 
- * This method is dervied from HBpopUp
- * 
+ * Slot
+ * Widget is about to Close. 
  */
-void HbDevicePowerMenuWidget::hideEvent(QHideEvent *event)
-	{
-	TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::hideEvent:Begin") ) );
-    Q_UNUSED(event);
-    //emit deviceDialogClosed();
-    TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::hideEvent:End") ) );
-	}
-
 void HbDevicePowerMenuWidget::closedialog()
     {
     TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::closedialog:Begin") ) );
     emit deviceDialogClosed();
     TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::closedialog:Begin") ) );
     }
-/**
- * Widget is about to show
- * This method is dervied from HBpopUp
- */
-void HbDevicePowerMenuWidget::showEvent(QShowEvent *event)
-	{
-	TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::showEvent") ) );
-    Q_UNUSED(event);
-	}
 
 /**
  * Slot
@@ -447,6 +419,9 @@
     TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::handleVibrationToggled:End") ) );
 	}
 
+/**
+ * Cleans up memory allocations
+ */
 void HbDevicePowerMenuWidget::cleanupMemory()
     {
     TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::cleanupMemory:Begin") ) );
@@ -461,21 +436,3 @@
     TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::cleanupMemory:End") ) );
     }
 
-/**
- * Slot
- * Sets Dialog position on screen
- */
-/*void HbDevicePowerMenuWidget::setDialogWidget(Qt::Orientation aOrientation)
-    {
-    TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::setDialogWidget:Begin") ) );
-    if (aOrientation == Qt::Vertical)
-        {
-        mDialogWidget->setPreferredPos(QPointF(0,0),HbPopup::TopLeftCorner);
-        }
-    else
-        {
-        mDialogWidget->setPreferredPos(QPointF(KVerticalX,0),HbPopup::TopLeftCorner);
-        }
-    TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::setDialogWidget:End") ) );
-    }*/
-
--- a/package_definition.xml	Wed Jun 23 18:22:59 2010 +0300
+++ b/package_definition.xml	Tue Jul 06 14:26:20 2010 +0300
@@ -145,7 +145,7 @@
         <unit mrp="commonappservices/coreappstest/Group/app-services_CoreAppsTest.mrp" bldFile="commonappservices/coreappstest/Group"/>
       </component>
       <component id="appservicesdocs" name="Application Services Documentation" purpose="development" class="doc">
-        <unit mrp="commonappservices/appservicesdocs/app-services_documentation.mrp"/>
+        <unit mrp="commonappservices/doc_pub/app-services_documentation.mrp"/>
       </component>
       <component id="backuprestorenotification" name="Backup Restore Notification" introduced="8.1" purpose="optional">
         <unit bldFile="commonappservices/backuprestorenotification/group" mrp="commonappservices/backuprestorenotification/group/app-services_BackupRestoreNotification.mrp"/>
--- a/printingsupport/printinguisupport/group/BLD.INF	Wed Jun 23 18:22:59 2010 +0300
+++ b/printingsupport/printinguisupport/group/BLD.INF	Tue Jul 06 14:26:20 2010 +0300
@@ -1,4 +1,4 @@
-// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 1999-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -31,7 +31,7 @@
 // specify the source file followed by its destination here
 // copy will be used to copy the source file to its destination
 // If there's no destination then the source file will be copied
-// to the same name in \epoc32\include
+// to the same name in /epoc32/include
 
 ../inc/PRNINF.H SYMBIAN_MW_LAYER_PUBLIC_EXPORT_PATH(prninf.h)
 ../inc/PRNPREV.H SYMBIAN_MW_LAYER_PUBLIC_EXPORT_PATH(prnprev.h)
Binary file startupservices/Startup/conf/startup.confml has changed
Binary file startupservices/Startup/conf/startup_101F8763.crml has changed
--- a/startupservices/Startup/src/StartupAppUi.cpp	Wed Jun 23 18:22:59 2010 +0300
+++ b/startupservices/Startup/src/StartupAppUi.cpp	Tue Jul 06 14:26:20 2010 +0300
@@ -30,6 +30,7 @@
 #include <starterclient.h>
 #include <hbdevicemessageboxsymbian.h>
 #include "sanimstartupctrl.h"
+#include <apgtask.h>
 
 // USER INCLUDES
 #include "StartupAppUi.h"
@@ -98,6 +99,9 @@
 // ---------------------------------------------------------------------------
 void CStartupAppUi::ConstructL()
     {
+    RThread thread; //increase the thread priority to smooth the animation
+    thread.SetPriority(EPriorityAbsoluteForeground);
+    thread.Close();
     TRACES("CStartupAppUi::ConstructL()");
     TInt flags = EStandardApp;
    BaseConstructL( flags );
@@ -609,12 +613,24 @@
     {
     TRACES("CStartupAppUi::DoStartupEndPart()");
     TRACES("CStartupAppUi::DoStartupEndPart(): STARTUP OK");
-
-
-
-  
-    UpdateStartupUiPhase( EStartupUiPhaseAllDone );
-
+    
+    TBool ftuenabled=EFalse;
+    TInt err=KErrNone;
+#ifndef __WINSCW__
+    TRAP(err,
+            TInt enabled=0;
+            //open cenrep;
+            CRepository *cenrep=CRepository::NewLC(KCRUidStartupConf);
+            //check if ftu is enabled or not
+            User::LeaveIfError(cenrep->Get(KFtuStartupEnabled,enabled));
+            ftuenabled=!!enabled; //make sure we only have a boolean value here
+            CleanupStack::PopAndDestroy(cenrep);
+            );
+#endif     
+    if(!ftuenabled)
+        {
+        UpdateStartupUiPhase( EStartupUiPhaseAllDone );
+        }
 
     TRACES("CStartupAppUi::DoStartupEndPart(): Exit application.");
     iExitTimer->Start( 100000, 100000, TCallBack( DoExitApplication, this ) );
@@ -1244,9 +1260,9 @@
             switch( toState )
                 {
                 case EStartupStartupOK:
-                    iInternalState = EStartupStartupOK;
-                    TRACES("CStartupAppUi::DoNextStartupPhaseL(): InternalState : EStartupStartupOK");
-                    DoStartupEndPart();
+                        iInternalState = EStartupStartupOK;
+                        TRACES("CStartupAppUi::DoNextStartupPhaseL(): InternalState : EStartupInvokeAndWaitForFtu");
+                        DoStartupEndPart();
                     break;
                 case EStartupSystemFatalError:
                     SystemFatalErrorL();
--- a/systemsettings/accindicatorplugin/inc/accindicator.h	Wed Jun 23 18:22:59 2010 +0300
+++ b/systemsettings/accindicatorplugin/inc/accindicator.h	Tue Jul 06 14:26:20 2010 +0300
@@ -48,8 +48,7 @@
 public:
     //from HbIndicatorPluginInterface
     QStringList indicatorTypes() const;
-    bool accessAllowed(const QString &indicatorType,
-                               const HbSecurityInfo *securityInfo) const;   
+    bool accessAllowed(const QString &indicatorType, const QVariantMap &securityInfo) const;   
     HbIndicatorInterface* createIndicator(const QString &indicatorType);
     int error() const;
 
--- a/systemsettings/accindicatorplugin/src/accindicator.cpp	Wed Jun 23 18:22:59 2010 +0300
+++ b/systemsettings/accindicatorplugin/src/accindicator.cpp	Tue Jul 06 14:26:20 2010 +0300
@@ -27,7 +27,7 @@
 
 AccIndicatorPlugin::AccIndicatorPlugin() :
 HbIndicatorInterface(IndicatorType,
-        HbIndicatorInterface::GroupPriorityLow,
+        HbIndicatorInterface::SettingCategory,
         InteractionActivated)
     {
     mIndicatorTypes << "com.nokia.accessory.indicatorplugin/1.0";
@@ -75,8 +75,7 @@
 // this plugin it always returns true.
 // ----------------------------------------------------------------------------
 
-bool AccIndicatorPlugin::accessAllowed(const QString &indicatorType,
-    const HbSecurityInfo *securityInfo) const
+bool AccIndicatorPlugin::accessAllowed(const QString &indicatorType,const QVariantMap &securityInfo) const
     {
     Q_UNUSED(indicatorType)
     Q_UNUSED(securityInfo)
@@ -129,7 +128,7 @@
             return type;
             }
         //for displaying the icon in indicator.
-        case DecorationNameRole:
+        case MonoDecorationNameRole:
             {
             QString iconName;
             if(mAccType == KPCWired || mAccType == KPCUSB)
--- a/systemsettings/group/bld.inf	Wed Jun 23 18:22:59 2010 +0300
+++ b/systemsettings/group/bld.inf	Tue Jul 06 14:26:20 2010 +0300
@@ -24,7 +24,6 @@
 PRJ_MMPFILES
 
 #include "../gssensorplugin/group/bld.inf"
-#include "../GSAccessoryPlugin/group/bld.inf"
 
 PRJ_TESTMMPFILES
 
--- a/tzpcside/tzcompiler/group/BLD.INF	Wed Jun 23 18:22:59 2010 +0300
+++ b/tzpcside/tzcompiler/group/BLD.INF	Tue Jul 06 14:26:20 2010 +0300
@@ -1,4 +1,4 @@
-// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 1999-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -30,7 +30,7 @@
 ../Release/TzIdentities.ini		/epoc32/tools/tz/tzidentities.ini
 
 // TzCompiler User Documentation
-"../documentation/SGL.GT0197.232 App-Services Tz  9.1 How-To Create the Tz Database.doc"	"/epoc32/tools/tz/sgl.gt0197.232 app-services tz  9.1 how-to create the tz database.doc"
+"../doc_pub/SGL.GT0197.232 App-Services Tz  9.1 How-To Create the Tz Database.doc"	"/epoc32/tools/tz/sgl.gt0197.232 app-services tz  9.1 how-to create the tz database.doc"
 
 // Sample Olson's Tz Database Source Files
 ../Release/Data/africa			/epoc32/tools/tz/data/africa
--- a/tzservices/tzserver/group/release.txt	Wed Jun 23 18:22:59 2010 +0300
+++ b/tzservices/tzserver/group/release.txt	Tue Jul 06 14:26:20 2010 +0300
@@ -300,6 +300,6 @@
 Title : First Release of Timezone Server
 
 * First release of the new Time Zone Server.
-* see ..\tz\documentation folder for how-to use the new component
+* see ..\tzserver\doc_pub folder for how-to use the new component
 ============================