--- a/wlanutilities/wlansniffer/mainapplication/src/wsfconnecteddetailsmodel.cpp Thu Aug 19 10:59:40 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,573 +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: Details view Model
-*
-*/
-
-
-// EXTERNAL INCLUDES
-#include <badesca.h>
-#include <StringLoader.h>
-#include <wlansniffer.rsg>
-#include <coemain.h>
-#include <AknUtils.h>
-#include <avkon.rsg>
-#include <nifvar.h>
-#include <rconnmon.h>
-
-// INTERNAL INCLUDES
-#include "wsfwlaninfo.h"
-#include "wsfconnecteddetailsmodel.h"
-#include "wsfwlaninfoarray.h"
-#include "wsfactivewaiter.h"
-#include "wsflogger.h"
-
-
-// LOCAL DEFINITIONS
-#ifdef _DEBUG
- _LIT( KDetailsViewModelPanic, "CWsfConnectedDetailsModel" );
- #define _ASSERTD( cond ) __ASSERT_DEBUG( (cond), \
- User::Panic( KDetailsViewModelPanic, __LINE__) )
-#else
- #define _ASSERTD( cond ) {}
-#endif //_DEBUG
-
-// the size of the Details Listbox's array
-const TInt KWlanInfoGranularity = 3;
-
-// Listbox element format string
-_LIT( KListItemFormat, "%S\t%S" );
-
-// invalid connection id
-const TInt KInvalidConnectionId = 0;
-
-
-// ---------------------------------------------------------------------------
-// CWsfConnectedDetailsModel::CWsfConnectedDetailsModel
-// ---------------------------------------------------------------------------
-//
-CWsfConnectedDetailsModel::CWsfConnectedDetailsModel():
- iIsConnActive( EFalse ),
- iConnectionId( KInvalidConnectionId ),
- iCoeEnv( CCoeEnv::Static() )
- {
- }
-
-// ---------------------------------------------------------------------------
-// CWsfConnectedDetailsModel::ConstructL
-// ---------------------------------------------------------------------------
-//
-void CWsfConnectedDetailsModel::ConstructL()
- {
- LOG_ENTERFN( "CWsfConnectedDetailsModel::ConstructL" );
- iFormattedWlanInfo = new (ELeave) CDesCArrayFlat( KWlanInfoGranularity );
- iConnectionMonitor.ConnectL();
- FindWlanConnectionL();
- }
-
-// ---------------------------------------------------------------------------
-// CWsfConnectedDetailsModel::NewL
-// ---------------------------------------------------------------------------
-//
-CWsfConnectedDetailsModel* CWsfConnectedDetailsModel::NewL()
- {
- LOG_ENTERFN( "CWsfConnectedDetailsModel::NewL" );
- CWsfConnectedDetailsModel* self = CWsfConnectedDetailsModel::NewLC();
- CleanupStack::Pop( self );
- return self;
- }
-
-// ---------------------------------------------------------------------------
-// CWsfConnectedDetailsModel::NewLC
-// ---------------------------------------------------------------------------
-//
-CWsfConnectedDetailsModel* CWsfConnectedDetailsModel::NewLC()
- {
- LOG_ENTERFN( "CWsfConnectedDetailsModel::NewLC" );
- CWsfConnectedDetailsModel* self = new( ELeave ) CWsfConnectedDetailsModel;
- CleanupStack::PushL( self );
- self->ConstructL();
- return self;
- }
-
-// ---------------------------------------------------------------------------
-// CWsfConnectedDetailsModel::~CWsfConnectedDetailsModel
-// ---------------------------------------------------------------------------
-//
-CWsfConnectedDetailsModel::~CWsfConnectedDetailsModel()
- {
- LOG_ENTERFN(
- "CWsfConnectedDetailsModel::~CWsfConnectedDetailsModel" );
- iConnectionMonitor.CancelAsyncRequest(EConnMonGetUintAttribute);
- iConnectionMonitor.CancelAsyncRequest(EConnMonGetIntAttribute);
- iConnectionMonitor.Close();
- delete iFormattedWlanInfo;
- }
-
-
-// ---------------------------------------------------------------------------
-// CWsfConnectedDetailsModel::FindWlanConnectionL
-// ---------------------------------------------------------------------------
-//
-void CWsfConnectedDetailsModel::FindWlanConnectionL()
- {
- LOG_ENTERFN( "CWsfConnectedDetailsModel::FindWlanConnectionL" );
-
-#ifndef __WINS__
- // first call, need to get the connection parameters
- iConnectionId = KInvalidConnectionId;
- TUint connectionCount( 0 );
-
- CWsfActiveWaiter* waiter = CWsfActiveWaiter::NewL();
- iConnectionMonitor.GetConnectionCount( connectionCount, waiter->iStatus );
- waiter->WaitForRequest();
-
- if ( waiter->iStatus.Int() == KErrNone )
- {
- LOG_WRITEF( "connectionCount = %d", connectionCount );
- // find the connection with WLAN bearer
- // that will be the selected WLAN
- for ( TUint i = 1; i <= connectionCount; ++i )
- {
- TUint connectionId( KInvalidConnectionId );
- TUint subConnectionCount( 0 );
- TConnMonBearerType bearerType( EBearerUnknown );
-
- iConnectionMonitor.GetConnectionInfo( i,
- connectionId,
- subConnectionCount );
- iConnectionMonitor.GetIntAttribute( connectionId,
- 0,
- KBearer,
- ( TInt& )bearerType,
- waiter->iStatus );
- waiter->WaitForRequest();
-
- if ( waiter->iStatus.Int() == KErrNone &&
- bearerType == EBearerWLAN )
- {
- LOG_WRITEF( "found connection id = %d", connectionId );
- iConnectionId = connectionId;
- break;
- }
- }
- }
-
- if ( iConnectionId != KInvalidConnectionId )
- {
- iIsConnActive = ETrue;
-
- // now we have the connectiond ID, ask the start time
- LOG_WRITE( "querying start time..." );
-
- TConnMonTimeBuf timeBuf;
- iConnectionMonitor.GetPckgAttribute( iConnectionId, 0, KStartTime,
- timeBuf, waiter->iStatus );
- waiter->WaitForRequest();
-
- if ( waiter->iStatus.Int() == KErrNone )
- {
- iStartTime = timeBuf();
- }
- }
-
- delete waiter;
-
-#else // __WINS__
-
- // for testing
- iStartTime.UniversalTime();
- iIsConnActive = ETrue;
-
-#endif // __WINS__
-
- }
-
-
-// ---------------------------------------------------------------------------
-// CWsfConnectedDetailsModel::FormatWlanInfoL
-// ---------------------------------------------------------------------------
-//
-CDesCArrayFlat* CWsfConnectedDetailsModel::FormatWlanInfoL(
- TWsfWlanInfo* aWlanInfo,
- CWsfWlanInfoArray* aWlanArray )
- {
- LOG_ENTERFN( "CWsfConnectedDetailsModel::FormatWlanInfoL" );
- _ASSERTD( aWlanArray );
-
- // While the system loads the dialog and the connection lost that could
- // cause problems eg.: "No data" displayed
- if ( !aWlanInfo || !VisibleWlans( *aWlanArray ) )
- {
- // bad wlan info or no visible wlans
- return iFormattedWlanInfo;
- }
-
- iWlanInfo = *aWlanInfo;
- iWlanArray = aWlanArray;
-
- RefreshCurrentWlanInfoL();
-
-
- return GetWlanDetails();
- }
-
-
-// ---------------------------------------------------------------------------
-// CWsfConnectedDetailsModel::RefreshCurrentWlanInfoL
-// ---------------------------------------------------------------------------
-//
-CDesCArrayFlat* CWsfConnectedDetailsModel::RefreshCurrentWlanInfoL()
- {
- LOG_ENTERFN( "CWsfConnectedDetailsModel::RefreshCurrentWlanInfoL" );
- LOG_WRITEF( "iIsConnActive: %d", iIsConnActive );
- _ASSERTD( iWlanArray );
- if ( iRefreshing )
- {
- return iFormattedWlanInfo;
- }
-
- // mutual exclusion
- iRefreshing = ETrue;
-
-#ifndef __WINS__
- if ( iIsConnActive )
- {
- LOG_WRITEF( "RefreshCurrentWlanInfoL - iConnectionId: %d",
- iConnectionId );
-
- CWsfActiveWaiter* waiter = CWsfActiveWaiter::NewL();
- TInt connStat( 0 );
- iConnectionMonitor.GetIntAttribute( iConnectionId,
- 0,
- KConnectionStatus,
- connStat,
- waiter->iStatus );
- waiter->WaitForRequest();
-
- LOG_WRITEF( "connStat: %d", connStat );
- LOG_WRITEF( "status.Int(): %d", waiter->iStatus.Int() );
-
- if ( waiter->iStatus.Int() != KErrNone )
- {
- delete waiter;
- iRefreshing = EFalse;
- return iFormattedWlanInfo;
- }
-
- delete waiter;
-
- // set the connection status
- LOG_WRITEF( "connStat: %d", connStat );
- if ( ( connStat == KLinkLayerOpen ) ||
- ( connStat == KConnectionOpen ) )
- {
- iIsConnActive = ETrue;
- }
- else
- {
- iIsConnActive = EFalse;
- }
- }
-
-#endif // __WINS__
-
- iFormattedWlanInfo->Reset();
-
- // create array of connected WLAN data
- FormatAndAppendConnectedWlanSsidL();
- FormatAndAppendDurationL();
- FormatAndAppendTransferredL();
-
- iRefreshing = EFalse;
-
- return GetWlanDetails();
- }
-
-
-// ---------------------------------------------------------------------------
-// CWsfConnectedDetailsModel::GetWlanDetails
-// ---------------------------------------------------------------------------
-//
-CDesCArrayFlat* CWsfConnectedDetailsModel::GetWlanDetails()
- {
- LOG_ENTERFN( "CWsfConnectedDetailsModel::GetWlanDetails" );
-#ifdef _DEBUG
- const TInt KThatLongBufferWillMakeDo = 100;
- for( TInt i = 0; i < iFormattedWlanInfo->MdcaCount(); i++)
- {
- TPtrC temp = iFormattedWlanInfo->MdcaPoint( i );
- TBuf<KThatLongBufferWillMakeDo> tempElement = temp;
- LOG_WRITEF( "iFormattedWlanInfo: %S", &tempElement );
- }
-#endif
-
- return iFormattedWlanInfo;
- }
-
-
-// ---------------------------------------------------------------------------
-// CWsfConnectedDetailsModel::WlanSsid
-// ---------------------------------------------------------------------------
-//
-const TDesC8& CWsfConnectedDetailsModel::WlanSsid() const
- {
- return iWlanInfo.iSsid;
- }
-
-
-// ---------------------------------------------------------------------------
-// CWsfConnectedDetailsModel::FormatListBoxItemLC
-// ---------------------------------------------------------------------------
-//
-HBufC* CWsfConnectedDetailsModel::FormatListBoxItemLC(
- const TUint aResourceId,
- const TDesC& aValueText ) const
- {
- LOG_ENTERFN( "CWsfConnectedDetailsModel::FormatListBoxItemLC" );
- // hold the column name on list item
- HBufC* columnName = NULL;
-
- if ( aResourceId )
- {
- columnName = StringLoader::LoadLC( aResourceId );
- }
- else
- {
- columnName = KNullDesC().AllocLC();
- }
-
-
- // Holds the list box item
- HBufC* listBoxItem = HBufC::NewL( KListItemFormat().Length()+
- columnName->Length() +
- aValueText.Length() );
-
- // For formating needs
- TPtr listBoxItemPrt = listBoxItem->Des();
-
- // Format string ( KListItemFormat = %S\t%S )
- listBoxItemPrt.Format( KListItemFormat, columnName, &aValueText );
- CleanupStack::PopAndDestroy( columnName );
- CleanupStack::PushL( listBoxItem );
- return listBoxItem;
- }
-
-
-// ---------------------------------------------------------------------------
-// CWsfConnectedDetailsModel::FormatAndAppendConnectedWlanSsidL
-// ---------------------------------------------------------------------------
-//
-void CWsfConnectedDetailsModel::FormatAndAppendConnectedWlanSsidL()
- {
- LOG_ENTERFN(
- "CWsfConnectedDetailsModel::FormatAndAppendConnectedWlanSsidL" );
- HBufC* wlanName( NULL );
-
- if ( iWlanInfo.iNetworkName.Length() ) // If there is IAP
- {
- wlanName = iWlanInfo.GetIapNameAsUnicodeLC();
- }
- else // If there no IAP
- {
- wlanName = iWlanInfo.GetSsidAsUnicodeLC();
- }
-
- HBufC* listBoxItem = FormatListBoxItemLC(
- R_QTN_WLAN_ITEM_HEADING_TEXT_WLAN,
- *wlanName );
-
- iFormattedWlanInfo->AppendL( *listBoxItem );
- CleanupStack::PopAndDestroy( listBoxItem );
- CleanupStack::PopAndDestroy( wlanName );
- }
-
-
-// ---------------------------------------------------------------------------
-// CWsfConnectedDetailsModel::FormatAndAppendDurationL
-// ---------------------------------------------------------------------------
-//
-void CWsfConnectedDetailsModel::FormatAndAppendDurationL()
- {
- LOG_ENTERFN( "CWsfConnectedDetailsModel::FormatAndAppendDurationL" );
- HBufC* duration = FormatDurationLC();
- HBufC* listBoxItem = FormatListBoxItemLC(
- R_QTN_WLAN_ITEM_HEADING_DURATION,
- *duration );
-
- iFormattedWlanInfo->AppendL( *listBoxItem );
- CleanupStack::PopAndDestroy( listBoxItem );
- CleanupStack::PopAndDestroy( duration );
- }
-
-
-// ---------------------------------------------------------------------------
-// CWsfConnectedDetailsModel::FormatAndAppendTransferredL
-// ---------------------------------------------------------------------------
-//
-void CWsfConnectedDetailsModel::FormatAndAppendTransferredL()
- {
- LOG_ENTERFN(
- "CWsfConnectedDetailsModel::FormatAndAppendTransferredL" );
- HBufC* transferredData = FormatTransferredLC();
- HBufC* listBoxItem = FormatListBoxItemLC( R_QTN_WLAN_ITEM_HEADING_TRANSF,
- *transferredData );
-
- iFormattedWlanInfo->AppendL( *listBoxItem );
- CleanupStack::PopAndDestroy( listBoxItem );
- CleanupStack::PopAndDestroy( transferredData );
- }
-
-
-// ---------------------------------------------------------------------------
-// CWsfConnectedDetailsModel::FormatDurationLC
-// ---------------------------------------------------------------------------
-//
-HBufC* CWsfConnectedDetailsModel::FormatDurationLC()
- {
- LOG_ENTERFN( "CWsfConnectedDetailsModel::FormatDurationLC" );
- const TUint KTimeStringLength = 64;
-
- if ( iIsConnActive )
- {
- // if connection is still active, update the duration
- TTime now;
- now.UniversalTime();
- iDuration = now.MicroSecondsFrom( iStartTime );
- }
-
- HBufC* timeString = HBufC::NewLC( KTimeStringLength );
- TPtr16 tempBuf( timeString->Des() );
-
- HBufC* temp = StringLoader::LoadLC( R_QTN_TIME_DURAT_LONG_WITH_ZERO );
-
- TTime activeTime( iDuration.Int64() );
- activeTime.FormatL( tempBuf, *temp );
- CleanupStack::PopAndDestroy( temp );
-
- TPtr timePtr = timeString->Des();
- AknTextUtils::DisplayTextLanguageSpecificNumberConversion( timePtr );
-
- return timeString;
- }
-
-
-// ---------------------------------------------------------------------------
-// CWsfConnectedDetailsModel::FormatTransferredLC
-// ---------------------------------------------------------------------------
-//
-HBufC* CWsfConnectedDetailsModel::FormatTransferredLC()
- {
- LOG_ENTERFN( "CWsfConnectedDetailsModel::FormatTransferredLC" );
-
-#ifndef __WINS__
- CWsfActiveWaiter* waiter = CWsfActiveWaiter::NewL();
-
- TUint uplink( 0 );
- TUint downlink( 0 );
-
- if ( iIsConnActive && iConnectionId != KInvalidConnectionId )
- {
- // if connection is still active, update the transmitted bytes
- iConnectionMonitor.GetUintAttribute( iConnectionId, 0, KUplinkData,
- uplink, waiter->iStatus );
- waiter->WaitForRequest();
- }
-
- if ( waiter->iStatus.Int() == KErrNone
- && iIsConnActive
- && iConnectionId != KInvalidConnectionId )
- {
- iConnectionMonitor.GetUintAttribute( iConnectionId, 0, KDownlinkData,
- downlink, waiter->iStatus );
- waiter->WaitForRequest();
-
- }
-
- iBytesTransmitted = uplink + downlink;
- delete waiter;
-
-#endif
-
- const TUint KTransferredBytesFormatBuf = 16;
- const TUint KTransferredBytesWidth = 10;
- const TUint KTransferredBytesDecimalPlaces = 2;
- const TUint KKiloByte = 1024;
- TUint resId;
-
- TBuf<KTransferredBytesFormatBuf> buf;
-
- TReal denom( KKiloByte );
-
- if ( iBytesTransmitted < KKiloByte*KKiloByte )
- {
- denom = KKiloByte;
- resId = R_QTN_WLAN_ITEM_KB;
- }
- else
- {
- denom = KKiloByte*KKiloByte;
- resId = R_QTN_WLAN_ITEM_MB;
- }
-
- TReal value = TReal( iBytesTransmitted ) / denom;
-
- TRealFormat realFormat( KTransferredBytesWidth,
- KTransferredBytesDecimalPlaces );
-
- HBufC* number = HBufC::NewLC( KTransferredBytesWidth );
- number->Des().Num( value, realFormat );
-
- _LIT( KUdFormatLarge, "%S" );
- buf.Format( KUdFormatLarge, number );
- CleanupStack::PopAndDestroy( number );
-
- HBufC* loadedTxt = StringLoader::LoadLC( resId, buf, iCoeEnv );
-
-
- // Convert digits
- TPtr loadTextPtr( loadedTxt->Des() );
- AknTextUtils::DisplayTextLanguageSpecificNumberConversion( loadTextPtr );
-
- return loadedTxt;
- }
-
-
-// ---------------------------------------------------------------------------
-// CWsfConnectedDetailsModel::VisibleWlans
-// ---------------------------------------------------------------------------
-//
-TInt CWsfConnectedDetailsModel::VisibleWlans( CWsfWlanInfoArray& aArray )
- {
- LOG_ENTERFN( "CWsfConnectedDetailsModel::VisibleWlans" );
- TInt i = 0;
- TBool hiddenFound = EFalse;
- TWsfWlanInfo* wlanInfo;
- while ( i < aArray.Count() && !hiddenFound )
- {
- wlanInfo = aArray[i];
- if ( wlanInfo->Hidden() && !wlanInfo->Known() )
- {
- hiddenFound = ETrue;
- }
- else
- {
- ++i;
- }
- }
- return i;
- }
-
-// END OF FILE
-