wlanutilities/wlansniffer/mainapplication/src/wsfmainviewcontroller.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 21 Jun 2010 16:55:05 +0300
branchRCL_3
changeset 20 a9524956f6b5
parent 13 858c6c491d0e
permissions -rw-r--r--
Revision: 201023 Kit: 2010125

/*
* 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 TWsfMainViewController.
*
*/

//  INTERNAL INCLUDES
#include "wsfmainviewcontroller.h"
#include "wsfmainviewmodel.h"
#include "wsfmainviewcontainer.h"
#include "wsfwlaninfo.h"
#include "wsfwlaninfoarray.h"

#include "wsflogger.h"


//  LOCAL DEFINITIONS
#ifdef _DEBUG
    _LIT( KMainViewControllerPanic, "TWsfMainViewController"  );
    #define _ASSERTD( cond ) __ASSERT_DEBUG( (cond), \
            User::Panic( KMainViewControllerPanic, __LINE__) )
#else
    #define _ASSERTD( cond ) {}
#endif //_DEBUG

    
// ---------------------------------------------------------------------------
// TWsfMainViewController::SetModel
// ---------------------------------------------------------------------------
//
void TWsfMainViewController::SetModel( CWsfMainViewModel* aModel )
    {
    iModel = aModel;
    iValidItem = EFalse;
    }


// ---------------------------------------------------------------------------
// TWsfMainViewController::SetContainer
// ---------------------------------------------------------------------------
//
void TWsfMainViewController::SetContainer( CWsfMainViewContainer* aContainer )
    {
    iContainer = aContainer;
    }


// ---------------------------------------------------------------------------
// TWsfMainViewController::UpdateHotSpotsL
// ---------------------------------------------------------------------------
//
void TWsfMainViewController::UpdateHotSpotsL( CWsfWlanInfoArray* aWlanList )
    {
    LOG_ENTERFN( "TWsfMainViewController::UpdateHotSpotsL" );   
    // Format WLAN list which was passed as a parameter
    iModel->FormatWlanListL( aWlanList );
    CDesCArray* formattedList = iModel->GetWlanList();

    if ( iContainer )
        {        
        // If some WLAN was already selected, don't lose the focus
        // By default show the first item (index == 0)
        TInt index = 0;
        TWsfWlanInfo* wlanInfo = aWlanList->Match( iModel->SelectedWlan(),
                                                   aWlanList->Count() );
        if ( wlanInfo )
            {            
            index = aWlanList->GetArrayIndex( wlanInfo );
            }
        iContainer->UpdateHotSpotsL( formattedList, index );
        } 
    }


// ---------------------------------------------------------------------------
// TWsfMainViewController::UpdateNaviPaneL
// ---------------------------------------------------------------------------
//
void TWsfMainViewController::UpdateNaviPaneL()
    {
    LOG_ENTERFN( "TWsfMainViewController::UpdateNaviPaneL" );   
    HBufC* naviText = iModel->FormatNaviPaneLC();
    iContainer->UpdateNaviPaneL( *naviText );
    CleanupStack::PopAndDestroy( naviText );   
    }


// ---------------------------------------------------------------------------
// TWsfMainViewController::UpdateWlanListL
// ---------------------------------------------------------------------------
//
void TWsfMainViewController::UpdateWlanListL( CWsfWlanInfoArray* aWlanArray )
    {
    LOG_ENTERFN( "TWsfMainViewController::UpdateWlanListL" );   
    UpdateHotSpotsL( aWlanArray );
    UpdateNaviPaneL();
    }

// ---------------------------------------------------------------------------
// TWsfMainViewController::UpdateWlanListInBackgroundL
// ---------------------------------------------------------------------------
//
void TWsfMainViewController::UpdateWlanListInBackgroundL(
        CWsfWlanInfoArray* aWlanArray )
    {
    LOG_ENTERFN( "TWsfMainViewController::UpdateWlanListInBackgroundL" );   
    iModel->FormatWlanListL( aWlanArray );
    }

// ---------------------------------------------------------------------------
// TWsfMainViewController::RefreshL
// ---------------------------------------------------------------------------
//
void TWsfMainViewController::RefreshL()
    {
    LOG_ENTERFN( "TWsfMainViewController::RefreshL" );   
    CDesCArray* formattedList =  iModel->GetWlanList();
    iContainer->UpdateHotSpotsL( formattedList, iModel->SelectedIndex() );  
    UpdateNaviPaneL();      
    }


// ---------------------------------------------------------------------------
// TWsfMainViewController::SelectedItem
// ---------------------------------------------------------------------------
//
TWsfWlanInfo* TWsfMainViewController::SelectedItem()
    {
    LOG_ENTERFN( "TWsfMainViewController::SelectedItem" );
    
    return iValidItem? &iSelectedItem: NULL; 
    }


// ---------------------------------------------------------------------------
// TWsfMainViewController::SetPartner
// ---------------------------------------------------------------------------
//
void TWsfMainViewController::SetPartner( MWsfMainViewPartner& aPartner )
    {
    iPartner = &aPartner;
    }


// ---------------------------------------------------------------------------
// TWsfMainViewController::UpdateSelectedItemL
// ---------------------------------------------------------------------------
//
void TWsfMainViewController::UpdateSelectedItemL()
    {
    LOG_ENTERFN( "TWsfMainViewController::UpdateSelectedItemL" );   

    _ASSERTD( iModel && iContainer );
    
    TInt selectedItem = iContainer->SelectedItem();
    CWsfWlanInfoArray* array = iModel->GetInfoArray();
    if ( array )
        {
        TWsfWlanInfo* item = NULL;
        if ( selectedItem < array->Count() )
            {
            item = array->At( selectedItem );
            }
        
        if ( item )
            {
            iSelectedItem = *item;
            iValidItem = ETrue;
            }
        else
            {
            iValidItem = EFalse;
            }
        }
    
    // Store name of focused WLAN
    if ( iValidItem )
        {        
        HBufC8* ssid = iSelectedItem.GetSsidAsUtf8LC();
        iModel->SetSelectedWlan( ssid );
        CleanupStack::Pop( ssid );
        }
    
    }


// ---------------------------------------------------------------------------
// TWsfMainViewController::HandleUpKeyPressedL
// ---------------------------------------------------------------------------
//    
void TWsfMainViewController::HandleUpKeyPressedL()
    {
    LOG_ENTERFN( "TWsfMainViewController::HandleUpKeyPressedL" );   
    _ASSERTD( iModel );
    
    // Store just listbox index. Needed
    iModel->SetSelectedIndex( iContainer->SelectedItem() );    
    }


// ---------------------------------------------------------------------------
// TWsfMainViewController::HandleDownKeyPressedL
// ---------------------------------------------------------------------------
//
void TWsfMainViewController::HandleDownKeyPressedL()
    {
    LOG_ENTERFN( "TWsfMainViewController::HandleDownKeyPressedL" );   
    _ASSERTD( iModel );

    iModel->SetSelectedIndex( iContainer->SelectedItem() );
    }


// ---------------------------------------------------------------------------
// TWsfMainViewController::HandleSelectionKeyPressedL
// ---------------------------------------------------------------------------
//
void TWsfMainViewController::HandleSelectionKeyPressedL()
    {
    LOG_ENTERFN( "TWsfMainViewController::HandleSelectionKeyPressedL" );   
    _ASSERTD( iPartner );    

    iPartner->ShowMenuBarL();
    }

// End of file