--- a/coreapplicationuis/SysAp/Src/SysApAppUi.cpp Fri Jun 11 13:48:03 2010 +0300
+++ b/coreapplicationuis/SysAp/Src/SysApAppUi.cpp Wed Jun 23 18:22:59 2010 +0300
@@ -14,178 +14,57 @@
* Description: CSysApAppUi implementation.
*
*/
-
-
// INCLUDES
-#include <avkon.hrh>
-#include <avkon.rsg>
-#include <eikon.hrh>
-#include <apgwgnam.h>
-#include <eiksrv.h>
-#include <eikdll.h>
-#include <AknSmallIndicator.h>
-#include <AknBatteryNotify.h>
-#include <AknSignalNotify.h>
-#include <AknGlobalNote.h>
-#include <AknGlobalListQuery.h>
-#include <aknsoundsystem.h>
-#include <apgcli.h>
-
+#include <startupdomainpskeys.h>
+#include "sysapappui.h"
+#include "coreapplicationuisprivatepskeys.h"
+#include <HbDeviceMessageBoxSymbian.h>
+//#include <hbdevicepowermenusymbian.h>
+#include <sacls.h>
+#include <featmgr.h>
+#include <DevEncProtectedPSKey.h>
+#include <ctsydomainpskeys.h>
+#include <secuisystemlock.h>
+#include <apgtask.h>
#include <hwrmpowerstatesdkpskeys.h>
-#include <hwrmdomainpskeys.h>
-
-#include <PSVariables.h>
-#include "coreapplicationuisprivatepskeys.h"
-#include <ctsydomainpskeys.h>
-#include <startupdomainpskeys.h>
-#include <startupdomaincrkeys.h>
+#include <wlaninternalpskeys.h>
+#include <HbDeviceNotificationDialogSymbian.h>
+//#include <HbDeviceInputDialogSymbian.h>
+#include <hbsymbianvariant.h>
+#include <UikonInternalPSKeys.h>
-#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
- #include <ASShdAlarm.h>
-#else
- #include <asshddefs.h>
- #include <ASShdAlarmCal.h>
- #include <asshdalarm.h>
-#endif //SYMBIAN_ENABLE_SPLIT_HEADERS
-
-#include <MProfileEngine.h>
-#include <MProfileName.h>
-#include <MProfilesNamesArray.h>
-#include <MProfile.h>
-#include <StringLoader.h>
-#include <secuisystemlock.h>
-#include <secui.h>
-#include <settingsinternalcrkeys.h>
-
-#include <AknNotifierController.h>
-#include <eikappui.h>
-#include <es_enum.h>
-#include <data_caging_path_literals.hrh>
-#include <eikon.hrh>
-
-#include "SysApSimChanged.h"
-
-#include <SysAp.rsg>
-#include "SysApLightsController.h"
-
+//#include "SysApWsClient.h"
+#include "SysApFeatureManager.h"
+#include "SysApNspsHandler.h"
#include "SysApPubSubObserver.h"
-#include "SysApProfileObserver.h"
-
+#include "sysapdefaultkeyhandler.h"
+#include "SysApStartupController.h"
+#include "MSysApOfflineModeController.h"
+#include "SysApCenRepController.h"
#include "sysapcenreplightsettingsobserver.h"
#include "SysApCenRepLogsObserver.h"
#include "SysApCenRepBTObserver.h"
#include "SysApCenRepHacSettingObserver.h"
-#include "SysApCenRepController.h"
-#include "coreapplicationuisprivatecrkeys.h"
-#include "coreapplicationuisprivatepskeys.h"
-#include <UikonInternalPSKeys.h>
-
-#include "SysApStartupController.h"
-#include "SysApConnectionMonitorObserver.h"
-#include "SysApPowerKeyMenuObserver.h"
-#include "SysApSsSettingsObserver.h"
-#include "SysApAppUi.h"
-#include "SysApShutdownImage.h"
-#include "SysApEtelConnector.h"
-
-#include "SysApApp.h"
-#include "SysApMsgSimMemLowQuery.h"
-#include "SysApNspsHandler.h"
-#include "SysApWaitNote.h"
-#include "SysApConfirmationQuery.h"
-#include "SysApFeatureManager.h"
-#include "SysApSubscriber.h"
-#include "MSysApOfflineModeController.h"
+#include "sysapaudioroutingobserver.h"
+#include "sysapbatteryinfocontroller.h"
+#include "SysApSimChanged.h"
+#include "MSysApBtSapController.h"
#include "MSysApBtController.h"
-#include "MSysApBtSapController.h"
-#include "MSysApLocationPrivacyIndicator.h"
#include "MSysApUsbIndicator.h"
-
-#include <sysap.mbg>
-
-#include "SysApShutdownAnimation.h"
-
-//#include <hwrmfmtx.h>
-//#include <hwrmfmtxdomainpskeys.h>
-//#include <hwrmfmtxdomaincrkeys.h>
-//#include "sysapcenrepfmtxobserver.h"
-
-#include "SysApKeySndHandler.h"
-
-#include <ir_sock.h> // KIrdaPropertyCategory // KIrdaStatus
-
-#include <networkhandlingdomainpskeys.h>
-
-// POC launching
-#include <AiwServiceHandler.h>
-#include <AiwPoCParameters.h>
-
-#include <sacls.h> // KUidPhonePwr
-
-#include <wlaninternalpskeys.h> // WLan indicator
-
-#include <ecom/ecom.h>
#include "sysapkeymanagement.h"
-
-#include "SysApMediatorObserver.h"
+#include "SysApShutdownImage.h"
-#include <SecondaryDisplay/SecondaryDisplaySysApAPI.h>
-#include "aknSDData.h"
-
-#include <AknTaskList.h>
-#include <layoutmetadata.cdl.h>
-
-#include "sysapdefaultkeyhandler.h"
-#include "sysapaudioroutingobserver.h"
-#include "sysapcenrepcallforwardingobserver.h"
-#include "sysapcenrepmsgwaitingobserver.h"
-
-#ifdef RD_MULTIPLE_DRIVE
- #include "sysapdrivelist.h"
- #include "sysapdriveunlockhandler.h"
- #include "sysapdriveejecthandler.h"
-#endif // RD_MULTIPLE_DRIVE
-
-#include "sysappsmcontroller.h"
-#include "sysapbatteryinfocontroller.h"
-
-#include <keylockpolicyapi.h>
+#include <settingsinternalcrkeys.h>
+#include <keyguardaccessapi.h>
+#include <eikdef.h>
+#include <eikenv.h>
-#include <UsbWatcherInternalPSKeys.h> // USB transfer modes
-#include <usbpersonalityids.h>
-#include <smsuaddr.h>
-#include <featmgr.h>
-#include <DevEncProtectedPSKey.h>
-
-// CONSTANTS
-const TInt KPowerKeyMenuSelectionCancelled( -1 );
-const TInt KPowerKeyMenuSelectionSwitchOff( 0 );
+class CHbSymbianVariant;
const TInt KModifierMask( 0 );
-const TInt KDelayBeforeShuttingDownInAlarmAndChargingStates( 500000 );
-const TInt KDelayBeforeShowingGprsSuspendedNote( 500000 );
-const TInt KDelayBeforeNextScanningRound( 1000000 );
-const TInt KActiveProfile( 0 ); //The value of ActiveProfile for accessory default profile selection in GS/SD.
-const TInt KProfileListInitialIndex( 0 );
-const TInt KMaxProfileNameLength( 64 );
-const TInt KTimeToShowShutdownNote( 2000000 ); //2 seconds time for Goodbye note to show before being shutdown
-#ifndef RD_STARTUP_ANIMATION_CUSTOMIZATION
-const TInt KCoefficientToMakeMicroToMilliSeconds = 1000;
-#endif // RD_STARTUP_ANIMATION_CUSTOMIZATION
-
-/* ENABLE ANIMATION: Add id of background image.
- Example: const TInt KBackgroundImageID = EMbmSysapQgn_graf_startup_bg;
- If there is no image defined, clear screen is used.*/
-const TInt KBackgroundImageID = 0;
-#ifndef RD_MULTIPLE_DRIVE
-const TInt32 KAutolockAppUid = 0x100059B5;
-const TInt KFileManagerAppUid = 0x101F84EB;
-#endif // RD_MULTIPLE_DRIVE
-const TInt KCoefficientKhzToMhz = 1000;
-const TInt KDecimalsInMhzFrequency = 2;
-
_LIT_SECURITY_POLICY_PASS(KAlwaysPassPolicy);
_LIT_SECURITY_POLICY_C1(KWriteDeviceDataPolicy, ECapabilityWriteDeviceData);
+const TInt KDelayBeforeNextScanningRound( 1000000 );
// ============================ MEMBER FUNCTIONS ==============================
@@ -193,61 +72,25 @@
// CSysApAppUi::CSysApAppUi()
// ----------------------------------------------------------------------------
-CSysApAppUi::CSysApAppUi() :
- iSysApCenRepLogsObserver( NULL ),
- iSysApCenRepHacSettingObserver( NULL ),
- iSysApPowerKeyMenuObserver( NULL ),
- iSysApShutdownImage( NULL ),
- iSysApConfirmationQuery( NULL ),
- iSysApConfirmationQueryForRestart( NULL ),
- iSignalNotify( NULL ),
-#ifndef RD_MULTIPLE_DRIVE
- iMemoryCardDialog( 0 ),
-#endif // RD_MULTIPLE_DRIVE
- iProfileNote( NULL ),
- iProfileNoteId( 0 ),
- iPowerKeyPopupMenuActive( EFalse ),
- iDisablePowerkeyMenu( EFalse ),
- iDeviceLockEnabled( EFalse ),
- iKeyLockEnabled( EFalse ),
- iShowkeypadActivatedNoteAfterSoftReject( EFalse ),
- iEmergencyCallActive( EFalse ),
- iSimChangedDone( EFalse ),
- iResourcesFreed( EFalse ),
-#ifndef RD_MULTIPLE_DRIVE
- iHideFirstBeep( ETrue ),
-#endif // RD_MULTIPLE_DRIVE
- iShutdownStarted( EFalse ),
- iIgnoreAccessorySpecificProfileChanges( ETrue ),
- iAccessoryJustConnected( EFalse ),
- iHandleNextProfileEvent( ETrue ),
- iActivateBt( EFalse ),
- iDeactivateBt( EFalse ),
- iGprsActivated( EFalse ),
- iGprsSuspended( EFalse ),
- iCallActivated( EFalse ),
- iGprsSuspendedNoteShown( EFalse ),
- iMMCEjectUsed( EFalse ),
-#ifndef RD_MULTIPLE_DRIVE
- iMMCPowerMenuEjectUsed( EFalse ),
- iMMCInserted( EFalse ),
-#endif // RD_MULTIPLE_DRIVE
- iTimer( NULL ),
- iSapTimer( NULL ),
-#ifndef RD_STARTUP_ANIMATION_CUSTOMIZATION
- iAnimTimer( NULL ),
-#endif // RD_STARTUP_ANIMATION_CUSTOMIZATION
- iSysApTimer( NULL ),
-#ifndef RD_STARTUP_ANIMATION_CUSTOMIZATION
- iAnimationShowingTime( 0 ),
-#endif // RD_STARTUP_ANIMATION_CUSTOMIZATION
- iShutdownContinued( EFalse ),
- iSysApAudioRoutingObserver( NULL ),
- iSysApCenRepCallForwardingObserver( NULL ),
- iSysApCenRepMsgWaitingObserver( NULL ),
- iKeyBoardRepeatCount(-1)
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::CSysApAppUi()") ) );
+CSysApAppUi::CSysApAppUi()
+ :iSysApShutdownImage(NULL),
+ iPowerMenuDialog(NULL),
+ iDeviceLockEnabled(EFalse),
+ iKeyLockEnabled(EFalse),
+ iPowerKeyPopupMenuActive(EFalse),
+ iResourcesFreed (EFalse),
+ iShutdownStarted (EFalse),
+ iSysApAudioRoutingObserver (NULL),
+ iSysApBatteryInfoController (NULL),
+ iSysApPsmController(NULL),
+ iSapTimer (NULL),
+ iSysApCenRepLogsObserver (NULL),
+ iSysApUsbIndicatorController(NULL),
+ iKeyguardController (NULL),
+ iKeyLockOnBeforeCall (EFalse),
+ iCheckLongPowerKeyEvent (EFalse)
+ {
+ TRACES( RDebug::Print( _L("CSysApAppUi::CSysApAppUi()") ) );
}
// ----------------------------------------------------------------------------
@@ -257,61 +100,59 @@
void CSysApAppUi::ConstructL()
{
TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL: START") ) );
- TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL: trying BaseConstructL( EAknEnableSkin )") ) );
- BaseConstructL( EAknEnableSkin );
+ TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL: trying BaseConstructL()") ) );
+ BaseConstructL();
TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL: BaseConstructL() OK") ) );
-
-
- /*SysAp is set as system application (Symbian terminology). This means some special privilege compared
- to other applications. For example it does not get closed when system is asked to close applications
- */
iEikonEnv->SetSystem( ETrue );
iEikonEnv->WsSession().ComputeMode( RWsSession::EPriorityControlDisabled );
-
- static_cast<CAknAppUi*>(iEikonEnv->EikAppUi())->KeySounds()->PushContextL( R_AVKON_SILENT_SKEY_LIST );
-
+
RThread().SetProcessPriority( EPriorityForeground );
-
- /*SysAp does not have any visible Status pane. An exception will be Charging state
- where SysAp shows Status Pane as it is the only running application.
- */
+
TInt mode;
User::LeaveIfError( RProperty::Get( KPSUidStartup, KPSGlobalStartupMode, mode ) );
-
- if( mode == EStartupModeCharging || mode == EStartupModeAlarm )
- {
- SetStatusPaneLayoutL(
- mode == EStartupModeCharging ? ESysApCharging : ESysApAlarm );
-
- SetKeyEventFlags(
- CAknAppUiBase::EDisableSendKeyShort |
- CAknAppUiBase::EDisableSendKeyLong );
- }
- else
- {
- SetStatusPaneLayoutL( ESysApNormal );
- }
-
+ TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL: KPSGlobalStartupMode = %d"), mode ) );
+
+ //SysAp needs to capture PowerKey events because it handles all functionality related to that
+ TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL: trying CEikApplication::RootWin()") ) );
+ RWindowGroup groupWin = iCoeEnv->RootWin();
+ User::LeaveIfError ( iCapturedEKeyPowerOff = groupWin.CaptureKey( EKeyPowerOff, KModifierMask, KModifierMask ) );
+ User::LeaveIfError ( iCapturedEKeyPowerOffUpAndDowns = groupWin.CaptureKeyUpAndDowns( EStdKeyDevice2, KModifierMask, KModifierMask ) );
+
+ TRACES ( RDebug::Print( _L("CSysApAppUi::ConstructL: trying CSysApDefaultKeyHandler::NewL()") ) );
+ iSysApDefaultKeyHandler = CSysApDefaultKeyHandler::NewL(*this);
+
+ // Define P&S keys "owned" by SysAp
+ RProperty::Define( KPSUidUikon, KUikMMCInserted, RProperty::EInt, KAlwaysPassPolicy, KWriteDeviceDataPolicy );
+ //initially assuming that the memory card is not inserted
+ RProperty::Set( KPSUidUikon, KUikMMCInserted, 0 );
+ TDriveInfo driveInfo;
+ TInt driveNumber;
+ TInt err;
+ RFs& fileServer = iEikonEnv->FsSession();
+ for ( driveNumber = EDriveD; driveNumber < EDriveZ; driveNumber++ )
+ {
+ err = fileServer.Drive(driveInfo,driveNumber);
+ if(driveNumber == EDriveF && err == KErrNone && driveInfo.iType == EMediaHardDisk && driveInfo.iDriveAtt & KDriveAttRemovable)
+ {
+ TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL: err = %d, driveInfo.iType = %d, driveInfo.iDriveAtt %d, KDriveAttRemovable = %d "),err,driveInfo.iType,driveInfo.iDriveAtt,KDriveAttRemovable) );
+ RProperty::Set( KPSUidUikon, KUikMMCInserted, 1 );
+ break; // Memory card drive found...
+ }
+ }
+
TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL: trying CSysApFeatureManager::NewL()") ) );
iSysApFeatureManager = CSysApFeatureManager::NewL();
-
+
// Setup USB charging detector
- iSysApUsbChargerDetector.EnableUsbCharging(
- iSysApFeatureManager->Supported( KSysApFeatureIdChargerReminderNotes ) &&
- iSysApFeatureManager->Supported( KSysApFeatureIdUsbChargingWithoutReminderNotes ) );
-
- // Construct notifiers that are used frequently or in OOM situations.
- TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL: trying CAknBatteryNotify::NewL()") ) );
- iBatteryNotify = CAknBatteryNotify::NewL();
- TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL: trying CAknSignalNotify::NewL()") ) );
- iSignalNotify = CAknSignalNotify::NewL();
- TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL: trying new ( ELeave ) CSysApMsgSimMemLowQuery") ) );
- iSysApMsgSimMemLowQuery = new( ELeave ) CSysApMsgSimMemLowQuery( iSysApFeatureManager->CoverDisplaySupported() );
-
+ iSysApUsbChargerDetector.EnableUsbCharging(
+ iSysApFeatureManager->Supported( KSysApFeatureIdChargerReminderNotes ) &&
+ iSysApFeatureManager->Supported( KSysApFeatureIdUsbChargingWithoutReminderNotes ) );
+
TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL: trying CSysApPubSubObserver::NewL()") ) );
iSysApPubSubObserver = CSysApPubSubObserver::NewL( *this );
+
RProperty::Define( KPSUidCoreApplicationUIs, KCoreAppUIsPoCIndicator, RProperty::EInt, KAlwaysPassPolicy, KWriteDeviceDataPolicy );
RProperty::Set( KPSUidCoreApplicationUIs, KCoreAppUIsPoCIndicator, ECoreAppUIsPocIndicatorUninitialized );
RProperty::Define( KPSUidCoreApplicationUIs, KCoreAppUIsPoCMissedIndicator, RProperty::EInt, KAlwaysPassPolicy, KWriteDeviceDataPolicy );
@@ -324,43 +165,6 @@
RProperty::Define( KPSUidCoreApplicationUIs, KCoreAppUIsVideoSharingIndicator, RProperty::EInt, KAlwaysPassPolicy, KWriteDeviceDataPolicy );
RProperty::Set( KPSUidCoreApplicationUIs, KCoreAppUIsVideoSharingIndicator, ECoreAppUIsVideoSharingIndicatorUninitialized );
- TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL: trying CSysApAccessoryObserver::NewL()") ) );
- iSysApAccessoryObserver = CSysApAccessoryObserver::NewL( *this );
-
- TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL: trying CSysApCenRepController::NewL()") ) );
- iSysApCenRepController = CSysApCenRepController::NewL();
-
- TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL: trying CSysApCenRepLightSettingsObserver::NewL") ) );
- iSysApCenRepLightSettingsObserver = CSysApCenRepLightSettingsObserver::NewL( *this );
-
- TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL: trying CSysApCenRepBtObserver::NewL") ) );
- iSysApCenRepBtObserver = CSysApCenRepBtObserver::NewL( *this );
-
-/* if ( iSysApFeatureManager->FmTxSupported() )
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL: trying CSysApCenRepFmTxObserver::NewL") ) );
- iSysApCenRepFmTxObserver = CSysApCenRepFmTxObserver::NewL( *this );
- }
-*/
- // Define P&S keys "owned" by SysAp
- RProperty::Define( KPSUidUikon, KUikMMCInserted, RProperty::EInt, KAlwaysPassPolicy, KWriteDeviceDataPolicy );
- //initially assuming that the memory card is not inserted
- RProperty::Set( KPSUidUikon, KUikMMCInserted, 0 );
- TDriveInfo driveInfo;
- TInt driveNumber;
- TInt err;
- RFs& fileServer = iEikonEnv->FsSession();
- for ( driveNumber = EDriveD; driveNumber < EDriveZ; driveNumber++ )
- {
- err = fileServer.Drive(driveInfo,driveNumber);
- if(driveNumber == EDriveF && err == KErrNone && driveInfo.iType == EMediaHardDisk && driveInfo.iDriveAtt & KDriveAttRemovable)
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL: err = %d, driveInfo.iType = %d, driveInfo.iDriveAtt %d, KDriveAttRemovable = %d "),err,driveInfo.iType,driveInfo.iDriveAtt,KDriveAttRemovable) );
- RProperty::Set( KPSUidUikon, KUikMMCInserted, 1 );
- break; // Memory card drive found...
- }
- }
-
RProperty::Define( KPSUidCoreApplicationUIs, KCoreAppUIsHideAlarm, RProperty::EInt, KAlwaysPassPolicy, KWriteDeviceDataPolicy );
RProperty::Define( KPSUidCoreApplicationUIs, KCoreAppUIsDisableKeyguard, RProperty::EInt, KAlwaysPassPolicy, KWriteDeviceDataPolicy );
RProperty::Define( KPSUidCoreApplicationUIs, KCoreAppUIsSoftReject, RProperty::EInt, KAlwaysPassPolicy, KWriteDeviceDataPolicy );
@@ -381,717 +185,741 @@
// Initialize P&S keys "owned" by SysAp
RProperty::Set( KPSUidCoreApplicationUIs, KCoreAppUIsHideAlarm, ECoreAppUIsHideAlarmUninitialized );
-
+
+ TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL: trying CSysApAccessoryObserver::NewL()") ) );
+ iSysApAccessoryObserver = CSysApAccessoryObserver::NewL( *this );
+
+ TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL: trying CSysApCenRepController::NewL()") ) );
+ iSysApCenRepController = CSysApCenRepController::NewL();
+
+ TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL: trying CSysApCenRepLightSettingsObserver::NewL") ) );
+ iSysApCenRepLightSettingsObserver = CSysApCenRepLightSettingsObserver::NewL( *this );
+
+ TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL: trying CSysApCenRepBtObserver::NewL") ) );
+ iSysApCenRepBtObserver = CSysApCenRepBtObserver::NewL( *this );
+
TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL: trying CSysApStartupController::NewL()") ) );
iSysApStartupController = CSysApStartupController::NewL( *this, iSysApFeatureManager->OfflineModeSupported() );
+ iActiveProfileBeforeOfflineMode = iSysApCenRepController->GetInt( KCRUidCoreApplicationUIsSysAp, KSysApProfileBeforeOfflineMode );
+
+ iSysApFeatureManager->FeatureVariationCheckDone();
+
TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL: trying CSysApLightsController::NewL()") ) );
iSysApLightsController = CSysApLightsController::NewL( *this,
iSysApCenRepLightSettingsObserver->GetLightsTimeout(),
iSysApFeatureManager->CoverDisplaySupported() );
-
- TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL: trying CSysApEtelConnector::NewL()") ) );
- iSysApEtelConnector = CSysApEtelConnector::NewL( *this );
-
- //SysAp needs to capture PowerKey events because it handles all functionality related to that
- TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL: trying CEikApplication::RootWin()") ) );
- RWindowGroup groupWin = iCoeEnv->RootWin();
- User::LeaveIfError ( iCapturedEKeyPowerOff = groupWin.CaptureKey( EKeyPowerOff, KModifierMask, KModifierMask ) );
- User::LeaveIfError ( iCapturedEKeyPowerOffUpAndDowns = groupWin.CaptureKeyUpAndDowns( EStdKeyDevice2, KModifierMask, KModifierMask ) );
-
- TRACES ( RDebug::Print( _L("CSysApAppUi::ConstructL: trying CSysApDefaultKeyHandler::NewL()") ) );
- iSysApDefaultKeyHandler = CSysApDefaultKeyHandler::NewL( *this );
-
-
- if ( iSysApFeatureManager->GripNotSupported() )
- {
- RProperty::Set( KPSUidHWRM, KHWRMGripStatus, EPSHWRMGripOpen );
- }
-
-#ifndef RD_MULTIPLE_DRIVE
- if ( iSysApFeatureManager->MmcSupported() )
- {
- iSysApMMCObserver = CSysApMMCObserver::NewL( this, &iEikonEnv->FsSession(), iSysApFeatureManager->MmcHotSwapSupported() );
- }
-#else // RD_MULTIPLE_DRIVE
- iSysApDriveList = CSysApDriveList::NewL( iEikonEnv->FsSession() );
- if ( iSysApFeatureManager->MmcSupported() )
- {
- iSysApMMCObserver = CSysApMMCObserver::NewL(
- iEikonEnv->FsSession(), *iSysApDriveList, *this, iSysApFeatureManager->MmcHotSwapSupported() );
- iSysApDriveUnlockHandler = CSysApDriveUnlockHandler::NewL(
- *iSysApDriveList, *this, iSysApFeatureManager->MemoryCardLockSupported() );
- iSysApDriveEjectHandler = CSysApDriveEjectHandler::NewL(
- *iSysApDriveList, *this, iEikonEnv->FsSession() );
- }
-#endif // RD_MULTIPLE_DRIVE
-
+
+ TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL : trying CreateSysApOfflineModeControllerL()") ) );
+ iSysApOfflineModeController = CreateSysApOfflineModeControllerL( *this );
+
+ TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL : trying DoInitialSwStateCheckL()") ) );
+ iSysApStartupController->DoInitialSwStateCheckL();
+
+ TRACES( RDebug::Print( _L("CCSysApAppUi::ConstructL trying CSysApCenRepHacSettingObserver::NewL") ) );
+ iSysApCenRepHacSettingObserver = CSysApCenRepHacSettingObserver::NewL( *this );
+
//Instantiate the KEF plugin manager
- //Trap constuction, since Sysap may live without iSysApKeyManagement
+ //Trap constuction, since Sysap may live without iSysApKeyManagement
TRAPD(keyManagementErr, iSysApKeyManagement=CSysApKeyManagement::NewL(CCoeEnv::Static()->RootWin(), *this));
if (keyManagementErr)
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL : CSysApKeyManagement::NewL returns error=%d"), keyManagementErr ) );
- }
+ {
+ TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL : CSysApKeyManagement::NewL returns error=%d"), keyManagementErr ) );
+ }
+
+ iKeyguardController = CKeyguardAccessApi::NewL();
+ TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL: trying CSysApShutdownImage::NewL()") ) );
+ iSysApShutdownImage = CSysApShutdownImage::NewL();//NULL; //
+
+ RProperty::Define( KPSUidCoreApplicationUIs,KCoreAppUIsPowerMenuCustomDialogStatus, RProperty::EInt, KAlwaysPassPolicy, KWriteDeviceDataPolicy );
+ RProperty::Set( KPSUidCoreApplicationUIs, KCoreAppUIsPowerMenuCustomDialogStatus, ECoreAppUIsPowerMenuCustomDialogUninitialized );
+
+ TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL: END") ) );
+ }
- iSysApFeatureManager->FeatureVariationCheckDone();
-
- TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL: trying CSysApProfileObserver::NewL()") ) );
- iSysApProfileObserver = CSysApProfileObserver::NewL( *this );
+// ----------------------------------------------------------------------------
+// CSysApAppUi::FreeResources()
+// ----------------------------------------------------------------------------
- TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL : trying MProfileEngine* CreateProfileEngineL()") ) );
- iProfileEngine = CreateProfileEngineL( &( iEikonEnv->FsSession() ) );
+void CSysApAppUi::FreeResources()
+ {
+ TRACES( RDebug::Print( _L("CSysApAppUi::FreeResources") ) );
+ delete iSysApBatteryInfoController;
+ delete iSysApPsmController;
+ delete iSysApAudioRoutingObserver;
- TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL : trying CreateSysApOfflineModeControllerL()") ) );
- iSysApOfflineModeController = CreateSysApOfflineModeControllerL( *this );
-
- TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL : trying DoInitialSwStateCheckL()") ) );
- iSysApStartupController->DoInitialSwStateCheckL();
-
- iActiveProfileBeforeOfflineMode = iSysApCenRepController->GetInt( KCRUidCoreApplicationUIsSysAp, KSysApProfileBeforeOfflineMode );
+ if ( iSapTimer )
+ {
+ iSapTimer->Cancel();
+ delete iSapTimer;
+ }
+ //Powermenu
+ if (iPowerMenuDialog!=NULL)
+ {
+ //PowerMenu already exist
+ delete iPowerMenuDialog;
+ iPowerMenuDialog = NULL;
+ }
+
+ RWindowGroup groupWin = iCoeEnv->RootWin();
+ groupWin.CancelCaptureKey( iCapturedEKeyPowerOff );
+ groupWin.CancelCaptureKeyUpAndDowns( iCapturedEKeyPowerOffUpAndDowns );
+
+ delete iSysApDefaultKeyHandler;
+ delete iSysApCenRepLightSettingsObserver;
+ delete iSysApCenRepBtObserver;
+ delete iSysApCenRepHacSettingObserver;
+ delete iSysApCenRepController;
- // 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());
+ delete iSysApPubSubObserver;
+
+ delete iSysApLightsController;
+ delete iSysApFeatureManager;
+
+ delete iSysApCenRepLogsObserver;
+ delete iSysApOfflineModeController;
+
+ delete iSysApUsbIndicatorController;
+ delete iKeyguardController;
+
+ delete iSysApKeyManagement;
+ iSysApKeyManagement = NULL;
+
+ REComSession::FinalClose();
+ iResourcesFreed = ETrue;
+ TRACES( RDebug::Print( _L("CSysApAppUi::FreeResources:END") ) );
+ }
- // Initialize shutdown image (needed by nspshandler)
- TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL: trying CSysApShutdownImage::NewL()") ) );
- iSysApShutdownImage = CSysApShutdownImage::NewL();
+// ---------------------------------------------------------------------------
+// CStartupAppUi::PrepareToExit()
+// ---------------------------------------------------------------------------
+void CSysApAppUi::PrepareToExit()
+ {
+ TRACES("CSysApAppUi::PrepareToExit()");
+ CEikAppUi::PrepareToExit();
+ }
+
- // 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() );
+// ----------------------------------------------------------------------------
+// CSysApAppUi::StateOfProperty()
+// ----------------------------------------------------------------------------
+TInt CSysApAppUi::StateOfProperty( const TUid& aCategory, const TUint aKey ) const
+ {
+ TInt err( KErrNone );
+ TInt value( 0 );
+ err = RProperty::Get( aCategory, aKey, value );
+ if ( err )
+ {
+ TRACES( RDebug::Print( _L("CSysApAppUi::StateOfProperty. RProperty::Get: err=%d"), err ) );
+ return err;
+ }
+ return value;
+ }
-#ifdef RD_LIGHT_CONTROL_CHANGE
- // NSPS Plugin has been loaded, inform lights controller that in can activate key event forwarding
- iSysApLightsController->KeyEventForwardingReady();
-#endif // RD_LIGHT_CONTROL_CHANGE
+// ----------------------------------------------------------------------------
+// CSysApAppUi::OfflineModeActive()
+// ----------------------------------------------------------------------------
+TBool CSysApAppUi::OfflineModeActive()
+ {
+ if(iSysApOfflineModeController)
+ {
+ return iSysApOfflineModeController->OfflineModeActive();
+ }
+ else
+ {
+ return EFalse;
+ }
+ }
- // Create HAC setting observer now because telephony state may change before entering to normal state
- TRACES( RDebug::Print( _L("CCSysApAppUi::ConstructL trying CSysApCenRepHacSettingObserver::NewL") ) );
- iSysApCenRepHacSettingObserver = CSysApCenRepHacSettingObserver::NewL( *this );
+// ----------------------------------------------------------------------------
+// CSysApAppUi::GoOnlineL()
+// ----------------------------------------------------------------------------
- TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL: END") ) );
+void CSysApAppUi::GoOnlineL( TBool /* aDoProfileChange */ )
+ {
+ if ( iSysApFeatureManager->OfflineModeSupported() )
+ {
+// TRACES( RDebug::Print( _L("CSysApAppUi::GoOnlineL: going from off-line into on-line: aDoProfileChange=%d" ), aDoProfileChange ) );
+ iActivateBt = iSysApOfflineModeController->MustBtBeActivated();
+ iSysApOfflineModeController->SwitchFromOfflineToOnlineModeL();
+ TRACES( RDebug::Print( _L("CSysApAppUi::GoOnlineL: iActivateBt = %d" ), iActivateBt ) );
+ }
}
// ----------------------------------------------------------------------------
-// CSysApAppUi::~CSysApAppUi()
+// CSysApAppUi::GoOfflineL()
+// ----------------------------------------------------------------------------
+
+void CSysApAppUi::GoOfflineL()
+ {
+ if ( iSysApFeatureManager->OfflineModeSupported() )
+ {
+ TRACES( RDebug::Print( _L("CSysApAppUi::GoOfflineL" ) ) );
+ iDeactivateBt = ETrue;
+ iSysApOfflineModeController->SwitchFromOnlineToOfflineModeL();
+ }
+ }
+
+#ifndef SYSAP_USE_STARTUP_UI_PHASE
+// need to configure the above macro.
+#else // SYSAP_USE_STARTUP_UI_PHASE
+
+// ----------------------------------------------------------------------------
+// CSysApAppUi::HandleUiReadyAfterBootL()
+// Called when startup UI activities has been finished
+// ----------------------------------------------------------------------------
+
+void CSysApAppUi::HandleUiReadyAfterBootL()
+ {
+ TRACES( RDebug::Print(_L("CSysApAppUi::HandleUiReadyAfterBootL" ) ) );
+ TInt state( StateOfProperty( KPSUidHWRMPowerState, KHWRMBatteryLevel ) );
+
+ UpdateBatteryBarsL( state );
+ DoSwStateNormalConstructionL();
+ HandleAccessoryProfileInStartupL();
+
+ if ( iSysApPsmController )
+ {
+ if ( iCharging ) // if charger is connected on boot PSM queries may need to be shown
+ {
+ HandleChargingStatusL( StateOfProperty( KPSUidHWRMPowerState, KHWRMChargingStatus ) );
+ }
+ }
+
+ TInt batteryStatus = StateOfProperty( KPSUidHWRMPowerState, KHWRMBatteryStatus );
+ TRACES( RDebug::Print(_L("CSysApAppUi::HandleUiReadyAfterBootL: batteryStatus %d" ), batteryStatus ) );
+ if( batteryStatus == EBatteryStatusLow || batteryStatus == EBatteryStatusEmpty )
+ {
+ // low and empty battery states are informed to the user in device startup
+ HandleBatteryStatusL( batteryStatus );
+ }
+ else if ( iSysApPsmController && !iCharging )
+ {
+ TRACES( RDebug::Print(_L("CSysApAppUi::HandleUiReadyAfterBootL: batteryStatus %d, iCharging %d -> disable partial psm" ), batteryStatus, iCharging ) );
+
+ iSysApPsmController->BatteryLow( EFalse );
+ iSysApPsmController->DoEnablePartialPsm( EFalse );
+ }
+
+ if ( ! iSysApUsbIndicatorController )
+ {
+ TRAPD ( usbErr, iSysApUsbIndicatorController = CreateSysApUsbIndicatorL( *this ) );
+ if ( usbErr )
+ {
+ TRACES( RDebug::Print(_L("CSysApAppUi::HandleUiReadyAfterBootL: error in constructing USB ind. controller %d" ), usbErr ) );
+ }
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CSysApAppUi::DoStateChangedL(const RStarterSession::TGlobalState aSwState)
+// This method is not called after boot has finished.
// ----------------------------------------------------------------------------
+void CSysApAppUi::DoStateChangedL(const RStarterSession::TGlobalState aSwState)
+ {
+ TRACES( RDebug::Print(_L("CSysApAppUi::DoStateChangedL: %d" ), aSwState ) );
+
+ TRAPD( simChangedErr, DoSimChangedFromPreviousBootL() );
+ TRACES( RDebug::Print( _L("CSysApAppUi::DoStateChangedL: simChangedErr = %d" ), simChangedErr ) );
+ simChangedErr = simChangedErr; // suppress 'variable not used' warning
+ LogsObserverL().HandleSimChangedCheckDoneL();
+
+ if ( iSysApFeatureManager->PowerSaveSupported() )
+ {
+ // create controller before checking battery state, so that power saving can be enabled during boot if needed
+ if ( !iSysApPsmController ) // created only in first state change
+ {
+ iSysApPsmController = CSysApPsmController::NewL( *this );
+ }
+
+ // in charger boot explicitly disable partial power save mode
+ if ( aSwState == RStarterSession::ECharging )
+ {
+ iSysApPsmController->ChargerConnected();
+ iSysApPsmController->DoEnablePartialPsm( EFalse ); // disable partial power save now
+ }
+ }
+
+ if ( aSwState == RStarterSession::ECharging || aSwState == RStarterSession::EAlarm )
+ {
+ TInt state( StateOfProperty( KPSUidHWRMPowerState, KHWRMBatteryLevel ) );
+ //Also Charging status will be updated with the following function.
+ UpdateBatteryBarsL( state );
+ }
+
+ if( IsStateNormal() )
+ {
+ TRACES( RDebug::Print(_L("CSysApAppUi::DoStateChangedL to normal state.") ) );
+
+ iSysApBtController = CreateSysApBtControllerL( *this );
+ iSysApBtSapController = CreateSysApBtSapControllerL( *this );
+
+ if ( iActivateBt )
+ {
+ TRACES( RDebug::Print(_L("CSysApAppUi::DoStateChangedL Activating BT" ) ) );
+ SetBtPowerState( ETrue );
+ }
+
+ if ( iDeactivateBt )
+ {
+ TRACES( RDebug::Print(_L("CSysApAppUi::DoStateChangedL Deactivating BT" ) ) );
+ SetBtPowerState( EFalse );
+ }
+
+ if ( !StarterSession().Handle() )
+ {
+ User::Leave( KErrBadHandle );
+ }
+
+/* if ( !KeyLock().Handle() )
+ {
+ User::Leave( KErrBadHandle );
+ }
+*/
+#ifdef __SYSAP_MODULE_TEST
+ ModuleTestShowUiNoteL( _L("SysAp: SW state normal!") );
+#endif
+ }
+
+ // Allow lights
+ iSysApLightsController->AllowLightsOn();
+ }
+
+#endif // SYSAP_USE_STARTUP_UI_PHASE
+
CSysApAppUi::~CSysApAppUi()
{
TRACES( RDebug::Print( _L("~CSysApAppUi() started") ) );
if( !iResourcesFreed )
- {
+ {
FreeResources();
-
- iStarterSession.Close();
-
- }
-
- delete iSysApShutdownImage;
-
-#ifndef RD_STARTUP_ANIMATION_CUSTOMIZATION
- if (iSysApShutdownAnimation)
- {
- RemoveFromStack( iSysApShutdownAnimation );
-#endif // RD_STARTUP_ANIMATION_CUSTOMIZATION
- delete iSysApShutdownAnimation;
-#ifndef RD_STARTUP_ANIMATION_CUSTOMIZATION
- }
-#endif // RD_STARTUP_ANIMATION_CUSTOMIZATION
-
- delete iProfileNote;
-
-#ifndef RD_STARTUP_ANIMATION_CUSTOMIZATION
- if( iAnimTimer )
- {
- iAnimTimer->Cancel();
- }
- delete iAnimTimer;
-#endif // RD_STARTUP_ANIMATION_CUSTOMIZATION
-
- delete iSysApPowerKeyMenuObserver;
-
- delete iSysApStartupController;
-
-#ifdef RD_MULTIPLE_DRIVE
- iInsertedMemoryCards.Close();
- delete iSysApDriveEjectHandler;
- delete iSysApDriveUnlockHandler;
- delete iSysApDriveList;
-#endif // RD_MULTIPLE_DRIVE
-
- TRACES( RDebug::Print( _L("~CSysApAppUi() completed") ) );
+ }
+ }
+
+TBool CSysApAppUi::ResourcesFreed() const
+ {
+ return iResourcesFreed;
}
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::HandleLocationPrivacyIndicatorL()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::HandleLocationPrivacyIndicatorL( const TInt aState )
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::HandleLocationPrivacyIndicatorL() state=%d"), aState ) );
- if ( iSysApFeatureManager->LocationPrivacySupported() )
- {
- // Phase 1. Set all Location Privacy indicators off
- if ( iSysApLocationPrivacyIndicator->iIndicatorIdAcceptAll != KSysApNoIndicator )
- {
- SetIndicatorStateL( iSysApLocationPrivacyIndicator->iIndicatorIdRejectAll, EAknIndicatorStateOff );
- }
- if ( iSysApLocationPrivacyIndicator->iIndicatorIdRejectAll != KSysApNoIndicator )
- {
- SetIndicatorStateL( iSysApLocationPrivacyIndicator->iIndicatorIdRejectAll, EAknIndicatorStateOff );
- }
- if ( iSysApLocationPrivacyIndicator->iIndicatorIdAlwaysAsk != KSysApNoIndicator )
- {
- SetIndicatorStateL( iSysApLocationPrivacyIndicator->iIndicatorIdAlwaysAsk, EAknIndicatorStateOff );
- }
- if ( iSysApLocationPrivacyIndicator->iIndicatorIdIndividualPrivacy != KSysApNoIndicator )
- {
- SetIndicatorStateL( iSysApLocationPrivacyIndicator->iIndicatorIdIndividualPrivacy, EAknIndicatorStateOff );
- }
- // Phase 2. Set the required Location Privacy indicator on
- switch ( aState )
- {
- case EPSLocPrivAcceptAll:
- if ( iSysApLocationPrivacyIndicator->iIndicatorIdAcceptAll != KSysApNoIndicator )
- {
- SetIndicatorStateL( iSysApLocationPrivacyIndicator->iIndicatorIdAcceptAll, EAknIndicatorStateOn );
- }
- break;
- case EPSLocPrivRejectAll:
- if ( iSysApLocationPrivacyIndicator->iIndicatorIdRejectAll != KSysApNoIndicator )
- {
- SetIndicatorStateL( iSysApLocationPrivacyIndicator->iIndicatorIdRejectAll, EAknIndicatorStateOn );
- }
- break;
- case EPSLocPrivAlwaysAsk:
- if ( iSysApLocationPrivacyIndicator->iIndicatorIdAlwaysAsk != KSysApNoIndicator )
- {
- SetIndicatorStateL( iSysApLocationPrivacyIndicator->iIndicatorIdAlwaysAsk, EAknIndicatorStateOn );
- }
- break;
- case EPSLocPrivIndividualPrivacy:
- if ( iSysApLocationPrivacyIndicator->iIndicatorIdIndividualPrivacy != KSysApNoIndicator )
- {
- SetIndicatorStateL( iSysApLocationPrivacyIndicator->iIndicatorIdIndividualPrivacy, EAknIndicatorStateOn );
- }
- break;
- default:
- break;
- }
- }
+void CSysApAppUi::ShowExampleUiNoteL( const TDesC& noteText )const
+ {
+ // QString msg = QString::fromUtf16(aStringPointer.Ptr(),aStringPointer.Length());
+ TRACES( RDebug::Print( _L("CSysApAppUi::ShowExampleUiNoteL:: constructing CHbDeviceMessageBoxSymbian:BeGIN") ) );
+ CHbDeviceMessageBoxSymbian *note = CHbDeviceMessageBoxSymbian::NewL(CHbDeviceMessageBoxSymbian::EInformation);
+ CleanupStack::PushL(note);
+ TRACES( RDebug::Print( _L("CSysApAppUi::ShowExampleUiNoteL:: construction of CHbDeviceMessageBoxSymbian:END") ) );
+ // HbMessageBox *note = new HbMessageBox (HbMessageBox ::MessageTypeInformation);
+ note->SetTextL(noteText);
+ // note->SetTimeout(HbPopup::NoTimeout);
+ note->SetTimeout(5);
+ TRACES( RDebug::Print( _L("CSysApAppUi:: Display of CHbDeviceMessageBoxSymbian::Begin") ) );
+ note->ShowL();
+ TRACES( RDebug::Print( _L("CSysApAppUi:: Display of CHbDeviceMessageBoxSymbian::End") ) );
+ CleanupStack::PopAndDestroy(note);
}
-// ----------------------------------------------------------------------------
-// CSysApAppUi::HandleKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType )
-// ----------------------------------------------------------------------------
-
-TKeyResponse CSysApAppUi::HandleKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType )
+void CSysApAppUi::ExecQueryL( TSysapQuery aQuery, TDes8& aReturn )
{
- if ( ! iShutdownStarted )
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::HandleKeyEventL: aKeyEvent.iCode:%d, aKeyEvent.iScanCode:%d, aType:%d, iIgnoreNextPowerKeyUpEvent:%d, iPowerKeyPopupMenuActive:%d, iLastPowerKeyWasShort:%d, iPowerKeyPopupMenuDismissed:%d"),
- aKeyEvent.iCode, aKeyEvent.iScanCode, aType, iIgnoreNextPowerKeyUpEvent, iPowerKeyPopupMenuActive, iLastPowerKeyWasShort, iPowerKeyPopupMenuDismissed ) );
-
-#ifdef _DEBUG
- // camery latency measurement environment instrumentation, don't remove
- if ( aType == EEventKey && aKeyEvent.iCode == EKeyCamera )
- {
- TRACES( RDebug::Print( _L("e_KEY_EVENT_SENDING 0") ) );
- }
-#endif // _DEBUG
-
- TKeyResponse response( EKeyWasNotConsumed );
- if (iSysApKeyManagement && aKeyEvent.iCode != EKeyPowerOff && aKeyEvent.iCode != 'E')
- {
- response = iSysApKeyManagement->HandleKeyEventL(aKeyEvent, aType );
- }
-
- if( aType == EEventKey )
- {
- switch ( aKeyEvent.iCode )
- {
-#ifdef _DEBUG
- case 'E': //For testing
- Exit();
- break;
-#endif
- case EKeyPowerOff:
- //Short power key press
- iKeyBoardRepeatCount++;
- if( aKeyEvent.iRepeats == 0 )
- {
- TRACES( RDebug::Print(_L("CSysApAppUi::HandleKeyEventL, Short powerkey") ) );
- iLastPowerKeyWasShort = ETrue;
- HandleShortPowerKeyPressedL();
- iIgnoreNextPowerKeyRepeats = EFalse;
- }
- //Long power key press
- else if( aKeyEvent.iRepeats > 0 && iKeyBoardRepeatCount >= iSysApCenRepController->GetInt( KCRUidCoreApplicationUIsSysAp, KSysApPowerkeyRepeatcount ))
- {
- iKeyBoardRepeatCount = -1;
- TRACES( RDebug::Print(_L("CSysApAppUi::HandleKeyEventL, Long powerkey") ) );
- iLastPowerKeyWasShort = EFalse;
- HandleLongPowerKeyPressedL();
- }
- break;
-
- default:
- {
- TKeyResponse response = EKeyWasNotConsumed;
- if (iSysApKeyManagement)
- {
- response = iSysApKeyManagement->HandleKeyEventL(aKeyEvent, aType );
- }
-
- if ( response == EKeyWasNotConsumed ) // none of the plugins consumed the key, offer it to default handling
- {
- iSysApDefaultKeyHandler->HandleKeyEventL( aKeyEvent, aType );
- }
- }
- break;
- }
- }
- else if( aType == EEventKeyUp )
- {
- if( aKeyEvent.iScanCode == EStdKeyDevice2 )
- {
- if ( iIgnoreNextPowerKeyUpEvent )
- {
- if ( !iPowerKeyPopupMenuDismissed ) // If the popup menu has been dismissed, do nothing
- {
- iPowerKeyPopupMenuActive = ETrue;
- iIgnoreNextPowerKeyUpEvent = EFalse;
- }
- }
- else if( iLastPowerKeyWasShort )
- {
- if ( iPowerKeyPopupMenuActive )
- {
- if ( iGlobalListQuery )
- {
- if ( iSysApFeatureManager->NoPowerKeySupported() )
- {
- CancelGlobalListQuery();
- }
- else
- {
- iGlobalListQuery->MoveSelectionDown();
- }
- }
- }
- }
-
- }
- }
-
- TRACES( RDebug::Print( _L("CSysApAppUi::HandleKeyEventL:ended, aKeyEvent.iCode:%d, aKeyEvent.iScanCode:%d, aType:%d, iIgnoreNextPowerKeyUpEvent:%d, iPowerKeyPopupMenuActive:%d, iLastPowerKeyWasShort:%d, iPowerKeyPopupMenuDismissed:%d"),
- aKeyEvent.iCode, aKeyEvent.iScanCode, aType, iIgnoreNextPowerKeyUpEvent, iPowerKeyPopupMenuActive, iLastPowerKeyWasShort, iPowerKeyPopupMenuDismissed ) );
- }
- else // shutdown started
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::HandleKeyEventL: aKeyEvent.iCode:%d, aKeyEvent.iScanCode:%d, aType:%d"),
- aKeyEvent.iCode, aKeyEvent.iScanCode, aType ) );
-
- // When shutdown has been started, only device mode key events are passed to plug-in framework
- // This for enabling plug-in activities during shutdown animation
- if ( IsDeviceModeKey( aKeyEvent ) ) // Other key events are not passed, because they must cancel the shutdown animation as stated in UI spefication
- {
- if ( aType == EEventKey && iSysApKeyManagement )
- {
- iSysApKeyManagement->HandleKeyEventL( aKeyEvent, aType );
- }
- }
- #ifdef RD_STARTUP_ANIMATION_CUSTOMIZATION
- else if ( aType == EEventKey && iSysApShutdownAnimation && !iShutdownContinued )
- {
- if ( aKeyEvent.iCode != EKeyPowerOff || iLastPowerKeyWasShort )
- {
- iSysApShutdownAnimation->Cancel();
- NotifyShutdownAnimationSkip();
- }
- }
-
- #endif // RD_STARTUP_ANIMATION_CUSTOMIZATION
-
- TRACES( RDebug::Print( _L("CSysApAppUi::HandleKeyEventL: ended") ) );
- }
- return EKeyWasConsumed;
+ ExecQueryL( aQuery, aReturn, KNullDesC8 );
}
// ----------------------------------------------------------------------------
-// CSysApAppUi::HandleCommandL( TInt aCommand)
+// CSysApAppUi::ExecQueryL
// ----------------------------------------------------------------------------
-
-void CSysApAppUi::HandleCommandL( TInt aCommand )
+//
+void CSysApAppUi::ExecQueryL( TSysapQuery aQuery, TDes8& aReturn, const TDesC8& /*aParam*/ )
{
- TRACES( RDebug::Print( _L("CSysApAppUi::HandleCommandL aCommend: %d"), aCommand ) );
- switch ( aCommand )
+ TRACES( RDebug::Print(_L("CSysApAppUi::ExecQueryL: aQuery=%d"), aQuery ) );
+
+ switch ( aQuery )
{
- case EEikCmdExit: // EAknCmdExit
- Exit();
+ case EGetHwrmLight: // get handle to HWRM client session. Returns CHWRMLight*.
+ {
+ THwrmLightBuf retBuf( iSysApLightsController->GetHwrmLight() );
+ aReturn.Copy( retBuf );
+ }
break;
+
+ case EGetKeylock: // get handle to keylock client session. Returns RAknKeylock2*.
+ {
+ // do nothing
+ }
+ break;
+
+
default:
+ __ASSERT_DEBUG( EFalse, User::Panic( _L("CSysApAppUi::ExecQueryL: Invalid query"), KErrArgument ) );
+ User::Leave( KErrArgument );
break;
}
}
// ----------------------------------------------------------------------------
-// CSysApAppUi::HandleApplicationSpecificEventL(TInt aType,const TWsEvent& aEvent)
+// CSysApAppUi::ExecCommandL
// ----------------------------------------------------------------------------
-
-void CSysApAppUi::HandleApplicationSpecificEventL(TInt aType,const TWsEvent& aEvent)
+//
+void CSysApAppUi::ExecCommandL( TSysapCommand aCommand )
{
- TRACES( RDebug::Print( _L("CSysApAppUi::HandleApplicationSpecificEventL: aType:%d"), aType ) );
+ ExecCommandL( aCommand, KNullDesC8 );
+ }
- CAknAppUi::HandleApplicationSpecificEventL(aType, aEvent);
-
- if ( ResourcesFreed() )
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::HandleApplicationSpecificEventL: discarded, shutting down") ) );
- return;
- }
-
- switch( aType )
+// ----------------------------------------------------------------------------
+// CSysApAppUi::ExecCommandL
+// ----------------------------------------------------------------------------
+//
+void CSysApAppUi::ExecCommandL( TSysapCommand aCommand, const TDesC8& /* aParam */ )
+ {
+ TRACES( RDebug::Print(_L("CSysApAppUi::ExecCommandL: aCommand=%d"), aCommand ) );
+
+ switch ( aCommand )
{
- case EEikKeyLockEnabled:
- iKeyLockEnabled = ETrue;
- iSysApCenRepController->SetInt( KCRUidCoreApplicationUIsSysAp, KSysApKeyguardActive, 1 );
- SetIndicatorStateL( EAknIndicatorKeyguard, EAknIndicatorStateOn );
- iSysApLightsController->KeylockStateChangedL( ETrue );
- break;
- case EEikKeyLockDisabled:
- iKeyLockEnabled = EFalse;
- iSysApCenRepController->SetInt( KCRUidCoreApplicationUIsSysAp, KSysApKeyguardActive, 0 );
- SetIndicatorStateL( EAknIndicatorKeyguard, EAknIndicatorStateOff );
- if (! iDeviceLockEnabled )
- {
- iSysApLightsController->KeylockStateChangedL( EFalse );
- if ( iSysApFeatureManager->MmcHotSwapSupported() )
- {
- if ( StateOfProperty( KPSUidCtsyCallInformation, KCTsyCallState ) != EPSCTsyCallStateRinging && StateOfProperty( KPSUidCtsyCallInformation, KCTsyCallState ) != EPSCTsyCallStateAlerting )
- {
- RunUnlockNotifierL();
- }
- }
- }
- break;
- case EEikKeyLockPowerKeyPressed: //sent when power key is captured by keylockserver
- HandleShortPowerKeyPressedL();
- break;
-
- case EEikKeyLockLightsOnRequest:
- iSysApLightsController->SetLightsOnUnlockNoteL();
- break;
-
- case EEikEcsQueryLights: // emergency note is shown
- iSysApLightsController->SetLightsOnEcsQueryL();
- break;
-
- case EEikSecurityQueryLights: // for device lock security query
- iSysApLightsController->SetLightsOnSecurityQueryL();
+ case EResetKeyguardState: // reset the internal keyguard flags of the SysAp, except for iKeyLockOnBeforeCradle
+ iKeyLockOnBeforeCall = EFalse;
+ iKeyLockOnBeforeAlarm = EFalse;
break;
default:
+ // do nothing in release builds since no harm is done
+ __ASSERT_DEBUG( EFalse, User::Panic( _L("CSysApAppUi::ExecCommandL: Invalid command"), KErrArgument ) );
break;
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CSysApAppUi::TimerExpiredL()
+// ----------------------------------------------------------------------------
+void CSysApAppUi::TimerExpiredL()
+ {
+/*
+ * Not suppported , will take care in wk25
+ * #ifndef RD_MULTIPLE_DRIVE
+ * CloseUIAppsInHotSwapL();
+ * #endif // RD_MULTIPLE_DRIVE
+*/
+ }
+
+
+ // ----------------------------------------------------------------------------
+// CSysApAppUi::KeyLockState() const
+// ----------------------------------------------------------------------------
+
+TBool CSysApAppUi::KeyLockState() const
+ {
+ return iKeyLockEnabled;
+ }
+
+// ----------------------------------------------------------------------------
+// CSysApAppUi::DeviceLockState() const
+// ----------------------------------------------------------------------------
+
+TBool CSysApAppUi::DeviceLockState() const
+ {
+ return iDeviceLockEnabled;
+ }
+
+// ----------------------------------------------------------------------------
+// CSysApAppUi::SysApFeatureManager
+// ----------------------------------------------------------------------------
+
+CSysApFeatureManager& CSysApAppUi::SysApFeatureManager()
+ {
+ __ASSERT_DEBUG( iSysApFeatureManager, User::Panic( _L("iSysApFeatureManager == NULL"), KErrBadHandle ) );
+
+ return *iSysApFeatureManager;
+ }
+
+// ----------------------------------------------------------------------------
+// CSysApAppUi::ActivateKeyeventForwardingForLights()
+// ----------------------------------------------------------------------------
+
+void CSysApAppUi::ActivateKeyeventForwardingForLights(TBool aActivate)
+ {
+ if( iSysApNspsHandler )
+ {
+ if ( aActivate )
+ {
+ iSysApNspsHandler->ActivateKeyeventForwardingForLights();
}
+ else
+ {
+ iSysApNspsHandler->DeActivateKeyeventForwardingForLights();
+ }
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CSysApAppUi::StarterSession()
+// ----------------------------------------------------------------------------
+
+RStarterSession& CSysApAppUi::StarterSession()
+ {
+ if ( !iStarterSession.Handle() )
+ {
+ // All server connections are tried to be made KTriesToConnectServer times because occasional
+ // fails on connections are possible at least on some servers
+ TRACES( RDebug::Print( _L("CSysApAppUi::StarterSession: trying RStarterSession::Connect()") ) );
+ TInt thisTry = 0;
+ TInt err;
+ while ( ( err = iStarterSession.Connect() ) != KErrNone && ( thisTry++ ) <= KTriesToConnectServer )
+ {
+ User::After( KTimeBeforeRetryingServerConnection );
+ }
+
+ if ( err != KErrNone )
+ {
+ // What do in error case?
+ TRACES( RDebug::Print( _L("CSysApAppUi::StarterSession: RStarterSession::Connect() failed with %d"), err ) );
+ }
+ }
+
+ return iStarterSession;
+ }
+
+// ----------------------------------------------------------------------------
+// CSysApAppUi::SetBtPowerState()
+// ----------------------------------------------------------------------------
+TInt CSysApAppUi::SetBtPowerState( TBool aBtState )
+ {
+ if ( iSysApBtController )
+ {
+ return iSysApBtController->SetPowerState( aBtState );
+ }
+ else
+ {
+ return KErrNotReady;
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CSysApAppUi::SetStarterState()
+// ----------------------------------------------------------------------------
+
+TInt CSysApAppUi::SetStarterState( const RStarterSession::TGlobalState aState )
+ {
+ if ( iSysApStartupController->GlobalStateChangeAllowed( aState ) )
+ {
+ TRACES( RDebug::Print( _L("CSysApAppUi::SetStarterState: aState=%d" ), aState ) );
+ return StarterSession().SetState( aState );
+ }
+ else
+ {
+ TRACES( RDebug::Print( _L("CSysApAppUi::SetStarterState: aState=%d - not allowed" ), aState ) );
+ return KErrNone;
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CSysApAppUi::SetNetworkConnectionAllowed()
+// ----------------------------------------------------------------------------
+
+void CSysApAppUi::SetNetworkConnectionAllowed( TCoreAppUIsNetworkConnectionAllowed aNetworkConnectionAllowed )
+ {
+ TRACES( RDebug::Print( _L("CSysApAppUi::SetNetworkConnectionAllowed: status: %d" ), aNetworkConnectionAllowed ) );
+
+ iSysApCenRepController->SetInt( KCRUidCoreApplicationUIs, KCoreAppUIsNetworkConnectionAllowed, (TInt) aNetworkConnectionAllowed );
+
+ // Also set the Symbian PS key used for the same purpose:
+ RProperty::Set(KUidSystemCategory, KUidPhonePwr.iUid, aNetworkConnectionAllowed ? ESAPhoneOn : ESAPhoneOff);
+ }
+
+// ----------------------------------------------------------------------------
+// CSysApAppUi::BluetoothPowerMode()
+// ----------------------------------------------------------------------------
+TInt CSysApAppUi::BluetoothPowerMode() const
+ {
+ return iSysApCenRepBtObserver->BluetoothPowerMode();
+ }
+
+// ----------------------------------------------------------------------------
+// CSysApAppUi::SimSupported()
+// ----------------------------------------------------------------------------
+TBool CSysApAppUi::SimSupported()
+ {
+ return iSysApFeatureManager->SimSupported();
+ }
+
+// ----------------------------------------------------------------------------
+// CSysApAppUi::BtSapEnabled()
+// ----------------------------------------------------------------------------
+
+TBool CSysApAppUi::BtSapEnabled()
+ {
+ if ( iSysApBtSapController )
+ {
+ return iSysApBtSapController->BtSapEnabled();
+ }
+ return EFalse;
}
// ----------------------------------------------------------------------------
-// CSysApAppUi::InitializeStatusPaneAreaL()
+// CSysApAppUi::OfflineModeChangedL()
+// ----------------------------------------------------------------------------
+void CSysApAppUi::OfflineModeChangedL()
+ {
+#ifdef SYSAP_USE_STARTUP_UI_PHASE
+ // if UI is not ready, don't update indicators
+ if ( !UiReady() )
+ {
+ return;
+ }
+#endif // SYSAP_USE_STARTUP_UI_PHASE
+
+ SetHacIndicatorL();
+ }
+
+// ----------------------------------------------------------------------------
+// CSysApAppUi::UiReady()
+//
// ----------------------------------------------------------------------------
-void CSysApAppUi::InitializeStatusPaneAreaL()
+TBool CSysApAppUi::UiReady() const
{
- TRACES( RDebug::Print( _L("CSysApAppUi::InitializeStatusPaneAreaL(): START") ) );
- TInt state( StateOfProperty( KPSUidHWRMPowerState, KHWRMBatteryLevel ) );
-
- //Also Charging status will be updated with the following function.
- UpdateBatteryBarsL( state );
+#ifdef SYSAP_USE_STARTUP_UI_PHASE
+ return iSysApStartupController->UiReady();
+#else // SYSAP_USE_STARTUP_UI_PHASE
+ // if startup UI phase information is not used, global system state normal is handled as UI idle state
+ return IsStateNormal();
+#endif // SYSAP_USE_STARTUP_UI_PHASE
+ }
-#ifdef SYSAP_USE_STARTUP_UI_PHASE
- if ( OfflineModeActive() )
- {
- UpdateSignalBarsL( KAknSignalOffLineMode );
- }
- else
- {
- UpdateSignalBarsL();
- }
-#else
- UpdateSignalBarsL();
-#endif // SYSAP_USE_STARTUP_UI_PHASE
-
- SetSignalIndicatorL();
- SetIhfIndicatorL();
- SetHacIndicatorL();
- LogsObserverL().HandleUiReadyL();
-
- if ( iSysApEtelConnector )
- {
- iSysApEtelConnector->ReadSimSmsStoreStatusInStartup();
- }
- SetEnvelopeIndicatorL();
-
- TRACES( RDebug::Print( _L("CSysApAppUi::InitializeStatusPaneAreaL(): accessories") ) );
-
- TAccMode accessoryState(EAccModeHandPortable);
- if ( iSysApAccessoryObserver )
- {
- accessoryState = iSysApAccessoryObserver->GetAccessoryMode();
- }
+// ----------------------------------------------------------------------------
+// CSysApAppUi::CompleteShutdown()
+// ----------------------------------------------------------------------------
- if( accessoryState == EAccModeWiredHeadset ||
- accessoryState == EAccModeWirelessHeadset ||
- accessoryState == EAccModeHeadphones )
- {
- SetIndicatorStateL( EAknIndicatorLoopset, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorTTY, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorHeadset, EAknIndicatorStateOn );
- SetIndicatorStateL( EAknIndicatorHeadsetUnavailable, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorCarkit, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorTvOut, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorHDMI, EAknIndicatorStateOff );
- }
- else if( accessoryState == EAccModeLoopset )
- {
- SetIndicatorStateL( EAknIndicatorHeadset, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorTTY, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorLoopset, EAknIndicatorStateOn );
- SetIndicatorStateL( EAknIndicatorHeadsetUnavailable, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorCarkit, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorTvOut, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorHDMI, EAknIndicatorStateOff );
- }
- else if( accessoryState == EAccModeTextDevice )
+void CSysApAppUi::CompleteShutdown( const TBool aReset, const TInt aResetReason )
+ {
+ TRACES( RDebug::Print(_L("CSysApAppUi::CompleteShutdown(): START" ) ) );
+
+ iCheckLongPowerKeyEvent = ETrue;
+
+ PrepareForShutdownImage();//SysAp's internal preparation for ShutDown with image
+
+ FreeResources();
+
+ if ( aReset )
{
- SetIndicatorStateL( EAknIndicatorHeadset, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorLoopset, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorTTY, EAknIndicatorStateOn );
- SetIndicatorStateL( EAknIndicatorHeadsetUnavailable, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorCarkit, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorTvOut, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorHDMI, EAknIndicatorStateOff );
- }
- else if( accessoryState == EAccModeWiredCarKit || accessoryState == EAccModeWirelessCarKit )
- {
- SetIndicatorStateL( EAknIndicatorHeadset, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorLoopset, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorTTY, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorHeadsetUnavailable, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorCarkit, EAknIndicatorStateOn );
- SetIndicatorStateL( EAknIndicatorTvOut, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorHDMI, EAknIndicatorStateOff );
- }
- else if( accessoryState == EAccModeTVOut )
- {
- SetIndicatorStateL( EAknIndicatorHeadset, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorLoopset, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorTTY, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorHeadsetUnavailable, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorCarkit, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorTvOut, EAknIndicatorStateOn );
- SetIndicatorStateL( EAknIndicatorHDMI, EAknIndicatorStateOff );
- }
- else if (accessoryState == EAccModeHDMI )
- {
- SetIndicatorStateL( EAknIndicatorHeadset, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorLoopset, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorTTY, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorHeadsetUnavailable, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorCarkit, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorTvOut, EAknIndicatorStateOff);
- SetIndicatorStateL( EAknIndicatorHDMI, EAknIndicatorStateOn );
- }
- else // all indicators off
- {
- SetIndicatorStateL( EAknIndicatorHeadset, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorLoopset, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorTTY, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorHeadsetUnavailable, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorCarkit, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorTvOut, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorHDMI, EAknIndicatorStateOff );
- }
-
- TRACES( RDebug::Print( _L("CSysApAppUi::InitializeStatusPaneAreaL(): msg") ) );
- state = StateOfProperty( KUidSystemCategory, KUidOutboxStatusValue );
- if( state == ESADocumentsInOutbox )
- {
- SetIndicatorStateL( EAknIndicatorOutbox, EAknIndicatorStateOn );
- }
- else
- {
- SetIndicatorStateL( EAknIndicatorOutbox, EAknIndicatorStateOff );
- }
-
- state = StateOfProperty( KAlarmServerPubSubCategory, KWakeupAlarmPubSubKey );
-
- if( state == EActiveWakeupAlarmSet )
- {
- TRACES( RDebug::Print(_L("CSysApAppUi::InitializeStatusPaneAreaL called the SetIndicatorStateL with EActiveWakeupAlarmSet ")));
- SetIndicatorStateL( EAknIndicatorAlarmClock, EAknIndicatorStateOn );
+ __ASSERT_DEBUG( aResetReason >= RStarterSession::ELanguageSwitchReset &&
+ aResetReason <= RStarterSession::EDataRestoreReset,
+ User::Invariant() );
+ StarterSession().Reset( static_cast<RStarterSession::TResetReason>( aResetReason ) );
}
else
{
- TRACES( RDebug::Print(_L("CSysApAppUi::InitializeStatusPaneAreaL called the SetIndicatorStateL with EActiveNoWakeupAlarmsSet ")));
- SetIndicatorStateL( EAknIndicatorAlarmClock, EAknIndicatorStateOff );
+ StarterSession().Shutdown();
}
- state = StateOfProperty( KIrdaPropertyCategory, KIrdaStatus );
- if( state == TIrdaStatusCodes::EIrLoaded || state == TIrdaStatusCodes::EIrDisconnected || state == TIrdaStatusCodes::EIrBlocked )
+ StarterSession().Close();
+
+ TRACES( RDebug::Print(_L("CSysApAppUi::CompleteShutdown(): END" ) ) );
+ }
+
+
+
+// ----------------------------------------------------------------------------
+// CSysApAppUi::DoShutdownL( const TBool aReset, const TSWStartupReason aSWStartupReason )
+// ----------------------------------------------------------------------------
+
+void CSysApAppUi::DoShutdownL( const TBool aReset, const TInt aResetReason )
+ {
+ TRACES( RDebug::Print(_L("CSysApAppUi::DoShutdownL: aResetReason:%d, aReset:%d" ),
+ aResetReason, aReset ) );
+#ifndef RD_STARTUP_ANIMATION_CUSTOMIZATION
+ TBool animationenabled( EFalse );
+#endif // RD_STARTUP_ANIMATION_CUSTOMIZATION
+
+ if( OkToInitiateShutdown() )
{
- SetIndicatorStateL( EAknIndicatorIrActive, EAknIndicatorStateAnimate );
- }
- else if( state == TIrdaStatusCodes::EIrConnected )
- {
- SetIndicatorStateL( EAknIndicatorIrActive, EAknIndicatorStateOn );
+ TRACES( RDebug::Print(_L("CSysApAppUi::DoShutdownL: Was OkToToInitiateShutdown" ) ) );
+
+
+ if ( !aReset && iSysApFeatureManager->Supported(KSysApFeatureIdGoodbyeNote) )
+ {
+ // show shutdown note
+ }
+
+ if( !aReset )
+ {
+ #ifdef RD_STARTUP_ANIMATION_CUSTOMIZATION
+// TRAPD( err, ShowAnimationL() );
+// if ( err )
+ {
+ // TRACES( RDebug::Print(_L("CSysApAppUi::DoShutdownL ShowAnimationL() leaved: %d" ), err ) );
+ CompleteShutdown(aReset, aResetReason);
+ }
+ }
+ else // aReset
+ {
+ CompleteShutdown(aReset, aResetReason);
+ }
+ #else // RD_STARTUP_ANIMATION_CUSTOMIZATION
+ TRAPD( err, animationenabled = ShowAnimationL() );
+ if ( err )
+ {
+ TRACES( RDebug::Print(_L("CSysApAppUi::DoShutdownL ShowAnimationL() leaved: %d" ), err ) );
+ }
+ }
+
+ if ( !animationenabled )
+ {
+ CompleteShutdown(aReset, aResetReason);
+ }
+ #endif // RD_STARTUP_ANIMATION_CUSTOMIZATION
}
else
{
- SetIndicatorStateL( EAknIndicatorIrActive, EAknIndicatorStateOff );
- }
-
- iSysApCenRepCallForwardingObserver->UpdateCallForwardingIndicatorsL();
-
- iSysApCenRepMsgWaitingObserver->UpdateMessageWaitingIndicatorsL();
-
- state = StateOfProperty( KPSUidNetworkInfo, KNWHomeZoneStatus );
- if( state == ENWNone || state == ENWCityZone )
- {
- SetIndicatorStateL( EAknIndicatorHomeZone, EAknIndicatorStateOff );
- }
- else if( state == ENWHomeZone )
- {
- SetIndicatorStateL( EAknIndicatorHomeZone, EAknIndicatorStateOn );
+ TRACES( RDebug::Print(_L("CSysApAppUi::DoShutdownL: Was not OkToToInitiateShutdown" ) ) );
}
-
- // Initialize WLan state
- state = StateOfProperty( KPSUidWlan, KPSWlanIndicator );
- HandleWlanIndicatorL(state);
-
- // Initialize Tarm state
- state = StateOfProperty( KPSUidCoreApplicationUIs, KCoreAppUIsTarmIndicator );
- HandleTarmIndicatorL(state);
-
- TRACES( RDebug::Print( _L("CSysApAppUi::InitializeStatusPaneAreaL(): END") ) );
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::HandleWlanIndicator()
-// ----------------------------------------------------------------------------
-void CSysApAppUi::HandleWlanIndicatorL( TInt aValue )
- {
- if ( aValue == EPSWlanIndicatorAvailable )
- {
- SetIndicatorStateL( EAknIndicatorWlanActive, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorWlanActiveSecure, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorWlanAvailable, EAknIndicatorStateOn );
- }
- else if ( aValue == EPSWlanIndicatorActive )
- {
- SetIndicatorStateL( EAknIndicatorWlanAvailable, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorWlanActiveSecure, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorWlanActive, EAknIndicatorStateOn );
- }
- else if ( aValue == EPSWlanIndicatorActiveSecure )
- {
- SetIndicatorStateL( EAknIndicatorWlanAvailable, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorWlanActive, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorWlanActiveSecure, EAknIndicatorStateOn );
- }
- else // No indication required
- {
- SetIndicatorStateL( EAknIndicatorWlanAvailable, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorWlanActive, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorWlanActiveSecure, EAknIndicatorStateOff );
- }
+ TRACES( RDebug::Print(_L("CSysApAppUi::DoShutdownL: END" ) ) );
}
-// ----------------------------------------------------------------------------
-// CSysApAppUi::HandleTarmIndicatorL()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::HandleTarmIndicatorL( TInt aValue )
- {
- if ( aValue == ECoreAppUIsTarmTerminalSecurityOnIndicatorOn )
- {
- SetIndicatorStateL( EAknIndicatorTARM, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorTARMModuleOn, EAknIndicatorStateOn );
- }
- else if ( aValue == ECoreAppUIsTarmMngActiveIndicatorOn )
- {
- SetIndicatorStateL( EAknIndicatorTARMModuleOn, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorTARM, EAknIndicatorStateOn );
- }
- else
- {
- SetIndicatorStateL( EAknIndicatorTARM, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorTARMModuleOn, EAknIndicatorStateOff );
- }
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::HandleShortPowerKeyPressedL()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::HandleShortPowerKeyPressedL()
- {
- TInt callState( StateOfProperty( KPSUidCtsyCallInformation, KCTsyCallState ) );
-
- TRACES (
- RDebug::Print(
- _L("CSysApAppUi::HandleShortPowerKeyPressedL() callState:%d, iDeviceLockEnabled:%d" ),
- callState,
- iDeviceLockEnabled );
- );
- iSysApLightsController->PowerKeyPressedL();
-
- RProperty::Set( KPSUidCoreApplicationUIs, KCoreAppUIsHideAlarm, ECoreAppUIsHideAlarm );
- if( UiReady() && !iDeviceLockEnabled )
- {
- if ( iPowerKeyPopupMenuActive )
- {
- //Do nothing here. EEventKeyUp moves selection in the list!
- }
- else if ( !iKeyLockEnabled
- && callState != EPSCTsyCallStateAlerting
- && callState != EPSCTsyCallStateRinging
- && callState != EPSCTsyCallStateDialling )
- //Show power key menu
- {
- ShowPowerKeyPopUpMenuL();
- }
- }
- else
- {
- TInt swState( StateOfProperty( KPSUidStartup, KPSGlobalSystemState ) );
-
- if( swState == ESwStateAlarm )
- //From Alarm state even a short press causes shutdown but charger state need to be checked
- {
- TInt chargerState( StateOfProperty( KPSUidHWRMPowerState, KHWRMChargingStatus ) );
- if( chargerState == EChargingStatusNotConnected )
- //shutdown
+/*
+----------------------------------------------------------------------------
+CSysApAppUi::IsEncryptionOperationOngoingL()
+Introduced the code as a part of Sub : 405-3362 - Power Management SUB for ES
+recapture functionalities in platform which support multidrive as well.
+-------------------------------------------------------------------------------
+*/
+TBool CSysApAppUi::IsEncryptionOperationOngoingL() const
+ {
+ TBool deFeatureSupported(EFalse);
+ FeatureManager::InitializeLibL();
+ deFeatureSupported = FeatureManager::FeatureSupported( KFeatureIdFfDeviceEncryptionFeature);
+ FeatureManager::UnInitializeLib();
+
+ if(deFeatureSupported)
+ {
+ /**
+ * Store the last memory status changed
+ * 0: Idle. It can be Encrypted or Decrypted
+ * 1: Encrypting
+ * 2: Decrypting
+ **/
+
+ RProperty deProperty;
+ User::LeaveIfError(deProperty.Attach(KDevEncProtectedUid, KDevEncOperationKey,EOwnerThread));
+ TInt deValue = 0;
+ if((deProperty.Get(deValue)== KErrNone)&&( deValue == EOpEncrypting || deValue == EOpDecrypting))
{
- StartShutDownTimerOnAlarmAndChargingStates();
+ deProperty.Close();
+ return ETrue;
}
else
- //to charging state
{
- SetStarterState( RStarterSession::ECharging );
+ deProperty.Close();
+ return EFalse;
}
}
- }
+ else
+ {
+ return EFalse;
+ }
}
// ----------------------------------------------------------------------------
@@ -1104,8 +932,8 @@
TInt swState;
RProperty::Get( KPSUidStartup, KPSGlobalSystemState, swState );
-
- iSysApLightsController->PowerKeyPressedL();
+
+ iSysApLightsController->PowerKeyPressedL(); //need to handle later.
if( swState == ESwStateStartingCriticalApps ||
swState == ESwStateSelfTestOK ||
@@ -1121,10 +949,7 @@
{
if( iPowerKeyPopupMenuActive )
{
- if ( iGlobalListQuery )
- {
- iGlobalListQuery->SelectItem();
- }
+ // do nothing
}
else if( !iIgnoreNextPowerKeyRepeats )
{
@@ -1154,1101 +979,356 @@
}
// ----------------------------------------------------------------------------
-// CSysApAppUi::FreeResources()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::FreeResources()
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::FreeResources") ) );
-
- delete iSysApBatteryInfoController;
- delete iSysApPsmController;
-
- delete iSysApAudioRoutingObserver;
-
- delete iProfileNamesArray;
- iProfileNamesArray = NULL;
-
- if ( iTimer )
- {
- iTimer->Cancel();
- delete iTimer;
- }
-
- if ( iSapTimer )
- {
- iSapTimer->Cancel();
- delete iSapTimer;
- }
-
- if ( iSysApTimer )
- {
- iSysApTimer->Cancel();
- delete iSysApTimer;
- }
-
- delete iGlobalListQuery;
-
- RWindowGroup groupWin = iCoeEnv->RootWin();
- groupWin.CancelCaptureKey( iCapturedEKeyPowerOff );
- groupWin.CancelCaptureKeyUpAndDowns( iCapturedEKeyPowerOffUpAndDowns );
-
- delete iSysApDefaultKeyHandler;
-
- if ( iProfileEngine )
- {
- iProfileEngine->Release();
- }
-
- delete iSysApSsSettingsObserver;
- delete iSysApEtelConnector;
-
- delete iSysApProfileObserver;
- delete iSysApNspsHandler;
- delete iSysApKeySndHandler;
- delete iSysApCenRepMsgWaitingObserver;
- delete iSysApCenRepCallForwardingObserver;
- delete iSysApConnectionMonitorObserver;
- delete iSysApCenRepLightSettingsObserver;
- delete iSysApCenRepLogsObserver;
- delete iSysApCenRepBtObserver;
-// delete iSysApCenRepFmTxObserver;
- delete iSysApCenRepHacSettingObserver;
- delete iSysApCenRepController;
-
- delete iSysApPubSubObserver;
-
- delete iSysApMMCObserver;
- delete iSysApMsgSimMemLowQuery;
- delete iSysApWaitNote;
- delete iSysApConfirmationQuery;
- delete iSysApConfirmationQueryForRestart;
- delete iSysApOfflineModeController;
- delete iSysApUsbIndicatorController;
- delete iSysApBtController;
- delete iSysApBtSapController;
- delete iSignalNotify;
- delete iBatteryNotify;
- delete iSysApSystemLock;
- delete iSysApLocationPrivacyIndicator;
- delete iSysApAccessoryObserver;
- delete iSysApMediatorObserver;
-
- delete iSysApKeyManagement;
- iSysApKeyManagement = NULL;
- delete iSysApLightsController;
- iKeyLock.Close();
- delete iSysApFeatureManager;
-
- // Cleanup ECom, used by key management and light control
- REComSession::FinalClose();
-
- iResourcesFreed = ETrue;
- TRACES( RDebug::Print( _L("CSysApAppUi::FreeResources:END") ) );
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::ShowUiNoteL( const TSysApNoteIds aNote ) const
+// CSysApAppUi::IsDeviceModeKey
// ----------------------------------------------------------------------------
-void CSysApAppUi::ShowUiNoteL( const TSysApNoteIds aNote ) const
+TBool CSysApAppUi::IsDeviceModeKey( const TKeyEvent& aKeyEvent ) const
{
- TRACES( RDebug::Print( _L("CSysApAppUi::ShowUiNoteL aNote: %d"), aNote ) );
+ return CSysApDefaultKeyHandler::IsDeviceModeKey( aKeyEvent );
+ }
+
- TInt tone( EAvkonSIDNoSound );
- TAknGlobalNoteType noteType( EAknGlobalBatteryLowNote );
- CAknGlobalNote* note = CAknGlobalNote::NewLC();
- TInt secondaryDisplayId(SecondaryDisplay::ECmdNoNote);
+// ----------------------------------------------------------------------------
+// CSysApAppUi::ShowShutdownImage
+// ----------------------------------------------------------------------------
+//
+TInt CSysApAppUi::ShowShutdownImage( TInt aBitmapId )
+ {
+ TRACES( RDebug::Print(_L("CSysApAppUi::ShowShutdownImage") ) );
- switch ( aNote )
+ TRAPD( err, ShowShutdownImageL( aBitmapId ) );
+
+ if ( err != KErrNone )
{
- case EBatteryLowNote:
- noteType = EAknGlobalBatteryLowNote;
- tone = EAvkonSIDBatteryLowTone;
- break;
- case EBatteryFullNote:
- noteType = EAknGlobalBatteryFullNote;
- tone = EAvkonSIDInformationTone;
- break;
- case ERechargeBatteryNote:
- iSysApLightsController->BatteryEmptyL( ETrue );
- noteType = EAknGlobalRechargeBatteryNote;
- tone = EAvkonSIDRechargeBatteryTone;
- break;
- case ENotChargingNote:
- noteType = EAknGlobalNotChargingNote;
- tone = EAvkonSIDWrongCharger;
- break;
- case EInsertSimNote:
- noteType = EAknGlobalInformationNote;
- tone = EAvkonSIDInformationTone;
- secondaryDisplayId = SecondaryDisplay::ECmdShowInsertSimNote;
- break;
- case EMemoryCardRemovedWithoutEjectNote:
- noteType = EAknGlobalInformationNote;
- tone = EAvkonSIDInformationTone;
- secondaryDisplayId = SecondaryDisplay::ECmdShowMemoryCardRemovedWithoutEjectNote;
- break;
- case EGprsSuspendedNote:
- noteType = EAknGlobalInformationNote;
- tone = EAvkonSIDInformationTone;
- secondaryDisplayId = SecondaryDisplay::ECmdShowGprsSuspendedNote;
- break;
- case EGprsResumedNote:
- noteType = EAknGlobalInformationNote;
- tone = EAvkonSIDInformationTone;
- secondaryDisplayId = SecondaryDisplay::ECmdShowGprsResumedNote;
- break;
- case EShutdownNote:
- noteType = EAknGlobalInformationNote;
- tone = EAvkonSIDInformationTone;
- secondaryDisplayId = SecondaryDisplay::ECmdShowShutdownNote;
- break;
- case ECannotActivateOfflineModeNote:
- noteType = EAknGlobalErrorNote;
- tone = EAvkonSIDErrorTone;
- secondaryDisplayId = SecondaryDisplay::ECmdShowCannotActivateOfflineModeNote;
- break;
- case ECannotDeactivateOfflineModeNote:
- noteType = EAknGlobalErrorNote;
- tone = EAvkonSIDErrorTone;
- secondaryDisplayId = SecondaryDisplay::ECmdShowCannotDeactivateOfflineModeNote;
- break;
- case EKeypadActiveNote:
- noteType = EAknGlobalInformationNote;
- tone = EAvkonSIDInformationTone;
- secondaryDisplayId = SecondaryDisplay::ECmdShowKeypadActiveNote;
- break;
-/* case EFmTxAccessoryStandbyNote:
- noteType = EAknGlobalInformationNote;
- tone = EAvkonSIDInformationTone;
- secondaryDisplayId = SecondaryDisplay::ECmdShowFmTxStandbyInAccessoryConnectionNote;
- break;
- case EFmTxAccessoryForbidsNote:
- noteType = EAknGlobalInformationNote;
- tone = EAvkonSIDInformationTone;
- secondaryDisplayId = SecondaryDisplay::ECmdShowFmTxCannotEnableWhileAccessoryConnectedNote;
- break;
- case EFmTxVolumeDisabledNote:
- noteType = EAknGlobalInformationNote;
- tone = EAvkonSIDInformationTone;
- secondaryDisplayId = SecondaryDisplay::ECmdShowFmTxVolumeDisabledNote;
- break;
- case EFmTxOnNote:
- noteType = EAknGlobalInformationNote;
- tone = EAvkonSIDInformationTone;
- secondaryDisplayId = SecondaryDisplay::ECmdShowFmTxTuneRadioToFrequencyNote;
- break;
- case EFmTxOffNote:
- noteType = EAknGlobalInformationNote;
- tone = EAvkonSIDInformationTone;
- secondaryDisplayId = SecondaryDisplay::ECmdShowFmTxDisabledNote;
- break;
-*/ case EBatteryFullUnplugChargerNote:
- noteType = EAknGlobalBatteryFullUnplugNote;
- tone = EAvkonSIDInformationTone;
- break;
- case EUnplugChargerNote:
- noteType = EAknGlobalUnplugChargerNote;
- tone = EAvkonSIDInformationTone;
- break;
- case EPowerSaveModeActivated:
- noteType = EAknGlobalConfirmationNote;
- tone = EAvkonSIDConfirmationTone;
- secondaryDisplayId = SecondaryDisplay::ECmdShowPowerSavingActivatedNote;
- break;
- case EPowerSaveModeDeactivated:
- noteType = EAknGlobalConfirmationNote;
- tone = EAvkonSIDConfirmationTone;
- secondaryDisplayId = SecondaryDisplay::ECmdShowPowerSavingDeactivatedNote;
- break;
- case ECannotActivatePowerSaveMode:
- noteType = EAknGlobalWarningNote;
- tone = EAvkonSIDWarningTone;
- secondaryDisplayId = SecondaryDisplay::ECmdShowCannotActivatePowerSavingNote;
- break;
- case ECannotDeactivatePowerSaveMode:
- noteType = EAknGlobalWarningNote;
- tone = EAvkonSIDWarningTone;
- secondaryDisplayId = SecondaryDisplay::ECmdShowCannotDeactivatePowerSavingNote;
- break;
- default:
- break;
-
+ TRACES( RDebug::Print(_L("CSysApAppUi::ShowShutdownImageL failed, err=%d"), err ) );
}
- TInt swState( StateOfProperty( KPSUidStartup, KPSGlobalSystemState ) );
-
- if( UiReady() || swState == ESwStateSecurityCheck)
- {
- HBufC* noteStringBuf = NULL;
-
- switch ( aNote )
- {
- case EInsertSimNote:
- noteStringBuf = StringLoader::LoadLC( R_QTN_SU_NOTE_INSERT_SIM, iEikonEnv );
- break;
- case EMemoryCardRemovedWithoutEjectNote:
- noteStringBuf = StringLoader::LoadLC( R_QTN_MEMS_EJECT_ERROR, iEikonEnv );
- note->SetSoftkeys( R_AVKON_SOFTKEYS_OK_EMPTY );
- break;
- case EGprsSuspendedNote:
- noteStringBuf = StringLoader::LoadLC( R_QTN_GPRS_CONF_GPRS_SUSPENDED, iEikonEnv );
- break;
- case EGprsResumedNote:
- noteStringBuf = StringLoader::LoadLC( R_QTN_GPRS_CONF_GPRS_RESUMED, iEikonEnv );
- break;
- case EShutdownNote:
- noteStringBuf = StringLoader::LoadLC( R_QTN_PWRC_INFO_GOODBYE, iEikonEnv);
- break;
- case ECannotActivateOfflineModeNote:
- noteStringBuf = StringLoader::LoadLC( R_QTN_ERR_OFFLINE_UNABLE, iEikonEnv );
- break;
- case ECannotDeactivateOfflineModeNote:
- noteStringBuf = StringLoader::LoadLC( R_QTN_ERR_OFFLINE_UNABLE_PROFILE, iEikonEnv );
- break;
- case EKeypadActiveNote:
- if ( iSysApFeatureManager->PenEnabled() )
- {
- noteStringBuf = StringLoader::LoadLC( R_QTN_KEYG_CONF_DISPLAY_KEYS_ACTIVE,
- iEikonEnv );
- }
- else
- {
- noteStringBuf = StringLoader::LoadLC( R_QTN_KEYG_CONF_KEYPAD_ACTIVE,
- iEikonEnv );
- }
- note->SetAnimation( R_QGN_NOTE_KEYGUARD_OPEN_ANIM );
- break;
-/* case EFmTxOnNote:
- {
- const TInt KFrequencyMaxLength(7);
- // read frequency
- TInt frequencykHz = iSysApCenRepFmTxObserver->Frequency();
- TReal frequencyMHz = static_cast<TReal>( frequencykHz ) / KCoefficientKhzToMhz; // kHz to Mhz
- TBuf<KFrequencyMaxLength> frequencyAsString;
- frequencyAsString.AppendNum( frequencyMHz, TRealFormat( KFrequencyMaxLength, KDecimalsInMhzFrequency ) );
- AknTextUtils::LanguageSpecificNumberConversion( frequencyAsString );
- noteStringBuf
- = StringLoader::LoadLC( R_QTN_FMTX_SYSAP_INFO_NOTE_CHANGE_FREQ,
- frequencyAsString,
- iEikonEnv );
- break;
- }
- case EFmTxAccessoryForbidsNote:
- {
- noteStringBuf = StringLoader::LoadLC( R_QTN_FMTX_SYSAP_INFO_NOTE_ACCESSORY_FORBIDS,
- iEikonEnv );
- break;
- }
- case EFmTxAccessoryStandbyNote:
- {
- noteStringBuf = StringLoader::LoadLC( R_QTN_FMTX_SYSAP_INFO_NOTE_ACCESSORY_STANDBY,
- iEikonEnv );
- break;
- }
- case EFmTxVolumeDisabledNote:
- {
- noteStringBuf = StringLoader::LoadLC( R_QTN_FMTX_SYSAP_INFO_NOTE_VOLUME_DISABLED,
- iEikonEnv );
- break;
- }
- case EFmTxOffNote:
- {
- noteStringBuf = StringLoader::LoadLC( R_QTN_FMTX_SYSAP_INFO_NOTE_DISABLED,
- iEikonEnv );
- break;
- }
-*/ case EPowerSaveModeActivated:
- noteStringBuf = StringLoader::LoadLC( R_QTN_POWER_SAVING_ACTIVATED_CONF_NOTE, iEikonEnv );
- break;
- case EPowerSaveModeDeactivated:
- noteStringBuf = StringLoader::LoadLC( R_QTN_POWER_SAVING_DEACTIVATED_CONF_NOTE, iEikonEnv );
- break;
- case ECannotActivatePowerSaveMode:
- noteStringBuf = StringLoader::LoadLC( R_QTN_POWER_SAVING_FAILED_WARNING_NOTE, iEikonEnv );
- break;
- case ECannotDeactivatePowerSaveMode:
- noteStringBuf = StringLoader::LoadLC( R_QTN_POWER_SAVING_DEACTIVATION_FAILED_WARNING_NOTE, iEikonEnv );
- break;
- default:
- break;
- }
-
- note->SetTone( tone );
-
- // Set secondary display data if necessary
-/* if ( iSysApFeatureManager->CoverDisplaySupported() && secondaryDisplayId != SecondaryDisplay::ECmdNoNote)
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::ShowUiNoteL - Notifying secondary display") ) );
- CAknSDData* sd;
-
- if ( aNote == EFmTxOnNote ) // frequency information is passed to secondary display
- {
- SecondaryDisplay::TFmTxFrequencyInKhzPckg pckg( iSysApCenRepFmTxObserver->Frequency() );
- sd = CAknSDData::NewL( SecondaryDisplay::KCatSysAp, secondaryDisplayId, pckg );
- }
- else
- {
- sd = CAknSDData::NewL(SecondaryDisplay::KCatSysAp, secondaryDisplayId, KNullDesC8);
- }
-
- note->SetSecondaryDisplayData(sd); // ownership to notifier client
- }
-*/
- if ( noteStringBuf )
- {
- TPtr textBuffer = noteStringBuf->Des();
- TRACES( RDebug::Print( _L("CSysApAppUi::ShowUiNoteL Next:note->ShowNoteL" ) ) );
- note->ShowNoteL( noteType, textBuffer );
- CleanupStack::PopAndDestroy( ); // noteStringbuf
- }
- else
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::ShowUiNoteL Next:note->ShowNoteL" ) ) );
- note->ShowNoteL( noteType, KNullDesC );
- }
- }
- else if( swState == ESwStateAlarm || swState == ESwStateCharging )
- {
- if ( aNote != EUnplugChargerNote ) // don't play tone when charger is disconnected in charging state
- {
- static_cast<CAknAppUi*>(iEikonEnv->EikAppUi())->KeySounds()->PlaySound( tone );
- }
- }
-
- CleanupStack::PopAndDestroy(); // note
+ return err;
}
-// ----------------------------------------------------------------------------
-// CSysApAppUi::ShowChargingNoteL()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::ShowChargingNoteL()
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::ShowChargingNoteL") ) );
- TBool showNote( ETrue );
-
- TInt swState( StateOfProperty( KPSUidStartup, KPSGlobalSystemState ) );
- TRACES( RDebug::Print( _L("CSysApAppUi::ShowChargingNoteL: swState: %d"), swState ) );
-
- if( UiReady() || swState == ESwStateSecurityCheck )
- {
- if ( StateOfProperty( KPSUidCtsyCallInformation, KCTsyCallState ) == EPSCTsyCallStateRinging )
- {
- showNote = EFalse;
- }
- 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
- {
- CAknGlobalNote* chargingNote = CAknGlobalNote::NewLC();
- chargingNote->SetTone( EAvkonSIDChargingBatteryTone );
- chargingNote->ShowNoteL( EAknGlobalChargingNote, KNullDesC );
- CleanupStack::PopAndDestroy( chargingNote );
- }
- }
- else if( swState == ESwStateAlarm || swState == ESwStateCharging )
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::ShowChargingNoteL - Just play tone") ) );
- static_cast<CAknAppUi*>(iEikonEnv->EikAppUi())->KeySounds()->PlaySound( EAvkonSIDChargingBatteryTone );
- }
- else
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::ShowChargingNoteL - No note shown") ) );
- }
- }
// ----------------------------------------------------------------------------
-// CSysApAppUi::HandleChargerNotesL()
+// CSysApAppUi::ShowShutdownImageL
// ----------------------------------------------------------------------------
-void CSysApAppUi::HandleChargerNotesL( const TInt aValue )
+//
+void CSysApAppUi::ShowShutdownImageL( TInt aBitmapId )
{
- TBool showNote(StateOfProperty( KPSUidCtsyCallInformation, KCTsyCallState ) != EPSCTsyCallStateRinging);
- if ( aValue == EChargingStatusCharging )
- {
- iSysApLightsController->BatteryEmptyL( EFalse );
- TRACES( RDebug::Print( _L("SysAp: charger connected") ) );
- iSysApLightsController->ChargerConnectedL( ETrue );
- ShowChargingNoteL();
- }
- //Display Not Charging note
- else if ( aValue == EChargingStatusError )
+ TRACES( RDebug::Print(_L("CSysApAppUi::ShowShutdownImageL") ) );
+ // do nothing
+ if ( !iSysApShutdownImage ) // Shutdown image may be shown without entering normal state (e.g. charging), so construct here
{
- if(showNote)
- {
- ShowUiNoteL( ENotChargingNote );
- }
+ TRACES( RDebug::Print( _L("CSysApAppUi::ShowShutdownImageL: trying CSysApShutdownImage::NewL()") ) );
+ iSysApShutdownImage = CSysApShutdownImage::NewL();
}
- else if ( aValue == EChargingStatusChargingComplete )
+ TRACES( RDebug::Print( _L("CSysApAppUi::ShowShutdownImageL: trying CSysApShutdownImage::ShowShutdownImageL()") ) );
+ iSysApShutdownImage->ShowShutdownImageL( aBitmapId );
+ }
+
+// ----------------------------------------------------------------------------
+// CSysApAppUi::PrepareForShutdownImage()
+// ----------------------------------------------------------------------------
+
+void CSysApAppUi::PrepareForShutdownImage()
+ {
+ TRACES( RDebug::Print( _L("CSysApAppUi::PrepareForShutdownImage() START" ) ) );
+
+ // If RD_STARTUP_ANIMATION_CUSTOMIZATION is enabled, the following actions are always taken in PrepareForShutdownAnimation
+#ifndef RD_STARTUP_ANIMATION_CUSTOMIZATION
+ if ( !iAnimationShowingTime ) // actions already taken in PrepareForShutdownAnimation
{
- iSysApLightsController->ChargingCompleteL();
+ static_cast<CAknAppUi*>(iEikonEnv->EikAppUi())->KeySounds()->PlaySound( EAvkonSIDPowerOffTone );
+ CancelGlobalListQuery();
- TSysApNoteIds note( EBatteryFullNote );
-
- if ( !iSysApUsbChargerDetector.HostOnlyUsbChargingUsed() &&
- iSysApFeatureManager->Supported( KSysApFeatureIdChargerReminderNotes ) )
- {
- note = EBatteryFullUnplugChargerNote;
- }
- iSysApUsbChargerDetector.Reset();
- if(showNote)
+ if ( iSysApPowerKeyMenuObserver )
{
- ShowUiNoteL( note );
- }
- }
- else if ( aValue == EChargingStatusNotConnected )
- {
- TRACES( RDebug::Print( _L("SysAp: charger removed") ) );
- iSysApLightsController->ChargerConnectedL( EFalse );
-
- if ( !iSysApUsbChargerDetector.HostOnlyUsbChargingUsed() &&
- iSysApFeatureManager->Supported( KSysApFeatureIdChargerReminderNotes ) )
- {
- if(showNote)
- {
- ShowUiNoteL( EUnplugChargerNote );
- }
+ iSysApPowerKeyMenuObserver->Cancel();
}
- iSysApUsbChargerDetector.Reset();
- }
- else if ( aValue == EChargingStatusNotCharging )
- {
- TRACES( RDebug::Print( _L("SysAp: Not charging") ) );
+
+ // deactivate notifiers before showing the shutdown image
+ AknNotifierController::CancelAllNotifications();
+ AknNotifierController::HideAllNotifications(ETrue);
+ RWindowGroup groupWin = iCoeEnv->RootWin();
+ iCapturedAppskey = groupWin.CaptureKey( EKeyApplication, KModifierMask, KModifierMask );
+ iCapturedAppskeyUpAndDowns = groupWin.CaptureKeyUpAndDowns( EStdKeyApplication0, KModifierMask, KModifierMask );
}
- else if ( aValue == EChargingStatusAlmostComplete )
- {
- TRACES( RDebug::Print( _L("SysAp: Charging almost complete") ) );
- }
- else if ( aValue == EChargingStatusChargingContinued )
- {
- //in this case we simply want to scroll the battery bars and not turn light on or show ui note
- // set lights controller iBatteryEmpty to EFalse
- iSysApLightsController->BatteryEmptyL( EFalse );
- TRACES( RDebug::Print( _L("SysAp: charging continues") ) );
- }
+#endif // RD_STARTUP_ANIMATION_CUSTOMIZATION
+
+#ifndef __SYSAP_MODULE_TEST //to make errors during shutdown sequence being seen more easily
+ iEikonEnv->RootWin().SetOrdinalPosition(0, ECoeWinPriorityAlwaysAtFront );
+ TRACES( RDebug::Print( _L("CSysApAppUi::PrepareForShutdownImage() Show Shutdown image" ) ) );
+ ShowShutdownImage( 1 );//EMbmSysapQgn_startup_screen
+#endif
+ TRACES( RDebug::Print( _L("CSysApAppUi::PrepareForShutdownImage() END" ) ) );
}
// ----------------------------------------------------------------------------
-// CSysApAppUi::ShowProfileNoteL()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::ShowProfileNoteL()
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::ShowProfileNoteL") ) );
-
- if ( UiReady() )
- {
- if ( iProfileNote )
- {
- // when a call is coming in, there might be a pending "Selected profile"
- // we don't want to show anymore
- iProfileNote->CancelNoteL( iProfileNoteId );
- }
-
- TBufC<KMaxProfileNameLength> profileName;
- HBufC* noteStringBuf = NULL;
- ActiveProfileNameL( profileName.Des() );
- noteStringBuf = StringLoader::LoadLC( R_TEXT_MODE_SELECTED, profileName, iEikonEnv );
- TPtr textBuffer = noteStringBuf->Des();
- AknTextUtils::DisplayTextLanguageSpecificNumberConversion( textBuffer );
-
- // profile note is constructed when it is needed for the first time
- if ( !iProfileNote )
- {
- iProfileNote = CAknGlobalNote::NewL();
- iProfileNote->SetTone( EAvkonSIDConfirmationTone );
- }
-
- // Set secondary display data if necessary
- if ( iSysApFeatureManager->CoverDisplaySupported() )
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::ShowProfileNoteL - Notifying secondary display") ) );
- SecondaryDisplay::TProfileName sdProfileName;
- sdProfileName.Append(profileName.Left(SecondaryDisplay::KProfileNameMaxLen));
- SecondaryDisplay::TProfileNotePckg pckg(sdProfileName);
- CAknSDData* sd = CAknSDData::NewL(SecondaryDisplay::KCatSysAp, SecondaryDisplay::ECmdShowProfileNote, pckg);
- iProfileNote->SetSecondaryDisplayData(sd); // ownership to notifier client
- }
-
- iProfileNoteId = iProfileNote->ShowNoteL( EAknGlobalConfirmationNote, textBuffer );
-
- CleanupStack::PopAndDestroy( ); // noteStringbuf
-
- iSysApLightsController->ProfileChangedL(); // All notes should always turn lights on.
- }
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::ShowQueryL()
+// CSysApAppUi::OkToInitiateShutdown()
// ----------------------------------------------------------------------------
-void CSysApAppUi::ShowQueryL( const TSysApConfirmationQueryIds aQueryId, const TDesC& aValue )
+TBool CSysApAppUi::OkToInitiateShutdown()
{
- CancelGlobalListQuery();
+ TInt swState;
+ RProperty::Get( KPSUidStartup, KPSGlobalSystemState, swState );
- if ( aQueryId == ESysApRestartPhoneQuery )
- {
- iDisablePowerkeyMenu = ETrue;
- // Cancel any other query that might be outstanding (i.e. ESysApRemoveMmcNote),
- // to avoid multiple overlapping queries causing problems
- if ( iSysApConfirmationQuery )
- {
- iSysApConfirmationQuery->Cancel();
- }
-
- if ( !iSysApConfirmationQueryForRestart )
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::ShowQueryL: trying CSysApConfirmationQuery::NewL() for restart") ) );
- iSysApConfirmationQueryForRestart = CSysApConfirmationQuery::NewL( *this );
- }
-
- iSysApConfirmationQueryForRestart->ShowQueryL( aQueryId, iEikonEnv );
- }
- else
+ if( !iShutdownStarted &&
+ swState == ESwStateStartingCriticalApps ||
+ swState == ESwStateSelfTestOK ||
+ swState == ESwStateSecurityCheck ||
+ swState == ESwStateCriticalPhaseOK ||
+ swState == ESwStateEmergencyCallsOnly ||
+ swState == ESwStateCharging ||
+ swState == ESwStateAlarm ||
+ swState == ESwStateNormalRfOn ||
+ swState == ESwStateNormalRfOff ||
+ swState == ESwStateNormalBTSap ||
+ swState == ESwStateFatalStartupError )
{
- if ( !iSysApConfirmationQuery )
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::ShowQueryL: trying CSysApConfirmationQuery::NewL()") ) );
- iSysApConfirmationQuery = CSysApConfirmationQuery::NewL( *this );
- }
-
- iSysApConfirmationQuery->ShowQueryL( aQueryId, aValue, iEikonEnv );
- }
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::UpdateBatteryBarsL( const TInt aState )
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::UpdateBatteryBarsL( const TInt aState )
- {
- TInt state( StateOfProperty( KPSUidHWRMPowerState, KHWRMChargingStatus ) );
- TRACES( RDebug::Print( _L("CSysApAppUi::UpdateBatteryBarsL aState: %d, chargerState:%d"), aState, state ) );
- HandleUsbCharger( state );
- if( state == EChargingStatusCharging ||
- state == EChargingStatusChargingContinued ||
- state == EChargingStatusAlmostComplete )
- {
- if ( !iCharging )
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::UpdateBatteryBarsL: Starting Charging") ) );
- iBatteryNotify->StartChargingL();
- iCharging = ETrue;
- }
-
- // When Avkon supports battery state sending while charging,
- // add setting battery level here also.
+ iShutdownStarted = ETrue;
+ return ETrue;
}
else
{
- if ( iCharging )
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::UpdateBatteryBarsL: Stopping Charging") ) );
- iBatteryNotify->StopChargingL();
- iCharging = EFalse;
- }
-
- if( state == KErrUnknown || aState == KErrUnknown )
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::UpdateBatteryBarsL: CAknBatteryNotify::SetBatteryLevelL(0)") ) );
- iBatteryNotify->SetBatteryLevelL( 0 );
- }
- else
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::UpdateBatteryBarsL: CAknBatteryNotify::SetBatteryLevelL(%d)"), aState - EBatteryLevelLevel0 ) );
- iBatteryNotify->SetBatteryLevelL( aState - EBatteryLevelLevel0 );
- }
- }
-
- if ( !iSysApPsmController ) // created here if first state change has not occurred yet
- {
- iSysApPsmController = CSysApPsmController::NewL( *this );
- }
-
- if ( iSysApPsmController )
- {
- if ( iSysApPsmController->FullPsmEnabled() )
- {
- iBatteryNotify->SetBatteryStateL( EAknBatteryIndicatorPowerSave );
- }
- else
- {
- iBatteryNotify->SetBatteryStateL( EAknBatteryIndicatorNormal );
- }
- }
-
- if ( iSysApBatteryInfoController )
- {
- iSysApBatteryInfoController->BatteryLevelUpdatedL();
- }
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::UpdateSignalBarsL()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::UpdateSignalBarsL()
- {
- UpdateSignalBarsL(iSysApEtelConnector->GetSignalBars());
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::UpdateSignalBarsL( const TInt aState )
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::UpdateSignalBarsL( const TInt aState )
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::UpdateSignalBarsL aState: %d"), aState ) );
-
- if( aState == KAknSignalOffLineMode || (iSysApOfflineModeController->OfflineModeActive() && !iEmergencyCallActive) )
- {
- iSignalNotify->SetSignalLevelL( KAknSignalOffLineMode );
- }
- else if( aState <= 0 )
- {
- // Do not update indicator show zero bars if we should be showing X over bars
- // This is required for indicator to work correctly in BT SAP mode.
- // Cannot use check for BT SAP enabled status, as zero bars notify comes before enabled status changes.
- if ( !iIgnoreZeroNetworkBarNotifications )
- {
- iSignalNotify->SetSignalLevelL( 0 );
- }
- }
- else
- {
- iSignalNotify->SetSignalLevelL( aState );
- }
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::SetSignalIndicatorL()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::SetSignalIndicatorL()
- {
- TSysApNetworkMode networkMode( ESysApGSM );
-
- TInt networkModeFromNetworkInfo( StateOfProperty( KPSUidNetworkInfo, KNWTelephonyNetworkMode ) );
- if ( networkModeFromNetworkInfo == ENWNetworkModeWcdma )
- {
- networkMode = ESysApWCDMA;
- }
- else
- {
- networkMode = ESysApGSM;
- }
-
- TRACES( RDebug::Print( _L("CSysApAppUi::SetSignalIndicatorL: networkMode = %d" ), networkMode ) );
-
- if( iSysApOfflineModeController->OfflineModeActive() && !iEmergencyCallActive )
- {
- // The device is in Offline Mode
- if ( iSysApFeatureManager->Supported( KSysApFeatureIdGprs_G_Icon ) )
- {
- iSignalNotify->SetGprsStateL( EAknSignalGprsIndicatorOff );
- }
- else
- {
- iSignalNotify->SetCommonPacketDataStateL( EAknSignalCommonPacketDataIndicatorOff );
- }
- iSignalNotify->SetWcdmaStateL( EAknSignalWcdmaIndicatorOff );
- iSignalNotify->SetHsdpaStateL( EAknSignalHsdpaIndicatorOff);
- }
- else
- {
- // The device is in Online Mode
- switch ( networkMode )
- {
- case ESysApGSM:
- SetSignalIndicatorGsmL();
- break;
-
- case ESysApWCDMA:
- SetSignalIndicatorWcdmaL();
- break;
-
- default:
- break;
- }
+ return EFalse;
}
}
-// ----------------------------------------------------------------------------
-// CSysApAppUi::SetSignalIndicatorGsmL()
-// ----------------------------------------------------------------------------
-void CSysApAppUi::SetSignalIndicatorGsmL()
+
+void CSysApAppUi::PopupNote()
{
- TInt signalGprsIndicatorState( 0 );
- TInt signalIndicatorState( 0 );
- TInt bearerValue = EBearerUnknown;
-
- if(iSysApConnectionMonitorObserver)
- {
- bearerValue = iSysApConnectionMonitorObserver->GetBearerValue();
- }
-
- if(bearerValue == EBearerEdgeGPRS)
- {
- TInt egprsStatus = StateOfProperty( KUidSystemCategory, KPSUidGprsStatusValue );
- TRACES( RDebug::Print( _L("CSysApAppUi::SetSignalIndicatorGsmL gprsStatus: %d" ), egprsStatus ) );
- iSignalNotify->SetWcdmaStateL( EAknSignalWcdmaIndicatorOff );
- iSignalNotify->SetHsdpaStateL( EAknSignalHsdpaIndicatorOff );
- switch ( egprsStatus )
- {
- case EPSGprsContextActive:
- signalGprsIndicatorState = EAknSignalEdgeIndicatorContext;
- signalIndicatorState = EAknSignalCommonPacketDataIndicatorContext;
- iGprsActivated = ETrue;
- iGprsSuspended = EFalse;
- HandleGprsNotesL();
- break;
-
- case EPSGprsContextActivating:
- signalGprsIndicatorState = EAknSignalEdgeIndicatorEstablishingContext;
- signalIndicatorState = EAknSignalCommonPacketDataIndicatorEstablishingContext;
- iGprsActivated = EFalse;
- iGprsSuspended = EFalse;
- break;
-
- case EPSGprsSuspend:
- signalGprsIndicatorState = EAknSignalEdgeIndicatorSuspended;
- signalIndicatorState = EAknSignalCommonPacketDataIndicatorSuspended;
- iGprsSuspended = ETrue;
- HandleGprsNotesL();
- break;
-
- case EPSGprsAttach:
- signalGprsIndicatorState = EAknSignalEdgeIndicatorAttached;
- signalIndicatorState = EAknSignalCommonPacketDataIndicatorAttached;
- iGprsActivated = EFalse;
- iGprsSuspended = EFalse;
- break;
-
- case EPSGprsMultibleContextActive:
- signalGprsIndicatorState = EAknSignalEdgeIndicatorMultipdp;
- signalIndicatorState = EAknSignalCommonPacketDataIndicatorMultipdp;
- iGprsActivated = ETrue;
- iGprsSuspended = EFalse;
- HandleGprsNotesL();
- break;
-
- case EPSGprsUnattached:
- default:
- signalGprsIndicatorState = EAknSignalEdgeIndicatorOff;
- signalIndicatorState = EAknSignalCommonPacketDataIndicatorOff;
- iGprsSuspendedNoteShown = EFalse;
- iGprsActivated = EFalse;
- iGprsSuspended = EFalse;
- iCallActivated = EFalse;
- break;
- }
- }
- else
- {
-
- TInt gprsStatus = StateOfProperty( KUidSystemCategory, KPSUidGprsStatusValue );
- TRACES( RDebug::Print( _L("CSysApAppUi::SetSignalIndicatorGsmL gprsStatus: %d" ), gprsStatus ) );
- iSignalNotify->SetWcdmaStateL( EAknSignalWcdmaIndicatorOff );
- iSignalNotify->SetHsdpaStateL( EAknSignalHsdpaIndicatorOff );
- switch ( gprsStatus )
- {
- case EPSGprsContextActive:
- signalGprsIndicatorState = EAknSignalGprsIndicatorContext;
- signalIndicatorState = EAknSignalCommonPacketDataIndicatorContext;
- iGprsActivated = ETrue;
- iGprsSuspended = EFalse;
- HandleGprsNotesL();
- break;
-
- case EPSGprsContextActivating:
- signalGprsIndicatorState = EAknSignalGprsIndicatorEstablishingContext;
- signalIndicatorState = EAknSignalCommonPacketDataIndicatorEstablishingContext;
- iGprsActivated = EFalse;
- iGprsSuspended = EFalse;
- break;
-
- case EPSGprsSuspend:
- signalGprsIndicatorState = EAknSignalGprsIndicatorSuspended;
- signalIndicatorState = EAknSignalCommonPacketDataIndicatorSuspended;
- iGprsSuspended = ETrue;
- HandleGprsNotesL();
- break;
-
- case EPSGprsAttach:
- signalGprsIndicatorState = EAknSignalGprsIndicatorAttached;
- signalIndicatorState = EAknSignalCommonPacketDataIndicatorAttached;
- iGprsActivated = EFalse;
- iGprsSuspended = EFalse;
- break;
-
- case EPSGprsMultibleContextActive:
- signalGprsIndicatorState = EAknSignalGprsIndicatorMultipdp;
- signalIndicatorState = EAknSignalCommonPacketDataIndicatorMultipdp;
- iGprsActivated = ETrue;
- iGprsSuspended = EFalse;
- HandleGprsNotesL();
- break;
-
- case EPSGprsUnattached:
- default:
- signalGprsIndicatorState = EAknSignalGprsIndicatorOff;
- signalIndicatorState = EAknSignalCommonPacketDataIndicatorOff;
- iGprsSuspendedNoteShown = EFalse;
- iGprsActivated = EFalse;
- iGprsSuspended = EFalse;
- iCallActivated = EFalse;
- break;
- }
- }
-
- if(bearerValue == EBearerEdgeGPRS) //EdgeGPRS connection
- {
- if( iSysApFeatureManager->Supported( KSysApFeatureIdUseEdgeGPRSIcon ) )
- {
- iSignalNotify->SetEdgeStateL( signalGprsIndicatorState );
- }
- else
- {
- iSignalNotify->SetCommonPacketDataStateL( signalIndicatorState );
- }
- }
- else
- {
-
- if ( iSysApFeatureManager->Supported( KSysApFeatureIdGprs_G_Icon ) )
- {
- iSignalNotify->SetGprsStateL( signalGprsIndicatorState );
- }
- else
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::SetSignalIndicatorGsmL SetCommonPacketDataStateL( %d )" ), signalIndicatorState ) );
- iSignalNotify->SetCommonPacketDataStateL( signalIndicatorState );
- }
- }
+ iIgnoreNextPowerKeyUpEvent = ETrue;
+ // TRACES( RDebug::Print( _L("CSysApAppUi::Key was consumed") ) );
+ _LIT(KPowerPressKey,"Short power key");
+ HBufC* aString = HBufC16::NewLC(50);
+ TPtrC aStringPointer = aString->Des();
+ aStringPointer.Set(KPowerPressKey);
+ TRACES( RDebug::Print( _L("CSysApWsClient::RunL(): Key EEventKeyUp 01") ) );
+ ShowExampleUiNoteL( aStringPointer );
+ CleanupStack::PopAndDestroy(); // aString
}
-// ----------------------------------------------------------------------------
-// CSysApAppUi::SetSignalIndicatorWcdmaL()
-// ----------------------------------------------------------------------------
-void CSysApAppUi::SetSignalIndicatorWcdmaL()
- {
- TInt wcdmaStatus;
- wcdmaStatus = StateOfProperty( KUidSystemCategory, KPSUidWcdmaStatusValue );
- TRACES( RDebug::Print( _L("CSysApAppUi::SetSignalIndicatorWcdmaL: wcdmaStatus: %d" ), wcdmaStatus ) );
- if ( iSysApFeatureManager->Supported( KSysApFeatureIdGprs_G_Icon ) )
- {
- iSignalNotify->SetGprsStateL( EAknSignalGprsIndicatorOff );
- }
- else
- {
- iSignalNotify->SetCommonPacketDataStateL( EAknSignalCommonPacketDataIndicatorOff );
- }
+// ----------------------------------------------------------------------------
+// CSysApAppUi::SetUsbAttachStatus
+// ----------------------------------------------------------------------------
+#ifndef RD_MULTIPLE_DRIVE
+void CSysApAppUi::SetUsbAttachStatus( const TBool aUsbAttached )
+ {
+ // Prevent double beep when USB file transfer gets activated but
+ // allow MMC inserted beep when:
+ // a) USB file transfer is active
+ // b) MMC is not inserted when USB cable is attached
+ iHideNextBeep = ( iMMCInserted && aUsbAttached );
+ }
+#else // RD_MULTIPLE_DRIVE
+void CSysApAppUi::SetUsbAttachStatus( const TBool aUsbAttached )
+ {
+ TRACES( RDebug::Print(
+ _L( "CSysApAppUi::SetUsbAttachStatus: aUsbAttached: %d" ),
+ aUsbAttached ) );
- TInt signalWcdmaIndicatorState;
- TInt signalHsdpaIndicatorState;
-
- switch ( wcdmaStatus )
+ if ( aUsbAttached )
{
- case EPSWcdmaContextActive:
- signalWcdmaIndicatorState = EAknSignalWcdmaIndicatorContext;
- signalHsdpaIndicatorState = EAknSignalHsdpaIndicatorContext;
- break;
- case EPSWcdmaContextActivating:
- signalWcdmaIndicatorState = EAknSignalWcdmaIndicatorEstablishingContext;
- signalHsdpaIndicatorState = EAknSignalHsdpaIndicatorEstablishingContext;
- break;
- case EPSWcdmaSuspend:
- signalWcdmaIndicatorState = EAknSignalWcdmaIndicatorSuspended;
- signalHsdpaIndicatorState = EAknSignalHsdpaIndicatorSuspended;
- break;
- case EPSWcdmaAttach:
- signalWcdmaIndicatorState = EAknSignalWcdmaIndicatorAttached;
- signalHsdpaIndicatorState = EAknSignalHsdpaIndicatorAttached;
- break;
- case EPSWcdmaMultipleContextActive:
- signalWcdmaIndicatorState = EAknSignalWcdmaIndicatorMultipdp;
- signalHsdpaIndicatorState = EAknSignalHsdpaIndicatorMultipdp;
- break;
- case EPSWcdmaUnattached:
- default:
- signalWcdmaIndicatorState = EAknSignalWcdmaIndicatorAvailable;
- signalHsdpaIndicatorState = EAknSignalHsdpaIndicatorAvailable;
- break;
+ // For ignoring extra beeps caused by USB file transfer
+/* iSysApDriveList->ResetDrivesInsertBeepIgnored();
+ iSysApDriveList->MarkDrivesInsertBeepIgnored( iInsertedMemoryCards );
+ // Will take care in next sub
+*/ }
+ }
+#endif // RD_MULTIPLE_DRIVE
+
+
+// ----------------------------------------------------------------------------
+// CSysApAppUi::UsbChargerDetector
+// ----------------------------------------------------------------------------
+//
+TSysApUsbChargerDetector& CSysApAppUi::UsbChargerDetector()
+ {
+ return iSysApUsbChargerDetector;
+ }
+
+
+// ----------------------------------------------------------------------------
+// CSysApAppUi::HandleAccessoryDisconnectedL()
+// ----------------------------------------------------------------------------
+
+void CSysApAppUi::HandleAccessoryDisconnectedL()
+ {
+ TRACES( RDebug::Print( _L("CSysApAppUi::HandleAccessoryDisconnectedL()" ) ) );
+
+
+ TAccMode accessoryState(EAccModeHandPortable);
+ if ( iSysApAccessoryObserver )
+ {
+ accessoryState = iSysApAccessoryObserver->GetAccessoryMode();
}
- TBool showHsdpaAvailable = EFalse;
-
- if ( iSysApFeatureManager->Supported( KSysApFeatureIdUseHsdpaAvailableIcon ) )
+ if ( accessoryState == EAccModeHandPortable )
{
- // HSDPA Resource Availability information is a configurable feature.
- showHsdpaAvailable = iSysApEtelConnector->HsdpaAvailable();
+ iSysApLightsController->AccessoryConnectedL( EFalse );
+ iSysApCenRepController->SetInt( KCRUidCoreApplicationUIsSysAp, KSysApAccessoryConnected, 0 );
}
-
- TBool isHsdpaBearer = iSysApEtelConnector->IsBearerHsdpa();
-
- TRACES( RDebug::Print( _L("CSysApAppUi::SetSignalIndicatorWcdmaL: isHdpaBearer=%d, showHsdpaAvailable=%d" ),
- isHsdpaBearer, showHsdpaAvailable ) );
-
- if ( isHsdpaBearer || showHsdpaAvailable )
- {
- iSignalNotify->SetWcdmaStateL( EAknSignalWcdmaIndicatorOff );
- iSignalNotify->SetHsdpaStateL( signalHsdpaIndicatorState );
- }
- else
- {
- iSignalNotify->SetHsdpaStateL( EAknSignalHsdpaIndicatorOff );
- iSignalNotify->SetWcdmaStateL( signalWcdmaIndicatorState );
- }
- }
+
+ SetIhfIndicatorL();
+ SetHacIndicatorL();
-// ----------------------------------------------------------------------------
-// CSysApAppUi::HandleGprsNotesL()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::HandleGprsNotesL()
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::HandleGprsNotesL" ) ) );
- if ( iSysApFeatureManager->Supported( KSysApFeatureIdGPRSNotes ) )
+ // If lock disabled because of accessory, reactivate it, unless phone call or alarm is ongoing
+ if ( iKeyLockOnBeforeCradle )
{
- // In WCDMA system, receiving or making calls has no effect to the possibly
- // existing PDP contexts i.e. GPRS notes are not needed.
- TInt networkMode = StateOfProperty( KPSUidNetworkInfo, KNWTelephonyNetworkMode );
- TRACES( RDebug::Print( _L("CSysApAppUi::HandleGprsNotesL: networkMode %d" ), networkMode ) );
- if ( networkMode != ENWNetworkModeWcdma )
+ iKeyLockOnBeforeCradle = EFalse;
+ if ( !iKeyLockOnBeforeCall && !iKeyLockOnBeforeAlarm )
{
- if ( iGprsActivated && iGprsSuspended && iCallActivated && !iGprsSuspendedNoteShown )
+ if ( !iDeviceLockEnabled )
{
- StartGprsSuspendedTimer();
+ iKeyguardController->EnableKeyguard(ETrue);
}
- else if ( iGprsSuspendedNoteShown && !iGprsSuspended )
+ else
{
- ShowUiNoteL( EGprsResumedNote );
- iGprsSuspendedNoteShown = EFalse;
- iGprsSuspended = EFalse;
- iCallActivated = EFalse;
+ iKeyguardController->EnableKeyguard(EFalse);
}
}
}
}
-// ----------------------------------------------------------------------------
-// CSysApAppUi::SetIndicatorStateL( TInt aIndicator, TInt aState )
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::SetIndicatorStateL( const TInt aIndicator, const TInt aState ) const
- {
- CAknSmallIndicator* theIndicator = CAknSmallIndicator::NewLC( TUid::Uid( aIndicator ) );
- theIndicator->SetIndicatorStateL( aState );
- CleanupStack::PopAndDestroy(); //theIndicator
- }
// ----------------------------------------------------------------------------
-// CSysApAppUi::GoOnlineL()
+// CSysApAppUi::HandleAccessoryConnectedL()
// ----------------------------------------------------------------------------
-void CSysApAppUi::GoOnlineL( TBool aDoProfileChange )
+void CSysApAppUi::HandleAccessoryConnectedL( TAccMode aAccessoryState )
{
- if ( iSysApFeatureManager->OfflineModeSupported() )
+ TRACES( RDebug::Print( _L("CSysApAppUi::HandleAccessoryConnectedL( aAccessoryState: %d ) "), aAccessoryState ) );
+
+ if ( aAccessoryState == EAccModeWirelessHeadset ||
+ aAccessoryState == EAccModeWiredHeadset ||
+ aAccessoryState == EAccModeHeadphones )
+ {
+ }
+ else if ( aAccessoryState == EAccModeLoopset )
+ {
+ }
+ else if ( aAccessoryState == EAccModeTextDevice )
{
- TRACES( RDebug::Print( _L("CSysApAppUi::GoOnlineL: going from off-line into on-line: aDoProfileChange=%d" ), aDoProfileChange ) );
- // in case profile change is not needed, event handling for subsequent profile changes are must be allowed
- iHandleNextProfileEvent = !aDoProfileChange;
- iActivateBt = iSysApOfflineModeController->MustBtBeActivated();
+ }
+ else if ( aAccessoryState == EAccModeWirelessCarKit || aAccessoryState == EAccModeWiredCarKit )
+ {
+ }
+ else if ( aAccessoryState == EAccModeTVOut )
+ {
+ }
+ else if (aAccessoryState == EAccModeHDMI )
+ {
+ }
+
+ TInt swState( StateOfProperty( KPSUidStartup, KPSGlobalSystemState ) );
+ TRACES( RDebug::Print( _L("CSysApAppUi::HandleAccessoryConnectedL: swState: %d"), swState ) );
+
+ if( UiReady() || swState == ESwStateSecurityCheck )
+ {
+ iSysApLightsController->AccessoryConnectedL( ETrue );
+ }
- if ( aDoProfileChange )
+ if ( ( ! iSysApOfflineModeController->OfflineModeActive() ))
+ {
+ if ( iSysApCenRepController->GetInt( KCRUidCoreApplicationUIsSysAp, KSysApAccessoryConnected ) < 1 )
+ // accessory not connected already
+ {
+ iSysApCenRepController->SetInt( KCRUidCoreApplicationUIsSysAp, KSysApAccessoryConnected, 1 );
+ }
+ }
+
+ // Carkit and music stand have also light on permanently option that needs to be checked
+ if( aAccessoryState == EAccModeWiredCarKit || aAccessoryState == EAccModeMusicStand )
+ {
+ // When device is placed on a handsfree cradle, keyguard must be disabled (unless device is locked)
+ // Note: It is assumed that if carkit/music stand is connected, the phone is in the cradle.
+ if ( iKeyLockEnabled || iDeviceLockEnabled || iKeyLockOnBeforeCall || iKeyLockOnBeforeAlarm )
{
- TRAPD( err, ActivateProfileL( iSysApCenRepController->GetInt( KCRUidCoreApplicationUIsSysAp, KSysApProfileBeforeOfflineMode ) ) );
- if ( err == KErrNotFound )
+ iKeyLockOnBeforeCradle = ETrue;
+
+ if ( iKeyLockEnabled && !iDeviceLockEnabled )
{
- // Activate general profile instead, if previously used profile was not found
- TRACES( RDebug::Print( _L("CSysApAppUi::GoOnlineL: Previously used profile was not found, restoring to general profile" ) ) );
- ActivateProfileL(KGeneralProfileId);
+ iKeyguardController->DisableKeyguard(EFalse);
+ }
+ }
+ }
+ SetIhfIndicatorL();
+ SetHacIndicatorL();
+ }
+
+
+// ----------------------------------------------------------------------------
+// CSysApAppUi::SetHacIndicatorL()
+// ----------------------------------------------------------------------------
+void CSysApAppUi::SetHacIndicatorL()
+ {
+
+ if ( !iSysApCenRepHacSettingObserver )
+ {
+ // Do nothing if HAC setting observer has not been created yet
+ // This occurs in case some party is trying to set HAC indicator during
+ // ConstructL(), e.g. when switching from offline to online during startup
+ TRACES( RDebug::Print( _L("CSysApAppUi::SetHacIndicatorL: do nothing, HAC observer does not exist yet") ) );
+ return;
+ }
+
+ if ( iSysApCenRepHacSettingObserver->HacMode() )
+ {
+ TBool accessoryConnected ( EFalse );
+
+ TAccMode accMode(EAccModeHandPortable);
+
+ if ( iSysApAccessoryObserver )
+ {
+ accMode = iSysApAccessoryObserver->GetAccessoryMode();
+
+ if ( accMode != EAccModeHandPortable )
+ {
+ accessoryConnected = ETrue;
}
}
- iSysApOfflineModeController->SwitchFromOfflineToOnlineModeL();
- TRACES( RDebug::Print( _L("CSysApAppUi::GoOnlineL: iActivateBt = %d" ), iActivateBt ) );
- }
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::GoOfflineL()
-// ----------------------------------------------------------------------------
+// TInt indicatorState = EAknIndicatorStateOn;
-void CSysApAppUi::GoOfflineL()
- {
- if ( iSysApFeatureManager->OfflineModeSupported() )
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::GoOfflineL" ) ) );
- iHandleNextProfileEvent = EFalse;
- iDeactivateBt = ETrue;
- ActivateProfileL( KOfflineModeProfileId );
- iSysApOfflineModeController->SwitchFromOnlineToOfflineModeL();
- }
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::SwitchFromOnlineToOfflineModeL()
-// ----------------------------------------------------------------------------
-void CSysApAppUi::SwitchFromOnlineToOfflineModeL()
- {
-/* if ( iSysApFeatureManager->FmTxSupported() )
- {
- TFmTxState state = static_cast<TFmTxState>(StateOfProperty( KPSUidHWRMFmTx, KHWRMFmTxStatus ));
- switch ( state )
+ if ( !accessoryConnected ) // When accessory is not connected, check offline and call state
{
- case EFmTxStateActive:
- case EFmTxStateInactive:
- case EFmTxStateScanning:
- ShowQueryL( ESysApUseFmTxInOfflineQuery ); // show "use fm tx in offline?" if FM TX is on
- break;
-
- default:
- // do nothing
- break;
- }
- }
-*/ iSysApOfflineModeController->SwitchFromOnlineToOfflineModeL();
- }
+ if ( OfflineModeActive() ) // HAC indicator is not shown in offline mode
+ {
+ // indicatorState = EAknIndicatorStateOff;
+ }
+ else
+ {
+ // during active call with IHF activated HAC indicator is not shown
+ TInt callState( StateOfProperty( KPSUidCtsyCallInformation, KCTsyCallState ) );
+ if ( callState < KErrNone )
+ {
+ callState = EPSCTsyCallStateNone;
+ }
-// ----------------------------------------------------------------------------
-// CSysApAppUi::OfflineModeChangedL()
-// ----------------------------------------------------------------------------
-void CSysApAppUi::OfflineModeChangedL()
- {
-#ifdef SYSAP_USE_STARTUP_UI_PHASE
- // if UI is not ready, don't update indicators
- if ( !UiReady() )
- {
- return;
- }
-#endif // SYSAP_USE_STARTUP_UI_PHASE
-
- // Update network bar indicator
- if ( OfflineModeActive() )
- {
- UpdateSignalBarsL( KAknSignalOffLineMode );
+ if ( callState != EPSCTsyCallStateNone && IhfEnabledL() )
+ {
+ // indicatorState = EAknIndicatorStateOff;
+ }
+ }
+
+ }
+ else
+ {
+ // If an accessory is connected, HAC indicator should not be shown
+// indicatorState = EAknIndicatorStateOff;
+ }
+
+ // SetIndicatorStateL( EAknIndicatorHAC, indicatorState );
+
}
else
{
- UpdateSignalBarsL();
- }
-
- // Update network mode indicator
- SetSignalIndicatorL();
-
- // Update HAC indicator
- SetHacIndicatorL();
+ // If HAC is not active, always disable indicator regardless of accessory state
+ // SetIndicatorStateL( EAknIndicatorHAC, EAknIndicatorStateOff );
+ }
+
+
}
-// ----------------------------------------------------------------------------
-// CSysApAppUi::OfflineModeActive()
-// ----------------------------------------------------------------------------
-TBool CSysApAppUi::OfflineModeActive()
- {
- return iSysApOfflineModeController->OfflineModeActive();
- }
// ----------------------------------------------------------------------------
// CSysApAppUi::DoNotActivateBt()
@@ -2258,57 +1338,23 @@
iSysApOfflineModeController->DoNotActivateBt();
}
-// ----------------------------------------------------------------------------
-// CSysApAppUi::SetBtPowerState()
-// ----------------------------------------------------------------------------
-TInt CSysApAppUi::SetBtPowerState( TBool aBtState )
- {
- if ( iSysApBtController )
- {
- return iSysApBtController->SetPowerState( aBtState );
- }
- else
- {
- return KErrNotReady;
- }
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::KeyLockState() const
-// ----------------------------------------------------------------------------
-
-TBool CSysApAppUi::KeyLockState() const
- {
- return iKeyLockEnabled;
- }
// ----------------------------------------------------------------------------
-// CSysApAppUi::DeviceLockState() const
+// CSysApAppUi::IhfEnabledL
// ----------------------------------------------------------------------------
-TBool CSysApAppUi::DeviceLockState() const
- {
- return iDeviceLockEnabled;
- }
-/*
-// ----------------------------------------------------------------------------
-// CSysApAppUi::ChangeFmTxStateL()
-// ----------------------------------------------------------------------------
-void CSysApAppUi::ChangeFmTxStateL( TBool aEnable )
+TBool CSysApAppUi::IhfEnabledL()
{
- // disable fm transmission
- CHWRMFmTx* fmtx = CHWRMFmTx::NewLC();
- if ( aEnable )
- {
- fmtx->EnableL();
- }
- else
- {
- fmtx->DisableL();
- }
- CleanupStack::PopAndDestroy( fmtx );
- }
-*/
+ TRACES( RDebug::Print( _L("CSysApAppUi::IhfEnabledL(): iSysApAudioRoutingObserver=0x%x"), iSysApAudioRoutingObserver ) );
+
+ if ( !iSysApAudioRoutingObserver ) // create observer if needed
+ {
+ iSysApAudioRoutingObserver = CSysApAudioRoutingObserver::NewL( *this );
+ }
+
+ return iSysApAudioRoutingObserver->IhfEnabled();
+ }
+
// ----------------------------------------------------------------------------
// CSysApAppUi::SetIhfIndicatorL()
@@ -2334,786 +1380,100 @@
if( (callState != EPSCTsyCallStateNone && IhfEnabledL() && !accessoryConnected)
|| accMode == EAccModeMusicStand ) // Music stand always shows IHF indicator
{
- SetIndicatorStateL( EAknIndicatorIHFActive, EAknIndicatorStateOn );
-
if ( accMode == EAccModeMusicStand )
{
- // hide other accessory indicators to prevent displaying of duplicate icons in some cases
- // e.g. when wireless hf is connected
- SetIndicatorStateL( EAknIndicatorLoopset, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorTTY, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorHeadset, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorHeadsetUnavailable, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorCarkit, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorTvOut, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorHDMI, EAknIndicatorStateOff );
+ // do nothing
}
}
else
{
- SetIndicatorStateL( EAknIndicatorIHFActive, EAknIndicatorStateOff );
- }
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::HandleSmsStorageNotificationL( TBool aSimStoreFull )
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::HandleSmsStorageNotificationL( TBool aSimStoreFull )
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::HandleSmsStorageNotificationL: aSimStoreFull: %d "), aSimStoreFull ) );
-
- if ( aSimStoreFull )
- {
- HBufC* noteStringBuf;
- noteStringBuf = StringLoader::LoadLC( R_QTN_MEMLO_MEMORY_LOW_SIM_MES, iEikonEnv );
- TPtr textBuffer = noteStringBuf->Des();
- iSysApMsgSimMemLowQuery->StartL( textBuffer );
- CleanupStack::PopAndDestroy();
- }
-
- SetEnvelopeIndicatorL();
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::HandleNspsRawKeyEventL()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::HandleNspsRawKeyEventL()
- {
-#ifdef __SYSAP_MODULE_TEST
- ModuleTestShowUiNoteL( _L("Network wakeup from NSPS") );
-#endif
-
- if ( iSysApEtelConnector )
- {
- iSysApEtelConnector->CommandNetCsWakeupOnNsps();
- }
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::HandleNetworkNspsNotification( RMmCustomAPI::TNspsStatus aNspsStatus )
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::HandleNetworkNspsNotification( RMmCustomAPI::TNspsStatus aNspsStatus )
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::HandleNetworkNspsNotification aNspsStatus:%d, iNsps:%d )" ), aNspsStatus, iNsps ) );
- if( iSysApNspsHandler )
- {
- if( aNspsStatus == RMmCustomAPI::ENspsOn )
- {
- if( !iNsps )
- {
-#ifdef __SYSAP_MODULE_TEST
- TRAPD( err, ModuleTestShowUiNoteL( _L("Setting NSPS on") ) );
-#endif
- iSysApNspsHandler->SetNspsOn();
- iNsps = ETrue;
- }
- }
- else if( aNspsStatus == RMmCustomAPI::ENspsOff )
- {
- if( iNsps )
- {
-#ifdef __SYSAP_MODULE_TEST
- TRAPD( err, ModuleTestShowUiNoteL( _L("Setting NSPS off") ) );
-#endif
- iSysApNspsHandler->SetNspsOff();
- iNsps = EFalse;
- }
- }
- }
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::HandleMessageTonePlayingQuitability( TInt aTonePlayingStatus )
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::HandleMessageTonePlayingQuitability( TInt aTonePlayingStatus )
- {
- if( iSysApNspsHandler )
- {
- if( aTonePlayingStatus == ECoreAppUIsStopTonePlaying )
- {
- iSysApNspsHandler->SetMessageToneNotPlaying();
- }
- else if( aTonePlayingStatus == ECoreAppUIsTonePlaying )
- {
- iSysApNspsHandler->SetMessageTonePlaying();
- }
- }
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::ActivateKeyeventForwardingForLights()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::ActivateKeyeventForwardingForLights(TBool aActivate)
- {
- if( iSysApNspsHandler )
- {
- if ( aActivate )
- {
- iSysApNspsHandler->ActivateKeyeventForwardingForLights();
- }
- else
- {
- iSysApNspsHandler->DeActivateKeyeventForwardingForLights();
- }
- }
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::StartShutDownTimerOnAlarmAndChargingStates()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::StartShutDownTimerOnAlarmAndChargingStates()
- {
- if( !iAlarmOrChargingStateShutdownStarted )
- {
- if ( !iTimer )
- {
- TRAPD( err, iTimer = CPeriodic::NewL( EPriorityNormal ) );
-
- if ( err != KErrNone )
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::StartShutDownTimerOnAlarmAndChargingStates: CPeriodic::NewL failed: %d"), err ) );
- return;
- }
- }
- iTimer->Cancel();
- iTimer->Start( KDelayBeforeShuttingDownInAlarmAndChargingStates,
- KDelayBeforeShuttingDownInAlarmAndChargingStates,
- TCallBack( DoShutdownOnAlarmStateAfterCallBack, this ) );
- iAlarmOrChargingStateShutdownStarted = ETrue;
- }
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::DoShutdownOnAlarmStateAfterCallBack( TAny* aObject )
-// ----------------------------------------------------------------------------
-
-TInt CSysApAppUi::DoShutdownOnAlarmStateAfterCallBack( TAny* aObject )
- {
- CSysApAppUi* appUi = STATIC_CAST( CSysApAppUi*, aObject );
-
- if ( appUi->iTimer )
- {
- appUi->iTimer->Cancel();
- }
-
- TRAP_IGNORE( appUi->DoShutdownL( EFalse, KDummyReason ) );
-
- return KErrNone;
- }
-
-#ifndef RD_STARTUP_ANIMATION_CUSTOMIZATION
-// ----------------------------------------------------------------------------
-// CSysApAppUi::StartAnimTiming()
-// ----------------------------------------------------------------------------
-void CSysApAppUi::StartAnimTiming()
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::StartAnimTiming() Start animation timer, time %d ms" ), iAnimationShowingTime ) );
-
- if ( !iAnimTimer )
- {
- TRAPD( err, iAnimTimer = CPeriodic::NewL( EPriorityNormal ) );
-
- if ( err != KErrNone )
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::StartAnimTiming() CPeriodic::NewL failed %d " ), err ) );
- return;
- }
- }
-
- iAnimTimer->Start(
- iAnimationShowingTime*KCoefficientToMakeMicroToMilliSeconds,
- iAnimationShowingTime*KCoefficientToMakeMicroToMilliSeconds,
- TCallBack( DoStopAnimTiming, this ) );
- }
-#endif // RD_STARTUP_ANIMATION_CUSTOMIZATION
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::DoStopAnimTiming( TAny* aObject )
-// ----------------------------------------------------------------------------
-
-TInt CSysApAppUi::DoStopAnimTiming( TAny* aObject )
- {
- TInt err(KErrNone);
- CSysApAppUi* appUi = STATIC_CAST( CSysApAppUi*, aObject );
-
- // This method could theoretically be called by two timers (iAnimTimer and one in CSysApShutdownAnimation),
- // so a check is needed to prevent multiple executions.
- if ( !(appUi->iShutdownContinued) )
- {
- appUi->iShutdownContinued = ETrue;
-
- TRACES( RDebug::Print( _L("CSysApAppUi::DoStopAnimTiming() Animation timer completed or animation skipped" ) ) );
-
-#ifndef RD_STARTUP_ANIMATION_CUSTOMIZATION
- if ( appUi->iAnimTimer )
- {
- appUi->iAnimTimer->Cancel();
- }
-#endif // RD_STARTUP_ANIMATION_CUSTOMIZATION
-
- if ( appUi->iTimer )
- {
- appUi->iTimer->Cancel();
- }
-
- TRACES( RDebug::Print( _L("CSysApAppUi::DoStopAnimTiming() Call ContinueShutdown(...)" ) ) );
- appUi->ContinueShutdown();
- TRACES( RDebug::Print( _L("CSysApAppUi::DoStopAnimTiming() end") ) );
- }
-
- return err;
- }
-
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::StartGprsSuspendedTimer()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::StartGprsSuspendedTimer()
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::StartGprsSuspendedTimer()") ) );
- if( !iAlarmOrChargingStateShutdownStarted ) // not relevant if shutting down
- {
- if ( !iTimer )
- {
- TRAPD( err, iTimer = CPeriodic::NewL( EPriorityNormal ) );
-
- if ( err != KErrNone )
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::StartGprsSuspendedTimer: CPeriodic::NewL failed: %d"), err ) );
- return;
- }
- }
-
- iTimer->Cancel();
- iTimer->Start( KDelayBeforeShowingGprsSuspendedNote,
- KDelayBeforeShowingGprsSuspendedNote,
- TCallBack( ShowGprsSuspendedNoteAfterCallBack, this ) );
+ // do nothing
}
}
// ----------------------------------------------------------------------------
-// CSysApAppUi::ShowGprsSuspendedNoteAfterCallBack( TAny* aObject )
+// CSysApAppUi::DoLightsTimeoutChangedL
// ----------------------------------------------------------------------------
-
-TInt CSysApAppUi::ShowGprsSuspendedNoteAfterCallBack( TAny* aObject )
+void CSysApAppUi::DoLightsTimeoutChangedL( const TInt aTimeout )
{
- TRACES( RDebug::Print( _L("CSysApAppUi::ShowGprsSuspendedNoteAfterCallBack") ) );
-
- CSysApAppUi* appUi = STATIC_CAST( CSysApAppUi*, aObject );
-
- if ( appUi->iTimer )
- {
- appUi->iTimer->Cancel();
- }
-
- // Note is needed if call is still active and used network is not WCDMA
- TInt callType = appUi->StateOfProperty( KPSUidCtsyCallInformation, KCTsyCallType );
- TInt networkMode = appUi->StateOfProperty( KPSUidNetworkInfo, KNWTelephonyNetworkMode );
- TRACES( RDebug::Print(
- _L("CSysApAppUi::ShowGprsSuspendedNoteAfterCallBack: callType %d networkMode %d"),
- callType, networkMode ) );
- if ( EPSCTsyCallTypeCSVoice == callType && ENWNetworkModeWcdma != networkMode )
- {
- appUi->iGprsSuspendedNoteShown = ETrue;
- TRAP_IGNORE( appUi->ShowUiNoteL( EGprsSuspendedNote ) );
- }
- return KErrNone;
+ iSysApLightsController->DoLightsTimeoutChangedL( aTimeout );
}
+
// ----------------------------------------------------------------------------
-// CSysApAppUi::HandleAccessoryConnectedL()
+// CSysApAppUi::DoSwStateNormalConstructionL()
// ----------------------------------------------------------------------------
-void CSysApAppUi::HandleAccessoryConnectedL( TAccMode aAccessoryState )
+void CSysApAppUi::DoSwStateNormalConstructionL()
{
- TRACES( RDebug::Print( _L("CSysApAppUi::HandleAccessoryConnectedL( aAccessoryState: %d ) "), aAccessoryState ) );
+ // Let's ensure that the lights will remain on for 15 secs after sw state normal
+ User::ResetInactivityTime();
- if ( aAccessoryState == EAccModeWirelessHeadset ||
- aAccessoryState == EAccModeWiredHeadset ||
- aAccessoryState == EAccModeHeadphones )
- {
- SetIndicatorStateL( EAknIndicatorLoopset, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorTTY, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorHeadset, EAknIndicatorStateOn );
- SetIndicatorStateL( EAknIndicatorHeadsetUnavailable, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorCarkit, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorTvOut, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorHDMI, EAknIndicatorStateOff );
- }
- else if ( aAccessoryState == EAccModeLoopset )
- {
- SetIndicatorStateL( EAknIndicatorHeadset, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorTTY, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorLoopset, EAknIndicatorStateOn );
- SetIndicatorStateL( EAknIndicatorHeadsetUnavailable, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorCarkit, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorTvOut, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorHDMI, EAknIndicatorStateOff );
- }
- else if ( aAccessoryState == EAccModeTextDevice )
+ TRACES( RDebug::Print( _L("CSysApAppUi::DoSwStateNormalConstructionL : START" ) ) );
+
+ // In case of unexpected reset (e.g. hidden boot) the keylock must be enabled silently. Locking is done
+ // prior to time-consuming initializations, because otherwise UI is in unlocked state for a few seconds.
+ if ( iSysApCenRepController->GetInt( KCRUidCoreApplicationUIsSysAp, KSysApKeyguardActive ) == 1 )
{
- SetIndicatorStateL( EAknIndicatorHeadset, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorLoopset, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorTTY, EAknIndicatorStateOn );
- SetIndicatorStateL( EAknIndicatorHeadsetUnavailable, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorCarkit, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorTvOut, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorHDMI, EAknIndicatorStateOff );
- }
- else if ( aAccessoryState == EAccModeWirelessCarKit || aAccessoryState == EAccModeWiredCarKit )
- {
- SetIndicatorStateL( EAknIndicatorHeadset, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorLoopset, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorTTY, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorHeadsetUnavailable, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorCarkit, EAknIndicatorStateOn );
- SetIndicatorStateL( EAknIndicatorTvOut, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorHDMI, EAknIndicatorStateOff );
- }
- else if ( aAccessoryState == EAccModeTVOut )
- {
- SetIndicatorStateL( EAknIndicatorHeadset, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorLoopset, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorTTY, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorHeadsetUnavailable, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorCarkit, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorTvOut, EAknIndicatorStateOn );
- SetIndicatorStateL( EAknIndicatorHDMI, EAknIndicatorStateOff );
- }
- else if (aAccessoryState == EAccModeHDMI )
- {
- SetIndicatorStateL( EAknIndicatorHeadset, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorLoopset, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorTTY, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorHeadsetUnavailable, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorCarkit, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorTvOut, EAknIndicatorStateOff);
- SetIndicatorStateL( EAknIndicatorHDMI, EAknIndicatorStateOn );
- }
-
- TInt swState( StateOfProperty( KPSUidStartup, KPSGlobalSystemState ) );
- TRACES( RDebug::Print( _L("CSysApAppUi::HandleAccessoryConnectedL: swState: %d"), swState ) );
-
- if( UiReady() || swState == ESwStateSecurityCheck )
- {
- iSysApLightsController->AccessoryConnectedL( ETrue );
+ TRACES( RDebug::Print( _L("CSysApAppUi::DoSwStateNormalConstructionL: enabling keylock") ) );
+ iKeyguardController->EnableKeyguard(ETrue);
}
- if ( ( ! iIgnoreAccessorySpecificProfileChanges ) && ( ! iSysApOfflineModeController->OfflineModeActive() ) )
- {
- TInt profileId( 0 );
- TInt currentProfile( 0 );
- currentProfile = ActiveProfileId();
+ // Initiate bearer change observation
+// iSysApConnectionMonitorObserver = CSysApConnectionMonitorObserver::NewL( *this );
- if ( iSysApCenRepController->GetInt( KCRUidCoreApplicationUIsSysAp, KSysApAccessoryConnected ) < 1 )
- // accessory not connected already
- {
- iSysApCenRepController->SetInt( KCRUidCoreApplicationUIsSysAp, KSysApAccessoryConnected, 1 );
- iSysApCenRepController->SetInt( KCRUidCoreApplicationUIsSysAp, KSysApActiveProfileBeforeAccessoryConnected, currentProfile );
- }
+ TRACES( RDebug::Print( _L("SysAp: trying CSystemLock::NewL" ) ) );
+ iSysApSystemLock = CSystemLock::NewL();
- if ( aAccessoryState == EAccModeWirelessCarKit )
- {
- profileId = iSysApCenRepController->ProfileIdForSelectedAccessory( ESysApWirelessCarkit );
- }
- else if( aAccessoryState == EAccModeWiredHeadset ||
- aAccessoryState == EAccModeWirelessHeadset )
- {
- profileId = iSysApCenRepController->ProfileIdForSelectedAccessory( ESysApHeadset );
- }
- else if( aAccessoryState == EAccModeLoopset )
- {
- profileId = iSysApCenRepController->ProfileIdForSelectedAccessory( ESysApLoopset );
- }
- else if( aAccessoryState == EAccModeTextDevice )
- {
- profileId = iSysApCenRepController->ProfileIdForSelectedAccessory( ESysApTty );
- }
- else if( aAccessoryState == EAccModeTVOut || aAccessoryState == EAccModeHDMI )
- {
- profileId = iSysApCenRepController->ProfileIdForSelectedAccessory( ESysApTvOut );
- }
- else if( aAccessoryState == EAccModeHeadphones )
- {
- profileId = iSysApCenRepController->ProfileIdForSelectedAccessory( ESysApHeadphones );
- }
- else if ( aAccessoryState == EAccModeWiredCarKit )
- {
- profileId = iSysApCenRepController->ProfileIdForSelectedAccessory( ESysApCarkit );
- }
- else if ( aAccessoryState == EAccModeMusicStand )
- {
- profileId = iSysApCenRepController->ProfileIdForSelectedAccessory( ESysApMusicStand );
- }
-
- // Carkit and music stand have also light on permanently option that needs to be checked
- if( aAccessoryState == EAccModeWiredCarKit || aAccessoryState == EAccModeMusicStand )
- {
- // When device is placed on a handsfree cradle, keyguard must be disabled (unless device is locked)
- // Note: It is assumed that if carkit/music stand is connected, the phone is in the cradle.
- if ( iKeyLockEnabled || iDeviceLockEnabled || iKeyLockOnBeforeCall || iKeyLockOnBeforeAlarm )
- {
- iKeyLockOnBeforeCradle = ETrue;
-
- if ( iKeyLockEnabled && !iDeviceLockEnabled )
- {
- KeyLock().DisableWithoutNote();
- }
- }
- }
-
- if( profileId != KActiveProfile )
- {
- /*-1 because the first item in Accessory default profiles shared data values
- is KActiveProfile and that must be subtracted from the index of profile to be activated*/
-
- profileId -= 1;
-
- TRACES( RDebug::Print( _L("CSysApAppUi::HandleAccessoryConnectedL: current profile: %d, accessory profile: %d" ),
- currentProfile, profileId ) );
-
- if ( profileId != currentProfile )
- {
- iAccessoryJustConnected = ETrue;
- iSysApCenRepController->SetInt( KCRUidCoreApplicationUIsSysAp, KSysApProfileUpdateRequired, 1 );
- ActivateProfileL( profileId );
- }
- }
+
+ if ( iSysApFeatureManager->Supported( KSysApFeatureIdBatteryInfoPopup ) )
+ {
+ iSysApBatteryInfoController = CSysApBatteryInfoController::NewL( iSysApCenRepController->GetInt( KCRUidCoreApplicationUIsConf,
+ KCoreAppUIsBatteryInformationLowThreshold ) );
}
- SetIhfIndicatorL();
- SetHacIndicatorL();
+ TRACES( RDebug::Print( _L("CSysApAppUi::DoSwStateNormalConstructionL : END" ) ) );
}
-// ----------------------------------------------------------------------------
-// CSysApAppUi::HandleAccessoryDisconnectedL()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::HandleAccessoryDisconnectedL()
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::HandleAccessoryDisconnectedL()" ) ) );
- TAccMode accessoryState(EAccModeHandPortable);
- if ( iSysApAccessoryObserver )
- {
- accessoryState = iSysApAccessoryObserver->GetAccessoryMode();
- }
+// ----------------------------------------------------------------------------
+// CSysApAppUi::DoSimChangedFromPreviousBootL()
+// ----------------------------------------------------------------------------
- if ( accessoryState == EAccModeHandPortable )
- {
- SetIndicatorStateL( EAknIndicatorTvOut, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorLoopset, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorHeadset, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorTTY, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorHeadsetUnavailable, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorCarkit, EAknIndicatorStateOff );
- SetIndicatorStateL( EAknIndicatorHDMI, EAknIndicatorStateOff );
-
- iSysApLightsController->AccessoryConnectedL( EFalse );
-
- if ( ! iIgnoreAccessorySpecificProfileChanges )
- {
- TInt activeProfile ( ActiveProfileId() );
+void CSysApAppUi::DoSimChangedFromPreviousBootL()
+ {
+ TRACES( RDebug::Print( _L("CSysApAppUi::DoSimChangedFromPreviousBootL: iSimChangedDone=%d" ), iSimChangedDone ) );
- TInt activeProfileBeforeConnectingAccessory(
- iSysApCenRepController->GetInt( KCRUidCoreApplicationUIsSysAp, KSysApActiveProfileBeforeAccessoryConnected )
- );
- if ( activeProfileBeforeConnectingAccessory < 0 ) // error
- {
- activeProfileBeforeConnectingAccessory = 0; // General Profile
- }
- TRACES( RDebug::Print( _L("CSysApAppUi::HandleAccessoryDisconnectedL: active profile now: %d, active profile before: %d," ),
- activeProfile, activeProfileBeforeConnectingAccessory ) );
-
- if ( iSysApCenRepController->GetInt( KCRUidCoreApplicationUIsSysAp, KSysApProfileUpdateRequired ) == 1 )
- {
- iSysApCenRepController->SetInt( KCRUidCoreApplicationUIsSysAp, KSysApProfileUpdateRequired, 0 );
- if ( activeProfile != activeProfileBeforeConnectingAccessory && ! iSysApOfflineModeController->OfflineModeActive() )
- {
- ActivateProfileL( activeProfileBeforeConnectingAccessory );
- }
- }
- iSysApCenRepController->SetInt( KCRUidCoreApplicationUIsSysAp, KSysApAccessoryConnected, 0 );
- }
- }
-
- SetIhfIndicatorL();
- SetHacIndicatorL();
-
- // If lock disabled because of accessory, reactivate it, unless phone call or alarm is ongoing
- if ( iKeyLockOnBeforeCradle )
+ if ( !iSimChangedDone )
{
- iKeyLockOnBeforeCradle = EFalse;
- if ( !iKeyLockOnBeforeCall && !iKeyLockOnBeforeAlarm )
- {
- if ( !iDeviceLockEnabled )
- {
- KeyLock().EnableKeyLock();
- }
- else
- {
- KeyLock().EnableAutoLockEmulation();
- }
- }
+ iSimChangedDone = ETrue;
+ CSysApSimChanged* simChanged = CSysApSimChanged::NewL( *this, iEikonEnv->FsSession() );
+ CleanupStack::PushL( simChanged );
+ simChanged->HandleSimChangedL();
+ CleanupStack::PopAndDestroy( simChanged );
}
}
-// ----------------------------------------------------------------------------
-// CSysApAppUi::HandleAccessoryProfileInStartupL()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::HandleAccessoryProfileInStartupL()
- {
- TRACES( RDebug::Print( _L( "CSysApAppUi::HandleAccessoryProfileInStartupL" ) ) );
-
- if ( !iSysApOfflineModeController->OfflineModeActive() )
- {
- iIgnoreAccessorySpecificProfileChanges = EFalse;
- TBool accessoryConnectedInShutdown( EFalse );
- TInt accessoryTemp( iSysApCenRepController->GetInt( KCRUidCoreApplicationUIsSysAp, KSysApAccessoryConnected ) );
- if ( accessoryTemp == 1 )
- {
- accessoryConnectedInShutdown = ETrue;
- }
-
- TBool accessoryConnectedNow ( EFalse );
-
- TAccMode accessoryState(EAccModeHandPortable);
- if ( iSysApAccessoryObserver )
- {
- accessoryState = iSysApAccessoryObserver->GetAccessoryMode();
- }
-
- if ( accessoryState != EAccModeHandPortable )
- {
- accessoryConnectedNow = ETrue;
- }
- TRACES( RDebug::Print( _L( "CSysApAppUi::HandleAccessoryProfileInStartupL: accessoryConnectedInShutdown: %d, accessoryConnectedNow: %d" ),
- accessoryConnectedInShutdown, accessoryConnectedNow ) );
-
- if ( accessoryConnectedInShutdown && !accessoryConnectedNow )
- {
- HandleAccessoryDisconnectedL();
- }
- else if ( !accessoryConnectedInShutdown && accessoryConnectedNow )
- {
- HandleAccessoryConnectedL( accessoryState );
- }
- else if ( !accessoryConnectedNow )
- {
- TInt activeProfile ( ActiveProfileId() );
- iSysApCenRepController->SetInt( KCRUidCoreApplicationUIsSysAp, KSysApActiveProfileBeforeAccessoryConnected, activeProfile );
- }
- }
- }
-
-#ifndef RD_MULTIPLE_DRIVE
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::ResolveUidFromThread()
-// ----------------------------------------------------------------------------
-TInt32 CSysApAppUi::ResolveUidFromThread( TUint aThreadId ) const
- {
- TInt resolvedUid = 0;
-
- RThread appThread;
- TInt err = appThread.Open( aThreadId );
-
- if ( err == KErrNone )
- {
- resolvedUid = appThread.SecureId().iId;
- }
-
- appThread.Close();
-
- TRACES( RDebug::Print( _L("CSysApAppUi::ResolveUidFromThread: err=%d, aThreadId=%d, resolvedUid=0x%x"),
- err, aThreadId, resolvedUid ) );
-
- return resolvedUid;
- }
// ----------------------------------------------------------------------------
-// CSysApAppUi::CloseUIAppsInHotSwapL()
+// CSysApAppUi::IgnoreZeroNetworkBarNotifications
// ----------------------------------------------------------------------------
-void CSysApAppUi::CloseUIAppsInHotSwapL()
+//
+void CSysApAppUi::IgnoreZeroNetworkBarNotifications(TBool aIgnore)
{
- TRACES( RDebug::Print( _L("CSysApAppUi::CloseUIAppsInHotSwapL") ) );
-
- CArrayFixFlat<TInt>* wgIds=new(ELeave) CArrayFixFlat<TInt>(4);
- CleanupStack::PushL(wgIds);
- User::LeaveIfError(iCoeEnv->WsSession().WindowGroupList(0, wgIds));
- TInt lastEntry=wgIds->Count()-1;
- TRACES( RDebug::Print( _L( "CSysApAppUi::CloseUIAppsInHotSwapL: Found %d UI applications running." ), lastEntry + 1 ) );
- TInt numberOfApplicationsToShutDown( 0 );
- iApplicationScanningRoundNumber++;
-
- for ( TInt i=lastEntry; i>=0; i--)
- {
- CApaWindowGroupName* doomedApp = CApaWindowGroupName::NewLC(iCoeEnv->WsSession(),wgIds->At(i));
-
- TBool systemApp = doomedApp->IsSystem();
- TBool hiddenApp = doomedApp->Hidden();
-
- if ( systemApp || hiddenApp )
- {
- TRACES (
- TPtrC caption=doomedApp->Caption();
- RDebug::Print( _L("CSysApAppUi::CloseUIAppsInHotSwapL: Privileged app \"%S\" UID 0x%x will not be closed, system: %d, hidden: %d" ),
- &caption,
- doomedApp->AppUid().iUid,
- systemApp,
- hiddenApp);
- );
- }
- else if ( ( iFileManagerCloseDisabled && doomedApp->AppUid().iUid == KFileManagerAppUid ) ||
- doomedApp->AppUid().iUid == KAutolockAppUid )
- {
- // An additional failure protection: Autolock must not be closed in any circumstances
- TRACES (
- TPtrC caption=doomedApp->Caption();
- RDebug::Print( _L("CSysApAppUi::CloseUIAppsInHotSwapL: Privileged app \"%S\" will not be closed, UID 0x%x"),
- &caption,
- doomedApp->AppUid().iUid );
- );
- }
- else if ( doomedApp->AppUid().iUid == 0 && !iTimeToKill )
- {
-#ifdef _DEBUG
- TApaTask task(iCoeEnv->WsSession());
- task.SetWgId(wgIds->At(i));
- TUint threadId = (TUint)(task.ThreadId());
- TInt32 uid = ResolveUidFromThread( threadId );
- // CApaWindowGroupName stores the application UID, and in early application startup state AppUid()-method returns 0
- // In order not to accidentally close application that hasn't yet its window group properly set up, decicision whether
- // to close the application is postponed, in maximum to the end of the waiting period.
- TRACES ( RDebug::Print( _L("CSysApAppUi::CloseUIAppsInHotSwapL: Unknown app will not be closed yet, threadId=%d, UID 0x%x, size=%d"),
- threadId, uid, sizeof(TApaTask) ) );
-#endif // _DEBUG
- numberOfApplicationsToShutDown++; // wait note must be displayed
- }
- else
- {
- numberOfApplicationsToShutDown++;
- TApaTask* task = new (ELeave) TApaTask(iCoeEnv->WsSession());
- CleanupDeletePushL(task);
- task->SetWgId(wgIds->At(i));
-
- TRACES (
- const TDesC& caption = doomedApp->Caption();
- const TDesC& docname = doomedApp->DocName();
- const TDesC& wgname = doomedApp->WindowGroupName();
- TUid uid = doomedApp->AppUid();
- RDebug::Print( _L("CSysApAppUi::CloseUIAppsInHotSwapL: Closing app \"%S\" (ThreadId %d, WgId %d, UID 0x%X); Docname: %S, WGName : %S"),
- &caption,
- (TUint)(task->ThreadId()),
- wgIds->At(i),
- uid.iUid,
- &docname,
- &wgname);
- );
-
- ResolveUidFromThread( (TUint)(task->ThreadId()) );
-
- if ( iApplicationScanningRoundNumber == 1 )
- {
- task->EndTask(); // applications are kindly requested to close themselves on the first round
- }
- else if ( iTimeToKill )
- {
- TBool doKill = ETrue;
-
- // final check, window group may still be uninitialized so use thread id for checking UID
- if ( doomedApp->AppUid().iUid == 0 )
- {
- if ( ResolveUidFromThread( (TUint)(task->ThreadId()) ) == KAutolockAppUid )
- {
- doKill = EFalse;
- }
- }
-
- if ( doKill )
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::CloseUIAppsInHotSwapL: Killing app \"%S\""), &caption ) );
- task->KillTask(); // used after timeout on the last round
- }
- }
-
- CleanupStack::PopAndDestroy(); // task
- }
- CleanupStack::PopAndDestroy(); // doomedApp
- }
- CleanupStack::PopAndDestroy(); // wgIds
-
- if ( numberOfApplicationsToShutDown > 0 && iApplicationScanningRoundNumber <= KMaxExitTimeInHotSwap )
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::CloseUIAppsInHotSwapL: Show wait note, unless already showing") ) );
- if ( !iSysApWaitNote )
- {
- HBufC* noteStringBuf = StringLoader::LoadLC( R_QTN_MEMC_WAIT_EJECT, iEikonEnv );
- iSysApWaitNote = CSysApWaitNote::NewL( iSysApFeatureManager->CoverDisplaySupported() );
- iSysApWaitNote->ShowNoteL( EClosingApplicationsNote, noteStringBuf );
- CleanupStack::PopAndDestroy();
- }
-
- if ( iApplicationScanningRoundNumber >= KMaxExitTimeInHotSwap )
- {
- iTimeToKill = ETrue;
- }
-
- if ( !iSysApTimer )
- {
- iSysApTimer = new ( ELeave ) CSysApTimer( *this );
- }
-
- iSysApTimer->ActivateTimerL( KApplicationScanningInterval );
- }
- else
- {
- iFileManagerCloseDisabled = EFalse;
- CompleteAppsShuttingInHotSwapL();
- }
+ iIgnoreZeroNetworkBarNotifications = aIgnore;
}
-#endif // RD_MULTIPLE_DRIVE
+
// ----------------------------------------------------------------------------
-// CSysApAppUi::TimerExpiredL()
+// CSysApAppUi::SwitchFromOnlineToOfflineModeL()
// ----------------------------------------------------------------------------
-void CSysApAppUi::TimerExpiredL()
+void CSysApAppUi::SwitchFromOnlineToOfflineModeL()
{
-#ifndef RD_MULTIPLE_DRIVE
- CloseUIAppsInHotSwapL();
-#endif // RD_MULTIPLE_DRIVE
+ iSysApOfflineModeController->SwitchFromOnlineToOfflineModeL();
}
-#ifndef RD_MULTIPLE_DRIVE
-// ----------------------------------------------------------------------------
-// CSysApAppUi::CompleteAppsShuttingInHotSwapL()
-// ----------------------------------------------------------------------------
-void CSysApAppUi::CompleteAppsShuttingInHotSwapL()
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::CompleteAppsShuttingInHotSwapL iMMCEjectUsed=%d, iMMCInserted=%d"), iMMCEjectUsed, iMMCInserted ) );
- CancelWaitNote();
-
- if ( iMMCEjectUsed ) // From Powerkey Menu
- {
- DismountMMC();
- TRACES( RDebug::Print( _L( "CSysApAppUi::CompleteAppsShuttingInHotSwapL: Show note: Remove MMC and press OK...." ) ) );
- ShowQueryL( ESysApRemoveMmcNote );
- }
- else if ( !iMMCInserted ) // The MMC might have been already re-mounted, that's why !iMMCInserted
- {
- ShowMMCDismountedDialogL();
- }
- }
-#endif // RD_MULTIPLE_DRIVE
// ----------------------------------------------------------------------------
// CSysApAppUi::InitCloseSimApplicationsL()
@@ -3125,6 +1485,7 @@
CloseSimApplicationsL();
}
+
// ----------------------------------------------------------------------------
// CSysApAppUi::CloseSimApplicationsL()
// ----------------------------------------------------------------------------
@@ -3186,6 +1547,7 @@
}
}
+
// ----------------------------------------------------------------------------
// CSysApAppUi::DoCloseSimApplicationsAfterCallBack
// ----------------------------------------------------------------------------
@@ -3203,3377 +1565,7 @@
return KErrNone;
}
-// ----------------------------------------------------------------------------
-// CSysApAppUi::AlertUiAlertingL( const TBool aAlerting )
-// ----------------------------------------------------------------------------
-void CSysApAppUi::AlertUiAlertingL( const TBool aAlerting )
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::AlertUiAlerting aAlerting:%d"), aAlerting ) );
- if ( aAlerting )
- {
- TInt swState;
- RProperty::Get( KPSUidStartup, KPSGlobalSystemState, swState );
-
- if( swState == ESwStateCharging )
- {
- SetStarterState( RStarterSession::EAlarm );
- }
- }
-
- iSysApLightsController->AlarmOccuredL( aAlerting );
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::AlertUiKeyLockOff( const TBool aKeyLockOff )
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::AlertUiKeyLockOff( const TBool aKeyLockOff )
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::AlertUiKeyLockOff aKeyLockOff:%d, devicelock:%d"),
- aKeyLockOff, iDeviceLockEnabled ) );
-
- if( aKeyLockOff )
- {
- // Notification to release keypad might come several times if e.g. calls are received
- if ( !iKeyLockOnBeforeAlarm )
- {
- if ( iKeyLockEnabled || iKeyLockOnBeforeCradle || iKeyLockOnBeforeCall )
- {
- iKeyLockOnBeforeAlarm = ETrue;
- }
- }
- KeyLock().DisableWithoutNote();
- }
- else
- {
- if (iDeviceLockEnabled)
- {
- // Re-enable keylock in devicelock case only if phone call is not ongoing or is
- // connected. Otherwise e.g. messages can be read using softkeys during ongoing call.
- TInt callState( StateOfProperty( KPSUidCtsyCallInformation, KCTsyCallState ) );
- if ( callState == EPSCTsyCallStateNone || callState == EPSCTsyCallStateConnected )
- {
- KeyLock().EnableAutoLockEmulation();
- }
- }
- else if ( iKeyLockOnBeforeAlarm && !iKeyLockOnBeforeCradle && !iKeyLockOnBeforeCall )
- {
- KeyLock().EnableKeyLock();
- }
- iKeyLockOnBeforeAlarm = EFalse;
- }
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::HandleLightsRequireL()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::HandleLightsRequireL() const
- {
- iSysApLightsController->HandleLightsRequireL();
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::HandleRawKeyEventLightsRequireL()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::HandleRawKeyEventLightsRequireL() const
- {
- iSysApLightsController->HandleRawKeyEventLightsRequireL();
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::HandleForcedLightsVTRequireL( const TInt aLightParameter )
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::HandleForcedLightsVTRequireL( const TInt aLightsParameter ) const
- {
- iSysApLightsController->HandleForcedLightsVTRequireL( aLightsParameter );
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::HandleForcedLightsSSRequireL( const TInt aLightParameter )
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::HandleForcedLightsSSRequireL( const TInt aLightsParameter ) const
- {
- iSysApLightsController->HandleForcedLightsSSRequireL( aLightsParameter );
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::HandleForcedLightsATCRequireL( const TInt aLightParameter )
-// ----------------------------------------------------------------------------
-void CSysApAppUi::HandleForcedLightsATCRequireL( const TInt aLightsParameter ) const
- {
- iSysApLightsController->HandleForcedLightsATCRequireL( aLightsParameter );
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::SwitchLightsOnSoftRejectL()
-// ----------------------------------------------------------------------------
-void CSysApAppUi::SwitchLightsOnSoftRejectL()
- {
- iSysApLightsController->SwitchLightsOnSoftRejectL();
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::StateOfProperty()
-// ----------------------------------------------------------------------------
-TInt CSysApAppUi::StateOfProperty( const TUid& aCategory, const TUint aKey ) const
- {
- TInt err( KErrNone );
- TInt value( 0 );
- err = RProperty::Get( aCategory, aKey, value );
- if ( err )
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::StateOfProperty. RProperty::Get: err=%d"), err ) );
- return err;
- }
- return value;
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::BluetoothPowerMode()
-// ----------------------------------------------------------------------------
-TInt CSysApAppUi::BluetoothPowerMode() const
- {
- return iSysApCenRepBtObserver->BluetoothPowerMode();
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::ActivateProfileL( const TInt aProfileId ) const
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::ActivateProfileL( const TInt aProfileId ) const
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::ActivateProfile aProfileId: %d"), aProfileId ) );
- //No use of returning the Profile error code since it only tells if the activation was succesfull or not.
- iProfileEngine->SetActiveProfileL( aProfileId );
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::ActivateOnlineProfileL() const
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::ActivateOnlineProfileL() const
- {
- ActivateProfileL( iProfileToBeActivated );
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::ActiveProfileNameL( TPtr aProfileName ) const
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::ActiveProfileNameL( TPtr aProfileName )
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::ActiveProfileNameL START") ) );
- MProfile* profile = iProfileEngine->ActiveProfileL();
- const MProfileName& mProfileName = profile->ProfileName();
- aProfileName = mProfileName.Name();
- profile->Release();
- TRACES( RDebug::Print( _L("CSysApAppUi::ActiveProfileNameL END") ) );
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::CheckSilentModeL()
-// ----------------------------------------------------------------------------
-void CSysApAppUi::CheckSilentModeL()
- {
- TBool isSilent( EFalse );
- MProfile* profile = iProfileEngine->ActiveProfileL();
- isSilent = profile->IsSilent();
- profile->Release();
- if ( isSilent )
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::CheckSilentModeL: active profile is SILENT") ) );
- iSysApLightsController->SetSilentModeOn( ETrue );
- }
- else
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::CheckSilentModeL: active profile is NOT SILENT") ) );
- iSysApLightsController->SetSilentModeOn( EFalse );
- }
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::HandleProfileChangedL( const TInt aValue )
-// ----------------------------------------------------------------------------
-void CSysApAppUi::HandleProfileChangedL( const TInt aNewProfileId )
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::HandleProfileChangedL: aNewProfileId=%d"), aNewProfileId ) );
- CheckSilentModeL();
- if ( iHandleNextProfileEvent )
- {
- if ( iAccessoryJustConnected )
- {
- iAccessoryJustConnected = EFalse;
- }
- else
- {
- // if the user delibarately changes profiles, the selected profile will
- // remain active after disconnecting an accessory.
- iSysApCenRepController->SetInt( KCRUidCoreApplicationUIsSysAp, KSysApProfileUpdateRequired, 0 );
- }
-
- // Added as a part of REQ 415-6750 : Conditional UI-note for "Activated profile"
- TInt noNeedToShowTheNote = 0; // if True, then note should not be shown
- TInt err = KErrNone;
-
- err = RProperty::Get( KPSUidCoreApplicationUIs, KCoreAppUIsProfileActivatedNote,
- noNeedToShowTheNote );
- /*
- If there occured an error, it is likely caused by the non-existing property.
- So trying to set it only if no error occured for maintaining the default behavior.
- */
- if( KErrNone == err )
- {
- TInt error = RProperty::Set( KPSUidCoreApplicationUIs, KCoreAppUIsProfileActivatedNote,
- ECoreAppUIsProfileActivatedNoteNotShown );
- }
-
- if(!noNeedToShowTheNote) // The value doesn't deny the showing, then...
- {
- ShowProfileNoteL();
- }
- }
-
- if ( aNewProfileId != KOfflineModeProfileId )
- {
- iActiveProfileBeforeOfflineMode = aNewProfileId;
- iSysApCenRepController->SetInt( KCRUidCoreApplicationUIsSysAp, KSysApProfileBeforeOfflineMode, aNewProfileId );
- }
-
- if ( aNewProfileId == KOfflineModeProfileId && ! iSysApOfflineModeController->OfflineModeActive() )
- {
- if ( BtSapEnabled() )
- {
- // Choosing "Offline Mode" will disconnect BT SAP
- // SwitchFromOnlineToOfflineModeL() will be called from CSysApBtSapController
- iSysApBtSapController->SwitchingToOffline();
- iSysApBtSapController->Disconnect();
- }
- else
- {
- SwitchFromOnlineToOfflineModeL();
- }
- }
- else if ( aNewProfileId != KOfflineModeProfileId && iSysApOfflineModeController->OfflineModeActive() )
- {
- if ( BtSapEnabled() )
- {
- iSysApOfflineModeController->DoNotActivateRF(); // Will be activated after BT SAP disconnection
- }
- iSysApOfflineModeController->SwitchFromOfflineToOnlineModeL();
- }
- iHandleNextProfileEvent = ETrue;
- }
-
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::RestoreProfileL()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::RestoreProfileL( const TBool aOffline )
- {
- iHandleNextProfileEvent = EFalse;
- if ( aOffline )
- {
- ActivateProfileL( KOfflineModeProfileId );
- }
- else
- {
- ActivateProfileL( iActiveProfileBeforeOfflineMode );
- }
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::ActiveProfileId()
-// ----------------------------------------------------------------------------
-
-TInt CSysApAppUi::ActiveProfileId()
- {
- return iProfileEngine->ActiveProfileId();
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::ShowPowerKeyPopUpMenuL()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::ShowPowerKeyPopUpMenuL()
- {
- TRACES( RDebug::Print(_L("CSysApAppUi::ShowPowerKeyPopUpMenuL iPowerKeyPopupMenuActive: %d" ),
- iPowerKeyPopupMenuActive ) );
-
- if ( !iPowerKeyPopupMenuActive && !iDisablePowerkeyMenu
- && iSysApPowerKeyMenuObserver ) // normal state construction has been executed
- {
- iPowerKeyPopupMenuDismissed = EFalse;
- iPowerkeyMenuPowerOffShown = EFalse;
- CancelGlobalListQuery();
-
- iGlobalListQuery = CAknGlobalListQuery::NewL();
-
- iSysApPowerKeyMenuObserver->Cancel();
-
- CDesCArray* profileNameCDesCArray; // Array for Powerkey Menu items
-
- RArray<TInt> itemIdArray; // needed for cover UI
- CleanupClosePushL(itemIdArray);
-
- // make sure old profile names array is clean
- delete iProfileNamesArray;
- iProfileNamesArray = NULL;
-
- // Must pop iProfileNamesArray here as cannot leave trap harness with uneven push/pop count.
- // This is because profileEngine doesn't provide non-LC version of ProfilesNamesArrayLC
- TRAPD( err,
- iProfileNamesArray = iProfileEngine->ProfilesNamesArrayLC();
- CleanupStack::Pop();
- );
-
- if ( err != KErrNone )
- {
- // creating menu failed, return (i.e. just don't show the menu)
- TRACES( RDebug::Print(_L("CSysApAppUi::ShowPowerKeyPopUpMenuL iProfileEngine->ProfilesNamesArrayLC() ERROR: %d" ), err ) );
- iNumberOfProfileNamesInPowerKeyMenu = 0;
- }
- else
- {
- iNumberOfProfileNamesInPowerKeyMenu = iProfileNamesArray->MdcaCount();
- TRACES( RDebug::Print(_L("CSysApAppUi::ShowPowerKeyPopUpMenuL iNumberOfProfileNamesInPowerKeyMenu: %d" ),
- iNumberOfProfileNamesInPowerKeyMenu ) );
- }
-
- if ( BtSapEnabled() )
- {
- profileNameCDesCArray = new( ELeave ) CDesCArrayFlat( iNumberOfProfileNamesInPowerKeyMenu + 4 );
- }
- else
- {
- profileNameCDesCArray = new( ELeave ) CDesCArrayFlat( iNumberOfProfileNamesInPowerKeyMenu + 3 );
- }
-
- CleanupStack::PushL( profileNameCDesCArray );
- profileNameCDesCArray->Reset();
- HBufC* itemStringBuf;
-
- TInt powerMenuItemIndex( 0 );
-
- // "Switch off" menu item
- if ( !IsEncryptionOperationOngoingL() )
- {
- itemStringBuf = StringLoader::LoadLC( R_QTN_PWRC_SWITCH_OFF, iEikonEnv );
- profileNameCDesCArray->InsertL( 0, itemStringBuf->Des() );
- CleanupStack::PopAndDestroy(); // itemStringBuf
- if ( iSysApFeatureManager->CoverDisplaySupported() )
- {
- itemIdArray.AppendL(SecondaryDisplay::EPwrMenuItemSwitchOff);
- }
- iPowerkeyMenuPowerOffShown = ETrue;
- powerMenuItemIndex++;
- }
-
- iPowerkeyMenuLockKeypadShown = EFalse;
- iPowerkeyMenuExitSapShown = EFalse;
- iPowerkeyMenuLockSystemShown = EFalse;
- iPowerkeyMenuEjectShown = EFalse;
-
- iPowerkeyMenuLockKeypadSelection = KErrAccessDenied;
- iPowerkeyMenuExitSapSelection = KErrAccessDenied;
- iPowerkeyMenuLockSystemSelection = KErrAccessDenied;
-
-#ifndef RD_MULTIPLE_DRIVE
- iPowerkeyMenuEjectSelection = KErrAccessDenied;
-#else // RD_MULTIPLE_DRIVE
- iPowerkeyMenuEjectSelectionBase = KErrAccessDenied;
-#endif // RD_MULTIPLE_DRIVE
-
- // "Lock keypad" menu item
-
- TInt callState ( StateOfProperty( KPSUidCtsyCallInformation, KCTsyCallState ) );
- TInt callType ( StateOfProperty( KPSUidCtsyCallInformation, KCTsyCallType ) );
- if ( !( callState == EPSCTsyCallStateConnected && callType == EPSCTsyCallTypeH324Multimedia ) )
- {
- if ( iSysApFeatureManager->GripNotSupported() ||
- ( (!iSysApFeatureManager->GripNotSupported() ) && ( StateOfProperty( KPSUidHWRM, KHWRMGripStatus ) == EPSHWRMGripClosed ) ) )
- // "Lock keypad" command is shown always when there is no grip, and if there
- // there is no grip, only when the grip is closed.
- {
- if ( CKeyLockPolicyApi::KeyguardAllowed() )
- {
- if ( iSysApFeatureManager->PenEnabled() )
- {
- itemStringBuf = StringLoader::LoadLC( R_QTN_PWRC_LOCK_DISPLAY, iEikonEnv );
- }
- else
- {
- itemStringBuf = StringLoader::LoadLC( R_QTN_PWRC_LOCK_KEYS, iEikonEnv );
- }
- profileNameCDesCArray->AppendL( itemStringBuf->Des() );
- CleanupStack::PopAndDestroy(); // itemStringBuf
- if ( iSysApFeatureManager->CoverDisplaySupported() )
- {
- itemIdArray.AppendL(SecondaryDisplay::EPwrMenuItemLockKeypad);
- }
- iPowerkeyMenuLockKeypadShown = ETrue;
- iPowerkeyMenuLockKeypadSelection = powerMenuItemIndex;
- powerMenuItemIndex++;
- }
- }
- }
-
- // "Exit SIM access profile" menu item
-
- if ( BtSapEnabled() )
- {
- TRACES( RDebug::Print(_L( "CSysApAppUi::ShowPowerKeyPopUpMenuL: show \"Exit SIM access profile\" item" ) ) );
- itemStringBuf = StringLoader::LoadLC( R_QTN_PWRC_EXIT_SIM_ACCESS, iEikonEnv );
- profileNameCDesCArray->AppendL( itemStringBuf->Des() );
- CleanupStack::PopAndDestroy(); // itemStringBuf
- if ( iSysApFeatureManager->CoverDisplaySupported() )
- {
- itemIdArray.AppendL(SecondaryDisplay::EPwrMenuItemExitBtSap);
- }
- iPowerkeyMenuExitSapShown = ETrue;
- iPowerkeyMenuExitSapSelection = powerMenuItemIndex;
- powerMenuItemIndex++;
- }
-
- // Profile menu items
-
- TInt arrayIndex ( 0 );
- TBufC<KMaxProfileNameLength> profileName;
-
- for ( arrayIndex = 0; arrayIndex < iNumberOfProfileNamesInPowerKeyMenu; arrayIndex++ )
- {
- profileName = iProfileNamesArray->MdcaPoint( arrayIndex );
- TPtr profileNamePtr = profileName.Des();
- AknTextUtils::DisplayTextLanguageSpecificNumberConversion( profileNamePtr );
- profileNameCDesCArray->AppendL( profileNamePtr );
-
- if ( iSysApFeatureManager->CoverDisplaySupported() )
- {
- TInt profileId = ( iProfileNamesArray->ProfileName( arrayIndex ) )->Id();
- itemIdArray.AppendL(SecondaryDisplay::EPwrMenuItemProfileItemBase+profileId);
- }
- powerMenuItemIndex++;
- }
-
- // "Lock device" menu item
-
- callState = StateOfProperty( KPSUidCtsyCallInformation, KCTsyCallState );
-
- TInt devLockStatus( EAutolockStatusUninitialized );
- devLockStatus = StateOfProperty( KPSUidCoreApplicationUIs, KCoreAppUIsAutolockStatus ); // check whether Autolock has been started
-
-
- if ( callState == EPSCTsyCallStateNone && devLockStatus != EAutolockStatusUninitialized )
- {
- TRACES( RDebug::Print(_L("CSysApAppUi::ShowPowerKeyPopUpMenuL: adding \"Lock device\", devLockStatus=%d" ), devLockStatus ) );
- iPowerkeyMenuLockSystemShown = ETrue;
- itemStringBuf = StringLoader::LoadLC( R_QTN_SET_SEC_LOCK_SYSTEM, iEikonEnv );
- profileNameCDesCArray->AppendL( itemStringBuf->Des() );
- CleanupStack::PopAndDestroy(); // itemStringBuf
- if ( iSysApFeatureManager->CoverDisplaySupported() )
- {
- itemIdArray.AppendL(SecondaryDisplay::EPwrMenuItemLockDevice);
- }
- iPowerkeyMenuLockSystemShown = ETrue;
- iPowerkeyMenuLockSystemSelection = powerMenuItemIndex;
- powerMenuItemIndex++;
- }
-
- // "Eject MMC" menu item
-
- TInt propertyValue( StateOfProperty( KPSUidUsbWatcher, KUsbWatcherSelectedPersonality ) );
-
-#ifndef RD_MULTIPLE_DRIVE
- if ( !IsEncryptionOperationOngoingL() )
- {
- if ( iSysApFeatureManager->MmcHotSwapSupported() &&
- iMMCInserted &&
- iSysApFeatureManager->EjectRequiredInPowerMenu() &&
- propertyValue != KUsbPersonalityIdMS )
- {
- iPowerkeyMenuEjectShown = ETrue;
- TRACES( RDebug::Print(_L("CSysApAppUi::ShowPowerKeyPopUpMenuL: adding \"Eject\"" ) ) );
- itemStringBuf = StringLoader::LoadLC( R_QTN_PWRC_EJECT_MMC, iEikonEnv );
- profileNameCDesCArray->AppendL( itemStringBuf->Des() );
- CleanupStack::PopAndDestroy(); // itemStringBuf
- if ( iSysApFeatureManager->CoverDisplaySupported() )
- {
- itemIdArray.AppendL(SecondaryDisplay::EPwrMenuItemEjectMMC);
- }
- iPowerkeyMenuEjectShown = ETrue;
- iPowerkeyMenuEjectSelection = powerMenuItemIndex;
- powerMenuItemIndex++;
- }
- }
-
-#else // RD_MULTIPLE_DRIVE
- if ( !IsEncryptionOperationOngoingL() )
- {
- if ( iSysApFeatureManager->MmcHotSwapSupported() &&
- iSysApFeatureManager->EjectRequiredInPowerMenu() &&
- propertyValue != KUsbPersonalityIdMS )
- {
- // Reset old eject status and dialog
- iSysApDriveList->ResetDrivesToEject();
- if ( iSysApConfirmationQuery )
- {
- if ( iSysApConfirmationQuery->CurrentQuery() == ESysApEjectMmcQuery )
- {
- iSysApConfirmationQuery->Cancel();
- }
- }
-
- // Append memory cards for eject selection
- TInt count( iInsertedMemoryCards.Count() );
- for ( TInt i( 0 ); i < count; ++i )
- {
- itemStringBuf = iSysApDriveList->GetFormattedDriveNameLC(
- iInsertedMemoryCards[ i ].iDrive,
- R_QTN_PWRC_EJECT_MEMORY_STORAGE );
- profileNameCDesCArray->AppendL( *itemStringBuf );
- CleanupStack::PopAndDestroy( itemStringBuf );
-
- if ( iSysApFeatureManager->CoverDisplaySupported() )
- {
- itemIdArray.AppendL( SecondaryDisplay::EPwrMenuItemEjectItemBase + i );
- }
- }
- if ( count > 0 )
- {
- TRACES( RDebug::Print(_L("CSysApAppUi::ShowPowerKeyPopUpMenuL: added \"Eject\"" ) ) );
- iPowerkeyMenuEjectShown = ETrue;
- iPowerkeyMenuEjectSelectionBase = powerMenuItemIndex;
- powerMenuItemIndex += count;
- }
- }
- }
-#endif // RD_MULTIPLE_DRIVE
-
- // Activate/deactive power save mode
- if ( iSysApPsmController ) // variable feature, not create if power save is not used
- {
- TBool showActivate = !(iSysApPsmController->FullPsmEnabled());
-
- TInt textId = ( showActivate ? R_QTN_PWRC_ACTIVATE_POWER_SAVING : R_QTN_PWRC_DEACTIVATE_POWER_SAVING );
-
- itemStringBuf = StringLoader::LoadLC( textId, iEikonEnv );
- iSysApPsmController->SetNextUiOperation( showActivate );
-
- if ( iSysApFeatureManager->CoverDisplaySupported() )
- {
- itemIdArray.AppendL( showActivate ?
- SecondaryDisplay::EPwrMenuItemActivatePowerSaving :
- SecondaryDisplay::EPwrMenuItemDeactivatePowerSaving );
- }
-
- profileNameCDesCArray->AppendL( itemStringBuf->Des() );
- CleanupStack::PopAndDestroy( itemStringBuf );
-
- iSysApPsmController->SetUiItemId( powerMenuItemIndex );
- powerMenuItemIndex++;
- }
-
- TRACES( RDebug::Print(_L("CSysApAppUi::ShowPowerKeyPopUpMenuL NumberOfAllItemsInPowerKeyMenu: %d" ),
- profileNameCDesCArray->Count() ) );
-
- iSysApPowerKeyMenuObserver->Start();
-
- // Set secondary display data if necessary
- if ( iSysApFeatureManager->CoverDisplaySupported() )
- {
- CAknSDData* sd = CAknSDData::NewL(SecondaryDisplay::KCatSysAp, SecondaryDisplay::ECmdShowPowerKeyListQuery, KNullDesC8);
- sd->InsertGlobalListQueryItemIdsL(itemIdArray);
- iGlobalListQuery->SetSecondaryDisplayData(sd); // ownership to notifier client
- }
-
- iGlobalListQuery->ShowListQueryL( (MDesCArray*) profileNameCDesCArray,
- iSysApPowerKeyMenuObserver->iStatus,
- KProfileListInitialIndex );
-
- TRACES( RDebug::Print(_L("CSysApAppUi::ShowPowerKeyPopUpMenuL: list query shown" ) ) );
-
- CleanupStack::PopAndDestroy( profileNameCDesCArray ); // profileNameCDesCArray
- TRACES( RDebug::Print(_L("CSysApAppUi::ShowPowerKeyPopUpMenuL: profileNameCDesCArray popped" ) ) );
-
- CleanupStack::Pop(&itemIdArray);
- itemIdArray.Close();
-
- // Without following variable set ETrue powerkey up event would change the hightlighted item to be
- // the second one instead of the wanted first one.
- iIgnoreNextPowerKeyUpEvent = ETrue;
-
- if ( iSysApBatteryInfoController )
- {
- iSysApBatteryInfoController->PowerMenuShownL();
- }
-
- TRACES( RDebug::Print(_L("CSysApAppUi::ShowPowerKeyPopUpMenuL:end" ) ) );
- }
-}
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::PowerKeyPopUpMenuSelectionDoneL( TInt aSelection )
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::PowerKeyPopUpMenuSelectionDoneL( TInt aSelection )
- {
- iPowerKeyPopupMenuDismissed = ETrue;
- iPowerKeyPopupMenuActive = EFalse;
- TRACES( RDebug::Print(_L("CSysApAppUi::PowerKeyPopUpMenuSelectionDoneL: START aSelection:%d" ), aSelection ) );
- if ( aSelection == KPowerKeyMenuSelectionCancelled )
- {
- TRACES( RDebug::Print(_L("CSysApAppUi::PowerKeyPopUpMenuSelectionDoneL: Powerkey menu cancelled" ) ) );
- }
- else if( aSelection < KPowerKeyMenuSelectionCancelled )
- {
- iIgnoreNextPowerKeyUpEvent = EFalse;
- }
- else
- {
- TInt firstProfileItemIndex( 1 + Max( 0, iPowerkeyMenuLockKeypadSelection, iPowerkeyMenuExitSapSelection ) ); // index of "General" profile
-
- if ( aSelection == KPowerKeyMenuSelectionSwitchOff )
- {
- TRACES( RDebug::Print(_L("CSysApAppUi::PowerKeyPopUpMenuSelectionDoneL: \"Switch off\" selected" ) ) );
- DoShutdownL( EFalse, KDummyReason );
- }
-
- else if ( iPowerkeyMenuLockKeypadShown && aSelection == iPowerkeyMenuLockKeypadSelection )
- {
- TRACES( RDebug::Print(_L("CSysApAppUi::PowerKeyPopUpMenuSelectionDoneL: \"Lock keypad\" selected" ) ) );
- KeyLock().EnableKeyLock();
- }
-
- else if ( iPowerkeyMenuExitSapShown && aSelection == iPowerkeyMenuExitSapSelection )
- {
- TRACES( RDebug::Print(_L("CSysApAppUi::PowerKeyPopUpMenuSelectionDoneL: \"Exit SAP\" selected" ) ) );
- ShowQueryL( ESysApBtSapDisconnectQuery );
- }
-
- else if ( aSelection < firstProfileItemIndex + iNumberOfProfileNamesInPowerKeyMenu )
- {
- __ASSERT_DEBUG( iProfileNamesArray, User::Invariant() );
-
- if ( iProfileNamesArray )
- {
- iProfileToBeActivated = ( iProfileNamesArray->ProfileName( aSelection - firstProfileItemIndex ) )->Id();
-
- TRACES( RDebug::Print(_L("CSysApAppUi::PowerKeyPopUpMenuSelectionDoneL: profile id: %d selected" ), iProfileToBeActivated ) );
- if ( ! iSysApOfflineModeController->OfflineModeActive() ||
- ( iProfileToBeActivated ) == KOfflineModeProfileId )
- {
- ActivateProfileL( iProfileToBeActivated );
- }
- else
- {
- // iProfileToBeActivated profile will be activated from iSysApOfflineModeController if ok
- iSysApOfflineModeController->GoOnlineIfOkL();
- }
- }
- }
-
- else if ( iPowerkeyMenuLockSystemShown && aSelection == iPowerkeyMenuLockSystemSelection )
- {
- TRACES( RDebug::Print(_L("CSysApAppUi::PowerKeyPopUpMenuSelectionDoneL: \"Lock system\" selected" ) ) );
- iSysApSystemLock->SetLockedL();
- }
-#ifndef RD_MULTIPLE_DRIVE
- else if ( iPowerkeyMenuEjectShown && aSelection == iPowerkeyMenuEjectSelection )
- {
- TRACES( RDebug::Print(_L("CSysApAppUi::PowerKeyPopUpMenuSelectionDoneL: \"Eject\" selected" ) ) );
- ShowQueryL( ESysApEjectMmcQuery );
- }
-#else // RD_MULTIPLE_DRIVE
- else if ( iPowerkeyMenuEjectShown &&
- aSelection >= iPowerkeyMenuEjectSelectionBase &&
- aSelection < iPowerkeyMenuEjectSelectionBase + iInsertedMemoryCards.Count() )
- {
- iDriveToEject =
- iInsertedMemoryCards[ aSelection - iPowerkeyMenuEjectSelectionBase ].iDrive;
- TRACES( RDebug::Print(
- _L( "CSysApAppUi::PowerKeyPopUpMenuSelectionDoneL: \"Eject\" selected, drive=%d" ),
- iDriveToEject ) );
- iSysApDriveList->ResetDrivesToEject();
- RProperty::Set( KPSUidUikon, KUikMMCInserted, 0 );
- EjectMMCL();
- }
-#endif // RD_MULTIPLE_DRIVE
- else if ( iSysApPsmController && aSelection == iSysApPsmController->UiItemId() )
- {
- TRACES( RDebug::Print(_L("CSysApAppUi::PowerKeyPopUpMenuSelectionDoneL: \"Activate|Deactivate power save\" selected" ) ) );
- iSysApPsmController->DoEnableFullPsm( iSysApPsmController->NextUiOperation() );
- }
-
- }
-
- delete iProfileNamesArray;
- iProfileNamesArray = NULL;
-
- TRACES( RDebug::Print(_L("CSysApAppUi::PowerKeyPopUpMenuSelectionDoneL: END" ) ) );
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::SetDeviceLockEnabledL( const TBool aLockEnabled )
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::SetDeviceLockEnabledL( const TBool aLockEnabled )
- {
- TRACES( RDebug::Print(_L("CSysApAppUi::SetDeviceLockEnabledL aLockEnabled:%d" ), aLockEnabled ) );
- TBool currentState( iDeviceLockEnabled );
-
- iDeviceLockEnabled = aLockEnabled;
-
- if ( currentState != iDeviceLockEnabled ) // filter out unnecessary light status modifications
- {
- iSysApLightsController->DeviceLockStateChangedL( iDeviceLockEnabled );
- }
-
- if( iDeviceLockEnabled )
- {
- if( iKeyLockEnabled )
- {
- KeyLock().DisableWithoutNote();
- }
- }
- else
- {
- // let's not activate keylock in case device lock was disabled during call or in cradle
- iKeyLockOnBeforeCall = EFalse;
- iKeyLockOnBeforeCradle = EFalse;
-
- // Memory card needs to be unlocked when device is unlocked
- if ( iSysApFeatureManager->MmcHotSwapSupported() )
- {
- RunUnlockNotifierL();
- }
- }
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::DoNotEnableKeylock()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::DoNotEnableKeylock()
- {
- if ( !iKeyLockOnBeforeCradle )
- {
- iShowkeypadActivatedNoteAfterSoftReject = iKeyLockOnBeforeCall;
- }
-
- iKeyLockOnBeforeCall = EFalse;
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::DoShutdownL( const TBool aReset, const TSWStartupReason aSWStartupReason )
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::DoShutdownL( const TBool aReset, const TInt aResetReason )
- {
- TRACES( RDebug::Print(_L("CSysApAppUi::DoShutdownL: aResetReason:%d, aReset:%d" ),
- aResetReason, aReset ) );
-#ifndef RD_STARTUP_ANIMATION_CUSTOMIZATION
- TBool animationenabled( EFalse );
-#endif // RD_STARTUP_ANIMATION_CUSTOMIZATION
-
- if( OkToInitiateShutdown() )
- {
- TRACES( RDebug::Print(_L("CSysApAppUi::DoShutdownL: Was OkToToInitiateShutdown" ) ) );
-
-
- if ( !aReset && iSysApFeatureManager->Supported(KSysApFeatureIdGoodbyeNote) )
- {
- TRAPD( ignore, ShowShutdownNoteL() );
- if ( ignore ) ignore = 0; // hide compiler warning about not using variable
- }
-
- if( !aReset )
- {
- #ifdef RD_STARTUP_ANIMATION_CUSTOMIZATION
- TRAPD( err, ShowAnimationL() );
- if ( err )
- {
- TRACES( RDebug::Print(_L("CSysApAppUi::DoShutdownL ShowAnimationL() leaved: %d" ), err ) );
- CompleteShutdown(aReset, aResetReason);
- }
- }
- else // aReset
- {
- CompleteShutdown(aReset, aResetReason);
- }
- #else // RD_STARTUP_ANIMATION_CUSTOMIZATION
- TRAPD( err, animationenabled = ShowAnimationL() );
- if ( err )
- {
- TRACES( RDebug::Print(_L("CSysApAppUi::DoShutdownL ShowAnimationL() leaved: %d" ), err ) );
- }
- }
-
- if ( !animationenabled )
- {
- CompleteShutdown(aReset, aResetReason);
- }
- #endif // RD_STARTUP_ANIMATION_CUSTOMIZATION
- }
- else
- {
- TRACES( RDebug::Print(_L("CSysApAppUi::DoShutdownL: Was not OkToToInitiateShutdown" ) ) );
- }
- TRACES( RDebug::Print(_L("CSysApAppUi::DoShutdownL: END" ) ) );
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::ContinueShutdown()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::ContinueShutdown()
- {
- TRACES( RDebug::Print(_L("CSysApAppUi::ContinueShutdown() started" ) ) );
- CompleteShutdown();
- TRACES( RDebug::Print(_L("CSysApAppUi::ContinueShutdown() completed" ) ) );
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::ShowAnimationL()
-// ----------------------------------------------------------------------------
-
-#ifdef RD_STARTUP_ANIMATION_CUSTOMIZATION
-void
-#else // RD_STARTUP_ANIMATION_CUSTOMIZATION
-TBool
-#endif // RD_STARTUP_ANIMATION_CUSTOMIZATION
-CSysApAppUi::ShowAnimationL()
- {
- TRACES( RDebug::Print(_L("CSysApAppUi::ShowAnimationL(): START" ) ) );
-
- TRACES( RDebug::Print( _L("CSysApAppUi::ShowAnimationL: Initialise shutdown animation") ) );
-
-#ifdef RD_STARTUP_ANIMATION_CUSTOMIZATION
-
- PrepareForShutdownAnimation();
-
- iSysApShutdownAnimation = CSysApShutdownAnimation::NewL( *iSysApShutdownImage );
- iSysApShutdownAnimation->Play( TCallBack( DoStopAnimTiming, this ) );
-
- TRACES( RDebug::Print(_L("CSysApAppUi::ShowAnimationL(): End" ) ) );
-
-#else // RD_STARTUP_ANIMATION_CUSTOMIZATION
- iSysApShutdownAnimation = CSysApShutdownAnimation::NewL( this );
- AddToStackL( iSysApShutdownAnimation );
- iAnimationShowingTime = iSysApShutdownAnimation->ShowingTime();
- TRACES( RDebug::Print( _L("CSysApAppUi::ShowAnimationL: Shutdown animation initialised. Animation time = %d") ,iAnimationShowingTime) );
-
- TBool ret_val( EFalse );
-
- if ( iAnimationShowingTime )
- {
- if ( iSysApFeatureManager->CoverDisplaySupported() )
- {
- // Construct mediator observer
- iSysApMediatorObserver = CSysApMediatorObserver::NewL( this );
-
- // Sync animation
- TInt err = iSysApMediatorObserver->SyncShutdownAnimation();
-
- if ( err != KErrNone )
- {
- // Pretend coverUI synced instantly if error in issuing command.
- ShutdownAnimationSyncOK();
- }
- }
- else
- {
- // Pretend coverUI synced instantly when it is not supported.
- ShutdownAnimationSyncOK();
- }
-
- ret_val = ETrue;
- }
-
- TRACES( RDebug::Print(_L("CSysApAppUi::ShowAnimationL(): returns: %d" ),ret_val ) );
- return ret_val;
-#endif // RD_STARTUP_ANIMATION_CUSTOMIZATION
- }
-
-#ifndef RD_STARTUP_ANIMATION_CUSTOMIZATION
-// ----------------------------------------------------------------------------
-// CSysApAppUi::ShutdownAnimationSyncOK()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::ShutdownAnimationSyncOK()
- {
- TRACES( RDebug::Print(_L("CSysApAppUi::ShutdownAnimationSyncOK(): Call PrepareForShutdownAnimation()" ) ) );
- PrepareForShutdownAnimation();//SysAp's internal preparation for ShutDown with animation
- TRACES( RDebug::Print(_L("CSysApAppUi::ShutdownAnimationSyncOK(): Called PrepareForShutdownAnimation()" ) ) );
- }
-#endif // RD_STARTUP_ANIMATION_CUSTOMIZATION
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::SkipShutdownAnimation()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::SkipShutdownAnimation()
- {
- TRACES( RDebug::Print(_L("CSysApAppUi::SkipShutdownAnimation() " ) ) );
-
-#ifdef RD_STARTUP_ANIMATION_CUSTOMIZATION
- if ( iSysApShutdownAnimation )
- {
- iSysApShutdownAnimation->Cancel();
- }
-#else // RD_STARTUP_ANIMATION_CUSTOMIZATION
- if ( iAnimationShowingTime )
- {
- iSysApShutdownAnimation->EndAnimation();
- }
-#endif // RD_STARTUP_ANIMATION_CUSTOMIZATION
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::NotifyShutdownAnimationSkip()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::NotifyShutdownAnimationSkip()
- {
- TRACES( RDebug::Print(_L("CSysApAppUi::NotifyShutdownAnimationSkip() " ) ) );
-
- if ( iSysApMediatorObserver )
- {
- iSysApMediatorObserver->ShutdownAnimationSkipped();
- }
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::CompleteShutdown()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::CompleteShutdown( const TBool aReset, const TInt aResetReason )
- {
- TRACES( RDebug::Print(_L("CSysApAppUi::CompleteShutdown(): START" ) ) );
-
- PrepareForShutdownImage();//SysAp's internal preparation for ShutDown with image
-
- FreeResources();
-
- if ( aReset )
- {
- __ASSERT_DEBUG( aResetReason >= RStarterSession::ELanguageSwitchReset &&
- aResetReason <= RStarterSession::EDataRestoreReset,
- User::Invariant() );
- StarterSession().Reset( static_cast<RStarterSession::TResetReason>( aResetReason ) );
- }
- else
- {
- StarterSession().Shutdown();
- }
-
- StarterSession().Close();
-
- TRACES( RDebug::Print(_L("CSysApAppUi::CompleteShutdown(): END" ) ) );
- }
-
-#ifndef SYSAP_USE_STARTUP_UI_PHASE
-// ----------------------------------------------------------------------------
-// CSysApAppUi::DoStateChangedL(const RStarterSession::TGlobalState aSwState)
-// This method is not called after boot has finished.
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::DoStateChangedL(const RStarterSession::TGlobalState aSwState)
- {
- TRACES( RDebug::Print(_L("CSysApAppUi::DoStateChangedL: %d" ), aSwState ) );
-
- switch ( aSwState )
- {
- case RStarterSession::ENormal:
- SetStatusPaneLayoutL( ESysApNormal );
- break;
- case RStarterSession::ECharging:
- SetStatusPaneLayoutL( ESysApCharging );
- break;
- case RStarterSession::EAlarm:
- SetStatusPaneLayoutL( ESysApAlarm );
- break;
- default:
- break;
- };
-
- TRAPD( simChangedErr, DoSimChangedFromPreviousBootL() );
- TRACES( RDebug::Print( _L("CSysApAppUi::DoStateChangedL: simChangedErr = %d" ), simChangedErr ) );
- simChangedErr = simChangedErr; // suppress 'variable not used' warning
- LogsObserverL().HandleSimChangedCheckDoneL();
-
- if ( iSysApFeatureManager->PowerSaveSupported() )
- {
- // create controller before checking battery state, so that power saving can be enabled during boot if needed
- if ( !iSysApPsmController ) // created only in first state change
- {
- iSysApPsmController = CSysApPsmController::NewL( *this );
- }
-
- // in charger boot explicitly disable partial power save mode
- if ( aSwState == RStarterSession::ECharging && !iCharging )
- {
- iSysApPsmController->ChargerConnected();
- iSysApPsmController->DoEnablePartialPsm( EFalse ); // disable partial power save now
- }
- }
-
- TInt state( StateOfProperty( KPSUidHWRMPowerState, KHWRMBatteryLevel ) );
- //Also Charging status will be updated with the following function.
- UpdateBatteryBarsL( state );
-
- if( IsStateNormal() )
- {
- TRACES( RDebug::Print(_L("CSysApAppUi::DoStateChangedL to normal state.") ) );
-
- DoSwStateNormalConstructionL();
-
- InitializeStatusPaneAreaL();
- CheckSilentModeL();
- HandleAccessoryProfileInStartupL();
-
- if ( iSysApFeatureManager->MmcSupported() )
- {
-#ifndef RD_MULTIPLE_DRIVE
- MountMMC();
- MMCStatusChangedL();
- iHideFirstBeep = EFalse;
-#else // RD_MULTIPLE_DRIVE
- iSysApDriveList->MountDrive( iSysApDriveList->DefaultMemoryCard() );
- UpdateInsertedMemoryCardsL();
-#endif // RD_MULTIPLE_DRIVE
- }
- if ( iSysApFeatureManager->MmcHotSwapSupported() )
- {
- iSysApMMCObserver->StartMountObserver();
- }
-
-
- if ( iSysApPsmController )
- {
- if ( iCharging ) // if charger is connected on boot PSM queries may need to be shown
- {
- HandleChargingStatusL( StateOfProperty( KPSUidHWRMPowerState, KHWRMChargingStatus ) );
- }
- }
-
- TInt batteryStatus = StateOfProperty( KPSUidHWRMPowerState, KHWRMBatteryStatus );
- TRACES( RDebug::Print(_L("CSysApAppUi::DoStateChangedL: batteryStatus %d" ), batteryStatus ) );
- if( batteryStatus == EBatteryStatusLow || batteryStatus == EBatteryStatusEmpty )
- {
- // low and empty battery states are informed to the user in device startup
- HandleBatteryStatusL( batteryStatus );
- }
- else if ( iSysApPsmController && !iCharging )
- {
- TRACES( RDebug::Print(_L("CSysApAppUi::DoStateChangedL: batteryStatus %d, iCharging %d -> disable partial psm" ), batteryStatus, iCharging ) );
-
- iSysApPsmController->BatteryLow( EFalse );
- iSysApPsmController->DoEnablePartialPsm( EFalse );
- }
-
- iSysApBtController = CreateSysApBtControllerL( *this );
- iSysApBtSapController = CreateSysApBtSapControllerL( *this );
-
- if ( iActivateBt )
- {
- TRACES( RDebug::Print(_L("CSysApAppUi::DoStateChangedL Activating BT" ) ) );
- SetBtPowerState( ETrue );
- }
-
- if ( iDeactivateBt )
- {
- TRACES( RDebug::Print(_L("CSysApAppUi::DoStateChangedL Deactivating BT" ) ) );
- SetBtPowerState( EFalse );
- }
- iSysApLocationPrivacyIndicator = CreateSysApLocationPrivacyIndicatorL( *this );
- iSysApLocationPrivacyIndicator->InitL();
-
- if ( ! iSysApUsbIndicatorController )
- {
- TRAPD ( usbErr, iSysApUsbIndicatorController = CreateSysApUsbIndicatorL( *this ) );
- if ( usbErr )
- {
- TRACES( RDebug::Print(_L("CSysApAppUi::DoStateChangedL: error in constructing USB ind. controller %d" ), usbErr ) );
- }
- }
-
- // Other late initializations.
- // In order to prevent unexpected behaviour e.g. in OOM situations, these calls are made to ensure
- // that the services are connected when they are needed for the first time.
- if ( !StarterSession().Handle() )
- {
- User::Leave( KErrBadHandle );
- }
-
- if ( !KeyLock().Handle() )
- {
- User::Leave( KErrBadHandle );
- }
-
-#ifdef __SYSAP_MODULE_TEST
- ModuleTestShowUiNoteL( _L("SysAp: SW state normal!") );
-#endif
- }
-
- // Allow lights
- iSysApLightsController->AllowLightsOn();
- }
-
-#else // SYSAP_USE_STARTUP_UI_PHASE
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::HandleUiReadyAfterBootL()
-// Called when startup UI activities has been finished
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::HandleUiReadyAfterBootL()
- {
- TRACES( RDebug::Print(_L("CSysApAppUi::HandleUiReadyAfterBootL" ) ) );
-
- SetStatusPaneLayoutL( ESysApNormal );
-
- TInt state( StateOfProperty( KPSUidHWRMPowerState, KHWRMBatteryLevel ) );
- //Also Charging status will be updated with the following function.
- UpdateBatteryBarsL( state );
-
- DoSwStateNormalConstructionL();
-
- InitializeStatusPaneAreaL();
- CheckSilentModeL();
- HandleAccessoryProfileInStartupL();
-
- if ( iSysApFeatureManager->MmcSupported() )
- {
-#ifndef RD_MULTIPLE_DRIVE
- MountMMC();
- MMCStatusChangedL();
- iHideFirstBeep = EFalse;
-#else // RD_MULTIPLE_DRIVE
- iSysApDriveList->MountDrive( iSysApDriveList->DefaultMemoryCard() );
- UpdateInsertedMemoryCardsL();
-#endif // RD_MULTIPLE_DRIVE
- }
-
- if ( iSysApFeatureManager->MmcHotSwapSupported() )
- {
- iSysApMMCObserver->StartMountObserver();
- }
-
- if ( iSysApPsmController )
- {
- if ( iCharging ) // if charger is connected on boot PSM queries may need to be shown
- {
- HandleChargingStatusL( StateOfProperty( KPSUidHWRMPowerState, KHWRMChargingStatus ) );
- }
- }
-
- TInt batteryStatus = StateOfProperty( KPSUidHWRMPowerState, KHWRMBatteryStatus );
- TRACES( RDebug::Print(_L("CSysApAppUi::HandleUiReadyAfterBootL: batteryStatus %d" ), batteryStatus ) );
- if( batteryStatus == EBatteryStatusLow || batteryStatus == EBatteryStatusEmpty )
- {
- // low and empty battery states are informed to the user in device startup
- HandleBatteryStatusL( batteryStatus );
- }
- else if ( iSysApPsmController && !iCharging )
- {
- TRACES( RDebug::Print(_L("CSysApAppUi::HandleUiReadyAfterBootL: batteryStatus %d, iCharging %d -> disable partial psm" ), batteryStatus, iCharging ) );
-
- iSysApPsmController->BatteryLow( EFalse );
- iSysApPsmController->DoEnablePartialPsm( EFalse );
- }
-
- iSysApLocationPrivacyIndicator = CreateSysApLocationPrivacyIndicatorL( *this );
- iSysApLocationPrivacyIndicator->InitL();
-
- if ( ! iSysApUsbIndicatorController )
- {
- TRAPD ( usbErr, iSysApUsbIndicatorController = CreateSysApUsbIndicatorL( *this ) );
- if ( usbErr )
- {
- TRACES( RDebug::Print(_L("CSysApAppUi::HandleUiReadyAfterBootL: error in constructing USB ind. controller %d" ), usbErr ) );
- }
- }
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::DoStateChangedL(const RStarterSession::TGlobalState aSwState)
-// This method is not called after boot has finished.
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::DoStateChangedL(const RStarterSession::TGlobalState aSwState)
- {
- TRACES( RDebug::Print(_L("CSysApAppUi::DoStateChangedL: %d" ), aSwState ) );
-
- switch ( aSwState )
- {
- case RStarterSession::ENormal:
- // status pane layout will updated when UI is ready
- break;
- case RStarterSession::ECharging:
- SetStatusPaneLayoutL( ESysApCharging );
- break;
- case RStarterSession::EAlarm:
- SetStatusPaneLayoutL( ESysApAlarm );
- break;
- default:
- break;
- };
-
- TRAPD( simChangedErr, DoSimChangedFromPreviousBootL() );
- TRACES( RDebug::Print( _L("CSysApAppUi::DoStateChangedL: simChangedErr = %d" ), simChangedErr ) );
- simChangedErr = simChangedErr; // suppress 'variable not used' warning
- LogsObserverL().HandleSimChangedCheckDoneL();
-
- if ( iSysApFeatureManager->PowerSaveSupported() )
- {
- // create controller before checking battery state, so that power saving can be enabled during boot if needed
- if ( !iSysApPsmController ) // created only in first state change
- {
- iSysApPsmController = CSysApPsmController::NewL( *this );
- }
-
- // in charger boot explicitly disable partial power save mode
- if ( aSwState == RStarterSession::ECharging )
- {
- iSysApPsmController->ChargerConnected();
- iSysApPsmController->DoEnablePartialPsm( EFalse ); // disable partial power save now
- }
- }
-
- if ( aSwState == RStarterSession::ECharging || aSwState == RStarterSession::EAlarm )
- {
- TInt state( StateOfProperty( KPSUidHWRMPowerState, KHWRMBatteryLevel ) );
- //Also Charging status will be updated with the following function.
- UpdateBatteryBarsL( state );
- }
-
- if( IsStateNormal() )
- {
- TRACES( RDebug::Print(_L("CSysApAppUi::DoStateChangedL to normal state.") ) );
-
- iSysApBtController = CreateSysApBtControllerL( *this );
- iSysApBtSapController = CreateSysApBtSapControllerL( *this );
-
- if ( iActivateBt )
- {
- TRACES( RDebug::Print(_L("CSysApAppUi::DoStateChangedL Activating BT" ) ) );
- SetBtPowerState( ETrue );
- }
-
- if ( iDeactivateBt )
- {
- TRACES( RDebug::Print(_L("CSysApAppUi::DoStateChangedL Deactivating BT" ) ) );
- SetBtPowerState( EFalse );
- }
-
- // Other late initializations.
- // In order to prevent unexpected behaviour e.g. in OOM situations, these calls are made to ensure
- // that the services are connected when they are needed for the first time.
- if ( !StarterSession().Handle() )
- {
- User::Leave( KErrBadHandle );
- }
-
- if ( !KeyLock().Handle() )
- {
- User::Leave( KErrBadHandle );
- }
-
-#ifdef __SYSAP_MODULE_TEST
- ModuleTestShowUiNoteL( _L("SysAp: SW state normal!") );
-#endif
- }
-
- // Allow lights
- iSysApLightsController->AllowLightsOn();
- }
-
-
-#endif // SYSAP_USE_STARTUP_UI_PHASE
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::UiReady()
-//
-// ----------------------------------------------------------------------------
-
-TBool CSysApAppUi::UiReady() const
- {
-#ifdef SYSAP_USE_STARTUP_UI_PHASE
- return iSysApStartupController->UiReady();
-#else // SYSAP_USE_STARTUP_UI_PHASE
- // if startup UI phase information is not used, global system state normal is handled as UI idle state
- return IsStateNormal();
-#endif // SYSAP_USE_STARTUP_UI_PHASE
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::PrepareForShutdownAnimation()
-// ----------------------------------------------------------------------------
-void CSysApAppUi::PrepareForShutdownAnimation()
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::PrepareForShutdownAnimation() begin") ) );
-
-#ifndef RD_STARTUP_ANIMATION_CUSTOMIZATION
- TRACES( RDebug::Print( _L("CSysApAppUi::PrepareForShutdownAnimation() showtime = %d"), iAnimationShowingTime ) );
- if ( iAnimationShowingTime )
- {
-#endif // RD_STARTUP_ANIMATION_CUSTOMIZATION
- static_cast<CAknAppUi*>(iEikonEnv->EikAppUi())->KeySounds()->PlaySound( EAvkonSIDPowerOffTone );
- CancelGlobalListQuery();
-
- if ( iSysApPowerKeyMenuObserver )
- {
- iSysApPowerKeyMenuObserver->Cancel();
- }
-
- // deactivate notifiers before showing the shutdown image
- AknNotifierController::CancelAllNotifications();
- AknNotifierController::HideAllNotifications(ETrue);
- RWindowGroup groupWin = iCoeEnv->RootWin();
- iCapturedAppskey = groupWin.CaptureKey( EKeyApplication, KModifierMask, KModifierMask );
- iCapturedAppskeyUpAndDowns = groupWin.CaptureKeyUpAndDowns( EStdKeyApplication0, KModifierMask, KModifierMask );
- iEikonEnv->RootWin().SetOrdinalPosition(0, ECoeWinPriorityAlwaysAtFront );
-
- TRACES( RDebug::Print( _L("CSysApAppUi::PrepareForShutdownAnimation() Draw background image" ) ) );
-
- ShowShutdownImage( KBackgroundImageID );
-
-#ifndef RD_STARTUP_ANIMATION_CUSTOMIZATION
- TRACES( RDebug::Print( _L("CSysApAppUi::PrepareForShutdownAnimation() Show Shutdown animation" ) ) );
- TInt err(0);
- TRAP( err, iSysApShutdownAnimation->StartL( iLastPowerKeyWasShort ) );
- if ( err )
- {
- TRACES( RDebug::Print( _L("SysAp: Shutdown animation fails. Error code: %d" ), err ) );
- // Start animation timing immediatily if animation starting fails.
- // Otherwise animation will call StartAnimTiming when it is ready.
- StartAnimTiming();
- }
- }
-#endif // RD_STARTUP_ANIMATION_CUSTOMIZATION
-
- TRACES( RDebug::Print( _L("CSysApAppUi::PrepareForShutdownAnimation() end") ) );
- }
-
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::PrepareForShutdownImage()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::PrepareForShutdownImage()
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::PrepareForShutdownImage() START" ) ) );
-
- // If RD_STARTUP_ANIMATION_CUSTOMIZATION is enabled, the following actions are always taken in PrepareForShutdownAnimation
-#ifndef RD_STARTUP_ANIMATION_CUSTOMIZATION
- if ( !iAnimationShowingTime ) // actions already taken in PrepareForShutdownAnimation
- {
- static_cast<CAknAppUi*>(iEikonEnv->EikAppUi())->KeySounds()->PlaySound( EAvkonSIDPowerOffTone );
- CancelGlobalListQuery();
-
- if ( iSysApPowerKeyMenuObserver )
- {
- iSysApPowerKeyMenuObserver->Cancel();
- }
-
- // deactivate notifiers before showing the shutdown image
- AknNotifierController::CancelAllNotifications();
- AknNotifierController::HideAllNotifications(ETrue);
- RWindowGroup groupWin = iCoeEnv->RootWin();
- iCapturedAppskey = groupWin.CaptureKey( EKeyApplication, KModifierMask, KModifierMask );
- iCapturedAppskeyUpAndDowns = groupWin.CaptureKeyUpAndDowns( EStdKeyApplication0, KModifierMask, KModifierMask );
- }
-#endif // RD_STARTUP_ANIMATION_CUSTOMIZATION
-
-#ifndef __SYSAP_MODULE_TEST //to make errors during shutdown sequence being seen more easily
- iEikonEnv->RootWin().SetOrdinalPosition(0, ECoeWinPriorityAlwaysAtFront );
- TRACES( RDebug::Print( _L("CSysApAppUi::PrepareForShutdownImage() Show Shutdown image" ) ) );
- ShowShutdownImage( EMbmSysapQgn_startup_screen );
-#endif
- TRACES( RDebug::Print( _L("CSysApAppUi::PrepareForShutdownImage() END" ) ) );
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::SetStatusPaneLauoutL( const TSysApPhoneState aState )
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::SetStatusPaneLayoutL( const TSysApPhoneState aState )
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::SetStatusPaneLayoutL aState: %d"), aState ) );
- if( aState == ESysApNormal )
- //Status pane cannot be even visible on Normal mode
- {
- StatusPane()->MakeVisible( EFalse );
- StatusPane()->SwitchLayoutL( R_AVKON_STATUS_PANE_LAYOUT_EMPTY );
- }
- else if( aState == ESysApCharging )
- //SysAp's statuspane is visible on Charging mode
- {
- StatusPane()->MakeVisible( ETrue );
- StatusPane()->SwitchLayoutL( R_AVKON_STATUS_PANE_LAYOUT_POWER_OFF_RECHARGE );
- }
- else if( aState == ESysApAlarm )
- {
- if ( !Layout_Meta_Data::IsLandscapeOrientation() )
- {
- // Portrait mode
- StatusPane()->MakeVisible( ETrue );
- StatusPane()->SwitchLayoutL( R_AVKON_STATUS_PANE_LAYOUT_POWER_OFF_RECHARGE );
- }
- else
- {
- // Landscape mode
- TInt layout = R_AVKON_STATUS_PANE_LAYOUT_POWER_OFF_RECHARGE;
- // For side softkey devices, use different layout
- if (AVKONENV->StatusPaneResIdForCurrentLayout(R_AVKON_STATUS_PANE_LAYOUT_USUAL) == R_AVKON_STACON_PANE_LAYOUT_USUAL_SOFTKEYS_RIGHT)
- layout = R_AVKON_STACON_PANE_LAYOUT_EMPTY_SOFTKEYS_RIGHT;
- else if (AVKONENV->StatusPaneResIdForCurrentLayout(R_AVKON_STATUS_PANE_LAYOUT_USUAL) == R_AVKON_STACON_PANE_LAYOUT_USUAL_SOFTKEYS_LEFT)
- layout = R_AVKON_STACON_PANE_LAYOUT_EMPTY_SOFTKEYS_LEFT;
-
- StatusPane()->MakeVisible( ETrue );
- StatusPane()->SwitchLayoutL( layout );
- }
- }
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::OkToInitiateShutdown()
-// ----------------------------------------------------------------------------
-
-TBool CSysApAppUi::OkToInitiateShutdown()
- {
- TInt swState;
- RProperty::Get( KPSUidStartup, KPSGlobalSystemState, swState );
-
- if( !iShutdownStarted &&
- swState == ESwStateStartingCriticalApps ||
- swState == ESwStateSelfTestOK ||
- swState == ESwStateSecurityCheck ||
- swState == ESwStateCriticalPhaseOK ||
- swState == ESwStateEmergencyCallsOnly ||
- swState == ESwStateCharging ||
- swState == ESwStateAlarm ||
- swState == ESwStateNormalRfOn ||
- swState == ESwStateNormalRfOff ||
- swState == ESwStateNormalBTSap ||
- swState == ESwStateFatalStartupError )
- {
- iShutdownStarted = ETrue;
- return ETrue;
- }
- else
- {
- return EFalse;
- }
- }
-
-/**
- * To check the for an emergency call.
- *
- * @return ETrue if there is an emergency call active otherwise, EFalse.
- */
-TBool IsEmergencyCall()
- {
- TBool retVal( EFalse );
- TInt err( KErrNone );
- TInt state( 0 );
-
- err = RProperty::Get(KPSUidCtsyEmergencyCallInfo, KCTSYEmergencyCallInfo, state );
- if ( err == KErrNone && state )
- {
- retVal = ETrue;
- }
- return retVal;
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::HandleCurrentCallStateChangeL()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::HandleCurrentCallStateChangeL( TInt aCurrentCallState )
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::HandleCurrentCallStateChangeL: KUidCurrentCall: %d" ), aCurrentCallState ) );
-
- if( iPowerKeyPopupMenuActive )
- {
- CancelGlobalListQuery();
- }
-
- switch ( aCurrentCallState )
- {
- case EPSCTsyCallStateRinging:
- {
- iSysApLightsController->CallComingInL( ETrue );
- // Disable keylock when a call is coming in
- if ( iKeyLockEnabled || iDeviceLockEnabled || iKeyLockOnBeforeCradle || iKeyLockOnBeforeAlarm )
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::HandleCurrentCallStateChangeL: EPSCTsyCallStateRinging: disable keylock") ) );
- iKeyLockOnBeforeCall = ETrue;
-
- if ( iKeyLockEnabled || iDeviceLockEnabled )
- {
- if ( !iSysApFeatureManager->TouchUnlockStrokeSupported() )
- {
- KeyLock().DisableWithoutNote();
- }
- }
- }
- break;
- }
-
- case EPSCTsyCallStateDialling:
- {
- // Disable keypad lock during an emergency call
- // no need to disable the key lock when a call is made using the wireless car-kit
- // but if the call is an emergency one then we will disable the keypad lock
- if ( iKeyLockEnabled || iDeviceLockEnabled || iKeyLockOnBeforeCradle )
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::HandleCurrentCallStateChangeL: EPSCTsyCallStateDialling: disable keylock") ) );
- iKeyLockOnBeforeCall = ETrue;
-
- if ( IsEmergencyCall() && (iKeyLockEnabled || iDeviceLockEnabled ))
- {
- KeyLock().DisableWithoutNote();
- }
- }
-
- // Enable signal & network indicators when an emergency call is made in Offline Mode
- if( iSysApOfflineModeController->OfflineModeActive() )
- {
- // Signal indicators not updated with VoIP call
- if ( StateOfProperty(KPSUidCtsyCallInformation, KCTsyCallType) != EPSCTsyCallTypeVoIP)
- {
- iEmergencyCallActive = ETrue;
- UpdateSignalBarsL();
- SetSignalIndicatorL();
- }
- }
- break;
- }
-
- case EPSCTsyCallStateConnected:
- {
- if (StateOfProperty(KPSUidCtsyCallInformation, KCTsyCallType) == EPSCTsyCallTypeCSVoice)
- {
- // Check if GPRS suspended note is required
- iCallActivated = ETrue;
- HandleGprsNotesL();
- }
- if ( iDeviceLockEnabled )
- {
- // Enable keylock via autolock emulation if device lock enabled.
- // Otherwise e.g. messages can be read using softkeys during ongoing call.
- KeyLock().EnableAutoLockEmulation();
- }
- break;
- }
-
- case EPSCTsyCallStateNone:
- {
- // Reset timers in ScreenSaver and Autolock
- User::ResetInactivityTime();
-
- if ( iEmergencyCallActive )
- {
- iEmergencyCallActive = EFalse;
- UpdateSignalBarsL( 0 );
- SetSignalIndicatorL();
- }
- if ( iKeyLockOnBeforeCall )
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::HandleCurrentCallStateChangeL: EPSCTsyCallStateNone: enable keylock") ) );
- iKeyLockOnBeforeCall = EFalse;
- if ( !iDeviceLockEnabled )
- {
- if ( !iKeyLockOnBeforeCradle && !iKeyLockOnBeforeAlarm &&
- !iSysApFeatureManager->TouchUnlockStrokeSupported() )
- {
- if ( iSysApCenRepController->GetInt( KCRUidCommonTelephonySettings, KSettingsSummaryAfterCall ) == 1 )
- {
- KeyLock().EnableWithoutNote(); // Let's not hide "Summary After Call" dialog
- }
- else
- {
- KeyLock().EnableKeyLock();
- }
- }
- }
- else
- {
- KeyLock().EnableAutoLockEmulation();
- }
- }
- if ( iShowkeypadActivatedNoteAfterSoftReject )
- {
- ShowUiNoteL( EKeypadActiveNote );
- iShowkeypadActivatedNoteAfterSoftReject = EFalse;
- }
- iCallActivated = EFalse;
- break;
- }
-
- default:
- break;
- }
-
- if ( aCurrentCallState != EPSCTsyCallStateRinging )
- {
- iSysApLightsController->CallComingInL( EFalse );
- }
-
- SetIhfIndicatorL();
- SetHacIndicatorL();
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::DoSwStateNormalConstructionL()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::DoSwStateNormalConstructionL()
- {
- // Let's ensure that the lights will remain on for 15 secs after sw state normal
- User::ResetInactivityTime();
-
- TRACES( RDebug::Print( _L("CSysApAppUi::DoSwStateNormalConstructionL : START" ) ) );
-
- // In case of unexpected reset (e.g. hidden boot) the keylock must be enabled silently. Locking is done
- // prior to time-consuming initializations, because otherwise UI is in unlocked state for a few seconds.
- if ( iSysApCenRepController->GetInt( KCRUidCoreApplicationUIsSysAp, KSysApKeyguardActive ) == 1 )
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::DoSwStateNormalConstructionL: enabling keylock") ) );
- KeyLock().EnableWithoutNote();
- }
-
- // Initiate bearer change observation
- iSysApConnectionMonitorObserver = CSysApConnectionMonitorObserver::NewL( *this );
-
- TRACES( RDebug::Print( _L("CSysApAppUi::DoSwStateNormalConstructionL: trying CSysApSsSettingsObserver::NewL()") ) );
- iSysApSsSettingsObserver = CSysApSsSettingsObserver::NewL( *this );
-
- TRACES( RDebug::Print( _L("CSysApAppUi::DoSwStateNormalConstructionL: trying new ( ELeave ) CSysApPowerKeyMenuObserver") ) );
- iSysApPowerKeyMenuObserver = new( ELeave ) CSysApPowerKeyMenuObserver( *this );
-
- TRACES( RDebug::Print( _L("SysAp: trying CSystemLock::NewL" ) ) );
- iSysApSystemLock = CSystemLock::NewL();
-
- iSysApCenRepCallForwardingObserver = CSysApCenRepCallForwardingObserver::NewL( *this );
-
- iSysApCenRepMsgWaitingObserver = CSysApCenRepMsgWaitingObserver::NewL( *this );
-
-
- if ( iSysApFeatureManager->Supported( KSysApFeatureIdBatteryInfoPopup ) )
- {
- iSysApBatteryInfoController = CSysApBatteryInfoController::NewL( iSysApCenRepController->GetInt( KCRUidCoreApplicationUIsConf,
- KCoreAppUIsBatteryInformationLowThreshold ) );
- }
-
-
- TRACES( RDebug::Print( _L("CSysApAppUi::DoSwStateNormalConstructionL : END" ) ) );
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::DoSimChangedFromPreviousBootL()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::DoSimChangedFromPreviousBootL()
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::DoSimChangedFromPreviousBootL: iSimChangedDone=%d" ), iSimChangedDone ) );
-
- if ( !iSimChangedDone )
- {
- iSimChangedDone = ETrue;
- CSysApSimChanged* simChanged = CSysApSimChanged::NewL( *this, iEikonEnv->FsSession() );
- CleanupStack::PushL( simChanged );
- simChanged->HandleSimChangedL();
- CleanupStack::PopAndDestroy( simChanged );
- }
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::CancelWaitNote()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::CancelWaitNote()
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::CancelWaitNote" ) ) );
- if ( iSysApWaitNote )
- {
- iSysApWaitNote->Cancel();
- delete iSysApWaitNote;
- iSysApWaitNote = NULL;
- }
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::CancelGlobalListQuery()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::CancelGlobalListQuery()
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::CancelGlobalListQuery" ) ) );
- if ( iGlobalListQuery )
- {
- iGlobalListQuery->CancelListQuery();
- delete iGlobalListQuery;
- iGlobalListQuery = NULL;
- }
- }
-
-#ifndef RD_MULTIPLE_DRIVE
-// ----------------------------------------------------------------------------
-// CSysApAppUi::MountMMC()
-// ----------------------------------------------------------------------------
-
-TInt CSysApAppUi::MountMMC()
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::MountMMC") ) );
- TInt err ( KErrNotSupported );
- if ( iSysApFeatureManager->MmcSupported() )
- {
-#ifdef __WINS__ // Let's sleep a second in WINS
- User::After( 1000000 );
-#endif
- err = iEikonEnv->FsSession().MountFileSystem( KFSName, KMMCDrive );
- TRACES( RDebug::Print( _L("CSysApAppUi::MountMMC: RFs::MountFileSystem() returned: %d"), err ) );
- if ( err == KErrInUse )
- {
- User::After( 1000000 );
- err = iEikonEnv->FsSession().MountFileSystem( KFSName, KMMCDrive );
- TRACES( RDebug::Print( _L("CSysApAppUi::MountMMC: RFs::MountFileSystem() returned: %d"), err ) );
- }
- }
- return err;
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::DismountMMC()
-// ----------------------------------------------------------------------------
-
-TInt CSysApAppUi::DismountMMC()
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::DismountMMC") ) );
-#ifdef __WINS__ // Let's sleep a second in WINS
- User::After( 1000000 );
-#endif
-
- TInt err ( KErrNotSupported );
- if ( iSysApFeatureManager->MmcSupported() )
- {
- err = iEikonEnv->FsSession().DismountFileSystem( KFSName, KMMCDrive );
- TRACES( RDebug::Print( _L("CSysApAppUi::DismountMMC: RFs::DismountFileSystem() returned: %d"), err ) );
- }
- return err;
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::EjectMMCL()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::EjectMMCL()
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::EjectMMCL") ) );
- iMMCEjectUsed = ETrue;
- iMMCPowerMenuEjectUsed = ETrue;
- iTimeToKill = EFalse;
- iApplicationScanningRoundNumber = 0;
- CloseUIAppsInHotSwapL();
- }
-
-#else // RD_MULTIPLE_DRIVE
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::EjectMMCL()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::EjectMMCL()
- {
- // Called from eject confirm query, check drive inserted before start
- TInt insertedIndex( CSysApDriveList::Find(
- iInsertedMemoryCards, iDriveToEject ) );
-
- TRACES( RDebug::Print(
- _L( "CSysApAppUi::EjectMMCL: iMMCEjectUsed: %d, drive: %d, index: %d "),
- iMMCEjectUsed, iDriveToEject, insertedIndex ) );
-
- if ( insertedIndex != KErrNotFound )
- {
- iSysApDriveList->MarkDriveToEject(
- iDriveToEject, CSysApDriveList::EEjectFromMenu );
- iSysApDriveEjectHandler->StartEject();
- }
- iMMCEjectUsed = EFalse;
- }
-
-#endif // RD_MULTIPLE_DRIVE
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::DisconnectBtSap()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::DisconnectBtSap()
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::DisconnectBtSap") ) );
- iSysApBtSapController->Disconnect();
- }
-
-#ifndef RD_MULTIPLE_DRIVE
-// ----------------------------------------------------------------------------
-// CSysApAppUi::RunUnlockNotifierL()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::RunUnlockNotifierL( TSysApMemoryCardStatus aMemoryCardStatus )
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::RunUnlockNotifierL: START") ) );
- if ( iSysApFeatureManager->MmcSupported() )
- {
- if ( UiReady() )
- {
- TSysApMemoryCardStatus memoryCardStatus;
- if ( aMemoryCardStatus == ESysApMemoryCardStatusNotKnown )
- {
- memoryCardStatus = iSysApMMCObserver->MemoryCardStatus();
- }
- else
- {
- memoryCardStatus = aMemoryCardStatus;
- }
-
- TRACES( RDebug::Print( _L("CSysApAppUi::RunUnlockNotifierL: memoryCardStatus=%d"), memoryCardStatus ) );
-
- switch ( memoryCardStatus )
- {
- case ESysApMemoryCardInserted:
- TRACES( RDebug::Print( _L("CSysApAppUi::RunUnlockNotifierL MMC inserted") ) );
- if ( aMemoryCardStatus == ESysApMemoryCardInserted )
- {
- RProperty::Set( KPSUidUikon, KUikMMCInserted, 1 );
- }
- break;
- case ESysApMemoryCardLocked:
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::RunUnlockNotifierL MMC locked") ) );
- RProperty::Set( KPSUidUikon, KUikMMCInserted, 0 );
- TInt callState = StateOfProperty( KPSUidCtsyCallInformation, KCTsyCallState );
-
- if ( (! ( iDeviceLockEnabled || iKeyLockEnabled ) ) &&
- callState != EPSCTsyCallStateRinging && // We don't want to see the MMC passwd query
- callState != EPSCTsyCallStateAlerting ) // when the user is e.g. making an emergency call
- {
- if ( iSysApFeatureManager->MemoryCardLockSupported() )
- {
- if ( ! iMemoryCardDialog )
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::RunUnlockNotifierL: ACTIVATE MMC passwd query") ) );
- CAknMemoryCardDialog* mmcDialog = CAknMemoryCardDialog::NewLC( this );
- iMemoryCardDialog = mmcDialog; // temporary variable used for hiding codescanner error
- iMemoryCardDialog->SetSelfPointer( &iMemoryCardDialog );
- iMemoryCardDialog->UnlockCardLD(); // when UnlockCardLD completes it calls UnlockComplete()
- }
- }
- else
- {
- // Since locked cards are not supported, notify user that card is locked.
- ShowQueryL( ESysApMemoryCardLockedNote );
- }
- }
- }
- break;
-
- case ESysApMemoryCardNotInserted:
- default:
- TRACES( RDebug::Print( _L("CSysApAppUi::RunUnlockNotifierL MMC not inserted") ) );
- if ( aMemoryCardStatus == ESysApMemoryCardNotInserted )
- {
- RProperty::Set( KPSUidUikon, KUikMMCInserted, 0 );
- }
- }
- }
- }
- TRACES( RDebug::Print( _L("CSysApAppUi::RunUnlockNotifierL: END") ) );
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::UnlockComplete() from MAknMemoryCardDialogObserver
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::UnlockComplete( TInt aResult )
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::UnlockComplete result: %d"), aResult ) );
- if ( aResult == KErrNone )
- {
- RProperty::Set( KPSUidUikon, KUikMMCInserted, 1 );
- }
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::MMCStatusChangedL() from MSysApMemoryCardObserver
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::MMCStatusChangedL()
- {
- TRACES( RDebug::Print( _L( "CSysApAppUi::MMCStatusChangedL START: iMMCInserted: %d, iMMCEjectUsed: %d, iHideFirstBeep: %d, iHideNextBeep: %d" ), iMMCInserted, iMMCEjectUsed, iHideFirstBeep, iHideNextBeep ) );
-
- if ( iSysApFeatureManager->MmcSupported() && !iShutdownStarted )
- {
- TSysApMemoryCardStatus memoryCardStatus = iSysApMMCObserver->MemoryCardStatus();
- TRACES( RDebug::Print( _L( "CSysApAppUi::MMCStatusChangedL memoryCardStatus=%d" ), memoryCardStatus ) );
-
- switch ( memoryCardStatus )
- {
- case ESysApMemoryCardInserted:
- case ESysApMemoryCardLocked:
- TRACES( RDebug::Print( _L( "CSysApAppUi::MMCStatusChangedL: MMC drive mounted" ) ) );
- if ( ! iMMCInserted ) // MMC was not inserted before
- {
- TRACES( RDebug::Print( _L( "CSysApAppUi::MMCStatusChangedL: MMC newly inserted" ) ) );
- CancelWaitNote(); // just to be sure, the user might keep on closing and opening the MMC latch
- // An MMC has been newly inserted, so play a sound and check if its password protected
-
- if ( UiReady() )
- {
- if ( !iHideFirstBeep && !iHideNextBeep ) // starting up
- {
- Beep();
- // Switch lights on
- iSysApLightsController->MemoryCardInsertedL();
- }
- iHideNextBeep = EFalse;
- }
-
- iMMCPowerMenuEjectUsed = EFalse;
- iMMCEjectUsed = EFalse;
- iMMCInserted = ETrue;
-
- // No need to show ESysApRemoveMmcNote after MMC already mounted
- if ( iSysApConfirmationQuery )
- {
- if ( iSysApConfirmationQuery->CurrentQuery() == ESysApRemoveMmcNote )
- {
- iSysApConfirmationQuery->Cancel();
- }
- }
-
- // Check if the MMC is locked and unlock it if necessary
- RunUnlockNotifierL( memoryCardStatus );
- }
- break;
- default:
- TRACES( RDebug::Print( _L( "CSysApAppUi::MMCStatusChangedL: MMC drive not mounted" ) ) );
- delete iMemoryCardDialog; // sets itself to null
- RProperty::Set( KPSUidUikon, KUikMMCInserted, 0 );
- if ( iMMCInserted )
- {
- // No need to show ESysApEjectMmcQuery after MMC already removed
- if ( iSysApConfirmationQuery )
- {
- if ( iSysApConfirmationQuery->CurrentQuery() == ESysApEjectMmcQuery )
- {
- iSysApConfirmationQuery->Cancel();
- }
- }
-
- iMMCInserted = EFalse;
-
- TInt propertyValue( StateOfProperty( KPSUidUsbWatcher, KUsbWatcherSelectedPersonality ) );
- if ( !iMMCEjectUsed && propertyValue != KUsbPersonalityIdMS )
- {
- // if USB file transfer active, do not close applications
- // if eject selected in MMC App, MMC App takes care of the following and
- // if eject selected from powerkeymenu, applications have already been shutdown
- iTimeToKill = EFalse;
- iApplicationScanningRoundNumber = 0;
- CloseUIAppsInHotSwapL();
- }
- }
- else
- {
- // If MMC was not previously inserted and eject was chosed from power key menu, attempt to remount.
- if ( iMMCPowerMenuEjectUsed )
- {
- TRACES( RDebug::Print( _L( "CSysApAppUi::MMCStatusChangedL: Attempt to remount" ) ) );
- MountMMC();
- // If mount was successful, unnecessary note will be canceled in insert notification handling.
- }
- }
- break;
- }
-
- // Update memory card indicator status
- SetMemoryCardIndicatorL();
- }
- TRACES( RDebug::Print( _L( "CSysApAppUi::MMCStatusChangedL END: iMMCInserted: %d, iMMCEjectUsed: %d, iHideFirstBeep: %d, iHideNextBeep: %d" ), iMMCInserted, iMMCEjectUsed, iHideFirstBeep, iHideNextBeep ) );
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::ShowMMCDismountedDialogL()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::ShowMMCDismountedDialogL()
- {
- TInt propertyValue( StateOfProperty( KPSUidUsbWatcher, KUsbWatcherSelectedPersonality ) );
-
- // Do not show any note if USB file transfer is active.
- if ( propertyValue != KUsbPersonalityIdMS )
- {
- if ( iSysApFeatureManager->MemoryCardHatchSupported() )
- { // MMC hatch has been opened and MMC has been dismounted
- TRACES( RDebug::Print( _L( "CSysApAppUi::ShowMMCDismountedDialogL: Show note: Remove MMC and press OK." ) ) );
- ShowQueryL( ESysApRemoveMmcNote );
- }
- else
- {
- // MMC has been removed and dismounted
- TRACES( RDebug::Print( _L( "CSysApAppUi::ShowMMCDismountedDialogL: Show note: You might have lost some data." ) ) );
- // No confirmation but let's set this true to enable MMC passwd query
- ShowUiNoteL( EMemoryCardRemovedWithoutEjectNote );
- }
- }
- else
- {
- TRACES( RDebug::Print( _L( "CSysApAppUi::ShowMMCDismountedDialogL: No note shown, USB file transfer caused dismount." ) ) );
- }
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::MMCDismountedDialogConfirmed
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::MMCDismountedDialogConfirmed()
- {
- TRACES( RDebug::Print( _L( "CSysApAppUi::MMCDismountedDialogConfirmed") ) );
-
- // Try to remount just in case when eject was chosen from power key menu
- if ( iMMCPowerMenuEjectUsed )
- {
- iMMCPowerMenuEjectUsed = EFalse;
-
- if ( MountMMC() == KErrLocked ) // In case a locked card was not removed after all
- {
- TRAPD( err, MMCStatusChangedL() ); // This will update power menu and memory card icon. Also memory card password is requeried.
- if ( err != KErrNone )
- {
- TRACES( RDebug::Print( _L( "CSysApAppUi::MMCDismountedDialogConfirmed: MMCStatusChangedL failed, err=%d"), err ) );
- }
- }
- }
-
- }
-
-#else // RD_MULTIPLE_DRIVE
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::MMCInsertedL
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::MMCInsertedL()
- {
- TRACES( RDebug::Print( _L( "CSysApAppUi::MMCInsertedL") ) );
-
- if ( iSysApFeatureManager->MmcSupported() && !iShutdownStarted )
- {
- TBool normalState( UiReady() );
-
- if ( normalState )
- {
- TInt defaultMemoryCard( iSysApDriveList->DefaultMemoryCard() );
- TSysApMemoryCardStatus memoryCardStatus( iSysApDriveList->MemoryCardStatus( defaultMemoryCard ) );
-
- TRACES( RDebug::Print(
- _L( "CSysApAppUi::MMCInsertedL: drive: %d, memoryCardStatus: %d" ), defaultMemoryCard, memoryCardStatus ) );
-
- switch ( memoryCardStatus )
- {
- case ESysApMemoryCardInserted: // Fall through
- case ESysApMemoryCardLocked:
- {
- // Reset eject and unlock of inserted memory card
- iSysApDriveList->ResetDriveToEject( defaultMemoryCard );
- iSysApDriveList->ResetDriveUnlockQueryShown( defaultMemoryCard );
-
- CancelWaitNote();
-
- if ( memoryCardStatus == ESysApMemoryCardInserted )
- {
- TRACES( RDebug::Print(
- _L( "CSysApAppUi::MMCInsertedL: memoryCardStatus ESysApMemoryCardInserted: %d" ), memoryCardStatus ) );
- RProperty::Set( KPSUidUikon, KUikMMCInserted, 1 );
- }
- else
- {
- TRACES( RDebug::Print(
- _L( "CSysApAppUi::MMCInsertedL: memoryCardStatus ESysApMemoryCardLocked: %d" ), memoryCardStatus ) );
- RProperty::Set( KPSUidUikon, KUikMMCInserted, 0 );
- }
- break;
- }
- case ESysApMemoryCardNotInserted:
- {
- // Always reset eject and unlock of removed memory card
- TBool isEject( iSysApDriveList->IsDriveToEject( defaultMemoryCard ) );
-
- TRACES( RDebug::Print(
- _L( "CSysApAppUi::MMCInsertedL: isEject: %d, drive: %d" ),
- isEject, defaultMemoryCard ) );
-
- iSysApDriveList->ResetDriveToEject( defaultMemoryCard );
- iSysApDriveList->ResetDriveUnlockQueryShown( defaultMemoryCard );
-
- TRACES( RDebug::Print(
- _L( "SysApAppUi::MMCInsertedL: memoryCardStatus ESysApMemoryCardNotInserted: %d" ), memoryCardStatus ) );
-
- RProperty::Set( KPSUidUikon, KUikMMCInserted, 0 );
- break;
- }
- case ESysApMemoryCardStatusNotKnown: // Fall through
- default:
- {
- break;
- }
- }
- RunUnlockNotifierL();
- }
- }
- }
-
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::RunUnlockNotifierL()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::RunUnlockNotifierL()
- {
- TRACES( RDebug::Print(
- _L("CSysApAppUi::RunUnlockNotifierL: START iDeviceLockEnabled: %d, iKeyLockEnabled: %d" ),
- iDeviceLockEnabled, iKeyLockEnabled ) );
-
- if ( !iSysApFeatureManager->MmcSupported() ||
- iDeviceLockEnabled ||
- iKeyLockEnabled ||
- !UiReady() )
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::RunUnlockNotifierL: END") ) );
- return;
- }
-
- // We don't want to see the MMC passwd query
- // when the user is e.g. making an emergency call
- TInt callState( StateOfProperty( KPSUidCtsyCallInformation, KCTsyCallState ) );
- if ( callState != EPSCTsyCallStateRinging &&
- callState != EPSCTsyCallStateAlerting )
- {
- iSysApDriveUnlockHandler->StartUnlock();
- }
-
- TRACES( RDebug::Print(
- _L("CSysApAppUi::RunUnlockNotifierL: END callState: %d"), callState ) );
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::MMCStatusChangedL() from MSysApMemoryCardObserver
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::MMCStatusChangedL( TInt aDrive )
- {
- TRACES( RDebug::Print(
- _L( "CSysApAppUi::MMCStatusChangedL START: MMCCount: %d, iMMCEjectUsed: %d" ),
- iInsertedMemoryCards.Count(), iMMCEjectUsed ) );
-
- if ( iShutdownStarted || !iSysApFeatureManager->MmcSupported() )
- {
- TRACES( RDebug::Print(
- _L( "CSysApAppUi::MMCStatusChangedL iShutdownStarted: %d END" ),
- iShutdownStarted ) );
- return;
- }
-
- TBool normalState( UiReady() );
-
- TInt defaultMemoryCard( iSysApDriveList->DefaultMemoryCard() );
- TSysApMemoryCardStatus memoryCardStatus( iSysApDriveList->MemoryCardStatus( aDrive ) );
- TInt insertedIndex( CSysApDriveList::Find( iInsertedMemoryCards, aDrive ) );
-
- TRACES( RDebug::Print(
- _L( "CSysApAppUi::MMCStatusChangedL: normalState: %d, index: %d, drive: %d, memoryCardStatus: %d" ),
- normalState, insertedIndex, aDrive, memoryCardStatus ) );
-
- switch ( memoryCardStatus )
- {
- case ESysApMemoryCardInserted: // Fall through
- case ESysApMemoryCardLocked:
- {
- if ( insertedIndex == KErrNotFound ) // Not inserted before
- {
- // Reset eject and unlock of inserted memory card
- iSysApDriveList->ResetDriveToEject( aDrive );
- iSysApDriveList->ResetDriveUnlockQueryShown( aDrive );
-
- CancelWaitNote();
-
- if ( aDrive == defaultMemoryCard )
- {
- if ( memoryCardStatus == ESysApMemoryCardInserted )
- {
- RProperty::Set( KPSUidUikon, KUikMMCInserted, 1 );
- }
- else
- {
- RProperty::Set( KPSUidUikon, KUikMMCInserted, 0 );
- }
- }
-
- if ( normalState )
- {
- // Ignore extra beep from USB file transfer
- TBool ignoreBeep(
- iSysApDriveList->IsDriveInsertBeepIgnored( aDrive ) );
-
- TRACES( RDebug::Print(
- _L( "CSysApAppUi::MMCStatusChangedL: ignoreBeep: %d, drive: %d" ),
- ignoreBeep, aDrive ) );
-
- if ( !ignoreBeep )
- {
- Beep();
- iSysApLightsController->MemoryCardInsertedL();
- }
-
- iSysApDriveList->ResetDriveInsertBeepIgnored( aDrive );
-
- // Keep ignoring extra beep if USB file transfer is active
- TInt propertyValue( StateOfProperty( KPSUidUsbWatcher, KUsbWatcherSelectedPersonality ) );
-
- TRACES( RDebug::Print(
- _L( "CSysApAppUi::MMCStatusChangedL: usbState: %d" ), propertyValue ) );
-
- if ( propertyValue == KUsbPersonalityIdMS )
- {
- iSysApDriveList->MarkDriveInsertBeepIgnored( aDrive );
- }
- }
-
- if ( iDriveToDismount == aDrive && iSysApConfirmationQuery )
- {
- if ( iSysApConfirmationQuery->CurrentQuery() == ESysApRemoveMmcNote )
- {
- // User put back ejected memory card or did not remove it
- iSysApConfirmationQuery->Cancel();
- }
- }
- RunUnlockNotifierL();
- }
- break;
- }
- case ESysApMemoryCardNotInserted:
- {
- // Always reset eject and unlock of removed memory card
- TBool isEject( iSysApDriveList->IsDriveToEject( aDrive ) );
-
- TRACES( RDebug::Print(
- _L( "CSysApAppUi::MMCStatusChangedL: isEject: %d, drive: %d" ),
- isEject, aDrive ) );
-
- iSysApDriveList->ResetDriveToEject( aDrive );
- iSysApDriveList->ResetDriveUnlockQueryShown( aDrive );
-
- if ( insertedIndex != KErrNotFound ) // Inserted before
- {
- if ( memoryCardStatus == ESysApMemoryCardNotInserted )
- {
- // Reset extra beep ignore if memory card was removed without eject
- iSysApDriveList->ResetDriveInsertBeepIgnored( aDrive );
- }
-
- CancelGlobalListQuery(); // Cancel power menu
-
- if ( aDrive == defaultMemoryCard )
- {
- RProperty::Set( KPSUidUikon, KUikMMCInserted, 0 );
- }
-
- if ( iSysApConfirmationQuery )
- {
- if ( iSysApConfirmationQuery->CurrentQuery() == ESysApEjectMmcQuery )
- {
- // User removed memory card too early
- iSysApConfirmationQuery->Cancel();
- // Allow application closing to execute.
- // Also FileManager is closed in this case, regardless where the eject was initiated from.
- iMMCEjectUsed = EFalse;
- }
- }
-
- // Stop unlock of removed memory card
- iSysApDriveUnlockHandler->StopUnlock( aDrive );
-
- if ( !iMMCEjectUsed && !isEject )
- {
- TInt propertyValue( StateOfProperty( KPSUidUsbWatcher, KUsbWatcherSelectedPersonality ) );
-
- TRACES( RDebug::Print(
- _L( "CSysApAppUi::MMCStatusChangedL: usbState: %d" ), propertyValue ) );
-
- if ( propertyValue != KUsbPersonalityIdMS )
- {
- if ( iSysApFeatureManager->MemoryCardHatchSupported() )
- {
- // Store drive removed without eject and start eject handling
- iSysApDriveList->MarkDriveToEject(
- aDrive, CSysApDriveList::EEjectRemovedWithoutEject );
- iSysApDriveEjectHandler->StartEject();
- }
- else
- {
- // Just show the note
- ShowUiNoteL( EMemoryCardRemovedWithoutEjectNote );
- }
- }
- }
- iMMCEjectUsed = EFalse;
- }
- break;
- }
- case ESysApMemoryCardStatusNotKnown: // Fall through
- default:
- {
- break;
- }
- }
-
- // Update inserted memory cards
- iSysApDriveList->GetMemoryCardsL(
- iInsertedMemoryCards, CSysApDriveList::EIncludeInserted );
-
- // Update memory card indicator status
- SetMemoryCardIndicatorL();
-
- TRACES( RDebug::Print(
- _L( "CSysApAppUi::MMCStatusChangedL END: MMCCount: %d, iMMCEjectUsed: %d" ),
- iInsertedMemoryCards.Count(), iMMCEjectUsed ) );
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::ShowMMCDismountedDialogL()
-// ----------------------------------------------------------------------------
-
-TBool CSysApAppUi::ShowMMCDismountedDialogL(
- TInt aDrive, CSysApDriveList::TDriveEjectType aEjectType )
- {
- TRACES( RDebug::Print(
- _L( "CSysApAppUi::ShowMMCDismountedDialogL: aDrive: %d, aEjectType: %d" ),
- aDrive, aEjectType ) );
-
- TBool ret( EFalse );
- iDriveToDismount = aDrive;
- HBufC* driveName = iSysApDriveList->GetFormattedDriveNameLC(
- aDrive,
- R_QTN_EJECT_REMOVE_MEMORY_INFO );
-
- if ( aEjectType == CSysApDriveList::EEjectFromMenu )
- {
- TRACES( RDebug::Print(
- _L( "CSysApAppUi::ShowMMCDismountedDialogL: Show note: Remove MMC and press OK...." ) ) );
- ShowQueryL( ESysApRemoveMmcNote, *driveName );
- ret = ETrue;
- }
- else
- {
- // Memory card was removed without eject
- TInt propertyValue( StateOfProperty( KPSUidUsbWatcher, KUsbWatcherSelectedPersonality ) );
-
- // Do not show any note if USB file transfer is active.
- if ( propertyValue != KUsbPersonalityIdMS )
- {
- if ( iSysApFeatureManager->MemoryCardHatchSupported() )
- {
- // MMC hatch has been opened and MMC has been dismounted
- TRACES( RDebug::Print(
- _L( "CSysApAppUi::ShowMMCDismountedDialogL: Show note: Remove MMC and press OK." ) ) );
- ShowQueryL( ESysApRemoveMmcNote, *driveName );
- ret = ETrue;
- }
- else
- {
- iSysApDriveList->ResetDrivesToEject();
-
- // MMC has been removed and dismounted
- TRACES( RDebug::Print( _L(
- "CSysApAppUi::ShowMMCDismountedDialogL: Show note: You might have lost some data." ) ) );
-
- // No confirmation but let's set this true to enable MMC passwd query
- ShowUiNoteL( EMemoryCardRemovedWithoutEjectNote );
- }
- }
- else
- {
- iSysApDriveList->ResetDrivesToEject();
- TRACES( RDebug::Print(
- _L( "CSysApAppUi::ShowMMCDismountedDialogL: No note shown, USB file transfer caused dismount." ) ) );
- }
- }
-
- CleanupStack::PopAndDestroy( driveName );
-
- TRACES( RDebug::Print(
- _L( "CSysApAppUi::ShowMMCDismountedDialogL: ret: %d" ), ret ) );
-
- return ret;
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::MMCDismountedDialogConfirmed
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::MMCDismountedDialogConfirmed()
- {
- TRACES( RDebug::Print(
- _L( "CSysApAppUi::MMCDismountedDialogConfirmed: iDriveToDismount: %d" ),
- iDriveToDismount ) );
-
- // Try remount to check if drive was put back
- iSysApDriveList->MountDrive( iDriveToDismount );
- if ( !iSysApDriveEjectHandler->CompleteDismount( iDriveToDismount ) )
- {
- // When ready, check for locked memory cards and update indicators
- TRAP_IGNORE( SetMemoryCardIndicatorL() );
- TRAP_IGNORE( RunUnlockNotifierL() );
- }
- }
-
-#endif // RD_MULTIPLE_DRIVE
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::EjectStarted()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::EjectStarted( TBool ejectStarted )
- {
- TRACES( RDebug::Print( _L( "CSysApAppUi::EjectStarted" ) ) );
- iMMCEjectUsed = ejectStarted;
-
-#ifndef RD_MULTIPLE_DRIVE
- iFileManagerCloseDisabled = ejectStarted;
-#endif // RD_MULTIPLE_DRIVE
-}
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::DoLightsTimeoutChangedL
-// ----------------------------------------------------------------------------
-void CSysApAppUi::DoLightsTimeoutChangedL( const TInt aTimeout )
- {
- iSysApLightsController->DoLightsTimeoutChangedL( aTimeout );
- }
-
-#ifdef __SYSAP_MODULE_TEST
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::ModuleTestShowUiNoteL()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::ModuleTestShowUiNoteL( const TDesC& noteText ) const
- {
- CAknGlobalNote* note = CAknGlobalNote::NewLC();
- note->SetTone( EAvkonSIDNoSound );
- note->ShowNoteL( EAknGlobalInformationNote, noteText );
- CleanupStack::PopAndDestroy(); // note
- }
-
-#endif
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::ShowShutdownNoteL()
-// ----------------------------------------------------------------------------
-void CSysApAppUi::ShowShutdownNoteL()
- {
- TRACES( RDebug::Print( _L( "CSysApAppUi::ShowShutdownNoteL") ) );
- ShowUiNoteL( EShutdownNote );
- User::After( KTimeToShowShutdownNote );
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::Beep()
-// ----------------------------------------------------------------------------
-void CSysApAppUi::Beep()
- {
- static_cast<CAknAppUi*>(iEikonEnv->EikAppUi())->KeySounds()->PlaySound( EAvkonSIDInformationTone );
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::SimSupported()
-// ----------------------------------------------------------------------------
-TBool CSysApAppUi::SimSupported()
- {
- return iSysApFeatureManager->SimSupported();
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::IsStateNormal()
-//
-// ----------------------------------------------------------------------------
-TBool CSysApAppUi::IsStateNormal() const
- {
- TInt state;
- TInt errorCode =
- RProperty::Get( KPSUidStartup, KPSGlobalSystemState, state );
- if ( errorCode == KErrNone )
- {
- return state == ESwStateNormalRfOn ||
- state == ESwStateNormalRfOff ||
- state == ESwStateNormalBTSap;
- }
- else
- {
- TRACES( RDebug::Print( _L( "CSysApAppUi::IsStateNormal: Failed to read global system state, error code %d." ), errorCode ) );
- return EFalse;
- }
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::BatteryEmptyL()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::BatteryEmptyL()
- {
- iSysApLightsController->BatteryEmptyL( ETrue );
- // Do not reactivate keyguard in the next startup
- iSysApCenRepController->SetInt( KCRUidCoreApplicationUIsSysAp, KSysApKeyguardActive, 0 );
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::Max()
-// ----------------------------------------------------------------------------
-
-TInt CSysApAppUi::Max( const TInt aA, const TInt aB, const TInt aC )
- {
- TInt max( aA );
- if ( aB > max )
- {
- max = aB;
- }
- if ( aC > max )
- {
- max = aC;
- }
- return max;
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::SetStarterState()
-// ----------------------------------------------------------------------------
-
-TInt CSysApAppUi::SetStarterState( const RStarterSession::TGlobalState aState )
- {
- if ( iSysApStartupController->GlobalStateChangeAllowed( aState ) )
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::SetStarterState: aState=%d" ), aState ) );
- return StarterSession().SetState( aState );
- }
- else
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::SetStarterState: aState=%d - not allowed" ), aState ) );
- return KErrNone;
- }
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::GetBtSapDeviceNameL()
-// ----------------------------------------------------------------------------
-
-HBufC* CSysApAppUi::GetBtSapDeviceNameL()
- {
- return iSysApBtSapController->GetBtSapDeviceNameL();
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::ShowAlarmIndicatorL()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::ShowAlarmIndicatorL( TBool aShowIndicator )
- {
- if ( aShowIndicator)
- {
- SetIndicatorStateL( EAknIndicatorAlarmClock, EAknIndicatorStateOn );
- }
- else
- {
- SetIndicatorStateL( EAknIndicatorAlarmClock, EAknIndicatorStateOff );
- }
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::SimulateFlipKeyEventL()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::SimulateFlipKeyEventL( TBool aFlipOpen )
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::SimulateFlipKeyEventL: aFlipOpen: %d" ), aFlipOpen ) );
-
- /*
- Flip key is constructed when a flip notification via Pub&Sub is received. The reason behind
- providing this as a key event is to enable unified handling of keys also with flip, and because
- flip is captured&consumed by Avkon it is not possible to capture flip key events directly
- from default handler/plugins.
- */
-
- TKeyEvent flipEvent;
- flipEvent.iCode = aFlipOpen ? EKeyFlipOpen : EKeyFlipClose;
- flipEvent.iScanCode = 0;
- flipEvent.iModifiers = 0;
- flipEvent.iRepeats = 0;
-
- HandleKeyEventL( flipEvent, EEventKey );
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::SetFlipOpenL()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::SetFlipOpenL( TBool aFlipOpen )
- {
- iSysApLightsController->SetFlipOpenL( aFlipOpen );
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::SetGripOpenL()
-// ----------------------------------------------------------------------------
-void CSysApAppUi::SetGripOpenL( TBool aGripOpen )
- {
- iSysApLightsController->SetGripOpenL( aGripOpen );
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::SetNetworkConnectionAllowed()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::SetNetworkConnectionAllowed( TCoreAppUIsNetworkConnectionAllowed aNetworkConnectionAllowed )
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::SetNetworkConnectionAllowed: status: %d" ), aNetworkConnectionAllowed ) );
-
- iSysApCenRepController->SetInt( KCRUidCoreApplicationUIs, KCoreAppUIsNetworkConnectionAllowed, (TInt) aNetworkConnectionAllowed );
-
- // Also set the Symbian PS key used for the same purpose:
- RProperty::Set(KUidSystemCategory, KUidPhonePwr.iUid, aNetworkConnectionAllowed ? ESAPhoneOn : ESAPhoneOff);
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::GetTelServerL()
-// ----------------------------------------------------------------------------
-
-RTelServer* CSysApAppUi::GetTelServer()
- {
- if ( iSysApEtelConnector )
- {
- return iSysApEtelConnector->GetTelServer();
- }
- else
- {
- return NULL;
- }
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::CoverDisplaySupported()
-// ----------------------------------------------------------------------------
-
-TBool CSysApAppUi::CoverDisplaySupported()
- {
- return iSysApFeatureManager->CoverDisplaySupported();
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::StarterSession()
-// ----------------------------------------------------------------------------
-
-RStarterSession& CSysApAppUi::StarterSession()
- {
- if ( !iStarterSession.Handle() )
- {
- // All server connections are tried to be made KTriesToConnectServer times because occasional
- // fails on connections are possible at least on some servers
- TRACES( RDebug::Print( _L("CSysApAppUi::StarterSession: trying RStarterSession::Connect()") ) );
- TInt thisTry = 0;
- TInt err;
- while ( ( err = iStarterSession.Connect() ) != KErrNone && ( thisTry++ ) <= KTriesToConnectServer )
- {
- User::After( KTimeBeforeRetryingServerConnection );
- }
-
- if ( err != KErrNone )
- {
- // What do in error case?
- TRACES( RDebug::Print( _L("CSysApAppUi::StarterSession: RStarterSession::Connect() failed with %d"), err ) );
- }
- }
-
- return iStarterSession;
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::KeyLock()
-// ----------------------------------------------------------------------------
-
-RAknKeylock2& CSysApAppUi::KeyLock()
- {
- if ( !iKeyLock.Handle() )
- {
- // All server connections are tried to be made KTriesToConnectServer times because occasional
- // fails on connections are possible at least on some servers
- TInt thisTry = 0;
- TInt err;
-
- TRACES( RDebug::Print( _L("CSysApAppUi::KeyLock: trying RAknKeylock2::Connect()") ) );
- thisTry = 0;
- while ( ( err = iKeyLock.Connect() ) != KErrNone && ( thisTry++ ) <= KTriesToConnectServer )
- {
- User::After( KTimeBeforeRetryingServerConnection );
- }
-
- if ( err != KErrNone )
- {
- // What do in error case?
- TRACES( RDebug::Print( _L("CSysApAppUi::KeyLock: RAknKeylock2::Connect() failed with %d"), err ) );
- }
- }
-
- return iKeyLock;
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::CenRepController()
-// ----------------------------------------------------------------------------
-
-CSysApCenRepController& CSysApAppUi::CenRepController()
- {
- __ASSERT_ALWAYS( iSysApCenRepController, User::Panic( _L("CSysApAppUi::CenRepController"), KErrBadHandle ) );
-
- return *iSysApCenRepController;
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::ExecCommandL
-// ----------------------------------------------------------------------------
-//
-void CSysApAppUi::ExecCommandL( TSysapCommand aCommand )
- {
- ExecCommandL( aCommand, KNullDesC8 );
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::ExecCommandL
-// ----------------------------------------------------------------------------
-//
-void CSysApAppUi::ExecCommandL( TSysapCommand aCommand, const TDesC8& aParam )
- {
- TRACES( RDebug::Print(_L("CSysApAppUi::ExecCommandL: aCommand=%d"), aCommand ) );
-
- switch ( aCommand )
- {
- case EResetKeyguardState: // reset the internal keyguard flags of the SysAp, except for iKeyLockOnBeforeCradle
- iKeyLockOnBeforeCall = EFalse;
- iKeyLockOnBeforeAlarm = EFalse;
- break;
-
- case ECancelPowermenu: // hide power menu if it is visible
- if( iPowerKeyPopupMenuActive )
- {
- CancelGlobalListQuery();
- }
- break;
-
- case EUpdateLights: // apply key specific light handling
- {
- TUpdateLightsBuf lightBuf;
- lightBuf.Copy( aParam );
-
- switch ( lightBuf() )
- {
- case EKeyGripClose:
- SetGripOpenL( EFalse );
- break;
-
- case EKeyGripOpen:
- SetGripOpenL( ETrue );
- break;
-
- case EKeyFlipClose:
- SetFlipOpenL( EFalse );
- break;
-
- case EKeyFlipOpen:
- SetFlipOpenL( ETrue );
- break;
-
- default:
- // No specific light handling for other keys.
- break;
- }
- }
- break;
-
- default:
- // do nothing in release builds since no harm is done
- __ASSERT_DEBUG( EFalse, User::Panic( _L("CSysApAppUi::ExecCommandL: Invalid command"), KErrArgument ) );
- break;
- }
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::ExecQueryL
-// ----------------------------------------------------------------------------
-//
-void CSysApAppUi::ExecQueryL( TSysapQuery aQuery, TDes8& aReturn )
- {
- ExecQueryL( aQuery, aReturn, KNullDesC8 );
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::ExecQueryL
-// ----------------------------------------------------------------------------
-//
-void CSysApAppUi::ExecQueryL( TSysapQuery aQuery, TDes8& aReturn, const TDesC8& /*aParam*/ )
- {
- TRACES( RDebug::Print(_L("CSysApAppUi::ExecQueryL: aQuery=%d"), aQuery ) );
-
- switch ( aQuery )
- {
- case EGetHwrmLight: // get handle to HWRM client session. Returns CHWRMLight*.
- {
- THwrmLightBuf retBuf( iSysApLightsController->GetHwrmLight() );
- aReturn.Copy( retBuf );
- }
- break;
-
- case EGetKeylock: // get handle to keylock client session. Returns RAknKeylock2*.
- {
- TKeyLockBuf retBuf( &(KeyLock()) );
- aReturn.Copy( retBuf );
- }
- break;
-
- default:
- __ASSERT_DEBUG( EFalse, User::Panic( _L("CSysApAppUi::ExecQueryL: Invalid query"), KErrArgument ) );
- User::Leave( KErrArgument );
- break;
- }
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::ShowShutdownImage
-// ----------------------------------------------------------------------------
-//
-TInt CSysApAppUi::ShowShutdownImage( TInt aBitmapId )
- {
- TRACES( RDebug::Print(_L("CSysApAppUi::ShowShutdownImage") ) );
-
- TRAPD( err, ShowShutdownImageL( aBitmapId ) );
-
- if ( err != KErrNone )
- {
- TRACES( RDebug::Print(_L("CSysApAppUi::ShowShutdownImageL failed, err=%d"), err ) );
- }
-
- return err;
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::ShowShutdownImageL
-// ----------------------------------------------------------------------------
-//
-void CSysApAppUi::ShowShutdownImageL( TInt aBitmapId )
- {
- TRACES( RDebug::Print(_L("CSysApAppUi::ShowShutdownImageL") ) );
-
- if ( !iSysApShutdownImage ) // Shutdown image may be shown without entering normal state (e.g. charging), so construct here
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::ShowShutdownImageL: trying CSysApShutdownImage::NewL()") ) );
- iSysApShutdownImage = CSysApShutdownImage::NewL();
- }
-
- TRACES( RDebug::Print( _L("CSysApAppUi::ShowShutdownImageL: trying CSysApShutdownImage::ShowShutdownImageL()") ) );
- iSysApShutdownImage->ShowShutdownImageL( aBitmapId );
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::IgnoreZeroNetworkBarNotifications
-// ----------------------------------------------------------------------------
-//
-void CSysApAppUi::IgnoreZeroNetworkBarNotifications(TBool aIgnore)
- {
- iIgnoreZeroNetworkBarNotifications = aIgnore;
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::BtSapEnabled()
-// ----------------------------------------------------------------------------
-
-TBool CSysApAppUi::BtSapEnabled()
- {
- if ( iSysApBtSapController )
- {
- return iSysApBtSapController->BtSapEnabled();
- }
-
- return EFalse;
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::DeactivateBT
-// ----------------------------------------------------------------------------
-//
-void CSysApAppUi::DeactivateBT()
- {
- // Will deactivate BT when changing to normal mode
- iDeactivateBt = ETrue;
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::SetHacIndicatorL()
-// ----------------------------------------------------------------------------
-void CSysApAppUi::SetHacIndicatorL()
- {
-
- if ( !iSysApCenRepHacSettingObserver )
- {
- // Do nothing if HAC setting observer has not been created yet
- // This occurs in case some party is trying to set HAC indicator during
- // ConstructL(), e.g. when switching from offline to online during startup
- TRACES( RDebug::Print( _L("CSysApAppUi::SetHacIndicatorL: do nothing, HAC observer does not exist yet") ) );
- return;
- }
-
- if ( iSysApCenRepHacSettingObserver->HacMode() )
- {
- TBool accessoryConnected ( EFalse );
-
- TAccMode accMode(EAccModeHandPortable);
-
- if ( iSysApAccessoryObserver )
- {
- accMode = iSysApAccessoryObserver->GetAccessoryMode();
-
- if ( accMode != EAccModeHandPortable )
- {
- accessoryConnected = ETrue;
- }
- }
-
- TInt indicatorState = EAknIndicatorStateOn;
-
- if ( !accessoryConnected ) // When accessory is not connected, check offline and call state
- {
- if ( OfflineModeActive() ) // HAC indicator is not shown in offline mode
- {
- indicatorState = EAknIndicatorStateOff;
- }
- else
- {
- // during active call with IHF activated HAC indicator is not shown
- TInt callState( StateOfProperty( KPSUidCtsyCallInformation, KCTsyCallState ) );
- if ( callState < KErrNone )
- {
- callState = EPSCTsyCallStateNone;
- }
-
- if ( callState != EPSCTsyCallStateNone && IhfEnabledL() )
- {
- indicatorState = EAknIndicatorStateOff;
- }
- }
-
- }
- else
- {
- // If an accessory is connected, HAC indicator should not be shown
- indicatorState = EAknIndicatorStateOff;
- }
-
- SetIndicatorStateL( EAknIndicatorHAC, indicatorState );
-
- }
- else
- {
- // If HAC is not active, always disable indicator regardless of accessory state
- SetIndicatorStateL( EAknIndicatorHAC, EAknIndicatorStateOff );
- }
-
-
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::HandleResourceChangeL()
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::HandleResourceChangeL( TInt aType )
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::HandleResourceChangeL aType: %d"), aType ) );
- CAknAppUi::HandleResourceChangeL(aType);
-
- if ( aType == KEikDynamicLayoutVariantSwitch )
- {
-#ifdef RD_STARTUP_ANIMATION_CUSTOMIZATION
- iSysApShutdownImage->SetRect( ApplicationRect() );
-#endif // RD_STARTUP_ANIMATION_CUSTOMIZATION
-
- TInt mode;
- User::LeaveIfError( RProperty::Get( KPSUidStartup, KPSGlobalStartupMode, mode ) );
-
- if ( mode == EStartupModeAlarm )
- {
- SetStatusPaneLayoutL( ESysApAlarm );
- }
- }
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::SetMemoryCardIndicatorL
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::SetMemoryCardIndicatorL()
- {
- if ( iSysApFeatureManager->Supported( KSysApFeatureIdMemoryCardIcon ) )
- {
-#ifndef RD_MULTIPLE_DRIVE
- TSysApMemoryCardStatus memoryCardStatus = iSysApMMCObserver->MemoryCardStatus();
-
- TRACES( RDebug::Print( _L("CSysApAppUi::SetMemoryCardIndicatorL: memoryCardStatus=%d"), memoryCardStatus ) );
-
- if ( memoryCardStatus == ESysApMemoryCardInserted || memoryCardStatus == ESysApMemoryCardLocked )
-#else // RD_MULTIPLE_DRIVE
- TInt insertedCount( CSysApDriveList::NonUsbDriveCount( iInsertedMemoryCards ) );
-
- TRACES( RDebug::Print( _L("CSysApAppUi::SetMemoryCardIndicatorL: insertedCount=%d"), insertedCount ) );
-
- if ( insertedCount > 0 )
-#endif // RD_MULTIPLE_DRIVE
- {
- SetIndicatorStateL( EAknIndicatorMemoryCard, EAknIndicatorStateOn );
- }
- else
- {
- SetIndicatorStateL( EAknIndicatorMemoryCard, EAknIndicatorStateOff );
- }
- }
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::SysApFeatureManager
-// ----------------------------------------------------------------------------
-
-CSysApFeatureManager& CSysApAppUi::SysApFeatureManager()
- {
- __ASSERT_DEBUG( iSysApFeatureManager, User::Panic( _L("iSysApFeatureManager == NULL"), KErrBadHandle ) );
-
- return *iSysApFeatureManager;
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::SetUsbAttachStatus
-// ----------------------------------------------------------------------------
-#ifndef RD_MULTIPLE_DRIVE
-void CSysApAppUi::SetUsbAttachStatus( const TBool aUsbAttached )
- {
- // Prevent double beep when USB file transfer gets activated but
- // allow MMC inserted beep when:
- // a) USB file transfer is active
- // b) MMC is not inserted when USB cable is attached
- iHideNextBeep = ( iMMCInserted && aUsbAttached );
- }
-#else // RD_MULTIPLE_DRIVE
-void CSysApAppUi::SetUsbAttachStatus( const TBool aUsbAttached )
- {
- TRACES( RDebug::Print(
- _L( "CSysApAppUi::SetUsbAttachStatus: aUsbAttached: %d" ),
- aUsbAttached ) );
-
- if ( aUsbAttached )
- {
- // For ignoring extra beeps caused by USB file transfer
- iSysApDriveList->ResetDrivesInsertBeepIgnored();
- iSysApDriveList->MarkDrivesInsertBeepIgnored( iInsertedMemoryCards );
- }
- }
-#endif // RD_MULTIPLE_DRIVE
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::IhfEnabledL
-// ----------------------------------------------------------------------------
-
-TBool CSysApAppUi::IhfEnabledL()
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::IhfEnabledL(): iSysApAudioRoutingObserver=0x%x"), iSysApAudioRoutingObserver ) );
-
- if ( !iSysApAudioRoutingObserver ) // create observer if needed
- {
- iSysApAudioRoutingObserver = CSysApAudioRoutingObserver::NewL( *this );
- }
-
- return iSysApAudioRoutingObserver->IhfEnabled();
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::IsDeviceModeKey
-// ----------------------------------------------------------------------------
-
-TBool CSysApAppUi::IsDeviceModeKey( const TKeyEvent& aKeyEvent ) const
- {
- return CSysApDefaultKeyHandler::IsDeviceModeKey( aKeyEvent );
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::ResourcesFreed
-// ----------------------------------------------------------------------------
-
-TBool CSysApAppUi::ResourcesFreed() const
- {
- return iResourcesFreed;
- }
-
-/*
-----------------------------------------------------------------------------
-CSysApAppUi::IsEncryptionOperationOngoingL()
-Introduced the code as a part of Sub : 405-3362 - Power Management SUB for ES
-recapture functionalities in platform which support multidrive as well.
--------------------------------------------------------------------------------
-*/
-TBool CSysApAppUi::IsEncryptionOperationOngoingL() const
- {
- TBool deFeatureSupported(EFalse);
- FeatureManager::InitializeLibL();
- deFeatureSupported = FeatureManager::FeatureSupported( KFeatureIdFfDeviceEncryptionFeature);
- FeatureManager::UnInitializeLib();
-
- if(deFeatureSupported)
- {
- /**
- * Store the last memory status changed
- * 0: Idle. It can be Encrypted or Decrypted
- * 1: Encrypting
- * 2: Decrypting
- **/
-
- RProperty deProperty;
- User::LeaveIfError(deProperty.Attach(KDevEncProtectedUid, KDevEncOperationKey,EOwnerThread));
- TInt deValue = 0;
- if((deProperty.Get(deValue)== KErrNone)&&( deValue == EOpEncrypting || deValue == EOpDecrypting))
- {
- deProperty.Close();
- return ETrue;
- }
- else
- {
- deProperty.Close();
- return EFalse;
- }
- }
- else
- {
- return EFalse;
- }
- }
-// ----------------------------------------------------------------------------
-// CSysApAppUi::EtelConnector
-// ----------------------------------------------------------------------------
-
-CSysApEtelConnector* CSysApAppUi::EtelConnector() const
- {
- return iSysApEtelConnector;
- }
-
-#ifndef RD_MULTIPLE_DRIVE
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::EjectUsed
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::EjectUsed( TInt /*aDrive*/ )
- {
- }
-
-#else // RD_MULTIPLE_DRIVE
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::ShowEjectWaitNoteL
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::ShowEjectWaitNoteL( TInt aDriveToEject )
- {
- if ( iSysApWaitNote )
- {
- return;
- }
- HBufC* text = iSysApDriveList->GetFormattedDriveNameLC(
- aDriveToEject,
- 0, // Not used
- R_QTN_EJECTING_MEMORY_NAME_WAIT );
- iSysApWaitNote = CSysApWaitNote::NewL(
- iSysApFeatureManager->CoverDisplaySupported() );
- iSysApWaitNote->ShowNoteL( EClosingApplicationsNote, text );
- CleanupStack::PopAndDestroy( text );
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::IsEjectQueryVisible
-// ----------------------------------------------------------------------------
-
-TBool CSysApAppUi::IsEjectQueryVisible()
- {
- if ( !iSysApConfirmationQuery )
- {
- return EFalse;
- }
- TInt queryId( iSysApConfirmationQuery->CurrentQuery() );
- return ( queryId == ESysApEjectMmcQuery || queryId == ESysApRemoveMmcNote );
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::UpdateInsertedMemoryCardsL
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::UpdateInsertedMemoryCardsL()
- {
- // Update inserted memory cards
- iSysApDriveList->GetMemoryCardsL(
- iInsertedMemoryCards, CSysApDriveList::EIncludeInserted );
-
- // Update memory card indicator status
- SetMemoryCardIndicatorL();
-
- // Handle unlock
- RunUnlockNotifierL();
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::EjectUsed
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::EjectUsed( TInt aDrive )
- {
- // Check drive inserted before starting eject confirm query
- TInt insertedIndex( CSysApDriveList::Find( iInsertedMemoryCards, aDrive ) );
-
- TRACES( RDebug::Print(
- _L( "CSysApAppUi::EjectUsed: drive: %d, index: %d" ),
- aDrive, insertedIndex ) );
-
- if ( insertedIndex == KErrNotFound )
- {
- return;
- }
-
- iMMCEjectUsed = ETrue;
- iDriveToEject = aDrive;
- iSysApDriveList->ResetDrivesToEject();
- TRAPD( err, EjectMMCL() );
- if ( err != KErrNone )
- {
- TRACES( RDebug::Print(
- _L( "CSysApAppUi::EjectUsed: err: %d" ), err ) );
- iMMCEjectUsed = EFalse;
- }
- }
-
-#endif // RD_MULTIPLE_DRIVE
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::EjectMMCCanceled
-// ----------------------------------------------------------------------------
-
-void CSysApAppUi::EjectMMCCanceled()
- {
- // Called from eject confirm query, reset eject status
-#ifdef RD_MULTIPLE_DRIVE
- iMMCEjectUsed = EFalse;
-#endif // RD_MULTIPLE_DRIVE
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::UsbChargerDetector
-// ----------------------------------------------------------------------------
-//
-TSysApUsbChargerDetector& CSysApAppUi::UsbChargerDetector()
- {
- return iSysApUsbChargerDetector;
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::HandleUsbCharger
-// ----------------------------------------------------------------------------
-//
-void CSysApAppUi::HandleUsbCharger( const TInt aValue )
- {
- if ( aValue == EChargingStatusCharging ||
- aValue == EChargingStatusChargingContinued ||
- aValue == EChargingStatusAlmostComplete )
- {
- iSysApUsbChargerDetector.SetChargingUsed( ETrue );
- if ( !iSysApUsbIndicatorController &&
- iSysApFeatureManager->Supported( KSysApFeatureIdChargerReminderNotes ) &&
- iSysApFeatureManager->Supported( KSysApFeatureIdUsbChargingWithoutReminderNotes ) )
- {
- // Start observing USB state for the reminder note
- TRAPD ( usbErr, iSysApUsbIndicatorController = CreateSysApUsbIndicatorL( *this ) );
- if ( usbErr )
- {
- TRACES( RDebug::Print(
- _L("CSysApAppUi::HandleUsbCharger: error in constructing USB ind. controller %d" ),
- usbErr ) );
- }
- }
- }
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::SetEnvelopeIndicatorL
-// ----------------------------------------------------------------------------
-//
-void CSysApAppUi::SetEnvelopeIndicatorL()
- {
- TInt phoneStoreStatus( StateOfProperty( KUidPSSMSStackCategory, KUidPSSMSStackDiskSpaceMonitorKey ) );
- TInt inboxStatus( StateOfProperty( KUidSystemCategory, KUidInboxStatusValue ) );
- TBool simStoreFull( iSysApEtelConnector && iSysApEtelConnector->IsSimSmsStoreFull() );
-
- TRACES( RDebug::Print(
- _L("CSysApAppUi::SetEnvelopeIndicatorL() phoneStoreStatus %d, simStoreFull %d, inboxStatus %d"),
- phoneStoreStatus, simStoreFull, inboxStatus ) );
-
- if ( phoneStoreStatus == ESmsDiskSpaceFull || simStoreFull )
- {
- // Blink the Envelope indicator
- SetIndicatorStateL( EAknIndicatorEnvelope, EAknIndicatorStateAnimate );
- }
- else if ( inboxStatus == ESADocumentsInInbox )
- {
- // Show the Envelope indicator.
- SetIndicatorStateL( EAknIndicatorEnvelope, EAknIndicatorStateOn );
- }
- else
- {
- // Hide the Envelope indicator.
- SetIndicatorStateL( EAknIndicatorEnvelope, EAknIndicatorStateOff );
- }
- }
-
-// ----------------------------------------------------------------------------
-// CSysApAppUi::LogsObserverL
-// ----------------------------------------------------------------------------
-//
-CSysApCenRepLogsObserver& CSysApAppUi::LogsObserverL()
- {
- TRACES( RDebug::Print( _L("CSysApAppUi::LogsObserverL()") ) );
-
- // Create Logs observer when it is needed for the first time
- if ( !iSysApCenRepLogsObserver )
- {
- iSysApCenRepLogsObserver = CSysApCenRepLogsObserver::NewL( *this );
- }
-
- return *iSysApCenRepLogsObserver;
- }
-
// ----------------------------------------------------------------------------
// CSysApAppUi::NotifyPowerSaveModeL
// ----------------------------------------------------------------------------
@@ -6583,8 +1575,9 @@
TRACES( RDebug::Print( _L("CSysApAppUi::NotifyPowerSaveModeL aStatus: %d"), aStatus ) );
// cancel any active power saving query because user has changed the state manually
- CancelQuery( ESysApBattChargingPowerSavingQuery );
- CancelQuery( ESysApBattLowPowerSavingQuery );
+ // CancelQuery( ESysApBattChargingPowerSavingQuery );
+ // CancelQuery( ESysApBattLowPowerSavingQuery );
+ // will take care in next sub
switch ( aStatus )
{
@@ -6611,6 +1604,189 @@
}
}
+
+// ----------------------------------------------------------------------------
+// CSysApAppUi::ShowAlarmIndicatorL()
+// ----------------------------------------------------------------------------
+
+void CSysApAppUi::ShowAlarmIndicatorL( TBool aShowIndicator )
+ {
+ if ( aShowIndicator)
+ {
+ // do nothing
+ }
+ else
+ {
+ // do nothing
+ }
+ }
+
+
+// ----------------------------------------------------------------------------
+// CSysApAppUi::AlertUiAlertingL( const TBool aAlerting )
+// ----------------------------------------------------------------------------
+void CSysApAppUi::AlertUiAlertingL( const TBool aAlerting )
+ {
+ TRACES( RDebug::Print( _L("CSysApAppUi::AlertUiAlerting aAlerting:%d"), aAlerting ) );
+
+ if ( aAlerting )
+ {
+ TInt swState;
+ RProperty::Get( KPSUidStartup, KPSGlobalSystemState, swState );
+
+ if( swState == ESwStateCharging )
+ {
+ SetStarterState( RStarterSession::EAlarm );
+ }
+ }
+
+ iSysApLightsController->AlarmOccuredL( aAlerting );
+ }
+
+
+// ----------------------------------------------------------------------------
+// CSysApAppUi::HandleForcedLightsVTRequireL( const TInt aLightParameter )
+// ----------------------------------------------------------------------------
+
+void CSysApAppUi::HandleForcedLightsVTRequireL( const TInt aLightsParameter ) const
+ {
+ iSysApLightsController->HandleForcedLightsVTRequireL( aLightsParameter );
+ }
+
+
+// ----------------------------------------------------------------------------
+// CSysApAppUi::HandleForcedLightsSSRequireL( const TInt aLightParameter )
+// ----------------------------------------------------------------------------
+
+void CSysApAppUi::HandleForcedLightsSSRequireL( const TInt aLightsParameter ) const
+ {
+ iSysApLightsController->HandleForcedLightsSSRequireL( aLightsParameter );
+ }
+
+// ----------------------------------------------------------------------------
+// CSysApAppUi::HandleForcedLightsATCRequireL( const TInt aLightParameter )
+// ----------------------------------------------------------------------------
+void CSysApAppUi::HandleForcedLightsATCRequireL( const TInt aLightsParameter ) const
+ {
+ iSysApLightsController->HandleForcedLightsATCRequireL( aLightsParameter );
+ }
+
+
+// ----------------------------------------------------------------------------
+// CSysApAppUi::HandleLightsRequireL()
+// ----------------------------------------------------------------------------
+
+void CSysApAppUi::HandleLightsRequireL() const
+ {
+ iSysApLightsController->HandleLightsRequireL();
+ }
+
+
+// ----------------------------------------------------------------------------
+// CSysApAppUi::AlertUiKeyLockOff( const TBool aKeyLockOff )
+// ----------------------------------------------------------------------------
+
+void CSysApAppUi::AlertUiKeyLockOff( const TBool aKeyLockOff )
+ {
+ TRACES( RDebug::Print( _L("CSysApAppUi::AlertUiKeyLockOff aKeyLockOff:%d, devicelock:%d"),
+ aKeyLockOff, iDeviceLockEnabled ) );
+
+ if( aKeyLockOff )
+ {
+ // Notification to release keypad might come several times if e.g. calls are received
+ if ( !iKeyLockOnBeforeAlarm )
+ {
+ if ( iKeyLockEnabled || iKeyLockOnBeforeCradle || iKeyLockOnBeforeCall )
+ {
+ iKeyLockOnBeforeAlarm = ETrue;
+ }
+ }
+ iKeyguardController->DisableKeyguard(EFalse);
+ }
+ else
+ {
+ if (iDeviceLockEnabled)
+ {
+ // Re-enable keylock in devicelock case only if phone call is not ongoing or is
+ // connected. Otherwise e.g. messages can be read using softkeys during ongoing call.
+ TInt callState( StateOfProperty( KPSUidCtsyCallInformation, KCTsyCallState ) );
+ if ( callState == EPSCTsyCallStateNone || callState == EPSCTsyCallStateConnected )
+ {
+ iKeyguardController->EnableKeyguard(EFalse);
+ }
+ }
+ else if ( iKeyLockOnBeforeAlarm && !iKeyLockOnBeforeCradle && !iKeyLockOnBeforeCall )
+ {
+ iKeyguardController->EnableKeyguard(ETrue);
+ }
+ iKeyLockOnBeforeAlarm = EFalse;
+ }
+ }
+
+
+// ----------------------------------------------------------------------------
+// CSysApAppUi::DoNotEnableKeylock()
+// ----------------------------------------------------------------------------
+
+void CSysApAppUi::DoNotEnableKeylock()
+ {
+ if ( !iKeyLockOnBeforeCradle )
+ {
+ iShowkeypadActivatedNoteAfterSoftReject = iKeyLockOnBeforeCall;
+ }
+
+ iKeyLockOnBeforeCall = EFalse;
+ }
+
+
+// ----------------------------------------------------------------------------
+// CSysApAppUi::SwitchLightsOnSoftRejectL()
+// ----------------------------------------------------------------------------
+void CSysApAppUi::SwitchLightsOnSoftRejectL()
+ {
+ iSysApLightsController->SwitchLightsOnSoftRejectL();
+ }
+
+
+// ----------------------------------------------------------------------------
+// CSysApAppUi::SetDeviceLockEnabledL( const TBool aLockEnabled )
+// ----------------------------------------------------------------------------
+
+void CSysApAppUi::SetDeviceLockEnabledL( const TBool aLockEnabled )
+ {
+ TRACES( RDebug::Print(_L("CSysApAppUi::SetDeviceLockEnabledL aLockEnabled:%d" ), aLockEnabled ) );
+ TBool currentState( iDeviceLockEnabled );
+
+ iDeviceLockEnabled = aLockEnabled;
+
+ if ( currentState != iDeviceLockEnabled ) // filter out unnecessary light status modifications
+ {
+ iSysApLightsController->DeviceLockStateChangedL( iDeviceLockEnabled );
+ }
+
+ if( iDeviceLockEnabled )
+ {
+ if( iKeyLockEnabled )
+ {
+ iKeyguardController->DisableKeyguard(EFalse);
+ }
+ }
+ else
+ {
+ // let's not activate keylock in case device lock was disabled during call or in cradle
+ iKeyLockOnBeforeCall = EFalse;
+ iKeyLockOnBeforeCradle = EFalse;
+
+ // Memory card needs to be unlocked when device is unlocked
+ if ( iSysApFeatureManager->MmcHotSwapSupported() )
+ {
+ // RunUnlockNotifierL();
+ // Need to handle feature for unlocking the MMC card
+ }
+ }
+ }
+
+
// ----------------------------------------------------------------------------
// CSysApAppUi::HandleBatteryStatusL
// ----------------------------------------------------------------------------
@@ -6659,6 +1835,118 @@
}
// ----------------------------------------------------------------------------
+// CSysApAppUi::ShowUiNoteL( const TSysApNoteIds aNote ) const
+// ----------------------------------------------------------------------------
+
+void CSysApAppUi::ShowUiNoteL( const TSysApNoteIds aNote ) const
+ {
+ TRACES( RDebug::Print( _L("CSysApAppUi::ShowUiNoteL aNote: %d"), aNote ) );
+
+ TInt swState( StateOfProperty( KPSUidStartup, KPSGlobalSystemState ) );
+
+ if( UiReady() || swState == ESwStateSecurityCheck)
+ {
+ switch ( aNote )
+ {
+ case EBatteryLowNote:
+ {
+ _LIT(KPowerPressKey,"Battery low");
+ HBufC* aString = HBufC16::NewLC(100);
+ TPtrC aStringPointer = aString->Des();
+ aStringPointer.Set(KPowerPressKey);
+ TRACES( RDebug::Print( _L("CSysApWsClient::RunL(): Key EEventKeyUp 01") ) );
+ ShowExampleUiNoteL( aStringPointer );
+ CleanupStack::PopAndDestroy(); // aString
+ }
+ break;
+ case EBatteryFullNote:
+ {
+ _LIT(KPowerPressKey,"Battery full");
+ HBufC* aString = HBufC16::NewLC(100);
+ TPtrC aStringPointer = aString->Des();
+ aStringPointer.Set(KPowerPressKey);
+ TRACES( RDebug::Print( _L("CSysApWsClient::RunL(): Key EEventKeyUp 01") ) );
+ ShowExampleUiNoteL( aStringPointer );
+ CleanupStack::PopAndDestroy(); // aString
+ }
+ break;
+ case ERechargeBatteryNote:
+ {
+ iSysApLightsController->BatteryEmptyL( ETrue );
+ _LIT(KPowerPressKey,"Battery empty. Recharge");
+ HBufC* aString = HBufC16::NewLC(100);
+ TPtrC aStringPointer = aString->Des();
+ aStringPointer.Set(KPowerPressKey);
+ TRACES( RDebug::Print( _L("CSysApWsClient::RunL(): Key EEventKeyUp 01") ) );
+ ShowExampleUiNoteL( aStringPointer );
+ CleanupStack::PopAndDestroy(); // aString
+ }
+ break;
+ case ENotChargingNote:
+ {
+ _LIT(KPowerPressKey,"Not charging");
+ HBufC* aString = HBufC16::NewLC(100);
+ TPtrC aStringPointer = aString->Des();
+ aStringPointer.Set(KPowerPressKey);
+ TRACES( RDebug::Print( _L("CSysApWsClient::RunL(): Key EEventKeyUp 01") ) );
+ ShowExampleUiNoteL( aStringPointer );
+ CleanupStack::PopAndDestroy(); // aString
+ }
+ break;
+ case EBatteryFullUnplugChargerNote:
+ {
+ iSysApLightsController->BatteryEmptyL( ETrue );
+ _LIT(KPowerPressKey,"Charging complete. Unplug charger to save energy.");
+ HBufC* aString = HBufC16::NewLC(200);
+ TPtrC aStringPointer = aString->Des();
+ aStringPointer.Set(KPowerPressKey);
+ TRACES( RDebug::Print( _L("CSysApWsClient::RunL(): Key EEventKeyUp 01") ) );
+ ShowExampleUiNoteL( aStringPointer );
+ CleanupStack::PopAndDestroy(); // aString
+ }
+ break;
+ case EUnplugChargerNote:
+ {
+ _LIT(KPowerPressKey,"Unplug charger from power supply to save energy");
+ HBufC* aString = HBufC16::NewLC(250);
+ TPtrC aStringPointer = aString->Des();
+ aStringPointer.Set(KPowerPressKey);
+ TRACES( RDebug::Print( _L("CSysApWsClient::RunL(): Key EEventKeyUp 01") ) );
+ ShowExampleUiNoteL( aStringPointer );
+ CleanupStack::PopAndDestroy(); // aString
+ }
+ break;
+ default:
+ break;
+ }
+ }
+ }
+
+
+// ----------------------------------------------------------------------------
+// CSysApAppUi::BatteryEmptyL()
+// ----------------------------------------------------------------------------
+
+void CSysApAppUi::BatteryEmptyL()
+ {
+ iSysApLightsController->BatteryEmptyL( ETrue );
+ // Do not reactivate keyguard in the next startup
+ iSysApCenRepController->SetInt( KCRUidCoreApplicationUIsSysAp, KSysApKeyguardActive, 0 );
+ }
+
+
+// ----------------------------------------------------------------------------
+// CSysApAppUi::ShowQueryL()
+// ----------------------------------------------------------------------------
+
+void CSysApAppUi::ShowQueryL( const TSysApConfirmationQueryIds /* aQueryId */, const TDesC& /* aValue */)
+ {
+ // do nothing
+ }
+
+
+
+// ----------------------------------------------------------------------------
// CSysApAppUi::HandleChargingStatusL
// ----------------------------------------------------------------------------
//
@@ -6671,13 +1959,7 @@
UpdateBatteryBarsL( StateOfProperty( KPSUidHWRMPowerState, KHWRMBatteryLevel ) );
if ( iSysApPsmController && UiReady() )
- {
- if ( iCharging ) // iCharging updated in UpdateBatteryBarsL
- {
- // cancel activation query if charger is connected while query is on display
- CancelQuery( ESysApBattLowPowerSavingQuery );
- }
-
+ {
if ( iCharging && !iSysApPsmController->ChargerConnected() ) // first time after charger connection
{
iSysApPsmController->ConnectCharger( ETrue );
@@ -6696,9 +1978,6 @@
else if ( aValue == EChargingStatusNotConnected )
{
iSysApPsmController->ConnectCharger( EFalse );
-
- // cancel deactivation query if charger is disconnected while query is on display
- CancelQuery( ESysApBattChargingPowerSavingQuery );
}
}
if( showNote )
@@ -6707,58 +1986,693 @@
}
}
-// ----------------------------------------------------------------------------
-// CSysApAppUi::HandleActivatePsmQueryResponse
+
// ----------------------------------------------------------------------------
-//
-void CSysApAppUi::HandleActivatePsmQueryResponse( TBool aEnable )
+// CSysApAppUi::HandleChargerNotesL()
+// ----------------------------------------------------------------------------
+void CSysApAppUi::HandleChargerNotesL( const TInt aValue )
{
- TRACES( RDebug::Print( _L("CSysApAppUi::HandleActivatePsmQueryResponse aEnable: %d"),
- aEnable ) );
-
- __ASSERT_DEBUG( iSysApPsmController, User::Invariant() );
-
- if ( aEnable )
+ TBool showNote(StateOfProperty( KPSUidCtsyCallInformation, KCTsyCallState ) != EPSCTsyCallStateRinging);
+ if ( aValue == EChargingStatusCharging )
+ {
+ iSysApLightsController->BatteryEmptyL( EFalse );
+ TRACES( RDebug::Print( _L("SysAp: charger connected") ) );
+ iSysApLightsController->ChargerConnectedL( ETrue );
+ ShowChargingNoteL();
+ }
+ //Display Not Charging note
+ else if ( aValue == EChargingStatusError )
+ {
+ if(showNote)
+ {
+ ShowUiNoteL( ENotChargingNote );
+ }
+ }
+ else if ( aValue == EChargingStatusChargingComplete )
+ {
+ iSysApLightsController->ChargingCompleteL();
+
+ TSysApNoteIds note( EBatteryFullNote );
+
+ if ( !iSysApUsbChargerDetector.HostOnlyUsbChargingUsed() &&
+ iSysApFeatureManager->Supported( KSysApFeatureIdChargerReminderNotes ) )
+ {
+ note = EBatteryFullUnplugChargerNote;
+ }
+ iSysApUsbChargerDetector.Reset();
+ if(showNote)
+ {
+ ShowUiNoteL( note );
+ }
+ }
+ else if ( aValue == EChargingStatusNotConnected )
{
- iSysApPsmController->DoEnableFullPsm( ETrue );
+ TRACES( RDebug::Print( _L("SysAp: charger removed") ) );
+ iSysApLightsController->ChargerConnectedL( EFalse );
+
+ if ( !iSysApUsbChargerDetector.HostOnlyUsbChargingUsed() &&
+ iSysApFeatureManager->Supported( KSysApFeatureIdChargerReminderNotes ) )
+ {
+ if(showNote)
+ {
+ ShowUiNoteL( EUnplugChargerNote );
+ }
+ }
+ iSysApUsbChargerDetector.Reset();
+ }
+ else if ( aValue == EChargingStatusNotCharging )
+ {
+ TRACES( RDebug::Print( _L("SysAp: Not charging") ) );
+ }
+ else if ( aValue == EChargingStatusAlmostComplete )
+ {
+ TRACES( RDebug::Print( _L("SysAp: Charging almost complete") ) );
+ }
+ else if ( aValue == EChargingStatusChargingContinued )
+ {
+ //in this case we simply want to scroll the battery bars and not turn light on or show ui note
+ // set lights controller iBatteryEmpty to EFalse
+ iSysApLightsController->BatteryEmptyL( EFalse );
+ TRACES( RDebug::Print( _L("SysAp: charging continues") ) );
+ }
+ }
+
+
+// ----------------------------------------------------------------------------
+// CSysApAppUi::UpdateBatteryBarsL( const TInt aState )
+// ----------------------------------------------------------------------------
+
+void CSysApAppUi::UpdateBatteryBarsL( const TInt /* aState */)
+ {
+ TInt state( StateOfProperty( KPSUidHWRMPowerState, KHWRMChargingStatus ) );
+// TRACES( RDebug::Print( _L("CSysApAppUi::UpdateBatteryBarsL aState: %d, chargerState:%d"), aState, state ) );
+ HandleUsbCharger( state );
+ if( state == EChargingStatusCharging ||
+ state == EChargingStatusChargingContinued ||
+ state == EChargingStatusAlmostComplete )
+ {
+ if ( !iCharging )
+ {
+ TRACES( RDebug::Print( _L("CSysApAppUi::UpdateBatteryBarsL: Starting Charging") ) );
+ iCharging = ETrue;
+ }
}
else
{
- iSysApPsmController->DoEnablePartialPsm( ETrue );
- }
+ if ( iCharging )
+ {
+ TRACES( RDebug::Print( _L("CSysApAppUi::UpdateBatteryBarsL: Stopping Charging") ) );
+ iCharging = EFalse;
+ }
+ }
+
+ if ( !iSysApPsmController ) // created here if first state change has not occurred yet
+ {
+ iSysApPsmController = CSysApPsmController::NewL( *this );
+ }
+
+ if ( iSysApPsmController )
+ {
+ if ( iSysApPsmController->FullPsmEnabled() )
+ {
+ // activate psm indicator
+ }
+ else
+ {
+ // deactivate psm indicator
+ }
+ }
+
+ if ( iSysApBatteryInfoController )
+ {
+ iSysApBatteryInfoController->BatteryLevelUpdatedL();
+ }
+ }
+
+
+
+// ----------------------------------------------------------------------------
+// CSysApAppUi::ShowChargingNoteL()
+// ----------------------------------------------------------------------------
+
+void CSysApAppUi::ShowChargingNoteL()
+ {
+ TRACES( RDebug::Print( _L("CSysApAppUi::ShowChargingNoteL") ) );
+ TBool showNote( ETrue );
+
+ TInt swState( StateOfProperty( KPSUidStartup, KPSGlobalSystemState ) );
+ TRACES( RDebug::Print( _L("CSysApAppUi::ShowChargingNoteL: swState: %d"), swState ) );
+
+ if( UiReady() || swState == ESwStateSecurityCheck )
+ {
+ if ( StateOfProperty( KPSUidCtsyCallInformation, KCTsyCallState ) == EPSCTsyCallStateRinging )
+ {
+ showNote = EFalse;
+ }
+ 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
+ {
+ _LIT(KChargingNote,"Charging");
+ HBufC* aString = HBufC16::NewLC(50);
+ TPtrC aStringPointer = aString->Des();
+ aStringPointer.Set(KChargingNote);
+ TRACES( RDebug::Print( _L("CSysApWsClient::RunL(): Key EEventKeyUp 01") ) );
+ ShowExampleUiNoteL( aStringPointer );
+ CleanupStack::PopAndDestroy(); // aString
+ }
+ }
+ }
+
+
+// ----------------------------------------------------------------------------
+// CSysApAppUi::HandleUsbCharger
+// ----------------------------------------------------------------------------
+//
+void CSysApAppUi::HandleUsbCharger( const TInt aValue )
+ {
+ if ( aValue == EChargingStatusCharging ||
+ aValue == EChargingStatusChargingContinued ||
+ aValue == EChargingStatusAlmostComplete )
+ {
+ iSysApUsbChargerDetector.SetChargingUsed( ETrue );
+ if ( !iSysApUsbIndicatorController &&
+ iSysApFeatureManager->Supported( KSysApFeatureIdChargerReminderNotes ) &&
+ iSysApFeatureManager->Supported( KSysApFeatureIdUsbChargingWithoutReminderNotes ) )
+ {
+ // Start observing USB state for the reminder note
+ TRAPD ( usbErr, iSysApUsbIndicatorController = CreateSysApUsbIndicatorL( *this ) );
+ if ( usbErr )
+ {
+ TRACES( RDebug::Print(
+ _L("CSysApAppUi::HandleUsbCharger: error in constructing USB ind. controller %d" ),
+ usbErr ) );
+ }
+ }
+ }
}
// ----------------------------------------------------------------------------
-// CSysApAppUi::HandleDeactivatePsmQueryResponse
+// CSysApAppUi::HandleCurrentCallStateChangeL()
// ----------------------------------------------------------------------------
-//
-void CSysApAppUi::HandleDeactivatePsmQueryResponse( TBool aDisable )
+
+void CSysApAppUi::HandleCurrentCallStateChangeL( TInt aCurrentCallState )
{
- TRACES( RDebug::Print( _L("CSysApAppUi::HandleDeactivatePsmQueryResponse aDisable: %d"),
- aDisable ) );
+ TRACES( RDebug::Print( _L("CSysApAppUi::HandleCurrentCallStateChangeL: KUidCurrentCall: %d" ), aCurrentCallState ) );
+
+ switch ( aCurrentCallState )
+ {
+ case EPSCTsyCallStateRinging:
+ {
+ iSysApLightsController->CallComingInL( ETrue );
+ // Disable keylock when a call is coming in
+ if ( iKeyLockEnabled || iDeviceLockEnabled || iKeyLockOnBeforeCradle || iKeyLockOnBeforeAlarm )
+ {
+ TRACES( RDebug::Print( _L("CSysApAppUi::HandleCurrentCallStateChangeL: EPSCTsyCallStateRinging: disable keylock") ) );
+ iKeyLockOnBeforeCall = ETrue;
+
+ if ( iKeyLockEnabled || iDeviceLockEnabled )
+ {
+ if ( !iSysApFeatureManager->TouchUnlockStrokeSupported() )
+ {
+ iKeyguardController->DisableKeyguard(EFalse);
+ }
+ }
+ }
+ break;
+ }
+
+ case EPSCTsyCallStateDialling:
+ {
+ // Disable keypad lock during an emergency call
+ // no need to disable the key lock when a call is made using the wireless car-kit
+ // but if the call is an emergency one then we will disable the keypad lock
+ if ( iKeyLockEnabled || iDeviceLockEnabled || iKeyLockOnBeforeCradle )
+ {
+ TRACES( RDebug::Print( _L("CSysApAppUi::HandleCurrentCallStateChangeL: EPSCTsyCallStateDialling: disable keylock") ) );
+ iKeyLockOnBeforeCall = ETrue;
+
+ if ( IsEmergencyCall() && (iKeyLockEnabled || iDeviceLockEnabled ))
+ {
+ iKeyguardController->DisableKeyguard(EFalse);
+ }
+ }
+
+ // Enable signal & network indicators when an emergency call is made in Offline Mode
+ if( iSysApOfflineModeController->OfflineModeActive() )
+ {
+ // Signal indicators not updated with VoIP call
+ if ( StateOfProperty(KPSUidCtsyCallInformation, KCTsyCallType) != EPSCTsyCallTypeVoIP)
+ {
+ iEmergencyCallActive = ETrue;
+ // not supporting this
+ // UpdateSignalBarsL();
+ // SetSignalIndicatorL();
+ }
+ }
+ break;
+ }
+
+ case EPSCTsyCallStateConnected:
+ {
+ if (StateOfProperty(KPSUidCtsyCallInformation, KCTsyCallType) == EPSCTsyCallTypeCSVoice)
+ {
+ // Check if GPRS suspended note is required
+ iCallActivated = ETrue;
+ // not supporting this
+ // HandleGprsNotesL();
+ }
+ if ( iDeviceLockEnabled )
+ {
+ // Enable keylock via autolock emulation if device lock enabled.
+ // Otherwise e.g. messages can be read using softkeys during ongoing call.
+ iKeyguardController->EnableKeyguard(EFalse);
+ }
+ break;
+ }
+
+ case EPSCTsyCallStateNone:
+ {
+ // Reset timers in ScreenSaver and Autolock
+ User::ResetInactivityTime();
- __ASSERT_DEBUG( iSysApPsmController, User::Invariant() );
-
- if ( aDisable )
+ if ( iEmergencyCallActive )
+ {
+ iEmergencyCallActive = EFalse;
+ // not supporting this
+ // UpdateSignalBarsL( 0 );
+ // SetSignalIndicatorL();
+ }
+ if ( iKeyLockOnBeforeCall )
+ {
+ TRACES( RDebug::Print( _L("CSysApAppUi::HandleCurrentCallStateChangeL: EPSCTsyCallStateNone: enable keylock") ) );
+ iKeyLockOnBeforeCall = EFalse;
+ if ( !iDeviceLockEnabled )
+ {
+ if ( !iKeyLockOnBeforeCradle && !iKeyLockOnBeforeAlarm &&
+ !iSysApFeatureManager->TouchUnlockStrokeSupported() )
+ {
+ if ( iSysApCenRepController->GetInt( KCRUidCommonTelephonySettings, KSettingsSummaryAfterCall ) == 1 )
+ {
+ // Let's not hide "Summary After Call" dialog
+ iKeyguardController->EnableKeyguard(EFalse);
+ }
+ else
+ {
+ iKeyguardController->EnableKeyguard(ETrue);
+ }
+ }
+ }
+ else
+ {
+ iKeyguardController->EnableKeyguard(EFalse);
+ }
+ }
+ if ( iShowkeypadActivatedNoteAfterSoftReject )
+ {
+ ShowUiNoteL( EKeypadActiveNote );
+ iShowkeypadActivatedNoteAfterSoftReject = EFalse;
+ }
+ iCallActivated = EFalse;
+ break;
+ }
+
+ default:
+ break;
+ }
+
+ if ( aCurrentCallState != EPSCTsyCallStateRinging )
{
- iSysApPsmController->DoEnableFullPsm( EFalse );
+ iSysApLightsController->CallComingInL( EFalse );
+ }
+
+ SetIhfIndicatorL();
+ SetHacIndicatorL();
+ }
+
+
+
+/**
+ * To check the for an emergency call.
+ *
+ * @return ETrue if there is an emergency call active otherwise, EFalse.
+ */
+TBool CSysApAppUi::IsEmergencyCall()
+ {
+ TBool retVal( EFalse );
+ TInt err( KErrNone );
+ TInt state( 0 );
+
+ err = RProperty::Get(KPSUidCtsyEmergencyCallInfo, KCTSYEmergencyCallInfo, state );
+ if ( err == KErrNone && state )
+ {
+ retVal = ETrue;
+ }
+ return retVal;
+ }
+
+
+
+// ----------------------------------------------------------------------------
+// CSysApAppUi::IsStateNormal()
+//
+// ----------------------------------------------------------------------------
+TBool CSysApAppUi::IsStateNormal() const
+ {
+ TInt state;
+ TInt errorCode =
+ RProperty::Get( KPSUidStartup, KPSGlobalSystemState, state );
+ if ( errorCode == KErrNone )
+ {
+ return state == ESwStateNormalRfOn ||
+ state == ESwStateNormalRfOff ||
+ state == ESwStateNormalBTSap;
+ }
+ else
+ {
+ TRACES( RDebug::Print( _L( "CSysApAppUi::IsStateNormal: Failed to read global system state, error code %d." ), errorCode ) );
+ return EFalse;
}
}
-
+
+
// ----------------------------------------------------------------------------
-// CSysApAppUi::CancelQuery
+// CSysApAppUi::HandleAccessoryProfileInStartupL()
// ----------------------------------------------------------------------------
-//
-void CSysApAppUi::CancelQuery( TSysApConfirmationQueryIds aQueryId )
+
+void CSysApAppUi::HandleAccessoryProfileInStartupL()
{
- TRACES( RDebug::Print( _L("CSysApAppUi::CancelQuery aQueryId: %d"), aQueryId ) );
+ TRACES( RDebug::Print( _L( "CSysApAppUi::HandleAccessoryProfileInStartupL" ) ) );
- if ( iSysApConfirmationQuery )
+ if ( !iSysApOfflineModeController->OfflineModeActive() )
{
- if ( aQueryId == iSysApConfirmationQuery->CurrentQuery() || aQueryId == ESysApNoQuery )
+ iIgnoreAccessorySpecificProfileChanges = EFalse;
+ TBool accessoryConnectedInShutdown( EFalse );
+ TInt accessoryTemp( iSysApCenRepController->GetInt( KCRUidCoreApplicationUIsSysAp, KSysApAccessoryConnected ) );
+ if ( accessoryTemp == 1 )
+ {
+ accessoryConnectedInShutdown = ETrue;
+ }
+
+ TBool accessoryConnectedNow ( EFalse );
+
+ TAccMode accessoryState(EAccModeHandPortable);
+ if ( iSysApAccessoryObserver )
+ {
+ accessoryState = iSysApAccessoryObserver->GetAccessoryMode();
+ }
+
+ if ( accessoryState != EAccModeHandPortable )
{
- iSysApConfirmationQuery->Cancel();
+ accessoryConnectedNow = ETrue;
+ }
+ TRACES( RDebug::Print( _L( "CSysApAppUi::HandleAccessoryProfileInStartupL: accessoryConnectedInShutdown: %d, accessoryConnectedNow: %d" ),
+ accessoryConnectedInShutdown, accessoryConnectedNow ) );
+
+ if ( accessoryConnectedInShutdown && !accessoryConnectedNow )
+ {
+ HandleAccessoryDisconnectedL();
+ }
+ else if ( !accessoryConnectedInShutdown && accessoryConnectedNow )
+ {
+ HandleAccessoryConnectedL( accessoryState );
+ }
+ else if ( !accessoryConnectedNow )
+ {
+ // not supporting this
+ // TInt activeProfile ( ActiveProfileId() );
+ // SysApCenRepController->SetInt( KCRUidCoreApplicationUIsSysAp, KSysApActiveProfileBeforeAccessoryConnected, activeProfile );
}
}
}
-// End of File
+
+
+// ----------------------------------------------------------------------------
+// CSysApAppUi::CenRepController()
+// ----------------------------------------------------------------------------
+
+CSysApCenRepController& CSysApAppUi::CenRepController()
+ {
+ __ASSERT_ALWAYS( iSysApCenRepController, User::Panic( _L("CSysApAppUi::CenRepController"), KErrBadHandle ) );
+
+ return *iSysApCenRepController;
+ }
+
+
+// ----------------------------------------------------------------------------
+// CSysApAppUi::LogsObserverL
+// ----------------------------------------------------------------------------
+//
+CSysApCenRepLogsObserver& CSysApAppUi::LogsObserverL()
+ {
+ TRACES( RDebug::Print( _L("CSysApAppUi::LogsObserverL()") ) );
+
+ // Create Logs observer when it is needed for the first time
+ if ( !iSysApCenRepLogsObserver )
+ {
+ iSysApCenRepLogsObserver = CSysApCenRepLogsObserver::NewL( *this );
+ }
+
+ return *iSysApCenRepLogsObserver;
+ }
+
+
+// ----------------------------------------------------------------------------
+// CSysApAppUi::HandleWlanIndicator()
+// ----------------------------------------------------------------------------
+void CSysApAppUi::HandleWlanIndicatorL( TInt aValue )
+ {
+ if ( aValue == EPSWlanIndicatorAvailable )
+ {
+ // do nothing
+ }
+ else if ( aValue == EPSWlanIndicatorActive )
+ {
+ // do nothing
+ }
+ else if ( aValue == EPSWlanIndicatorActiveSecure )
+ {
+ // do nothing
+ }
+ else // No indication required
+ {
+ // do nothing
+ }
+ }
+
+void CSysApAppUi::ShowNotificationDialog(const TDesC& noteText)const
+{
+ //Todo:4.Notification--Just Popup message
+ //Todo: #include <HbDeviceNotificationDialogSymbian.h>
+ CHbDeviceNotificationDialogSymbian *notificationDialog = CHbDeviceNotificationDialogSymbian::NewL();
+ CleanupStack::PushL(notificationDialog);
+ notificationDialog->SetTextL(noteText);//noteText with Qm file input
+ notificationDialog->SetTimeout(100);
+ notificationDialog->ShowL();
+ CleanupStack::PopAndDestroy(notificationDialog);
+}
+
+void CSysApAppUi::SetKeyLockEnabledL()
+ {
+ iKeyLockEnabled = ETrue;
+ iSysApCenRepController->SetInt( KCRUidCoreApplicationUIsSysAp, KSysApKeyguardActive, 1 );
+ // not supporting indicator
+// SetIndicatorStateL( EAknIndicatorKeyguard, EAknIndicatorStateOn );
+ iSysApLightsController->KeylockStateChangedL( ETrue );
+ }
+
+void CSysApAppUi::SetKeyLockDisabledL()
+ {
+ iKeyLockEnabled = EFalse;
+ iSysApCenRepController->SetInt( KCRUidCoreApplicationUIsSysAp, KSysApKeyguardActive, 0 );
+ // SetIndicatorStateL( EAknIndicatorKeyguard, EAknIndicatorStateOff );
+ if (! iDeviceLockEnabled )
+ {
+ iSysApLightsController->KeylockStateChangedL( EFalse );
+ if ( iSysApFeatureManager->MmcHotSwapSupported() )
+ {
+ if ( StateOfProperty( KPSUidCtsyCallInformation, KCTsyCallState ) != EPSCTsyCallStateRinging && StateOfProperty( KPSUidCtsyCallInformation, KCTsyCallState ) != EPSCTsyCallStateAlerting )
+ {
+ // RunUnlockNotifierL();
+ // need to handle MMC unlock query in next sub
+ }
+ }
+ }
+ }
+
+void CSysApAppUi::SetLightsOnUnlockNoteL()
+ {
+ iSysApLightsController->SetLightsOnUnlockNoteL();
+ }
+
+void CSysApAppUi::SetLightsOnEcsQueryL()
+ {
+ iSysApLightsController->SetLightsOnEcsQueryL();
+ }
+
+void CSysApAppUi::SetLightsOnSecurityQueryL()
+ {
+ iSysApLightsController->SetLightsOnSecurityQueryL();
+ }
+
+TBool CSysApAppUi::CheckLongPowerKeyPressed()
+ {
+ return iCheckLongPowerKeyEvent;
+ }
+
+
+// ----------------------------------------------------------------------------
+// CSysApAppUi::HandleKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType )
+// ----------------------------------------------------------------------------
+
+TKeyResponse CSysApAppUi::HandleKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType )
+ {
+ if ( ! iShutdownStarted )
+ {
+ TRACES( RDebug::Print( _L("CSysApAppUi::HandleKeyEventL: aKeyEvent.iCode:%d, aKeyEvent.iScanCode:%d, aType:%d, iIgnoreNextPowerKeyUpEvent:%d, iPowerKeyPopupMenuActive:%d, iLastPowerKeyWasShort:%d, iPowerKeyPopupMenuDismissed:%d"),
+ aKeyEvent.iCode, aKeyEvent.iScanCode, aType, iIgnoreNextPowerKeyUpEvent, iPowerKeyPopupMenuActive, iLastPowerKeyWasShort, iPowerKeyPopupMenuDismissed ) );
+
+#ifdef _DEBUG
+ // camery latency measurement environment instrumentation, don't remove
+ if ( aType == EEventKey && aKeyEvent.iCode == EKeyCamera )
+ {
+ TRACES( RDebug::Print( _L("e_KEY_EVENT_SENDING 0") ) );
+ }
+#endif // _DEBUG
+
+ TKeyResponse response( EKeyWasNotConsumed );
+ if (iSysApKeyManagement && aKeyEvent.iCode != EKeyPowerOff && aKeyEvent.iCode != 'E')
+ {
+ response = iSysApKeyManagement->HandleKeyEventL(aKeyEvent, aType );
+ }
+
+ if( aType == EEventKey )
+ {
+ switch ( aKeyEvent.iCode )
+ {
+#ifdef _DEBUG
+ case 'E': //For testing
+ Exit();
+ break;
+#endif
+ case EKeyPowerOff:
+ //Short power key press
+ iKeyBoardRepeatCount++;
+ if( aKeyEvent.iRepeats == 0 )
+ {
+ TRACES( RDebug::Print(_L("CSysApAppUi::HandleKeyEventL, Short powerkey") ) );
+ iLastPowerKeyWasShort = ETrue;
+ TRACES( RDebug::Print( _L("CSysApAppUi::Key was consumed by pressing short power") ) );
+ //Powermenu
+ if (iPowerMenuDialog != NULL)
+ {
+ //PowerMenu already exist
+ delete iPowerMenuDialog;
+ iPowerMenuDialog = NULL;
+ }
+
+ iPowerMenuDialog = CHbDevicePowerMenuSymbian::NewL(*this);
+ iPowerMenuDialog->ShowL();
+ iIgnoreNextPowerKeyRepeats = EFalse;
+ }
+ //Long power key press
+ else if( aKeyEvent.iRepeats > 0 && iKeyBoardRepeatCount >= iSysApCenRepController->GetInt( KCRUidCoreApplicationUIsSysAp, KSysApPowerkeyRepeatcount ))
+ {
+ iKeyBoardRepeatCount = -1;
+ TRACES( RDebug::Print(_L("CSysApAppUi::HandleKeyEventL, Long powerkey") ) );
+ iLastPowerKeyWasShort = EFalse;
+ HandleLongPowerKeyPressedL();
+ }
+ break;
+
+ default:
+ {
+ TKeyResponse response = EKeyWasNotConsumed;
+ if (iSysApKeyManagement)
+ {
+ response = iSysApKeyManagement->HandleKeyEventL(aKeyEvent, aType );
+ }
+
+ if ( response == EKeyWasNotConsumed ) // none of the plugins consumed the key, offer it to default handling
+ {
+ iSysApDefaultKeyHandler->HandleKeyEventL( aKeyEvent, aType );
+ }
+ }
+ break;
+ }
+ }
+ else if( aType == EEventKeyUp )
+ {
+ if( aKeyEvent.iScanCode == EStdKeyDevice2 )
+ {
+ if ( iIgnoreNextPowerKeyUpEvent )
+ {
+ if ( !iPowerKeyPopupMenuDismissed ) // If the popup menu has been dismissed, do nothing
+ {
+ iPowerKeyPopupMenuActive = ETrue;
+ iIgnoreNextPowerKeyUpEvent = EFalse;
+ }
+ }
+ else if( iLastPowerKeyWasShort )
+ {
+ if ( iPowerKeyPopupMenuActive )
+ {
+ }
+ }
+
+ }
+ }
+
+ TRACES( RDebug::Print( _L("CSysApAppUi::HandleKeyEventL:ended, aKeyEvent.iCode:%d, aKeyEvent.iScanCode:%d, aType:%d, iIgnoreNextPowerKeyUpEvent:%d, iPowerKeyPopupMenuActive:%d, iLastPowerKeyWasShort:%d, iPowerKeyPopupMenuDismissed:%d"),
+ aKeyEvent.iCode, aKeyEvent.iScanCode, aType, iIgnoreNextPowerKeyUpEvent, iPowerKeyPopupMenuActive, iLastPowerKeyWasShort, iPowerKeyPopupMenuDismissed ) );
+ }
+ else // shutdown started
+ {
+ TRACES( RDebug::Print( _L("CSysApAppUi::HandleKeyEventL: aKeyEvent.iCode:%d, aKeyEvent.iScanCode:%d, aType:%d"),
+ aKeyEvent.iCode, aKeyEvent.iScanCode, aType ) );
+
+ // When shutdown has been started, only device mode key events are passed to plug-in framework
+ // This for enabling plug-in activities during shutdown animation
+ if ( IsDeviceModeKey( aKeyEvent ) ) // Other key events are not passed, because they must cancel the shutdown animation as stated in UI spefication
+ {
+ if ( aType == EEventKey && iSysApKeyManagement )
+ {
+ iSysApKeyManagement->HandleKeyEventL( aKeyEvent, aType );
+ }
+ }
+ TRACES( RDebug::Print( _L("CSysApAppUi::HandleKeyEventL: ended") ) );
+ }
+ return EKeyWasConsumed;
+ }
+
+
+// ----------------------------------------------------------------------------
+// CSysApAppUi::HandleCommandL( TInt aCommand)
+// ----------------------------------------------------------------------------
+
+void CSysApAppUi::HandleCommandL( TInt aCommand )
+ {
+ TRACES( RDebug::Print( _L("CSysApAppUi::HandleCommandL aCommend: %d"), aCommand ) );
+ switch ( aCommand )
+ {
+ case EEikCmdExit: // EAknCmdExit
+ Exit();
+ break;
+ default:
+ break;
+ }
+ }
+
+TBool CSysApAppUi::ReleasePowerMenuCustomDialogMemory()
+ {
+ if (iPowerMenuDialog!=NULL)
+ {
+ //PowerMenu already exist
+ delete iPowerMenuDialog;
+ iPowerMenuDialog = NULL;
+ return ETrue;
+ }
+ return EFalse;
+ }
+
+
+//end of file