diff -r ff3b37722600 -r 10810c91db26 wlanutilities/wlansniffer/aiplugin/src/wsfaicontroller.cpp --- a/wlanutilities/wlansniffer/aiplugin/src/wsfaicontroller.cpp Tue Jan 26 13:04:04 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1259 +0,0 @@ -/* -* Copyright (c) 2007-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: Implementation of TWsfAiController. -* -*/ - - -// EXTERNAL INCLUDES -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// CLASS HEADER -#include "wsfaicontroller.h" - -// INTERNAL INCLUDES -#include "wsfwlaninfo.h" -#include "wsfwlaninfoarray.h" -#include "wsfaiuiobserver.h" -#include "wsfaimodel.h" -#include "wsficonarraycreator.h" -#include "wsfmodel.h" -#include "wsfsearchwlansdialog.h" -#include "wsfaicontrollercmds.h" -#include "wsfactivewaiter.h" -#include "wsflogger.h" -#include "wsfdbobserver.h" - - -// MACROS -#ifdef _DEBUG - _LIT( KControllerPanic, "CWsfAiController" ); - #define _ASS_D( cond ) __ASSERT_DEBUG( (cond), \ - User::Panic( KControllerPanic, __LINE__) ) -#else - #define _ASS_D( cond ) -#endif //_DEBUG - - -// LOCAL DEFINITIONS -LOCAL_D const TInt KFirstItemArrayIndex = 0; - -// Category UID of AiHelper property -static const TUid KWsfAiHelperCategoryUid = { 0x10281CEB }; - -// key numbers within the property -static const TUint KWsfAiHelperExitCodeKey = 0; -static const TUint KWsfAiHelperIapIdKey = 1; -static const TInt KSuppressRefreshIndex = 1024; - - - -// -------------------------------------------------------------------------- -// TWsfAiController::TWsfAiController -// -------------------------------------------------------------------------- -// -TWsfAiController::TWsfAiController(): - iModel( NULL ), - iAiModel( NULL ), - iUi( NULL ), - iDbObserver( NULL ), - iShouldConnectOnly( EFalse ), - iTestAccessPoint( EFalse ) - { - // null the pointers - iConnectedWlan.iConnectionState = ENotConnected; - } - - -// --------------------------------------------------------- -// CWsfActiveWaiter::DeInitializeL -// --------------------------------------------------------- -// -void TWsfAiController::DeInitializeL() - { - LOG_ENTERFN( "TWsfAiController::DeInitializeL" ); - iModel->AbortConnectingL(); - iModel->AbortScanningL(); - } - - -// -------------------------------------------------------------------------- -// TWsfAiController::Initialize -// -------------------------------------------------------------------------- -// -void TWsfAiController::InitializeL( CWsfModel* aModel, CWsfAiModel* aAiModel, - CWsfDbObserver* aObserver ) - { - LOG_ENTERFN( "TWsfAiController::InitializeL" ); - iModel = aModel; - iAiModel = aAiModel; - iDbObserver = aObserver; - iDbObserver->SetController( this ); - iDbObserver->ActivateItL(); - iModel->SetEngineObserver( this ); - - iAiModel->SetConnected( iModel->IsConnectedL() ); - } - - -// --------------------------------------------------------------------------- -// TWsfMainController::BrowserLaunchCompleteL -// --------------------------------------------------------------------------- -// -void TWsfAiController::BrowserLaunchCompleteL() - { - LOG_ENTERFN( "TWsfAiController::BrowserLaunchCompleteL" ); - // no implementation required - } - - -// --------------------------------------------------------------------------- -// TWsfMainController::BrowserExitL -// --------------------------------------------------------------------------- -// -void TWsfAiController::BrowserExitL() - { - LOG_ENTERFN( "TWsfAiController::BrowserExitL" ); - // no implementation required - } - - -// --------------------------------------------------------------------------- -// TWsfMainController::BrowserLaunchFailed -// --------------------------------------------------------------------------- -// -#ifdef _DEBUG -void TWsfAiController::BrowserLaunchFailed( TInt aError ) - { - LOG_ENTERFN( "TWsfAiController::BrowserLaunchFailed" ); - LOG_WRITEF( "error = %d", aError ); -#else -void TWsfAiController::BrowserLaunchFailed( TInt /*aError*/ ) - { - // no implementation required -#endif - } - - -// --------------------------------------------------------------------------- -// TWsfMainController::ConnectingL -// --------------------------------------------------------------------------- -// -void TWsfAiController::ConnectingL( TUint32 /*aIapId*/ ) - { - LOG_ENTERFN( "TWsfAiController::ConnectingL" ); - iModel->SetConnecting( ETrue ); - iAiModel->SetConnecting( ETrue ); - iUi->StartConnectingAnimationL(); - RefreshUiL(); - } - - -// --------------------------------------------------------------------------- -// TWsfMainController::ConnectingFinishedL -// --------------------------------------------------------------------------- -// -#ifdef _DEBUG -void TWsfAiController::ConnectingFinishedL( TInt aResult ) - { - LOG_ENTERFN( "TWsfAiController::ConnectingFinishedL" ); - LOG_WRITEF( "aResult = %d", aResult ); -#else -void TWsfAiController::ConnectingFinishedL( TInt /*aResult*/ ) - { -#endif - if ( iModel->IsConnecting() ) - { - iModel->SetConnecting( EFalse ); - } - iAiModel->SetConnecting( EFalse ); - RefreshUiL(); - } - - -// -------------------------------------------------------------------------- -// TWsfAiController::StartupRefreshL -// -------------------------------------------------------------------------- -// -void TWsfAiController::StartupRefreshL() - { - LOG_ENTERFN( "TWsfAiController::StartupRefreshL" ); - iModel->GetConnectedWlanDetailsL( iConnectedWlan ); - iAiModel->SetConnectedWlanInfo( iConnectedWlan ); - - iInfoArray = iModel->GetWlanListL(); - MDesCArray* data = iAiModel->FormatSingleLineWlanListL( iInfoArray ); - - // index value to suppress 1 second refreshing state - const TInt KSuppressRefreshIndex = 1024; - - iUi->UpdateHotSpotsL( data, KSuppressRefreshIndex ); - } - - -// -------------------------------------------------------------------------- -// TWsfAiController::SetUi -// -------------------------------------------------------------------------- -// -void TWsfAiController::SetUi( MWsfAiUiObserver& aUi ) - { - LOG_ENTERFN( "TWsfAiController::SetUi" ); - iUi = &aUi; - } - - -// -------------------------------------------------------------------------- -// TWsfAiController::HandleSelectionKeyL -// -------------------------------------------------------------------------- -// -void TWsfAiController::HandleSelectionKeyL() - { - LOG_ENTERFN( "TWsfAiController::HandleSelectionKeyL" ); - _ASS_D( iAiModel ); - - if ( !iAiModel->ScanningOn() && !iAiModel->Connected() ) - { - // scanning was off and there wasn't a connected network - EnableScanL(); - } - else - { - // scanning was on - // menu contents depend on the connection and browser status - if ( iModel->IsConnecting() ) - { - // connecting - HandleMskIfConnectingL(); - } - else if ( !iAiModel->Connected() ) - { - // not connected - HandleMskIfOfflineL(); - } - else - { - // connected - if ( IsWlanUsedByBrowserL() ) - { - // browser is using active WLAN connection - HandleMskIfBrowsingL(); - } - else - { - // browser is not running or not using the WLAN - HandleMskIfConnectedL(); - } - } - } - - } - - -// -------------------------------------------------------------------------- -// TWsfAiController::DismissDialogsL -// -------------------------------------------------------------------------- -// -void TWsfAiController::DismissDialogsL() - { - LOG_ENTERFN("TWsfAiController::DismissDialogsL" ); - TKeyEvent key; - key.iCode = EKeyEscape; - key.iModifiers = 0; - CEikonEnv::Static()->SimulateKeyEventL( key, EEventKey ); - } - - -// -------------------------------------------------------------------------- -// TWsfAiController::WlanListChangedL -// -------------------------------------------------------------------------- -// -void TWsfAiController::WlanListChangedL() - { - LOG_ENTERFN("TWsfAiController::WlanListChangedL" ); - - _ASS_D( iAiModel ); - - if ( !iAiModel->ScanningOn() ) - { - return; - } - - _ASS_D( iModel ); - _ASS_D( iUi ); - - TBool match( EFalse ); - TWsfWlanInfo previousSelected; - CWsfWlanInfoArray* modelArr = iAiModel->GetInfoArray(); - - if ( modelArr ) - { - TInt selectedItem = iUi->SelectedItem(); - if ( selectedItem >= KFirstItemArrayIndex && - selectedItem < modelArr->Count() ) - { - TWsfWlanInfo* temp = modelArr->At( selectedItem ); - if ( temp ) - { - match = ETrue; - previousSelected = *temp; - } - } - } - iInfoArray = iModel->GetWlanListL(); - TBool connected = iModel->GetConnectedWlanDetailsL( iConnectedWlan ); - iAiModel->SetConnected( connected ); - iAiModel->SetConnectedWlanInfo( iConnectedWlan ); - - MDesCArray* data = iUi->MultilineControl() ? - iAiModel->FormatWlanListL( iInfoArray, ETrue ): - iAiModel->FormatSingleLineWlanListL( iInfoArray ); - - - TInt index( KErrNotFound ); - if ( match ) - { - TWsfWlanInfo* currentMatch = iInfoArray->Match( - previousSelected.iSsid, - iInfoArray->Count() ); - if ( currentMatch ) - { - index = iInfoArray->GetArrayIndex( currentMatch ); - } - } - - if ( !iUi->MultilineControl() && iModel->IsConnecting() ) - { - index = KSuppressRefreshIndex; - } - - iUi->UpdateHotSpotsL( data, index ); - - } - - -// -------------------------------------------------------------------------- -// TWsfAiController::NotifyEngineError -// -------------------------------------------------------------------------- -// -void TWsfAiController::NotifyEngineError( TInt aError ) - { - LOG_ENTERFN( "TWsfAiController::NotifyEngineError" ); - //Let the user know about the error. - LOG_WRITEF( "error = %d", aError ); - TRAP_IGNORE( DoHandleEngineErrorL( aError ) ); - } - - -// -------------------------------------------------------------------------- -// TWsfAiController::ScanDisabledL -// -------------------------------------------------------------------------- -// -void TWsfAiController::ScanDisabledL() - { - LOG_ENTERFN( "TWsfAiController::ScanDisabledL" ); - // no implementation required - } - - -// -------------------------------------------------------------------------- -// TWsfAiController::ScanEnabledL -// -------------------------------------------------------------------------- -// -void TWsfAiController::ScanEnabledL() - { - LOG_ENTERFN( "TWsfAiController::ScanEnabledL" ); - iModel->RefreshScanL(); - } - - -// -------------------------------------------------------------------------- -// TWsfAiController::WlanConnectionActivatedL -// -------------------------------------------------------------------------- -// -void TWsfAiController::WlanConnectionActivatedL( - const TDesC& /*aAccessPointName*/ ) - { - LOG_ENTERFN( "TWsfAiController::WlanConnectionActivatedL" ); - iModel->SetConnecting( EFalse ); - iModel->GetConnectedWlanDetailsL( iConnectedWlan ); - iAiModel->SetConnectedWlanInfo( iConnectedWlan ); - iAiModel->SetConnected( ETrue ); - iAiModel->SetConnecting( EFalse ); - - RefreshUiL(); - } - - -// -------------------------------------------------------------------------- -// TWsfAiController::WlanConnectionClosedL -// -------------------------------------------------------------------------- -// -void TWsfAiController::WlanConnectionClosedL() - { - LOG_ENTERFN( "TWsfAiController::WlanConnectionClosedL" ); - iModel->SetConnecting( EFalse ); - iAiModel->SetConnected( EFalse ); - iAiModel->SetConnecting( EFalse ); - if ( iAiModel->ScanningOn() ) - { - // update the model and refresh ui - if ( iInfoArray ) - { - // check if the array has any items - if ( iInfoArray->Count() ) - { - iInfoArray->SortArrayL(); - TWsfWlanInfo* firstItem = iInfoArray->At( KFirstItemArrayIndex ); - if ( firstItem && firstItem->Connected() ) - { - firstItem->iConnectionState = ENotConnected; - } - } - } - // Abort current scan if exists so that we get - // newest scan results propagated to ui - iModel->AbortScanningL(); - iModel->RefreshScanL(); - RefreshUiL(); - } - else - { - iUi->DisplayEngineOffL(); - } - - } - - -// --------------------------------------------------------------------------- -// TWsfMainController::ConnectionCreationProcessFinished -// --------------------------------------------------------------------------- -// -void TWsfAiController::ConnectionCreationProcessFinishedL( TInt aResult ) - { - LOG_ENTERFN( "TWsfAiController::ConnectionCreationProcessFinished" ); - LOG_WRITEF( "aResult = %d", aResult ); - // release flags if we leave occures - CleanupStack::PushL( TCleanupItem( CleanUpConnectingL, this ) ); - if ( iModel->IsConnecting() ) - { - iModel->SetConnecting( EFalse ); - } - iAiModel->SetConnecting( EFalse ); - if ( aResult == KErrNone ) - { - iAiModel->SetConnected( ETrue ); - iModel->FinalizeConnectL(); - if ( !iShouldConnectOnly ) - { - StartWebBrowserL( iUsedInfo ); - } - if ( iTestAccessPoint ) - { - iModel->TestConnectedAccessPointL( iUsedInfo, iShouldConnectOnly ); - } - } - else - { - iAiModel->SetConnected( EFalse ); - } - RefreshUiL(); - // pop cleanup item - CleanupStack::Pop(); - } - - -// -------------------------------------------------------------------------- -// TWsfAiController::StartBrowsingL -// -------------------------------------------------------------------------- -// -void TWsfAiController::StartBrowsingL( TWsfWlanInfo& aInfo ) - { - LOG_ENTERFN( "TWsfAiController::StartBrowsingL" ); - - _ASS_D( iModel ); - - iUsedInfo = aInfo; - - // Prevent connections to ad-hoc + WPA - if ( iUsedInfo.iNetMode == CMManager::EAdhoc - && iUsedInfo.iSecurityMode == CMManager::EWlanSecModeWpa ) - { - CErrorUI* errorUi = CErrorUI::NewLC(); - errorUi->ShowGlobalErrorNoteL( KErrNotSupported ); - CleanupStack::PopAndDestroy( errorUi ); // errorUi - return; - } - - // make sure we don't show connecting stuff forever - CleanupStack::PushL( TCleanupItem( CleanUpConnectingL, this ) ); - - if ( !iUsedInfo.Connected() ) - { - ConnectL( iUsedInfo, EFalse ); - } - else - { - LOG_WRITE("Start browser to connected network..."); - iShouldConnectOnly = EFalse; - StartWebBrowserL( iUsedInfo ); - } - - // pop cleanup item - CleanupStack::Pop(); - } - - -// -------------------------------------------------------------------------- -// TWsfAiController::StartWebBrowserL -// -------------------------------------------------------------------------- -// -void TWsfAiController::StartWebBrowserL( TWsfWlanInfo& aInfo ) - { - LOG_ENTERFN( "TWsfAiController::StartWebBrowserL" ); - - _ASS_D( iModel ); - - TUint32 passedIap( aInfo.iIapId ); - - if ( aInfo.Connected() && !passedIap ) - { - // in case we have an EasyWLAN here - RCmManager cmmanager; - cmmanager.OpenLC(); - - passedIap = cmmanager.EasyWlanIdL(); - - CleanupStack::PopAndDestroy( &cmmanager ); - } - - // launch the browser - iModel->LaunchBrowserL( passedIap ); - } - - -// -------------------------------------------------------------------------- -// TWsfAiController::ConnectL -// -------------------------------------------------------------------------- -// -void TWsfAiController::ConnectL( TWsfWlanInfo& aInfo, TBool aShoulConnectOnly ) - { - LOG_ENTERFN( "TWsfAiController::ConnectL" ); - - _ASS_D( iModel ); - iTestAccessPoint = EFalse; - iShouldConnectOnly = aShoulConnectOnly; - iUsedInfo = aInfo; - - // Prevent connections to ad-hoc + WPA - if ( iUsedInfo.iNetMode == CMManager::EAdhoc - && iUsedInfo.iSecurityMode == CMManager::EWlanSecModeWpa ) - { - CErrorUI* errorUi = CErrorUI::NewLC(); - errorUi->ShowGlobalErrorNoteL(KErrNotSupported); - CleanupStack::PopAndDestroy(errorUi); // errorUi - return; - } - - // make sure we don't show connecting stuff forever - CleanupStack::PushL( TCleanupItem( CleanUpConnectingL, this ) ); - - if ( !iUsedInfo.iIapId && !iUsedInfo.Hidden() && - iUsedInfo.iSecurityMode == CMManager::EWlanSecModeOpen ) - { - TBool success( EFalse ); - // just create the IAP - TRAPD( accessPointCreatedError, - success = iModel->CreateAccessPointL( - iUsedInfo, EFalse ); - ); - - // notify user that Disk is full or creation of a WAPI IAP - // is not supported on-the-fly and leave - if ( accessPointCreatedError == KErrDiskFull || - accessPointCreatedError == KErrWlanProtectedSetupSetupLocked ) - { - LOG_WRITE( "showing error note" ); - CErrorUI* errorUi = CErrorUI::NewLC(); - errorUi->ShowGlobalErrorNoteL( accessPointCreatedError ); - CleanupStack::PopAndDestroy( errorUi ); - User::Leave( accessPointCreatedError ); - } - // just leave because we failed to create accesspoint - else if ( accessPointCreatedError != KErrNone || !success ) - { - User::Leave( accessPointCreatedError ); - } - ConnectingL( iUsedInfo.iIapId ); - iTestAccessPoint = ETrue; - } - else if ( !iUsedInfo.iIapId ) - { - // let the helper app do the query if necessary - LOG_WRITE("AiHelper needs to be launched"); - LaunchAiHelperAppL( iUsedInfo ); - ConnectingL( iUsedInfo.iIapId ); - iTestAccessPoint = ETrue; - } - - // Connect - if ( iUsedInfo.iIapId ) - { - TInt result = KErrNone; - result = iModel->ConnectWithoutConnWaiterL( iUsedInfo.iIapId, - !iTestAccessPoint ); - - if ( result != KErrNone ) - { - LOG_WRITEF( "Connect failed with error = %d", result ); - User::Leave( result ); - } - } - // pop cleanup item - CleanupStack::Pop(); - } - - -// --------------------------------------------------------------------------- -// TWsfAiController::CleanUpConnectingL -// --------------------------------------------------------------------------- -// -void TWsfAiController::CleanUpConnectingL( TAny* aPtr ) - { - LOG_ENTERFN( "TWsfAiController::CleanUpConnectingL" ); - TWsfAiController* self = static_cast( aPtr ); - self->iModel->SetConnecting( EFalse ); - self->iAiModel->SetConnecting( EFalse ); - TRAP_IGNORE( self->RefreshUiL()); - } - - -// -------------------------------------------------------------------------- -// TWsfAiController::LaunchAiHelperAppL -// -------------------------------------------------------------------------- -// -void TWsfAiController::LaunchAiHelperAppL( TWsfWlanInfo& aInfo ) - { - LOG_ENTERFN( "TWsfAiController::LaunchAiHelperAppL" ); - - CWsfActiveWaiter* waiter = CWsfActiveWaiter::NewL(); - CleanupStack::PushL( waiter ); - - RProperty aiHelperApp; - User::LeaveIfError( aiHelperApp.Attach( - KWsfAiHelperCategoryUid, - KWsfAiHelperExitCodeKey ) ); - CleanupClosePushL( aiHelperApp ); - - aiHelperApp.Subscribe( waiter->iStatus ); - - LOG_WRITE("launching..."); - iModel->LaunchHelperApplicationL( aInfo, ETrue, EFalse ); - waiter->WaitForRequest(); - - TInt exitCode( KErrNone ); - aiHelperApp.Get( exitCode ); - - LOG_WRITEF("AiHelper returned %d", exitCode ); - - if ( exitCode == KErrNone ) - { - User::LeaveIfError( aiHelperApp.Attach( - KWsfAiHelperCategoryUid, - KWsfAiHelperIapIdKey ) ); - TInt iapId( 0 ); - aiHelperApp.Get( iapId ); - aInfo.iIapId = TUint32( iapId ); - LOG_WRITEF("AiHelper iap id = %d", iapId ); - } - else - { - User::Leave( exitCode ); - } - - CleanupStack::PopAndDestroy( &aiHelperApp ); - CleanupStack::PopAndDestroy( waiter ); - } - - -// -------------------------------------------------------------------------- -// TWsfAiController::ContinueBrowsingL -// -------------------------------------------------------------------------- -// -void TWsfAiController::ContinueBrowsingL() - { - LOG_ENTERFN( "TWsfAiController::ContinueBrowsingL" ); - - _ASS_D( iModel ); - - iModel->ContinueBrowsingL(); - } - - -// -------------------------------------------------------------------------- -// TWsfAiController::LaunchSearchDialogL -// -------------------------------------------------------------------------- -// -TBool TWsfAiController::LaunchSearchDialogL( TWsfWlanInfo& aInfo ) - { - LOG_ENTERFN( "TWsfAiController::LaunchSearchDialogL" ); - - _ASS_D( iAiModel ); - _ASS_D( iUi ); - - MWsfAiUiObserver* temp = iUi; - TInt selectedWlan( KFirstItemArrayIndex ); - TBool success( EFalse ); - - TRAPD( err, success = DoLaunchSearchDialogL( selectedWlan ) ); - - iUi = temp; - User::LeaveIfError( err ); - - if ( success ) - { - if ( iAiModel->Connected() ) - { - // show the error note of double connections - HBufC* txt = StringLoader::LoadLC( - R_QTN_WLAN_INFO_CONNECTION_ALREADY_ACTIVE ); - - CAknErrorNote* errorNote = new (ELeave) CAknErrorNote; - errorNote->ExecuteLD( *txt ); - - CleanupStack::PopAndDestroy( txt ); - success = EFalse; - } - else - { - // check that the model still has the entry - if ( selectedWlan < iAiModel->GetInfoArray()->Count() ) - { - // get wlan info - aInfo = *iAiModel->GetInfoArray()->At( selectedWlan ); - } - else - { - // other unlisted item was selected - } - } - } - - RefreshUiL(); - - return success; - } - - -// -------------------------------------------------------------------------- -// TWsfAiController::DoLaunchSearchDialogL -// -------------------------------------------------------------------------- -// -TBool TWsfAiController::DoLaunchSearchDialogL( TInt& aSelectedItem ) - { - LOG_ENTERFN( "TWsfAiController::DoLaunchSearchDialogL" ); - - _ASS_D( iAiModel ); - _ASS_D( iModel ); - - CWsfSearchWlansDialog* dialog = CWsfSearchWlansDialog::NewL( - aSelectedItem ); - dialog->PrepareLC( R_QTN_PLUGIN_SEARCH_WLAN_NETWORKS ); - - // ownership of the icon array is passed - CAknIconArray* icons = CWsfIconArrayCreator::CreateArrayL(); - CleanupStack::PushL( icons ); - iAiModel->AppendBrandIconsL( *icons ); - dialog->SetIconArrayL( icons ); // ownership of the icon array is passed - CleanupStack::Pop( icons ); - - // the dialog is ready to receive data... - iUi = dialog; - iUi->UpdateHotSpotsL( iAiModel->FormatWlanListL( iModel->GetWlanListL(), EFalse ), - KFirstItemArrayIndex ); - - return dialog->RunLD(); - } - - -// -------------------------------------------------------------------------- -// TWsfAiController::RefreshUiL -// -------------------------------------------------------------------------- -// -void TWsfAiController::RefreshUiL() - { - LOG_ENTERFN( "TWsfAiController::RefreshUiL" ); - - _ASS_D( iAiModel ); - _ASS_D( iUi ); - - if ( !iInfoArray ) - { - return; - } - - MDesCArray* data = iUi->MultilineControl() ? - iAiModel->FormatWlanListL( iInfoArray, ETrue ): - iAiModel->FormatSingleLineWlanListL( iInfoArray ); - - TInt currentItem = ( iModel->IsConnecting() )? - KSuppressRefreshIndex: KFirstItemArrayIndex; - - iUi->UpdateHotSpotsL( data, currentItem ); - } - - -// -------------------------------------------------------------------------- -// TWsfAiController::EnableScanL -// -------------------------------------------------------------------------- -// -void TWsfAiController::EnableScanL() - { - LOG_ENTERFN( "TWsfAiController::EnableScanL" ); - - _ASS_D( iAiModel ); - _ASS_D( iModel ); - _ASS_D( iUi ); - - if ( iAiModel->ScanningOn() ) - { - return; - } - iModel->EnableScanL(); - iAiModel->SetScanningOn(); - iDbObserver->EnableScanL(); - - MDesCArray *data = iAiModel->FormatRefreshingL(); - iUi->UpdateHotSpotsL( data, KFirstItemArrayIndex ); - } - - -// -------------------------------------------------------------------------- -// TWsfAiController::DisableScanL -// -------------------------------------------------------------------------- -// -void TWsfAiController::DisableScanL() - { - LOG_ENTERFN( "TWsfAiController::DisableScanL" ); - - _ASS_D( iAiModel ); - _ASS_D( iModel ); - _ASS_D( iUi ); - - if ( !iAiModel->ScanningOn() ) - { - return; - } - iModel->DisableScanL(); - iAiModel->SetScanningOff(); - iDbObserver->DisableScanL(); - iUi->DisplayEngineOffL(); - } - - -// -------------------------------------------------------------------------- -// TWsfAiController::DisconnectL -// -------------------------------------------------------------------------- -// -void TWsfAiController::DisconnectL() - { - LOG_ENTERFN( "TWsfAiController::DisconnectL" ); - - _ASS_D( iModel ); - - iModel->DisconnectL(); - } - - -// -------------------------------------------------------------------------- -// TWsfAiController::DoHandleEngineErrorL -// -------------------------------------------------------------------------- -// -void TWsfAiController::DoHandleEngineErrorL( TInt aError ) - { - LOG_ENTERFN( "TWsfAiController::DoHandleEngineErrorL" ); - // start by freeing some resources... - // we could start by freeing wlan search results - _ASS_D( iAiModel ); - - // show error to user... - CEikonEnv::Static()->ResolveError( aError ); - } - - -// --------------------------------------------------------------------------- -// TWsfAiController::IsWlanUsedByBrowserL -// --------------------------------------------------------------------------- -// -TBool TWsfAiController::IsWlanUsedByBrowserL() - { - LOG_ENTERFN( "CWsfMainView::IsWlanUsedByBrowserL" ); - - _ASS_D( iAiModel ); - - const TInt KBrowserUid = 0x10008D39; - TUid id( TUid::Uid( KBrowserUid ) ); - - // Check if the Browser application is already running. - TApaTaskList taskList( CEikonEnv::Static()->WsSession() ); - TApaTask task = taskList.FindApp( id ); - TBool isWlanUsed( EFalse ); - -#ifndef __WINS__ - - if ( task.Exists() ) - { - LOG_WRITE( "The Browser is running." ); - // The Browser is already running. - // Check if the selected WLAN is connected. - TBool connected( iAiModel->Connected() ); - LOG_WRITEF("Connected? %d", connected); - - if ( connected ) - { - RConnectionMonitor connectionMonitor; - connectionMonitor.ConnectL(); - // We have to check if the Browser using the selected - // connection. - // We have get the connectiond ID first. - CWsfActiveWaiter* waiter = CWsfActiveWaiter::NewL(); - CleanupStack::PushL( waiter ); - - // first call, need to get the connection parameters - TUint connectionCount( 0 ); - - connectionMonitor.GetConnectionCount( connectionCount, - waiter->iStatus ); - waiter->WaitForRequest(); - - // find the connection with WLAN bearer - // that will be the selected WLAN - TUint connectionId( 0 ); - for ( TUint i = 1; i <= connectionCount; ++i ) - { - TUint tmpConnectionId( 0 ); - TUint subConnectionCount( 0 ); - TConnMonBearerType bearerType( EBearerUnknown ); - - connectionMonitor.GetConnectionInfo( i, - tmpConnectionId, - subConnectionCount ); - connectionMonitor.GetIntAttribute( tmpConnectionId, - 0, - KBearer, - ( TInt& )bearerType, - waiter->iStatus ); - waiter->WaitForRequest(); - if ( bearerType == EBearerWLAN ) - { - connectionId = tmpConnectionId; - break; - } - } - // Now we have the connectiond ID. - LOG_WRITEF( "connectionId: %d", connectionId ); - - TInt count( 0 ); - TConnMonClientEnumBuf clientBuf; - - connectionMonitor.GetPckgAttribute( connectionId, - 0, - KClientInfo, - clientBuf, - waiter->iStatus ); - waiter->WaitForRequest(); - if ( !waiter->iStatus.Int() ) - { - count = clientBuf().iCount; - } - - RApaLsSession appSess; - TApaAppInfo appInfo; - - // The connection could be shared by several applications - User::LeaveIfError( appSess.Connect() ); - - for ( TUint i = 0; i < count; i++ ) - { - appInfo.iCaption.Zero(); - TInt result = appSess.GetAppInfo( appInfo, - clientBuf().iUid[i] ); - - LOG_WRITEF( "result: %d", result ); - LOG_WRITEF( "iClientInfo.iUid[i].iUid: %x", - clientBuf().iUid[i].iUid ); - - if ( clientBuf().iUid[i].iUid == KBrowserUid ) - { - isWlanUsed = ETrue; - } - } - CleanupStack::PopAndDestroy( waiter ); - appSess.Close(); - connectionMonitor.Close(); - } - } - else - { - LOG_WRITE( "No Browser running." ); - } - -#endif // __WINS__ - - LOG_WRITEF( "isWlanUsedByBrowser: %d", isWlanUsed ); - return isWlanUsed; - } - - -// -------------------------------------------------------------------------- -// TWsfAiController::HandleMskIfOfflineL -// -------------------------------------------------------------------------- -// -void TWsfAiController::HandleMskIfOfflineL() - { - LOG_ENTERFN( "TWsfAiController::HandleMskIfOfflineL" ); - - // create the dialog with options - TInt selectedMode( 0 ); - CAknListQueryDialog* listQuery = new (ELeave) CAknListQueryDialog( - &selectedMode ); - listQuery->PrepareLC( R_QTN_AIPLUGIN_OPTIONS_OFFLINE ); - - if ( !listQuery->RunLD() ) - { - // cancelled - return; - } - - CWsfWlanInfoArray* wlanArray = iAiModel->GetInfoArray(); - - - switch ( selectedMode ) - { - case EAiOfflineStartBrowsing: - { - // Start web browsing was selected - if ( !wlanArray->Count() || - !wlanArray->At( KFirstItemArrayIndex )->Known() ) - { - // no known networks, let the user choose one - TWsfWlanInfo info; - - if ( LaunchSearchDialogL( info ) ) - { - StartBrowsingL( info ); - } - } - else - { - // there are known networks - StartBrowsingL( *wlanArray->At( KFirstItemArrayIndex ) ); - } - - break; - } - - case EAiOfflineConnect: - { - // Connect was selected - if ( !wlanArray->Count() || - !wlanArray->At( KFirstItemArrayIndex )->Known() ) - { - // no known networks, let the user choose one - TWsfWlanInfo info; - - if ( LaunchSearchDialogL( info ) ) - { - ConnectL( info, ETrue ); - } - } - else - { - // there are known networks - ConnectL( *wlanArray->At( KFirstItemArrayIndex ), ETrue ); - } - - break; - } - - case EAiOfflineSearchWlans: - { - // Search for wlans was selected - if ( !wlanArray || !wlanArray->Count() ) - { - // there are no available networks - CConnectionUiUtilities* connUiUtils = CConnectionUiUtilities::NewL(); - connUiUtils->NoWLANNetworksAvailableNote(); - delete connUiUtils; - } - - // launch the search dialog - TWsfWlanInfo info; - - if ( LaunchSearchDialogL( info ) ) - { - ConnectL( info, ETrue ); - } - - break; - } - - case EAiOfflineDisableScan: - { - // disable the scan - DisableScanL(); - break; - } - - default: - { - } - - } - } - - - -// -------------------------------------------------------------------------- -// TWsfAiController::HandleMskIfConnectedL -// -------------------------------------------------------------------------- -// -void TWsfAiController::HandleMskIfConnectedL() - { - LOG_ENTERFN( "TWsfAiController::HandleMskIfConnectedL" ); - - _ASS_D( iModel ); - - TInt selectedMode( 0 ); - CAknListQueryDialog* listQuery = new (ELeave) CAknListQueryDialog( - &selectedMode ); - listQuery->PrepareLC( R_QTN_AIPLUGIN_OPTIONS_CONNECTED ); - - if ( listQuery->RunLD() ) - { - if ( selectedMode == EAiConnectedStartBrowsing ) - { - StartBrowsingL( iConnectedWlan ); - } - else if ( selectedMode == EAiConnectedDisconnect ) - { - // disconnect wlan - iModel->DisconnectL(); - } - } - } - - -// -------------------------------------------------------------------------- -// TWsfAiController::HandleMskIfConnectingL -// -------------------------------------------------------------------------- -// -void TWsfAiController::HandleMskIfConnectingL() - { - LOG_ENTERFN( "TWsfAiController::HandleMskIfConnectingL" ); - - _ASS_D( iModel ); - - TInt selectedMode( 0 ); - CAknListQueryDialog* listQuery = new (ELeave) CAknListQueryDialog( - &selectedMode ); - listQuery->PrepareLC( R_QTN_AIPLUGIN_OPTIONS_CONNECTING ); - - if ( listQuery->RunLD() ) - { - if ( selectedMode == EAiConnectingDisconnect ) - { - if ( iModel->IsConnectedL() ) - { - // disconnect wlan - iModel->DisconnectL(); - } - else - { - // disconnect wlan - iModel->AbortConnectingL(); - } - ConnectingFinishedL( KErrCancel ); - } - } - } - - -// -------------------------------------------------------------------------- -// TWsfAiController::HandleMskIfBrowsingL -// -------------------------------------------------------------------------- -// -void TWsfAiController::HandleMskIfBrowsingL() - { - LOG_ENTERFN( "TWsfAiController::HandleMskIfBrowsingL" ); - - _ASS_D( iModel ); - - TInt selectedMode( KFirstItemArrayIndex ); - CAknListQueryDialog* listQuery = new (ELeave) CAknListQueryDialog( - &selectedMode ); - listQuery->PrepareLC( R_QTN_AIPLUGIN_OPTIONS_BROWSING ); - - if ( listQuery->RunLD() ) - { - if ( selectedMode == EAiBrowsingContinueBrowsing ) - { - // launch the browser... - ContinueBrowsingL(); - } - else if ( selectedMode == EAiBrowsingDisconnect ) - { - // disconnect wlan - iModel->DisconnectL(); - } - } - } - -// -------------------------------------------------------------------------- -// TWsfAiController::RefreshRefreshingL -// -------------------------------------------------------------------------- -// -void TWsfAiController::RefreshRefreshingL() - { - LOG_ENTERFN( "TWsfAiController::RefreshRefreshingL" ); - MDesCArray *data = iAiModel->FormatRefreshingL(); - iUi->UpdateViewL( data ); - } - -// -------------------------------------------------------------------------- -// TWsfAiController::RefreshConnectingL -// -------------------------------------------------------------------------- -// -void TWsfAiController::RefreshConnectingL() - { - LOG_ENTERFN( "TWsfAiController::RefreshConnectingL" ); - MDesCArray *data = iAiModel->FormatConnectingL(); - iUi->UpdateViewL( data ); - } - -// End of file