coreapplicationuis/SysAp/Src/OfflineModeController/SysApOfflineModeControllerImpl.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/coreapplicationuis/SysAp/Src/OfflineModeController/SysApOfflineModeControllerImpl.cpp Tue Feb 02 10:12:00 2010 +0200
@@ -0,0 +1,259 @@
+/*
+* Copyright (c) 2005-2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: CSysApOfflineModeController implementation
+ *
+*/
+
+
+// INCLUDES
+
+#include "SysApOfflineModeControllerImpl.h"
+#include "SysApAppUi.h"
+#include "SysAp.hrh"
+#include "DosSvrServices.h"
+#include "SysApCenRepController.h"
+#include <startupdomainpskeys.h>
+#include <PSVariables.h>
+
+
+MSysApOfflineModeController* CreateSysApOfflineModeControllerL( CSysApAppUi& aSysApAppUi )
+ {
+ return CSysApOfflineModeController::NewL( aSysApAppUi );
+ }
+
+// ============================ MEMBER FUNCTIONS ==============================
+
+// ----------------------------------------------------------------------------
+// CSysApOfflineModeController::NewL()
+// ----------------------------------------------------------------------------
+CSysApOfflineModeController* CSysApOfflineModeController::NewL( CSysApAppUi& aSysApAppUi )
+ {
+ TRACES( RDebug::Print( _L("CSysApOfflineModeController::NewL") ) );
+ CSysApOfflineModeController* self = new(ELeave) CSysApOfflineModeController( aSysApAppUi );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop(); // self
+ return self;
+ }
+
+// ----------------------------------------------------------------------------
+// CSysApOfflineModeController::ConstructL()
+// ----------------------------------------------------------------------------
+void CSysApOfflineModeController::ConstructL()
+ {
+ TRACES( RDebug::Print( _L("CSysApOfflineModeController::ConstructL") ) );
+ // Check the active profile
+ TInt activeProfile( iSysApAppUi.ActiveProfileId() );
+ activeProfile = iSysApAppUi.ActiveProfileId();
+ if ( activeProfile == KOfflineModeProfileId )
+ {
+ iOfflineModeActive = ETrue;
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CSysApOfflineModeController::CSysApOfflineModeController()
+// ----------------------------------------------------------------------------
+CSysApOfflineModeController::CSysApOfflineModeController( CSysApAppUi& aSysApAppUi ) :
+ iSysApAppUi( aSysApAppUi ),
+ iOfflineModeActive( EFalse ),
+ iDoNotActivateRF( EFalse )
+ {
+
+ }
+
+// ----------------------------------------------------------------------------
+// CSysApOfflineModeController::~CSysApOfflineModeController()
+// ----------------------------------------------------------------------------
+
+CSysApOfflineModeController::~CSysApOfflineModeController()
+ {
+ }
+
+// ----------------------------------------------------------------------------
+// CSysApOfflineModeController::OfflineModeActive()
+// ----------------------------------------------------------------------------
+
+TBool CSysApOfflineModeController::OfflineModeActive()
+ {
+ return iOfflineModeActive;
+ }
+
+// ----------------------------------------------------------------------------
+// CSysApOfflineModeController::SwitchFromOnlineToOfflineModeL()
+// ----------------------------------------------------------------------------
+
+void CSysApOfflineModeController::SwitchFromOnlineToOfflineModeL()
+ {
+ TRACES( RDebug::Print( _L("CSysApOfflineModeController::SwitchFromOnlineToOfflineModeL") ) );
+ TInt err ( 0 );
+
+ // Set state to starter. Note that if state is same as the current state, then nothing happens.
+ err = iSysApAppUi.SetStarterState(RStarterSession::EOffline);
+
+ if ( err )
+ {
+ iSysApAppUi.RestoreProfileL( EFalse );
+ iSysApAppUi.ShowUiNoteL( ECannotActivateOfflineModeNote );
+ }
+ else
+ {
+ iOfflineModeActive = ETrue;
+ iSysApAppUi.SetNetworkConnectionAllowed( ECoreAppUIsNetworkConnectionNotAllowed );
+
+ // Switch BT off
+ if ( iSysApAppUi.BluetoothPowerMode() == KBluetoothModulePowerModeOn )
+ {
+ err = iSysApAppUi.SetBtPowerState( EFalse ); // Switch BT off
+ SetBtActiveBeforeOfflineMode( ETrue ); // Update "BT active" setting
+ TRACES( RDebug::Print( _L("CSysApOfflineModeController SetBtPowerStateL returned %d"), err ) );
+ }
+
+ iSysApAppUi.OfflineModeChangedL();
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CSysApOfflineModeController::SwitchFromOfflineToOnlineModeL()
+// ----------------------------------------------------------------------------
+
+void CSysApOfflineModeController::SwitchFromOfflineToOnlineModeL()
+ {
+ TRACES( RDebug::Print( _L("CSysApOfflineModeController::SwitchFromOfflineToOnlineModeL") ) );
+
+ TInt err ( 0 );
+
+ // Set state to starter. Note that if state is same as the current state, then nothing happens.
+ // In some cases (like BtSap) it might be necessary to delay setting starter state to normal.
+ // In these cases state is set to normal by some other handler later when appropriate.
+ if ( !iDoNotActivateRF )
+ {
+ err = iSysApAppUi.SetStarterState(RStarterSession::ENormal);
+ }
+
+ if ( err )
+ {
+ iSysApAppUi.RestoreProfileL( ETrue );
+ iSysApAppUi.ShowUiNoteL( ECannotDeactivateOfflineModeNote );
+ }
+ else
+ {
+ iOfflineModeActive = EFalse;
+
+ // Switch BT on
+ if ( BtActiveBeforeOfflineMode() && iSysApAppUi.BluetoothPowerMode() != KBluetoothModulePowerModeOn )
+ {
+ err = iSysApAppUi.SetBtPowerState( ETrue ); // Switch BT on
+ SetBtActiveBeforeOfflineMode( EFalse ); // Update "BT active" setting
+ TRACES( RDebug::Print( _L("CSysApOfflineModeController SetBtPowerStateL returned %d"), err ) );
+ }
+
+ iSysApAppUi.OfflineModeChangedL();
+
+ iSysApAppUi.SetNetworkConnectionAllowed( ECoreAppUIsNetworkConnectionAllowed );
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CSysApOfflineModeController::CheckOfflineModeInitialStatusesL()
+// ----------------------------------------------------------------------------
+
+void CSysApOfflineModeController::CheckOfflineModeInitialStatusesL()
+ {
+ TRACES( RDebug::Print( _L("CSysApOfflineModeController::CheckOfflineModeInitialStatusesL") ) );
+ }
+
+// ----------------------------------------------------------------------------
+// CSysApOfflineModeController::DoNotActivateBt()
+// ----------------------------------------------------------------------------
+void CSysApOfflineModeController::DoNotActivateBt()
+ {
+ TRACES( RDebug::Print( _L("CSysApOfflineModeController::DoNotActivateBt") ) );
+ SetBtActiveBeforeOfflineMode( EFalse );
+ }
+
+// ----------------------------------------------------------------------------
+// CSysApOfflineModeController::DoNotActivateRF()
+// ----------------------------------------------------------------------------
+void CSysApOfflineModeController::DoNotActivateRF()
+ {
+ TRACES( RDebug::Print( _L("CSysApOfflineModeController::DoNotActivateRF") ) );
+ iDoNotActivateRF = ETrue;
+ }
+
+// ----------------------------------------------------------------------------
+// CSysApOfflineModeController::GoOnlineIfOkL()
+// ----------------------------------------------------------------------------
+void CSysApOfflineModeController::GoOnlineIfOkL()
+ {
+ TRACES( RDebug::Print( _L("CSysApOfflineModeController::GoOnlineIfOkL") ) );
+
+ TInt simStatus = iSysApAppUi.StateOfProperty( KPSUidStartup, KPSSimStatus );
+ if ( ( !iSysApAppUi.SimSupported() ) ||
+ ( iSysApAppUi.BtSapEnabled() && simStatus != ESimNotPresent ) ||
+ simStatus == ESimUsable )
+ {
+ iSysApAppUi.ShowQueryL( ESysApLeaveOfflineModeQuery );
+ }
+ else
+ {
+ iSysApAppUi.ShowUiNoteL( EInsertSimNote );
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CSysApOfflineModeController::SetBtActiveBeforeOfflineMode()
+// ----------------------------------------------------------------------------
+
+void CSysApOfflineModeController::SetBtActiveBeforeOfflineMode( TBool aBtActive )
+ {
+ TRACES( RDebug::Print( _L("CSysApOfflineModeController::SetBtActiveBeforeOfflineMode: status: %d" ), aBtActive ) );
+ iSysApAppUi.CenRepController().SetInt( KCRUidCoreApplicationUIsSysAp, KSysApBtStatusBeforeOfflineMode, (TInt) aBtActive );
+ }
+
+// ----------------------------------------------------------------------------
+// CSysApOfflineModeController::BtActiveBeforeOfflineMode()
+// ----------------------------------------------------------------------------
+TBool CSysApOfflineModeController::BtActiveBeforeOfflineMode()
+ {
+
+ TBool err = EFalse;
+
+ TInt btToBeActivated = iSysApAppUi.CenRepController().GetInt( KCRUidCoreApplicationUIsSysAp,
+ KSysApBtStatusBeforeOfflineMode,
+ &err );
+ if ( err )
+ {
+ TRACES( RDebug::Print( _L("CSysApOfflineModeController::BtActiveBeforeOfflineMode: ERROR: %d" ), err ) );
+ return EFalse;
+ }
+ else
+ {
+ return ( TBool ) btToBeActivated;
+ }
+
+ }
+
+// ----------------------------------------------------------------------------
+// CSysApOfflineModeController::MustBtBeActivated()
+// ----------------------------------------------------------------------------
+TBool CSysApOfflineModeController::MustBtBeActivated()
+ {
+ return BtActiveBeforeOfflineMode();
+ }
+
+// End of File
+
+
+