--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/wlanutilities/wlansniffer/aiplugin/src/wsfaiplugin.cpp Wed Sep 01 12:20:32 2010 +0100
@@ -0,0 +1,884 @@
+/*
+* 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 CWsfAiPlugin
+*
+*/
+
+
+
+// EXTERNAL INCLUDES
+#include <aicontentobserver.h>
+#include <aiutility.h>
+#include <apgcli.h>
+#include <wsfaipluginrsc.rsg>
+
+#include <e32std.h>
+#include <ecom/ecom.h>
+#include <ecom/implementationproxy.h>
+
+#include <f32file.h>
+#include <AknsConstants.h>
+#include <AknUtils.h>
+#include <StringLoader.h>
+#include <bautils.h>
+#include <avkon.rsg>
+#include <apgtask.h>
+#include <eiklabel.h>
+
+#include <data_caging_path_literals.hrh> // KDC_APP_BITMAP_DIR
+
+// INTERNAL INCLUDES
+#include "wsfaiplugin.h"
+#include "wsfaipluginuids.hrh"
+#include "wsfaiplugincontentmodel.h"
+#include "wsfaimodel.h"
+#include "wsfmodel.h"
+#include "wsfaiview.h"
+#include "wsficonarraycreator.h"
+#include "wsfdbobserver.h"
+#include "wsflogger.h"
+#include "wsfactivewrappers.h"
+
+
+// define icon id for Navigation Bar icon
+LOCAL_D const TUid KUidSnifferApp = {0x10281CAA};
+LOCAL_D const TInt KRefreshStepTime = 200 * 1000;
+LOCAL_D const TInt KConnectingStepTime = 200 * 1000;
+
+
+
+// --------------------------------------------------------------------------
+// CWsfAiPlugin::NewL
+// --------------------------------------------------------------------------
+//
+CWsfAiPlugin* CWsfAiPlugin::NewL()
+ {
+ LOG_ENTERFN( "CWsfAiPlugin::NewL" );
+ CWsfAiPlugin* self = new (ELeave) CWsfAiPlugin;
+
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop(self);
+
+ return self;
+ }
+
+
+// --------------------------------------------------------------------------
+// CWsfAiPlugin::~CWsfAiPlugin
+// --------------------------------------------------------------------------
+//
+CWsfAiPlugin::~CWsfAiPlugin()
+ {
+ LOG_ENTERFN( "CWsfAiPlugin::~CWsfAiPlugin" );
+ // Cancel periodic animation update
+ if ( iAnimationPeriodic )
+ {
+ LOG_WRITE( "Cancel animation update" );
+ iAnimationPeriodic->Cancel();
+ delete iAnimationPeriodic;
+ iAnimationPeriodic = NULL;
+ }
+
+ delete iDbObserver;
+
+ delete iActiveWrappers;
+
+ delete iModel;
+ delete iAiModel;
+ delete iUi;
+
+ if ( iMskActivate )
+ {
+ delete iMskActivate;
+ }
+
+ if ( iConnectedTo )
+ {
+ delete iConnectedTo;
+ }
+
+ if ( iKnownNetworkFound )
+ {
+ delete iKnownNetworkFound;
+ }
+
+ iEnv->DeleteResourceFile( iResourceFileOffset );
+
+ iObservers.Close();
+
+ Release( iContent );
+ Release( iEvents );
+ }
+
+
+// --------------------------------------------------------------------------
+// CWsfAiPlugin::CWsfAiPlugin
+// --------------------------------------------------------------------------
+//
+CWsfAiPlugin::CWsfAiPlugin()
+ {
+ iEnv = CEikonEnv::Static();
+ }
+
+
+// --------------------------------------------------------------------------
+// CWsfAiPlugin::ConstructL
+// --------------------------------------------------------------------------
+//
+void CWsfAiPlugin::ConstructL()
+ {
+ LOG_ENTERFN( "CWsfAiPlugin::ConstructL" );
+ AllocateResourcesL();
+
+ iContent = AiUtility::CreateContentItemArrayIteratorL(
+ KAiWizardContent );
+ iEvents = AiUtility::CreateContentItemArrayIteratorL( KAiWizardEvents );
+
+ // create the engine first...
+ iModel = CWsfModel::NewL( iController, EFalse );
+
+ // then model
+ iAiModel = CWsfAiModel::NewL();
+ iUi = CWsfAiView::NewL( *this );
+
+ iActiveWrappers = CWsfActiveWrappers::NewL( iModel, iController );
+
+ iDbObserver = CWsfDbObserver::NewL();
+
+ iController.SetUi( *static_cast<CWsfAiView*>( iUi ) );
+
+ iController.InitializeL( iEnv, iModel, iAiModel, iDbObserver,
+ iActiveWrappers );
+ }
+
+
+// --------------------------------------------------------------------------
+// CWsfAiPlugin::PublishContentL
+// --------------------------------------------------------------------------
+//
+void CWsfAiPlugin::PublishContentL( CArrayFix<TInt>* aPublishIconArray,
+ CEikLabel* aText1 )
+ {
+ LOG_ENTERFN( "CWsfAiPlugin::PublishContentL" );
+ TInt leftBoundary( 0 );
+ TInt rightBoundary( 0 );
+ TChar boundary('\'');
+ HBufC* localCurrentStatusText( NULL );
+
+ HBufC* localCurrentNetworkStatus( NULL );
+ HBufC* localCurrentNetworkName( NULL );
+
+ HBufC* localFullText = ( aText1->Text() )->AllocLC();
+
+ // Locate ' chars from the full string
+ TPtrC fullText = localFullText->Des();
+ leftBoundary = fullText.Locate( boundary ); // char = '
+ rightBoundary = fullText.LocateReverse( boundary );
+
+ // if we have status name then we parse it
+ if ( leftBoundary != rightBoundary &&
+ leftBoundary != KErrNotFound &&
+ rightBoundary != KErrNotFound )
+ {
+ LOG_WRITE( "status name exists" );
+ TPtrC begin = fullText.Mid( leftBoundary,
+ rightBoundary - leftBoundary + 1 );
+ localCurrentStatusText = begin.AllocLC();
+ localCurrentNetworkName = begin.AllocLC();
+
+ TPtrC end = fullText.Mid( rightBoundary + 1 );
+ }
+ else
+ {
+ LOG_WRITE( "status name does not exist" );
+ localCurrentStatusText = fullText.AllocLC();
+ }
+
+ //Connected
+ if ( localCurrentNetworkName )
+ {
+ if ( iAiModel->Connected() )
+ {
+ LOG_WRITE( "ai model is connected" );
+ if ( !iConnectedTo )
+ {
+ iConnectedTo = StringLoader::LoadL(
+ R_QTN_SNIFFER_PLUG_IN_CONNECTED_TO );
+ }
+ localCurrentNetworkStatus = iConnectedTo;
+ }
+ else
+ {
+ if ( !iKnownNetworkFound )
+ {
+ iKnownNetworkFound = StringLoader::LoadL(
+ R_QTN_SNIFFER_PLUG_IN_WLAN_NETWORK_FOUND );
+ }
+ LOG_WRITE( "there is known network" );
+ localCurrentNetworkStatus = iKnownNetworkFound;
+ }
+ }
+ else
+ {
+ LOG_WRITE( "use current status text" );
+ localCurrentNetworkStatus = localCurrentStatusText;
+ }
+
+ TBool published( EFalse );
+ TInt iconId( 0 );
+
+ ClearL(); // Clear all WLAN Wizard content from the AI2
+
+ for ( iCurrentObserverIndex = 0;
+ iCurrentObserverIndex < iObservers.Count();
+ ++iCurrentObserverIndex )
+ {
+ LOG_WRITEF( "Start publish - index = %d", iCurrentObserverIndex );
+
+ MAiContentObserver* observer = iObservers[iCurrentObserverIndex];
+ observer->StartTransaction( reinterpret_cast<TInt32>( this ) );
+ // make sure we cancel the tracsaction if leaves
+ CleanupStack::PushL( TCleanupItem( PublishCleanup, this ) );
+
+ if ( localCurrentStatusText )
+ {
+ LOG_WRITE( "Publish -> status icon" );
+ // Publish Status icon: EAiWizardContentStatusIcon
+ iconId = aPublishIconArray->At( 0 );
+ published = PublishIconL( observer,
+ EAiWizardContentStatusIcon,
+ iconId ) || published;
+ }
+
+ LOG_WRITE( "Publish -> Strength icon" );
+ // Publish Strength icon: EAiWizardContentStrengthIcon
+ iconId = aPublishIconArray->At( 2 );
+ published = PublishIconL( observer,
+ EAiWizardContentStrengthIcon,
+ iconId ) || published;
+
+ LOG_WRITE( "Publish -> secure icon" );
+ // Publish Secure icon: EAiWizardContentSecureIcon
+ iconId = aPublishIconArray->At( 1 );
+ published = PublishIconL( observer,
+ EAiWizardContentSecureIcon,
+ iconId ) || published;
+
+ if ( localCurrentNetworkName )
+ {
+ LOG_WRITE( "Publish -> localCurrentNetworkName" );
+ // Publish NetworkName text: EAiWizardContentNetworkName
+ published = PublishText( observer,
+ EAiWizardContentNetworkName,
+ *localCurrentNetworkName ) || published;
+ }
+
+ if ( localCurrentNetworkStatus )
+ {
+ LOG_WRITE( "Publish -> localCurrentNetworkStatus" );
+ // Publish NetworkName text: EAiWizardContentNetworkName
+ published = PublishText( observer,
+ EAiWizardContentNetworkStatus,
+ *localCurrentNetworkStatus ) || published;
+ }
+
+ // If we published something then commit,
+ // otherwise cancel transaction
+ if ( published )
+ {
+ LOG_WRITE( "Commit" );
+ observer->Commit( reinterpret_cast<TInt32>( this ) );
+ published = EFalse;
+ }
+ else
+ {
+ LOG_WRITE( "Cancel transaction" );
+ observer->CancelTransaction( reinterpret_cast<TInt32>( this ) );
+ }
+ CleanupStack::Pop( 1 ); // PublishCleanup()
+ }
+
+ LOG_WRITE( "Publishing ready" );
+
+ if ( localCurrentNetworkName )
+ {
+ CleanupStack::PopAndDestroy( localCurrentNetworkName );
+ }
+
+ if ( localCurrentStatusText )
+ {
+ CleanupStack::PopAndDestroy( localCurrentStatusText );
+ }
+
+ CleanupStack::PopAndDestroy( localFullText );
+ }
+
+
+// --------------------------------------------------------------------------
+// CWsfAiPlugin::AllocateResourcesL
+// --------------------------------------------------------------------------
+//
+void CWsfAiPlugin::AllocateResourcesL()
+ {
+ LOG_ENTERFN( "CWsfAiPlugin::AllocateResourcesL" );
+ // create resourcefile
+ TFileName resourceFile;
+ resourceFile.Append( KResourceDrive );
+ resourceFile.Append( KDC_RESOURCE_FILES_DIR );
+ resourceFile.Append( KResourceFile );
+
+ BaflUtils::NearestLanguageFile( iEnv->FsSession(), resourceFile );
+ iResourceFileOffset = iEnv->AddResourceFileL( resourceFile );
+ }
+
+// --------------------------------------------------------------------------
+// CWsfAiPlugin::Start
+// --------------------------------------------------------------------------
+//
+void CWsfAiPlugin::Start( TStartReason /*aReason*/ )
+ {
+ LOG_ENTERFN( "CWsfAiPlugin::Start");
+ iController.StartupRefresh();
+ }
+
+// --------------------------------------------------------------------------
+// CWsfAiPlugin::Stop
+// --------------------------------------------------------------------------
+//
+void CWsfAiPlugin::Stop( TStopReason /*aReason*/ )
+ {
+ LOG_ENTERFN( "CWsfAiPlugin::Stop" );
+ TRAP_IGNORE( iController.DeInitializeL() );
+ if ( iAnimationPeriodic )
+ {
+ LOG_WRITE( "Cancel animation update" );
+ iAnimationPeriodic->Cancel();
+ delete iAnimationPeriodic;
+ iAnimationPeriodic = NULL;
+ }
+ }
+
+// --------------------------------------------------------------------------
+// CWsfAiPlugin::Resume
+// --------------------------------------------------------------------------
+//
+void CWsfAiPlugin::Resume( TResumeReason aReason )
+ {
+ LOG_ENTERFN( "CWsfAiPlugin::Resume" );
+ if( aReason == EForeground )
+ {
+ // HS came to foreground -> make refresh scan
+ if ( !iAiModel->Connected() && !iModel->IsConnecting() )
+ {
+ LOG_WRITE( "Call Refresh scan" );
+ iActiveWrappers->RefreshScan();
+ }
+ else
+ {
+ LOG_WRITE( "Connected no need to refresh scan results" );
+ }
+ }
+ }
+
+// --------------------------------------------------------------------------
+// CWsfAiPlugin::Suspend
+// --------------------------------------------------------------------------
+//
+void CWsfAiPlugin::Suspend( TSuspendReason aReason )
+ {
+ LOG_ENTERFN( "CWsfAiPlugin::Suspend" );
+
+ if( aReason == EBackground )
+ {
+ if ( iAnimationPeriodic )
+ {
+ LOG_WRITE( "Cancel animation update" );
+ iAnimationPeriodic->Cancel();
+ delete iAnimationPeriodic;
+ iAnimationPeriodic = NULL;
+ }
+ }
+ }
+
+// --------------------------------------------------------------------------
+// CWsfAiPlugin::SubscribeL
+// --------------------------------------------------------------------------
+//
+void CWsfAiPlugin::SubscribeL( MAiContentObserver& aObserver )
+ {
+ LOG_ENTERFN( "CWsfAiPlugin::Subscribe" );
+ iObservers.AppendL( &aObserver );
+ }
+
+
+// --------------------------------------------------------------------------
+// CWsfAiPlugin::ConfigureL
+// --------------------------------------------------------------------------
+//
+void CWsfAiPlugin::ConfigureL( RAiSettingsItemArray& /*aSettings*/ )
+ {
+ LOG_ENTERFN( "CWsfAiPlugin::ConfigureL" );
+ }
+
+// --------------------------------------------------------------------------
+// CWsfAiPlugin::GetPropertyL
+// --------------------------------------------------------------------------
+//
+TAny* CWsfAiPlugin::GetProperty( TProperty aProperty )
+ {
+ if( aProperty == EPublisherContent )
+ {
+ return iContent;
+ }
+ else if( aProperty == EPublisherEvents )
+ {
+ return iEvents;
+ }
+
+ return NULL;
+ }
+
+// --------------------------------------------------------------------------
+// CWsfAiPlugin::HandleEvent
+// --------------------------------------------------------------------------
+//
+void CWsfAiPlugin::HandleEvent( TInt aEvent, const TDesC& /*aParam*/ )
+ {
+ LOG_ENTERFN( "CWsfAiPlugin::HandleEvent" );
+ switch ( aEvent )
+ {
+ case EAiWizardEventLaunchApplication:
+ {
+ TRAP_IGNORE( LaunchApplicationL() );
+ break;
+ }
+
+ case EAiWizardGainFocusInfoArea:
+ {
+ iInfoAreaFocus = ETrue;
+ TRAP_IGNORE( SetMskL() );
+ break;
+ }
+
+ case EAiWizardLostFocusInfoArea:
+ {
+ iInfoAreaFocus = EFalse;
+ break;
+ }
+
+ case EAiWizardOpenMenu:
+ {
+ if ( !iRefreshing )
+ {
+ TRAP_IGNORE( iController.HandleSelectionKeyL() );
+ }
+ break;
+ }
+
+ default:
+ {
+ }
+ }
+ }
+
+
+// --------------------------------------------------------------------------
+// CWsfAiPlugin::ClearL
+// --------------------------------------------------------------------------
+//
+void CWsfAiPlugin::ClearL()
+ {
+ LOG_ENTERFN( "CWsfAiPlugin::ClearL" );
+ for ( TInt i = 0; i < iObservers.Count(); ++i )
+ {
+ MAiContentObserver* observer = iObservers[i];
+
+ observer->StartTransaction( reinterpret_cast<TInt32>( this ) );
+
+ observer->Clean( *this, EAiWizardContentStatusIcon,
+ EAiWizardContentStatusIcon );
+ observer->Clean( *this, EAiWizardContentStrengthIcon,
+ EAiWizardContentStrengthIcon );
+ observer->Clean( *this, EAiWizardContentSecureIcon,
+ EAiWizardContentSecureIcon );
+ observer->Clean( *this, EAiWizardContentNetworkName,
+ EAiWizardContentNetworkName );
+
+ observer->Commit( reinterpret_cast<TInt32>( this ) );
+ }
+ }
+
+
+// --------------------------------------------------------------------------
+// CWsfAiPlugin::SetScanningState
+// --------------------------------------------------------------------------
+//
+void CWsfAiPlugin::SetScanningState( TBool aScanState )
+ {
+ LOG_ENTERFN( "CWsfAiPlugin::SetScanningState" );
+ iScanState = aScanState;
+ TRAP_IGNORE( SetMskL() );
+ }
+
+
+// --------------------------------------------------------------------------
+// CWsfAiPlugin::SetRefreshingL
+// --------------------------------------------------------------------------
+//
+void CWsfAiPlugin::SetRefreshingL( TBool aRefreshing )
+ {
+ LOG_ENTERFN( "CWsfAiPlugin::SetRefreshingL" );
+ if( iRefreshing != aRefreshing )
+ {
+ LOG_WRITEF( "iRefreshing = %d and aRefreshing = %d ",
+ iRefreshing, aRefreshing );
+ if( aRefreshing )
+ {
+ if ( iAnimationPeriodic )
+ {
+ iAnimationPeriodic->Cancel();
+ delete iAnimationPeriodic;
+ iAnimationPeriodic = NULL;
+ }
+ iPublishNetworkStatusText = ETrue;
+ iAiModel->InitializeRefreshAnimation();
+ iAnimationPeriodic = CPeriodic::NewL(
+ CActive::EPriorityStandard );
+
+ iAnimationPeriodic->Start(
+ TTimeIntervalMicroSeconds32( KRefreshStepTime ),
+ TTimeIntervalMicroSeconds32( KRefreshStepTime ),
+ TCallBack(
+ CWsfAiPlugin::DoRefreshingStepL,
+ this
+ ) );
+ }
+ else
+ {
+ if ( iAnimationPeriodic )
+ {
+ iAnimationPeriodic->Cancel();
+ delete iAnimationPeriodic;
+ iAnimationPeriodic = NULL;
+ }
+ }
+ }
+ iRefreshing = aRefreshing;
+ }
+
+
+// --------------------------------------------------------------------------
+// CWsfAiPlugin::SetRefreshingL
+// --------------------------------------------------------------------------
+//
+void CWsfAiPlugin::StartConnectingL()
+ {
+ LOG_ENTERFN( "CWsfAiPlugin::StartConnectingL" );
+
+ if ( iAnimationPeriodic )
+ {
+ iAnimationPeriodic->Cancel();
+ delete iAnimationPeriodic;
+ iAnimationPeriodic = NULL;
+ }
+
+ iPublishNetworkStatusText = ETrue;
+ iAiModel->InitializeConnectingAnimation();
+ iAnimationPeriodic = CPeriodic::NewL(
+ CActive::EPriorityStandard );
+
+ iAnimationPeriodic->Start(
+ TTimeIntervalMicroSeconds32( KConnectingStepTime ),
+ TTimeIntervalMicroSeconds32( KConnectingStepTime ),
+ TCallBack(
+ CWsfAiPlugin::DoConnectingStepL,
+ this
+ ) );
+ }
+
+
+// --------------------------------------------------------------------------
+// CWsfAiPlugin::NewL
+// --------------------------------------------------------------------------
+//
+void CWsfAiPlugin::LaunchApplicationL()
+ {
+ LOG_ENTERFN( "CWsfAiPlugin::LaunchApplication" );
+ RApaLsSession appArcSession;
+
+ // connect to AppArc server
+ User::LeaveIfError( appArcSession.Connect() );
+ CleanupClosePushL( appArcSession );
+
+
+ // check if the app is already running ... and brings it to foreground.
+ TUid id( TUid::Uid( KUidSnifferApp.iUid ) );
+ TApaTaskList taskList( iEnv->WsSession() );
+ TApaTask task = taskList.FindApp( id );
+
+ if ( task.Exists() )
+ {
+ task.BringToForeground();
+ }
+ else
+ {
+ TThreadId threadId;
+ User::LeaveIfError( appArcSession.StartDocument(
+ KNullDesC,
+ TUid::Uid( KUidSnifferApp.iUid ),
+ threadId ) );
+ }
+
+ CleanupStack::PopAndDestroy( &appArcSession ); //appArcSession
+ }
+
+
+// --------------------------------------------------------------------------
+// CWsfAiPlugin::SetMskL
+// --------------------------------------------------------------------------
+//
+void CWsfAiPlugin::SetMskL()
+ {
+ LOG_ENTERFN( "CWsfAiPlugin::SetMsk" );
+
+ if ( AknLayoutUtils::PenEnabled() )
+ {
+ // MSK not updated in touch products
+ return;
+ }
+
+ CEikButtonGroupContainer* cba = CEikButtonGroupContainer::Current();
+
+ if( cba )
+ {
+ if ( iAiModel->ScanningOn() || iAiModel->Connected() )
+ {
+ // Show context menu icon
+ cba->SetCommandL( CEikButtonGroupContainer::EMiddleSoftkeyPosition,
+ EAknSoftkeyContextOptions,
+ KNullDesC );
+ }
+ else
+ {
+ if ( !iMskActivate )
+ {
+ iMskActivate = StringLoader::LoadL( R_QTN_MSK_SNIFFER_ACTIVATE );
+ }
+ // Show 'Activate'
+ cba->SetCommandL( CEikButtonGroupContainer::EMiddleSoftkeyPosition,
+ EAknSoftkeyOk,
+ *iMskActivate );
+ }
+ cba->DrawDeferred();
+ }
+ }
+
+
+// --------------------------------------------------------------------------
+// CWsfAiPlugin::PublishText
+// --------------------------------------------------------------------------
+//
+TBool CWsfAiPlugin::PublishText( MAiContentObserver* aObserver,
+ TWsfAiWizardContentIds aContentId,
+ const TDesC16& aText )
+ {
+ LOG_ENTERFN( "CWsfAiPlugin::PublishText" );
+ TBool published( EFalse );
+ TInt error( 0 );
+ if ( aObserver->CanPublish( *this, aContentId, aContentId ) )
+ {
+ error = aObserver->Publish( *this,
+ aContentId,
+ aText,
+ aContentId );
+
+ if ( error == KErrNone )
+ {
+ published = ETrue;
+ }
+ }
+ return published;
+ }
+
+
+// --------------------------------------------------------------------------
+// CWsfAiPlugin::PublishIconL
+// --------------------------------------------------------------------------
+//
+TBool CWsfAiPlugin::PublishIconL( MAiContentObserver* aObserver,
+ TWsfAiWizardContentIds aContentId,
+ TInt aIconId )
+ {
+ LOG_ENTERFN( "CWsfAiPlugin::PublishIcon" );
+ TBool published( EFalse );
+ TInt error( 0 );
+ if ( aObserver->CanPublish( *this, aContentId, aContentId ) )
+ {
+ error = aObserver->PublishPtr(
+ *this,
+ aContentId,
+ CWsfIconArrayCreator::GetIconLC( aIconId ),
+ aContentId );
+
+ CleanupStack::Pop(); // pop the icon
+
+ if ( error == KErrNone )
+ {
+ published = ETrue;
+ }
+ }
+ return published;
+ }
+
+
+// ---------------------------------------------------------------------------
+// CWsfAiPlugin::PublishCleanup
+// ---------------------------------------------------------------------------
+//
+void CWsfAiPlugin::PublishCleanup( TAny* aPtr )
+ {
+ LOG_ENTERFN( "CWsfAiPlugin::PublishCleanup" );
+ CWsfAiPlugin* self = static_cast<CWsfAiPlugin*>( aPtr );
+
+ if ( self && self->iCurrentObserverIndex < self->iObservers.Count() )
+ {
+ LOG_WRITE( "Cancel transaction" );
+ self->iObservers[self->iCurrentObserverIndex]
+ ->CancelTransaction( reinterpret_cast<TInt32>( self ) );
+ }
+ }
+
+
+// ---------------------------------------------------------------------------
+// CWsfAiPlugin::DoRefreshingStepL
+// ---------------------------------------------------------------------------
+//
+TInt CWsfAiPlugin::DoRefreshingStepL( TAny* ptr )
+ {
+ LOG_ENTERFN( "CWsfAiPlugin::DoRefreshingStepL( ptr )" );
+ static_cast<CWsfAiPlugin*>( ptr )->DoRefreshingStepL();
+ return ETrue;
+ }
+
+// ---------------------------------------------------------------------------
+// CWsfAiPlugin::DoRefreshingStepL
+// ---------------------------------------------------------------------------
+//
+void CWsfAiPlugin::DoRefreshingStepL()
+ {
+ LOG_ENTERFN( "CWsfAiPlugin::DoRefreshingStepL" );
+
+ if ( !iAiModel->ScanningOn() )
+ {
+ LOG_WRITE( "Disable refreshing" );
+ if ( iAnimationPeriodic )
+ {
+ LOG_WRITE( "Cancel animation update" );
+ iAnimationPeriodic->Cancel();
+ delete iAnimationPeriodic;
+ iAnimationPeriodic = NULL;
+ }
+ iRefreshing = EFalse;
+ }
+ else
+ {
+ iAiModel->AnimateRefresh();
+ iController.RefreshRefreshingL();
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CWsfAiPlugin::DoConnectingStepL
+// ---------------------------------------------------------------------------
+//
+TInt CWsfAiPlugin::DoConnectingStepL( TAny* ptr )
+ {
+ LOG_ENTERFN( "CWsfAiPlugin::DoConnectingStepL( ptr )" );
+ static_cast<CWsfAiPlugin*>( ptr )->DoConnectingStepL();
+ return ETrue;
+ }
+
+// ---------------------------------------------------------------------------
+// CWsfAiPlugin::DoConnectingStepL
+// ---------------------------------------------------------------------------
+//
+void CWsfAiPlugin::DoConnectingStepL()
+ {
+ LOG_ENTERFN( "CWsfAiPlugin::DoConnectingStepL" );
+
+ if ( !iModel->IsConnecting() )
+ {
+ LOG_WRITE( "Disable refreshing" );
+ if ( iAnimationPeriodic )
+ {
+ LOG_WRITE( "Cancel animation update" );
+ iAnimationPeriodic->Cancel();
+ delete iAnimationPeriodic;
+ iAnimationPeriodic = NULL;
+ }
+ }
+ else
+ {
+ iAiModel->AnimateConnecting();
+ iController.RefreshConnectingL();
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CWsfAiPlugin::PublishStatusIconL
+// ---------------------------------------------------------------------------
+//
+void CWsfAiPlugin::PublishStatusIconL( CArrayFix<TInt>* aPublishIconArray,
+ CEikLabel* aText1 )
+ {
+ LOG_ENTERFN( "CWsfAiPlugin::PublishStatusIconL" );
+ TBool published( EFalse );
+ TInt iconId( 0 );
+
+ ClearL(); // Clear all WLAN Wizard content from the AI2
+
+ for ( iCurrentObserverIndex = 0;
+ iCurrentObserverIndex < iObservers.Count();
+ ++iCurrentObserverIndex )
+ {
+ MAiContentObserver* observer = iObservers[iCurrentObserverIndex];
+
+ // Publish Status icon: EAiWizardContentStatusIcon
+ iconId = aPublishIconArray->At( 0 );
+ published = PublishIconL( observer,
+ EAiWizardContentStatusIcon,
+ iconId ) || published;
+
+ if ( iPublishNetworkStatusText && aText1 )
+ {
+ iPublishNetworkStatusText = EFalse;
+ HBufC *statusText = aText1->Text()->AllocLC();
+ published = PublishText( observer,
+ EAiWizardContentNetworkStatus,
+ *statusText ) || published;
+ CleanupStack::PopAndDestroy( statusText );
+ }
+
+ // If we published something then commit,
+ // otherwise cancel transaction
+ if ( published )
+ {
+ published = EFalse;
+ }
+ }
+ }
+
+
+// End of File.