--- a/wlanutilities/wlansniffer/aiplugin/src/wsfaimodel.cpp Thu Aug 19 10:59:40 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,681 +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 CWsfAiModel.
-*
-*/
-
-// EXTERNAL INCLUDES
-#include <badesca.h>
-#include <coemain.h>
-#include <StringLoader.h>
-#include <wsfaipluginrsc.rsg>
-
-// INTERNAL INCLUDES
-#include "wsfaimodel.h"
-#include "wsfwlaninfo.h"
-#include "wsfwlaninfoarray.h"
-#include "wsfaiplugincommon.h"
-#include "wsfwlaninfoarrayvisitor.h"
-#include "wsflogger.h"
-
-// MACROS
-#ifdef _DEBUG
- _LIT( KModelPanic, "CWsfAiModel" );
- #define _ASS_D( cond ) __ASSERT_DEBUG( (cond), \
- User::Panic( KModelPanic, __LINE__) )
-#else
- #define _ASS_D( cond ) {}
-#endif //_DEBUG
-
-// LOCAL DEFINITIONS
-const TInt KListBoxItemMaxLength = 128;
-const TUint KWLanListGranularity = 4;
-
-// List item format
-_LIT( KListItemFormat, "%d\t%S\t%d\t%d" );
-
-// List item format for "Other (unlisted)" item
-_LIT( KHiddenItemFormat, "\t%S" );
-
-
-// CONSTRUCTION AND DESTRUCTION
-// --------------------------------------------------------------------------
-// CWsfAiModel::NewL
-// --------------------------------------------------------------------------
-//
-CWsfAiModel* CWsfAiModel::NewL()
- {
- CWsfAiModel* self = CWsfAiModel::NewLC();
- CleanupStack::Pop( self );
- return self;
- }
-
-
-// --------------------------------------------------------------------------
-// CWsfAiModel::NewLC
-// --------------------------------------------------------------------------
-//
-CWsfAiModel* CWsfAiModel::NewLC()
- {
- CWsfAiModel* self = new( ELeave ) CWsfAiModel;
- CleanupStack::PushL( self );
- self->ConstructL();
- return self;
- }
-
-
-// --------------------------------------------------------------------------
-// CWsfAiModel::~CWsfAiModel
-// --------------------------------------------------------------------------
-//
-CWsfAiModel::~CWsfAiModel()
- {
- delete iWlanInfoBranding;
- delete iFormattedWlanList;
- if ( iStatusRefreshing )
- {
- delete iStatusRefreshing;
- }
- if ( iStatusConnecting )
- {
- delete iStatusConnecting;
- }
- if ( iStatusScanningOff )
- {
- delete iStatusScanningOff;
- }
- if ( iManualSSIDInputting )
- {
- delete iManualSSIDInputting;
- }
- }
-
-
-// --------------------------------------------------------------------------
-// CWsfAiModel::CWsfAiModel
-// --------------------------------------------------------------------------
-//
-CWsfAiModel::CWsfAiModel():
- iCoeEnv( CCoeEnv::Static() ),
- iScanning( EFalse ),
- iConnected( EFalse ),
- iRefreshIndex( iRefreshIcons.Count() - 1 ),
- iConnectingIndex( iConnectingIcons.Count() - 1 )
- {
- }
-
-
-// --------------------------------------------------------------------------
-// CWsfAiModel::ConstructL
-// --------------------------------------------------------------------------
-//
-void CWsfAiModel::ConstructL()
- {
- iFormattedWlanList = new (ELeave) CDesCArrayFlat( KWLanListGranularity );
- iWlanInfoBranding = CWsfWlanInfoArrayVisitor::NewL( ETrue );
- iWlanInfoBranding->LoadFilterDefinitionsL();
-
- iRefreshIcons[0] = EWlanOnIcon_0;
- iRefreshIcons[1] = EWlanOnIcon_1;
- iRefreshIcons[2] = EWlanOnIcon;
- iRefreshIcons[3] = EWlanOnIcon_1;
-
- iConnectingIcons[0] = EWlanOnIcon_0;
- iConnectingIcons[1] = EWlanOnIcon_1;
- iConnectingIcons[2] = EWlanOnIcon;
- iConnectingIcons[3] = EWlanOnIcon_1;
- }
-
-
-// --------------------------------------------------------------------------
-// CWsfAiModel::FormatWlanListL
-// --------------------------------------------------------------------------
-//
-CDesCArrayFlat* CWsfAiModel::FormatWlanListL( CWsfWlanInfoArray* aWlanList, const TBool aUIPrioritySort )
- {
- LOG_ENTERFN( "CWsfAiModel::FormatWlanListL" );
- HBufC* item = HBufC::NewLC( KListBoxItemMaxLength );
- TPtr ptr( item->Des() );
- iFormattedWlanList->Reset();
-
- // Function expects that items in list are already in proper order
- iWlanInfoArray = aWlanList;
-
- if ( iWlanInfoArray )
- {
- if ( aUIPrioritySort )
- {
- iWlanInfoArray->SetUIPrioritySort( ETrue );
- iWlanInfoArray->SortArrayL( *iWlanInfoBranding );
- // Sort Array with default sort
- // this sets the highest UI priority networks on top
- iWlanInfoArray->SortArrayL( );
- iWlanInfoArray->SetUIPrioritySort( EFalse );
- }
- else
- {
- iWlanInfoArray->SortArrayL( *iWlanInfoBranding );
- }
-
- for (TInt i = 0; i < iWlanInfoArray->Count(); ++i )
- {
- TWsfWlanInfo* wlanInfo = iWlanInfoArray->At(i);
-
- // Hidden WLAN item is appended later for unknown hidden networks
- if ( !wlanInfo || ( wlanInfo->Hidden() && !wlanInfo->iIapId ) )
- {
- continue;
- }
-
- // known hidden wlans are also "visible"
- ptr.Zero();
- FormatWlanSingleLineL( *wlanInfo, ptr, EFalse );
- iFormattedWlanList->AppendL( ptr );
- }
- }
-
- // now add "Other (unlisted)..." for hidden networks (always visible)
- // make up a dummy wlaninfo
- TWsfWlanInfo dummy;
-
- ptr.Zero();
- FormatHiddenWlanItemL( dummy, ptr );
- iFormattedWlanList->AppendL( ptr );
-
- CleanupStack::PopAndDestroy ( item );
- return iFormattedWlanList;
- }
-
-
-// --------------------------------------------------------------------------
-// CWsfAiModel::GetWlanList
-// --------------------------------------------------------------------------
-//
-CDesCArrayFlat* CWsfAiModel::GetWlanList()
- {
- LOG_ENTERFN( "CWsfAiModel::GetWlanList" );
- return iFormattedWlanList;
- }
-
-
-// --------------------------------------------------------------------------
-// CWsfAiModel::GetInfoArray
-// --------------------------------------------------------------------------
-//
-CWsfWlanInfoArray* CWsfAiModel::GetInfoArray()
- {
- LOG_ENTERFN( "CWsfAiModel::GetInfoArray" );
- return iWlanInfoArray;
- }
-
-
-// --------------------------------------------------------------------------
-// CWsfAiModel::FormatSingleLineWlanListL
-// --------------------------------------------------------------------------
-//
-CDesCArrayFlat* CWsfAiModel::FormatSingleLineWlanListL(
- CWsfWlanInfoArray* aWlanList )
- {
- LOG_ENTERFN( "CWsfAiModel::FormatSingleLineWlanListL" );
- iWlanInfoArray = aWlanList;
-
- if ( iWlanInfoArray )
- {
- iWlanInfoArray->SetUIPrioritySort( ETrue );
- iWlanInfoArray->SortArrayL( *iWlanInfoBranding );
-
- // Sort Array with default sort
- // this sets the highest UI priority networks on top
- iWlanInfoArray->SortArrayL();
- iWlanInfoArray->SetUIPrioritySort( EFalse );
- }
-
- iFormattedWlanList->Reset();
-
- HBufC* item = HBufC::NewLC( KListBoxItemMaxLength );
- TPtr ptr( item->Des() );
-
- if ( iConnected )
- {
- FormatConnectedL( ptr );
- iFormattedWlanList->AppendL( ptr );
- }
- else if ( iConnecting )
- {
- FormatConnectingL();
- }
- else if ( !iScanning )
- {
- FormatStatusOffL( ptr );
- iFormattedWlanList->AppendL( ptr );
- }
- // if there's wlans avail
- else if ( iWlanInfoArray && iWlanInfoArray->Count() )
- {
- CheckWlansL( iWlanInfoArray, ptr );
- iFormattedWlanList->AppendL( ptr );
- }
- else
- {
- // no wlans available
- FormatNoWlansAvailableL( ptr );
- iFormattedWlanList->AppendL( ptr );
- }
-
- CleanupStack::PopAndDestroy( item );
-
- return iFormattedWlanList;
- }
-
-
-// --------------------------------------------------------------------------
-// CWsfAiModel::FormatRefreshingL
-// --------------------------------------------------------------------------
-//
-CDesCArrayFlat* CWsfAiModel::FormatRefreshingL()
- {
- LOG_ENTERFN( "CWsfAiModel::FormatRefreshingL" );
- iFormattedWlanList->Reset();
- HBufC* item = HBufC::NewLC( KListBoxItemMaxLength );
- TPtr ptr( item->Des() );
-
- if ( !iStatusRefreshing )
- {
- iStatusRefreshing = StringLoader::LoadL(
- R_QTN_SNIFFER_PLUG_IN_REFRESHING );
- }
-
- ptr.Format( KListItemFormat, ScanningOn() ?
- iRefreshIcons[ iRefreshIndex ]
- : EWlanOffIcon,
- iStatusRefreshing,
- ETransparentIcon,
- ETransparentIcon );
-
- iFormattedWlanList->AppendL( ptr );
- CleanupStack::PopAndDestroy ( item );
-
- return iFormattedWlanList;
- }
-
-
-// --------------------------------------------------------------------------
-// CWsfAiModel::FormatConnecting
-// --------------------------------------------------------------------------
-//
-CDesCArrayFlat* CWsfAiModel::FormatConnectingL()
- {
- LOG_ENTERFN( "CWsfAiModel::FormatConnectingL" );
- iFormattedWlanList->Reset();
- HBufC* item = HBufC::NewLC( KListBoxItemMaxLength );
- TPtr ptr( item->Des() );
-
- if ( !iStatusConnecting )
- {
- iStatusConnecting = StringLoader::LoadL(
- R_QTN_SNIFFER_PLUG_IN_CONNECTING );
- }
-
- ptr.Format( KListItemFormat, iConnectingIcons[ iConnectingIndex ],
- iStatusConnecting,
- ETransparentIcon,
- ETransparentIcon );
-
- iFormattedWlanList->AppendL( ptr );
- CleanupStack::PopAndDestroy ( item );
- return iFormattedWlanList;
- }
-
-
-// --------------------------------------------------------------------------
-// CWsfAiModel::AppendBrandIconsL
-// --------------------------------------------------------------------------
-//
-void CWsfAiModel::AppendBrandIconsL( CAknIconArray& aIconArray )
- {
- LOG_ENTERFN( "CWsfAiModel::AppendBrandIconsL" );
- iWlanInfoBranding->AppendBrandingIconsL( aIconArray );
- }
-
-
-// --------------------------------------------------------------------------
-// CWsfAiModel::FormatHiddenWlanItemL
-// --------------------------------------------------------------------------
-//
-void CWsfAiModel::FormatHiddenWlanItemL( TWsfWlanInfo& /*aWlan*/,
- TPtr& aItem )
- {
- LOG_ENTERFN( "CWsfAiModel::FormatHiddenWlanItemL" );
- if ( !iManualSSIDInputting )
- {
- iManualSSIDInputting = StringLoader::LoadL(
- R_QTN_WLAN_MANUAL_SSID_INPUT );
- }
-
- // Only Hidden WLAN text is shown.
- // No icons for this item
- aItem.Format( KHiddenItemFormat, iManualSSIDInputting );
- }
-
-
-// --------------------------------------------------------------------------
-// CWsfAiModel::FormatStatusOffL
-// --------------------------------------------------------------------------
-//
-void CWsfAiModel::FormatStatusOffL( TPtr& aItem )
- {
- LOG_ENTERFN( "CWsfAiModel::FormatStatusOffL" );
- if ( !iStatusScanningOff )
- {
- iStatusScanningOff = StringLoader::LoadL(
- R_QTN_SNIFFER_PLUG_IN_SCANNING_OFF );
- }
-
- aItem.Format( KListItemFormat,
- EWlanOffIcon,
- iStatusScanningOff,
- ETransparentIcon,
- ETransparentIcon );
- }
-
-
-// --------------------------------------------------------------------------
-// CWsfAiModel::FormatNoWlansAvailableL
-// --------------------------------------------------------------------------
-//
-void CWsfAiModel::FormatNoWlansAvailableL( TPtr& aItem )
- {
- LOG_ENTERFN( "CWsfAiModel::FormatNoWlansAvailableL" );
-
- if ( !iNoWLANsAvailable )
- {
- iNoWLANsAvailable = StringLoader::LoadL(
- R_QTN_STATUS_NO_WLANS_AVAILABLE );
- }
-
- aItem.Format( KListItemFormat,
- ScanningOn()? EWlanOnIcon: EWlanOffIcon,
- iNoWLANsAvailable,
- ETransparentIcon,
- ETransparentIcon );
- }
-
-
-// --------------------------------------------------------------------------
-// CWsfAiModel::FormatWlanSingleLineL
-// --------------------------------------------------------------------------
-//
-void CWsfAiModel::FormatWlanSingleLineL( TWsfWlanInfo& aWlan,
- TPtr& aItem,
- TBool aSingleLine )
- {
- LOG_ENTERFN( "CWsfAiModel::FormatWlanSingleLineL" );
- //Ssid as primary text
- HBufC* ssid( NULL );
- HBufC* formatData( NULL );
- TInt column1Icon( 0 );
-
- if ( aWlan.iNetworkName.Length() ) // If there is IAP
- {
- ssid = aWlan.GetIapNameAsUnicodeLC();
- }
- else // If there no IAP
- {
- ssid = aWlan.GetSsidAsUnicodeLC();
- }
-
-
- column1Icon = ETransparentIcon;
-
- if ( aSingleLine )
- {
- // AI single line mode
- if ( aWlan.Connected() )
- {
- column1Icon = EConnectedNWIcon;
- }
- else if ( aWlan.Known() )
- {
- column1Icon = EWlanOnIcon;
- }
-
- // format ssid into string '<ssid>'
- formatData = StringLoader::LoadLC( R_SSID, *ssid, iCoeEnv );
- }
- else
- {
- // Search wlans dialog multiline mode
-
- if ( aWlan.BrandId() )
- {
- column1Icon = EWlanOffIcon + aWlan.BrandId();
- }
- else if ( aWlan.Connected() )
- {
- column1Icon = EConnectedNWIcon; // qgn_prop_wlan_bearer.svg
- }
- else if ( aWlan.Known() )
- {
- column1Icon = EKnownNWIcon; // qgn_prop_wlan_bearer.svg
- }
- }
-
-
- // Signal strenght for column 4
- // No signal icon is set by default in case is SingleLine mode off
- TInt column3Icon = aSingleLine ? ETransparentIcon:
- ENoSignalIcon; //qgn_transparent.svg
- TInt column4Icon = ETransparentIcon;
-
- if ( aWlan.Connected() || !aSingleLine )
- {
- // Column 3
- // Show secure icon if network is secure.
- // By default show transparant icon.
- column4Icon = aWlan.Secure()? ESecureNetworkIcon: ETransparentIcon;
-
- switch ( aWlan.SignalStrength() )
- {
- case EPoor:
- {
- //qgn_indi_wlan_signal_low_add.svg
- column3Icon = EPoorSignal;
- break;
- }
- case EAverage:
- {
- //qgn_indi_wlan_signal_med_add.svg
- column3Icon = EAverageSignal;
- break;
- }
- case EExcelent:
- {
- //qgn_indi_wlan_signal_good_add.svg
- column3Icon = EExcelentSignal;
- break;
- }
-
- case ENoSignal:
- default:
- {
- //qgn_indi_wlan_signal_no_wlan.svg
- column3Icon = ENoSignalIcon;
- break;
- }
- }
- }
-
- if ( aSingleLine )
- {
- aItem.Format( KListItemFormat,
- column1Icon,
- formatData,
- column3Icon,
- column4Icon );
- CleanupStack::PopAndDestroy( formatData );
- }
- else
- {
- aItem.Format( KListItemFormat,
- column1Icon,
- ssid,
- column3Icon,
- column4Icon );
- }
- CleanupStack::PopAndDestroy( ssid );
- }
-
-
-// --------------------------------------------------------------------------
-// CWsfAiModel::FormatUnknownWlansSingleLineL
-// --------------------------------------------------------------------------
-//
-void CWsfAiModel::FormatUnknownWlansSingleLineL(
- const TBool aMultipleUnknownWlans,
- TPtr& aItem )
- {
- LOG_ENTERFN( "CWsfAiModel::FormatUnknownWlansSingleLineL" );
- TInt unknownItemResource = aMultipleUnknownWlans ?
- R_QTN_SNIFFER_PLUG_IN_UNKNOWN_SSIDS_FOUND :
- R_QTN_SNIFFER_PLUG_IN_UNKNOWN_SSID_FOUND;
-
- HBufC* unknownWlansStatusText = iCoeEnv->AllocReadResourceLC(
- unknownItemResource );
-
- aItem.Format( KListItemFormat, ScanningOn()? EWlanOnIcon: EWlanOffIcon,
- unknownWlansStatusText,
- ETransparentIcon,
- ETransparentIcon );
-
- CleanupStack::PopAndDestroy( unknownWlansStatusText );
- }
-
-
-// --------------------------------------------------------------------------
-// CWsfAiModel::FindPreferredKnownWlan
-// --------------------------------------------------------------------------
-//
-TInt CWsfAiModel::FindPreferredKnownWlan( CWsfWlanInfoArray* aWlanList )
- {
- LOG_ENTERFN( "CWsfAiModel::FindPreferredKnownWlan" );
- _ASS_D( aWlanList );
- _ASS_D( aWlanList->Count() );
-
- TWsfWlanInfo *preferred = NULL;
- TWsfWlanInfo *temp = NULL;
- TInt loopIndex( 0 );
- TInt preferredIndex( 0 );
- //loop through the list and find Max signal strength amont know wlans...
-
- preferred = aWlanList->At( loopIndex );
- loopIndex++;
-
- for ( ; loopIndex < aWlanList->Count(); ++loopIndex )
- {
- temp = aWlanList->At( loopIndex );
- if ( !temp->Known() )
- {
- // not known net any more...
- break;
- }
- // check the signal strength
- if ( temp->SignalStrength() > preferred->SignalStrength() )
- {
- preferredIndex = loopIndex;
- preferred = temp;
- }
- }
- return preferredIndex;
- }
-
-
-// --------------------------------------------------------------------------
-// CWsfAiModel::CheckWlansL
-// --------------------------------------------------------------------------
-//
-void CWsfAiModel::CheckWlansL( CWsfWlanInfoArray* aWlanList, TPtr& aItem )
- {
- LOG_ENTERFN( "CWsfAiModel::CheckWlansL" );
- _ASS_D( aWlanList );
- _ASS_D( aWlanList->Count() );
- // first check the connected
- // if there's connection... it is the first item in array
-
- if ( aWlanList->At( 0 )->Known() )
- {
- FormatWlanSingleLineL( *aWlanList->At( 0 ), aItem, ETrue );
- }
- else
- {
- TBool multipleUnknownWlans = ( aWlanList->Count() > 1 );
- FormatUnknownWlansSingleLineL( multipleUnknownWlans, aItem );
- }
- }
-
-
-// --------------------------------------------------------------------------
-// CWsfAiModel::FormatConnectedL
-// --------------------------------------------------------------------------
-//
-void CWsfAiModel::FormatConnectedL( TPtr& aItem )
- {
- LOG_ENTERFN( "CWsfAiModel::FormatConnectedL" );
- // Ssid as primary text
- FormatWlanSingleLineL( iConnectedWlanInfo, aItem, ETrue );
- }
-
-// --------------------------------------------------------------------------
-// CWsfAiModel::InitializeRefreshAnimation
-// --------------------------------------------------------------------------
-//
-void CWsfAiModel::InitializeRefreshAnimation()
- {
- LOG_ENTERFN( "CWsfAiModel::InitializeRefreshAnimation" );
- iRefreshIndex = 0;
- }
-
-// --------------------------------------------------------------------------
-// CWsfAiModel::InitializeRefreshAnimation
-// --------------------------------------------------------------------------
-//
-void CWsfAiModel::InitializeConnectingAnimation()
- {
- LOG_ENTERFN( "CWsfAiModel::InitializeConnectingAnimation" );
- iConnectingIndex = 0;
- }
-
-// --------------------------------------------------------------------------
-// CWsfAiModel::AnimateRefresh
-// --------------------------------------------------------------------------
-//
-void CWsfAiModel::AnimateRefresh()
- {
- LOG_ENTERFN( "CWsfAiModel::AnimateRefresh" );
- ++iRefreshIndex %= iRefreshIcons.Count();
- }
-
-// --------------------------------------------------------------------------
-// CWsfAiModel::AnimateRefresh
-// --------------------------------------------------------------------------
-//
-void CWsfAiModel::AnimateConnecting()
- {
- LOG_ENTERFN( "CWsfAiModel::AnimateConnecting" );
- ++iConnectingIndex %= iConnectingIcons.Count();
- }
-
-
-
-// End of file
-