wlanutilities/wlansniffer/aiplugin/src/wsfaicontroller.cpp
branchRCL_3
changeset 24 63be7eb3fc78
parent 23 b852595f5cbe
child 25 f28ada11abbf
--- a/wlanutilities/wlansniffer/aiplugin/src/wsfaicontroller.cpp	Thu Aug 19 10:59:40 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1207 +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 <apgcli.h>
-#include <centralrepository.h>
-#include <browseruisdkcrkeys.h>
-#include <AknIconArray.h>
-#include <AknQueryDialog.h>
-#include <cmpluginwlandef.h>
-#include <ErrorUI.h>
-#include <StringLoader.h>
-#include <aknnotewrappers.h>
-#include <wsfaipluginrsc.rsg>
-#include <rconnmon.h>
-#include <utf.h>
-#include <cmmanager.h>
-#include <internetconnectivitycrkeys.h>
-#include <wlanerrorcodes.h>
-#include <ConnectionUiUtilities.h>
-
-//  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"
-#include "wsfactivewrappers.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;
-
-// index value to suppress 1 second refreshing state
-static const TInt KSuppressRefreshIndex = 1024;
-
-
-
-// --------------------------------------------------------------------------
-// TWsfAiController::TWsfAiController
-// --------------------------------------------------------------------------
-//
-TWsfAiController::TWsfAiController():
-    iModel( NULL ),
-    iAiModel( NULL ),
-    iUi( NULL ),
-    iDbObserver( NULL ),
-    iConnectOnly( EFalse )
-    {
-    // null the pointers
-    iConnectedWlan.iConnectionState = ENotConnected;
-    }
-
-
-// ---------------------------------------------------------
-// CWsfActiveWaiter::DeInitializeL
-// ---------------------------------------------------------
-//    
-void TWsfAiController::DeInitializeL()
-    {
-    LOG_ENTERFN( "TWsfAiController::DeInitializeL" );
-    }
-
-
-// --------------------------------------------------------------------------
-// TWsfAiController::Initialize
-// --------------------------------------------------------------------------
-//
-void TWsfAiController::InitializeL( CEikonEnv* aEnv, CWsfModel* aModel, 
-                                    CWsfAiModel* aAiModel, 
-                                    CWsfDbObserver* aObserver, 
-                   					CWsfActiveWrappers* aActiveWrappers )
-    {
-    LOG_ENTERFN( "TWsfAiController::InitializeL" );
-    iEnv = aEnv;
-    iModel = aModel;
-    iAiModel = aAiModel;
-    iDbObserver = aObserver;
-    iActiveWrappers = aActiveWrappers;
-    iDbObserver->SetController( this );
-    iDbObserver->ActivateItL();
-    iModel->SetEngineObserver( this );
-    }
-
-
-// ---------------------------------------------------------------------------
-// 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::StartupRefresh
-// --------------------------------------------------------------------------
-//
-void TWsfAiController::StartupRefresh()
-    {
-    LOG_ENTERFN( "TWsfAiController::StartupRefresh" );
-    iActiveWrappers->RefreshWLANList( ETrue );
-    }
-
-
-// --------------------------------------------------------------------------
-// TWsfAiController::StartupRefreshDataReadyL
-// --------------------------------------------------------------------------
-//
-void TWsfAiController::StartupRefreshDataReadyL()
-    {
-    LOG_ENTERFN( "TWsfAiController::StartupRefreshDataReadyL" );
-    
-    iInfoArray = iActiveWrappers->GetWLANList();
-    iConnectedWlan = iActiveWrappers->GetConnectedWLANNetwork();
-    iAiModel->SetConnected( iConnectedWlan.Connected() );
-    iAiModel->SetConnectedWlanInfo( iConnectedWlan );
-    
-    LOG_WRITEF( "Connected = %d", iConnectedWlan.Connected() );
-    
-    MDesCArray* data = iAiModel->FormatSingleLineWlanListL( iInfoArray );
-    
-    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::WlanListChangedL
-// --------------------------------------------------------------------------
-//
-void TWsfAiController::WlanListChangedL()
-    {
-    LOG_ENTERFN("TWsfAiController::WlanListChangedL" );
- 
-    _ASS_D( iAiModel );
-    
-    if ( !iAiModel->ScanningOn() )
-        {
-        return;
-        }
-    
-    iActiveWrappers->RefreshWLANList( EFalse );
-    }
-
-
-// --------------------------------------------------------------------------
-// TWsfAiController::WlanListDataReadyL
-// --------------------------------------------------------------------------
-//
-void TWsfAiController::WlanListDataReadyL()
-    {
-    LOG_ENTERFN("TWsfAiController::WlanListDataReadyL" );
- 
-    _ASS_D( iAiModel );
-    
-    iInfoArray = iActiveWrappers->GetWLANList();
-    iConnectedWlan = iActiveWrappers->GetConnectedWLANNetwork();
-    iAiModel->SetConnected( iConnectedWlan.Connected() );
-    iAiModel->SetConnectedWlanInfo( iConnectedWlan );
-    
-    LOG_WRITEF( "Connected = %d", iConnectedWlan.Connected() );
-    
-    if ( !iAiModel->ScanningOn() && !iAiModel->Connected() )
-        {
-        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;
-                }                
-            }
-        }
-        
-    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" );
-    iActiveWrappers->RefreshScan();
-    }
-
-
-// --------------------------------------------------------------------------
-// TWsfAiController::WlanConnectionActivatedL
-// --------------------------------------------------------------------------
-//
-void TWsfAiController::WlanConnectionActivatedL()
-    {
-    LOG_ENTERFN( "TWsfAiController::WlanConnectionActivatedL" );
-    iModel->SetConnecting( EFalse );
-    iAiModel->SetConnected( ETrue );
-    iAiModel->SetConnecting( EFalse );
-
-    iActiveWrappers->RefreshWLANList( EFalse ); 
-    } 
-
-
-// --------------------------------------------------------------------------
-// TWsfAiController::WlanConnectionClosedL
-// --------------------------------------------------------------------------
-//
-void TWsfAiController::WlanConnectionClosedL()
-    {
-    LOG_ENTERFN( "TWsfAiController::WlanConnectionClosedL" );
-    iModel->SetConnecting( EFalse );
-    iAiModel->SetConnected( EFalse );
-    iAiModel->SetConnecting( EFalse );
-    if ( iAiModel->ScanningOn() )
-        {
-        iActiveWrappers->RefreshWLANList( EFalse ); 
-        }
-    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 );
-        if ( !iConnectOnly )
-            {
-            StartWebBrowserL( iUsedInfo );
-            }
-        }
-    else
-        {
-        iAiModel->SetConnected( EFalse );
-        }
-    // 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, EFalse );
-        }
-    else
-        {
-        LOG_WRITE("Start browser to connected network...");
-        iConnectOnly = 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 aConnectOnly, 
-                                 TBool aTestAccessPoint )
-    {
-    LOG_ENTERFN( "TWsfAiController::ConnectL" );
-    
-    _ASS_D( iModel );
-    TBool testAccessPoint = aTestAccessPoint;
-    iConnectOnly = aConnectOnly;
-    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 );
-        testAccessPoint = ETrue;
-        }
-    else if ( !iUsedInfo.iIapId )
-        {
-        testAccessPoint = ETrue;
-        // let the helper app do the query if necessary
-        LOG_WRITE("AiHelper needs to be launched");
-        iActiveWrappers->LaunchHelperApplicationL( iUsedInfo, 
-                                                   iConnectOnly,
-                                                   testAccessPoint );
-        }
-    
-    // Connect
-    if ( iUsedInfo.iIapId )
-        {
-        if ( testAccessPoint )
-            {
-            iActiveWrappers->Connect( iUsedInfo.iIapId, iConnectOnly, 
-                                      EIapExpireOnDisconnect );
-            
-            }
-        else
-            {
-            iActiveWrappers->Connect( iUsedInfo.iIapId, iConnectOnly, 
-                                      EIapPersistent );
-            }
-        }
-    // pop cleanup item 
-    CleanupStack::Pop();
-    }
-
-
-// ---------------------------------------------------------------------------
-// TWsfAiController::CleanUpConnectingL
-// ---------------------------------------------------------------------------
-//
-void TWsfAiController::CleanUpConnectingL( TAny* aPtr )
-    {
-    LOG_ENTERFN( "TWsfAiController::CleanUpConnectingL" );
-    TWsfAiController* self = static_cast<TWsfAiController*>( aPtr );
-    self->iModel->SetConnecting( EFalse );
-    self->iAiModel->SetConnecting( EFalse );
-    TRAP_IGNORE( self->RefreshUiL());
-    }
-
-
-// --------------------------------------------------------------------------
-// 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
-            {
-            CWsfWlanInfoArray* wlanArray = iAiModel->GetInfoArray(); 
-            // check that the model still has the entry
-            if ( wlanArray && selectedWlan < wlanArray->Count() )
-                {
-                // get wlan info
-                aInfo = *wlanArray->At( selectedWlan );
-                }
-            else
-                {
-                // other unlisted item was selected
-                }
-            }
-        }
-    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( 
-									iActiveWrappers->GetWLANList(), 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();
-    
-    LOG_WRITE( "DbObserver enable scan" );
-    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::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...
-    iEnv->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( iEnv->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 || !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 || !wlanArray->Count() ||
-                 !wlanArray->At( KFirstItemArrayIndex )->Known() )
-                {
-                // no known networks, let the user choose one
-                TWsfWlanInfo info;
-                
-                if ( LaunchSearchDialogL( info ) )
-                    {
-                    ConnectL( info, ETrue, EFalse );
-                    }
-                }
-            else
-                {
-                // there are known networks
-                ConnectL( *wlanArray->At( KFirstItemArrayIndex ), ETrue, 
-                          EFalse );
-                }
-            
-            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, EFalse );
-                }
-            else
-                {
-                // User canceled Search Wlans dialog and probably did not 
-                // find anything interesting from the list - request scan
-                iActiveWrappers->RefreshScan();
-                }
-
-            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
-            iActiveWrappers->Disconnect();     
-            }
-        }
-    }
-
-
-// --------------------------------------------------------------------------
-// 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->IsConnecting() )
-                {
-                // disconnect wlan
-                iActiveWrappers->Disconnect();
-                }
-            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
-            iActiveWrappers->Disconnect();
-            }
-        }
-    }
-
-// --------------------------------------------------------------------------
-// TWsfAiController::RefreshRefreshingL
-// --------------------------------------------------------------------------
-//
-void TWsfAiController::RefreshRefreshingL()
-	{
-	LOG_ENTERFN( "TWsfAiController::RefreshRefreshingL" );
-	if ( !iUi->MultilineControl() )
-	    {
-        MDesCArray *data = iAiModel->FormatRefreshingL();
-        iUi->UpdateViewL( data );
-	    }
-	else
-	    {
-        LOG_WRITE( "Multiline control in use - no update done" );
-	    }
-	}
-
-// --------------------------------------------------------------------------
-// TWsfAiController::RefreshConnectingL
-// --------------------------------------------------------------------------
-//
-void TWsfAiController::RefreshConnectingL()
-    {
-    LOG_ENTERFN( "TWsfAiController::RefreshConnectingL" );
-    if ( !iUi->MultilineControl() )
-        {
-        MDesCArray *data = iAiModel->FormatConnectingL();
-        iUi->UpdateViewL( data );
-        }
-    else       
-        {
-        LOG_WRITE( "Multiline control in use - no update done" );
-        }
-    }
-
-// End of file