--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/wlanutilities/wlansniffer/aihelper/src/wsfaihelperappui.cpp Wed Sep 01 12:20:32 2010 +0100
@@ -0,0 +1,439 @@
+/*
+* 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 CWsfAiHelperAppUi
+*
+*/
+
+
+// EXTERNAL INCLUDES
+#include <avkon.hrh>
+#include <apgcli.h>
+#include <cmmanager.h>
+#include <cmconnectionmethod.h>
+#include <StringLoader.h>
+#include <wsfaihelper.rsg>
+#include <AknQueryDialog.h>
+#include <e32property.h>
+#include <ErrorUI.h>
+#include <wlanerrorcodes.h>
+
+// CLASS HEADER
+#include "wsfaihelperappui.h"
+
+// INTERNAL INCLUDES
+#include "wsfaihelperdocument.h"
+#include "wsfaihelperapplication.h"
+#include "wsfmodel.h"
+#include "wsfwlaninfo.h"
+#include "wsfaihelperview.h"
+#include "wsfaihelper.hrh"
+#include "wsflogger.h"
+
+
+// CONSTANTS
+
+// property keys for AiHelper return
+static const TUint KWsfAiHelperExitCodeKey = 0;
+static const TUint KWsfAiHelperIapIdKey = 1;
+
+
+// ---------------------------------------------------------------------------
+// CWsfAiHelperAppUi::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CWsfAiHelperAppUi::ConstructL()
+ {
+ BaseConstructL( EAknEnableSkin | EAknEnableMSK | EAknSingleClickCompatible );
+
+ iIdle = CIdle::NewL( CActive::EPriorityIdle );
+
+ // Create stub view for Wizard launching
+ CWsfAiHelperView* view = CWsfAiHelperView::NewLC( this );
+ AddViewL( view );
+ CleanupStack::Pop( view );
+ }
+
+
+// ---------------------------------------------------------------------------
+// CWsfAiHelperAppUi::CWsfAiHelperAppUi
+// ---------------------------------------------------------------------------
+//
+CWsfAiHelperAppUi::CWsfAiHelperAppUi():
+ iResult( KErrCancel )
+ {
+ // no implementation required
+ }
+
+
+// ---------------------------------------------------------------------------
+// CWsfAiHelperAppUi::~CWsfAiHelperAppUi
+// ---------------------------------------------------------------------------
+//
+CWsfAiHelperAppUi::~CWsfAiHelperAppUi()
+ {
+ delete iIdle;
+ }
+
+
+// ---------------------------------------------------------------------------
+// CWsfAiHelperAppUi::HandleCommandL
+// ---------------------------------------------------------------------------
+//
+void CWsfAiHelperAppUi::HandleCommandL( TInt aCommand )
+ {
+ LOG_ENTERFN( "CWsfAiHelperAppUi::HandleCommandL" );
+ LOG_WRITEF( "command = %d", aCommand );
+
+ if ( iSuppressingKeyEvents )
+ {
+ return;
+ }
+
+ switch ( aCommand )
+ {
+ case EAknCmdExit:
+ case EEikCmdExit:
+ case EAknSoftkeyBack:
+ case EAknSoftkeyExit:
+ {
+ // set the "exit code" value
+ RProperty::Define( Application()->AppDllUid(),
+ KWsfAiHelperExitCodeKey,
+ RProperty::EInt );
+
+ TInt err = RProperty::Set( Application()->AppDllUid(),
+ KWsfAiHelperExitCodeKey,
+ iResult );
+
+ if ( err == KErrNone )
+ {
+ LOG_WRITEF( "exitcode property set to %d", iResult );
+ }
+ else
+ {
+ LOG_WRITEF( "exitcode property setting failed with code = %d",
+ err );
+ User::LeaveIfError( err );
+ }
+
+ Exit();
+ break;
+ }
+
+ default:;
+ }
+ }
+
+
+// ---------------------------------------------------------------------------
+// CWsfAiHelperAppUi::ProcessCommandParametersL
+// ---------------------------------------------------------------------------
+//
+TBool CWsfAiHelperAppUi::ProcessCommandParametersL(
+ TApaCommand /*aCommand*/,
+ TFileName& /*aDocumentName*/,
+ const TDesC8& /*aTail*/ )
+ {
+ return EFalse;
+ }
+
+
+// ---------------------------------------------------------------------------
+// CWsfAiHelperAppUi::NotifyFileName
+// ---------------------------------------------------------------------------
+//
+void CWsfAiHelperAppUi::NotifyFileName()
+ {
+ LOG_ENTERFN( "CWsfAiHelperAppUi::NotifyFileName" );
+ if ( !iIdle->IsActive() )
+ {
+ iIdle->Start( TCallBack( LaunchCompletedL, this ) );
+ }
+ }
+
+
+// ---------------------------------------------------------------------------
+// CWsfAiHelperAppUi::Doc
+// ---------------------------------------------------------------------------
+//
+CWsfAiHelperDocument* CWsfAiHelperAppUi::Doc()
+ {
+ return static_cast<CWsfAiHelperDocument*>( iDocument );
+ }
+
+
+// ---------------------------------------------------------------------------
+// CWsfAiHelperAppUi::BrowserLaunchCompleteL
+// ---------------------------------------------------------------------------
+//
+void CWsfAiHelperAppUi::BrowserLaunchCompleteL()
+ {
+ LOG_ENTERFN( "CWsfAiHelperAppUi::BrowserLaunchCompleteL" );
+ }
+
+
+// ---------------------------------------------------------------------------
+// CWsfAiHelperAppUi::BrowserExitL
+// ---------------------------------------------------------------------------
+//
+void CWsfAiHelperAppUi::BrowserExitL()
+ {
+ LOG_ENTERFN( "CWsfAiHelperAppUi::BrowserExitL" );
+ HandleCommandL( EAknCmdExit );
+ }
+
+
+// ---------------------------------------------------------------------------
+// CWsfAiHelperAppUi::BrowserLaunchFailed
+// ---------------------------------------------------------------------------
+//
+void CWsfAiHelperAppUi::BrowserLaunchFailed( TInt /*aError*/ )
+ {
+ LOG_ENTERFN( "CWsfAiHelperAppUi::BrowserLaunchFailed" );
+ TRAP_IGNORE( HandleCommandL( EAknCmdExit ) );
+ }
+
+
+// ---------------------------------------------------------------------------
+// CWsfAiHelperAppUi::ConnectingL
+// ---------------------------------------------------------------------------
+//
+void CWsfAiHelperAppUi::ConnectingL( TUint32 /*aIapId*/ )
+ {
+ LOG_ENTERFN( "CWsfAiHelperAppUi::ConnectingL" );
+ Doc()->Model().SetConnecting( ETrue );
+ }
+
+
+// ---------------------------------------------------------------------------
+// CWsfAiHelperAppUi::ConnectingFinishedL
+// ---------------------------------------------------------------------------
+//
+void CWsfAiHelperAppUi::ConnectingFinishedL( TInt aResult )
+ {
+ LOG_ENTERFN( "CWsfAiHelperAppUi::ConnectingFinishedL" );
+ if ( Doc()->Model().IsConnecting() )
+ {
+ Doc()->Model().SetConnecting( EFalse );
+ }
+
+ if ( aResult )
+ {
+ // show an error note
+ LOG_WRITE( "showing error note" );
+ CErrorUI* errorUi = CErrorUI::NewLC( *iCoeEnv );
+ errorUi->ShowGlobalErrorNoteL( aResult );
+ CleanupStack::PopAndDestroy( errorUi );
+ }
+ }
+
+
+// ---------------------------------------------------------------------------
+// CWsfAiHelperAppUi::SendHelperToBackground
+// ---------------------------------------------------------------------------
+//
+void CWsfAiHelperAppUi::SendHelperToBackground()
+ {
+ LOG_ENTERFN( "CWsfAiHelperAppUi::SendHelperToBackground" );
+ TApaTask task( iEikonEnv->WsSession() );
+ task.SetWgId( iEikonEnv->RootWin().Identifier());
+ task.SendToBackground();
+ }
+
+
+// ---------------------------------------------------------------------------
+// CWsfAiHelperAppUi::LaunchCompletedL
+// ---------------------------------------------------------------------------
+//
+TInt CWsfAiHelperAppUi::LaunchCompletedL( TAny* aObject )
+ {
+ LOG_ENTERFN( "CWsfAiHelperAppUi::LaunchCompletedL" );
+ User::LeaveIfNull( aObject );
+ CWsfAiHelperAppUi* appUi = static_cast<CWsfAiHelperAppUi*>( aObject );
+
+ MWsfModelObserver* observer = static_cast<MWsfModelObserver*>( appUi );
+ CWsfModel& model( appUi->Doc()->Model() );
+
+ model.SetEngineObserver( observer );
+
+ TWsfWlanInfo* info( &appUi->Doc()->WlanInfo() );
+
+ if ( !info->Connected() )
+ {
+ // make sure we don't suppress our key events forever
+ CleanupStack::PushL( TCleanupItem( ReleaseSuppressingKeyEventsL, appUi ) );
+ // No appUi key input accepted during IAP connecting & connection test.
+ appUi->iSuppressingKeyEvents = ETrue;
+
+ TBool setIapProperty = EFalse;
+
+ if ( !info->Known() )
+ {
+ TBool accessPointCreated = EFalse;
+
+ // If not known yet, create an IAP.
+ TRAPD( accessPointCreatedError,
+ accessPointCreated = model.CreateAccessPointL( *info,
+ 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 )
+ {
+ appUi->ConnectingFinishedL(accessPointCreatedError);
+ User::Leave(accessPointCreatedError);
+ }
+ // just leave because we failed to create accesspoint
+ else if ( accessPointCreatedError != KErrNone )
+ {
+ User::Leave(accessPointCreatedError);
+ }
+
+ appUi->SendHelperToBackground();
+
+ if ( accessPointCreated )
+ {
+ setIapProperty = ETrue;
+ }
+ }
+ else
+ {
+ setIapProperty = ETrue;
+ appUi->iResult = KErrNone;
+ }
+
+ if ( setIapProperty )
+ {
+ LOG_WRITE( "Set iap Property" );
+ // Connected succesfully set IAP's property.
+ CWsfAiHelperApplication* app =
+ static_cast<CWsfAiHelperApplication*>(
+ appUi->Application() );
+
+ RProperty::Define( app->AppDllUid(),
+ KWsfAiHelperIapIdKey,
+ RProperty::EInt );
+
+ TInt err = RProperty::Set( app->AppDllUid(),
+ KWsfAiHelperIapIdKey,
+ info->iIapId );
+
+ if ( err == KErrNone )
+ {
+ LOG_WRITEF( "IAP id property "
+ L"set to %d", info->iIapId );
+ }
+ else
+ {
+ LOG_WRITEF( "IAP id property setting failed "
+ L"with code = %d", err );
+ User::LeaveIfError( err );
+ }
+ appUi->iResult = KErrNone;
+ }
+ // pop cleanup item ReleaseSuppressingKeyEvents
+ CleanupStack::Pop();
+ appUi->iSuppressingKeyEvents = EFalse;
+ }
+
+ appUi->HandleCommandL( EAknCmdExit );
+
+ return 0; // Return false (zero) value not be called again.
+ }
+
+
+// ---------------------------------------------------------------------------
+// CWsfAiHelperAppUi::WlanListChangedL
+// ---------------------------------------------------------------------------
+//
+void CWsfAiHelperAppUi::WlanListChangedL()
+ {
+ // no implementation required
+ }
+
+
+// ---------------------------------------------------------------------------
+// CWsfAiHelperAppUi::NotifyEngineError
+// ---------------------------------------------------------------------------
+//
+void CWsfAiHelperAppUi::NotifyEngineError( TInt /*aError*/ )
+ {
+ // no implementation required
+ }
+
+
+// ---------------------------------------------------------------------------
+// CWsfAiHelperAppUi::ScanDisabledL
+// ---------------------------------------------------------------------------
+//
+void CWsfAiHelperAppUi::ScanDisabledL()
+ {
+ // no implementation required
+ }
+
+
+// ---------------------------------------------------------------------------
+// CWsfAiHelperAppUi::ScanEnabledL
+// ---------------------------------------------------------------------------
+//
+void CWsfAiHelperAppUi::ScanEnabledL()
+ {
+ // no implementation required
+ }
+
+
+// ---------------------------------------------------------------------------
+// CWsfAiHelperAppUi::WlanConnectionActivatedL
+// ---------------------------------------------------------------------------
+//
+void CWsfAiHelperAppUi::WlanConnectionActivatedL()
+ {
+ // no implementation required
+ }
+
+
+// ---------------------------------------------------------------------------
+// CWsfAiHelperAppUi::WlanConnectionClosedL
+// ---------------------------------------------------------------------------
+//
+void CWsfAiHelperAppUi::WlanConnectionClosedL()
+ {
+ // no implementation required
+ }
+
+
+// ---------------------------------------------------------------------------
+// CWsfAiHelperAppUi::ConnectingFinishedL
+// ---------------------------------------------------------------------------
+//
+void CWsfAiHelperAppUi::ConnectionCreationProcessFinishedL( TInt /*aResult*/ )
+ {
+ // no implementation required
+ }
+
+
+// ---------------------------------------------------------------------------
+// CWsfAiHelperAppUi::ReleaseSuppressingKeyEventsL
+// ---------------------------------------------------------------------------
+//
+void CWsfAiHelperAppUi::ReleaseSuppressingKeyEventsL( TAny* aPtr )
+ {
+ CWsfAiHelperAppUi* self =
+ static_cast<CWsfAiHelperAppUi*>( aPtr );
+ self->iSuppressingKeyEvents = EFalse;
+ self->HandleCommandL( EAknCmdExit );
+ }
+
+