--- 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 ¶meters);
- 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
============================