connectionutilities/ConnectionDialogs/ConnectionUiUtilities/src/connectionstatuspopup.cpp
changeset 20 9c97ad6591ae
child 27 489cf6208544
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/src/connectionstatuspopup.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,647 @@
+/*
+* Copyright (c) 2009 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 class CConnectionStatusPopup.   
+*      
+*
+*/
+
+#include "connectionstatuspopup.h"
+
+#include <cmmanager.h>
+#include <cmmanagerext.h>
+#include <cmconnectionmethod.h>
+#include <cmconnectionmethodext.h>
+#include <cmpluginwlandef.h>
+#include <cmpluginvpndef.h>
+
+#include <hbtextresolversymbian.h>
+
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "connectionstatuspopupTraces.h"
+#endif
+
+// Error code definitions are from these headers
+#include <wlanerrorcodes.h> // WLAN-specific error code definitions
+#include <in_iface.h>
+#include <etelpckt.h>       // GPRS-specific causes for Session Managemeei saant
+#include <nd_err.h>         // NetDial errors
+#include <inet6err.h>       // IPv6 error constants
+#include <rmmcustomapi.h>
+
+// Errors in UI spec not found elsewhere
+const TInt KErrPDPMaxContextsReached    = -6000;
+const TInt KErrDndNameNotFound          = -5120;
+const TInt KErrGeneralConnection        = -50000;
+const TInt KErrGenConnNoGPRSNetwork     = -3609;
+
+// Icons representing bearer
+_LIT( KIconCellular, "pri_small_wlan.svg" );
+_LIT( KIconWlan,     "pri_small_gprs.svg" );
+_LIT( KIconVpn,      "pri_small_vpn.svg" ); 
+_LIT( KIconNone,     "" );
+
+// Empty text
+_LIT( KTextNone,     "" );
+
+// Programs to fire at tap
+_LIT( KWlanViewExeFile, "wlansniffer.exe" );
+_LIT( KConnViewExeFile, "connview.exe" );
+// Command line
+_LIT( KExeFileCmd, "" );
+
+// Localization files and texts
+_LIT(KTrFile, "connectionstatuspopups_");
+_LIT(KTrFilePath, "z:\\resource\\qt\\translations");
+
+_LIT(Ktxt_occ_dpophead_connecting,
+        "txt_occ_dpophead_connecting");
+_LIT(Ktxt_occ_dpophead_connection_failed,
+        "txt_occ_dpophead_connection_failed");
+_LIT(Ktxt_occ_dpopinfo_internal_error,
+        "txt_occ_dpopinfo_internal_error");
+_LIT(Ktxt_occ_dpopinfo_wlan_network_not_found,
+        "txt_occ_dpopinfo_wlan_network_not_found");
+_LIT(Ktxt_occ_dpopinfo_authentication_unsuccessful,
+        "txt_occ_dpopinfo_authentication_unsuccessful");
+_LIT(Ktxt_occ_dpopinfo_check_security_key,
+        "txt_occ_dpopinfo_check_security_key");
+_LIT(Ktxt_occ_dpopinfo_check_connection_settings,
+        "txt_occ_dpopinfo_check_connection_settings");
+_LIT(Ktxt_occ_dpopinfo_sim_card_missing,
+        "txt_occ_dpopinfo_sim_card_missing");
+_LIT(Ktxt_occ_dpopinfo_service_unreachable,
+        "txt_occ_dpopinfo_service_unreachable");
+_LIT(Ktxt_occ_dpopinfo_permission_denied,
+        "txt_occ_dpopinfo_permission_denied");
+_LIT(Ktxt_occ_dpopinfo_connection_already_active,
+        "txt_occ_dpopinfo_connection_already_active");
+_LIT(Ktxt_occ_dpopinfo_signal_too_weak,
+        "txt_occ_dpopinfo_signal_too_weak");
+_LIT(Ktxt_occ_dpopinfo_please_try_again,
+        "txt_occ_dpopinfo_please_try_again");
+_LIT(Ktxt_occ_dpopinfo_connection_unavailable,
+        "txt_occ_dpopinfo_connection_unavailable");
+_LIT(Ktxt_occ_dpophead_configuration_failed,
+        "txt_occ_dpophead_configuration_failed");
+
+
+//-----------------------------------------------------------------------------
+//  CConnectionStatusPopup::CConnectionStatusPopup()
+//-----------------------------------------------------------------------------
+//
+CConnectionStatusPopup::CConnectionStatusPopup()
+:iPopup( NULL ), iPopupState( EPopupClosed )
+    {
+    }
+
+//-----------------------------------------------------------------------------
+//  CConnectionStatusPopup::NewL()
+//-----------------------------------------------------------------------------
+//
+CConnectionStatusPopup* CConnectionStatusPopup::NewL()
+    {
+    OstTraceFunctionEntry0( CCONNECTIONSTATUSPOPUP_NEWL_ENTRY );
+    
+    CConnectionStatusPopup* popup = new ( ELeave ) CConnectionStatusPopup();
+    CleanupStack::PushL( popup );
+    popup->ConstructL();
+    CleanupStack::Pop( popup ); 
+    
+    OstTraceFunctionExit0( CCONNECTIONSTATUSPOPUP_NEWL_EXIT );
+    return popup;
+    }
+
+//-----------------------------------------------------------------------------
+//  CConnectionStatusPopup::ConstructL()
+//-----------------------------------------------------------------------------
+//
+void CConnectionStatusPopup::ConstructL()
+    {
+    OstTraceFunctionEntry0( CCONNECTIONSTATUSPOPUP_CONSTRUCTL_ENTRY );
+    
+    iPopup = CHbDeviceNotificationDialogSymbian::NewL( this );
+
+    TBool result = HbTextResolverSymbian::Init( KTrFile, KTrFilePath );
+    if (!result)
+        {
+        OstTrace0( TRACE_FLOW, CCONNECTIONSTATUSPOPUP_CONSTRUCTL,"CConnectionStatusPopup::ConstructL; Loading of localization failed!" );
+        }
+    
+    OstTraceFunctionExit0( CCONNECTIONSTATUSPOPUP_CONSTRUCTL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  CConnectionStatusPopup::~CConnectionStatusPopup()
+//-----------------------------------------------------------------------------
+//
+CConnectionStatusPopup::~CConnectionStatusPopup()
+    {
+    OstTraceFunctionEntry0( CCONNECTIONSTATUSPOPUP_CCONNECTIONSTATUSPOPUP_ENTRY );
+    
+    if (iPopup)
+        {
+        iPopup->Close();
+        delete iPopup;
+        }
+    
+    OstTraceFunctionExit0( CCONNECTIONSTATUSPOPUP_CCONNECTIONSTATUSPOPUP_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  CConnectionStatusPopup::ConnectingDiscreetPopup()
+//-----------------------------------------------------------------------------
+//
+void CConnectionStatusPopup::ConnectingViaDiscreetPopup( )
+    {
+    OstTraceFunctionEntry0( CCONNECTIONSTATUSPOPUP_CONNECTINGVIADISCREETPOPUP_ENTRY );
+
+    TRAP_IGNORE( 
+        HBufC* title = HbTextResolverSymbian::LoadLC(
+                Ktxt_occ_dpophead_connecting );
+        iPopup->SetTitleL( title->Des() );
+        CleanupStack::PopAndDestroy( title );
+        iPopup->SetTextL( KTextNone );
+        iPopup->SetIconNameL( KIconNone );
+        );
+
+    SetState( EPopupConnecting );
+ 
+    OstTraceFunctionExit0( CCONNECTIONSTATUSPOPUP_CONNECTINGVIADISCREETPOPUP_EXIT );
+    }
+
+
+//-----------------------------------------------------------------------------
+//  CConnectionStatusPopup::ConnectingViaDiscreetPopup()
+//-----------------------------------------------------------------------------
+//
+void CConnectionStatusPopup::ConnectingViaDiscreetPopup(
+        TUint32 aIapId,
+        TBool aConnectionAlreadyActive )
+    {
+    OstTraceFunctionEntry0( DUP1_CCONNECTIONSTATUSPOPUP_CONNECTINGVIADISCREETPOPUP_ENTRY );
+    OstTraceExt2( TRACE_FLOW, CCONNECTIONSTATUSPOPUP_CONNECTINGVIADISCREETPOPUP, "CConnectionStatusPopup::ConnectingViaDiscreetPopup;aIapId=%u;aConnectionAlreadyActive=%u", aIapId, aConnectionAlreadyActive );
+
+    // Grab iap info even if we do not need it yet (when sharing),
+    // because icon may be used later if general error happens.
+    TRAP_IGNORE( FormatIapInfoL( aIapId ); );
+
+    if (aConnectionAlreadyActive)
+        {
+        // If sharing a connection, do not show the popup.
+        SetState( EPopupClosed );
+        }
+    else
+        {
+        SetState( EPopupConnectingIap );
+        }
+    
+    OstTraceFunctionExit0( DUP1_CCONNECTIONSTATUSPOPUP_CONNECTINGVIADISCREETPOPUP_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  CConnectionStatusPopup::CancelConnectingViaDiscreetPopup()
+//-----------------------------------------------------------------------------
+//
+void CConnectionStatusPopup::CancelConnectingViaDiscreetPopup()
+    {
+    OstTraceFunctionEntry0( CCONNECTIONSTATUSPOPUP_CANCELCONNECTINGVIADISCREETPOPUP_ENTRY );
+    
+    SetState( EPopupClosed );
+
+    OstTraceFunctionExit0( CCONNECTIONSTATUSPOPUP_CANCELCONNECTINGVIADISCREETPOPUP_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  CConnectionStatusPopup::ConnectionErrorDiscreetPopup()
+//-----------------------------------------------------------------------------
+//
+void CConnectionStatusPopup::ConnectionErrorDiscreetPopup( TInt aErrorCode )
+    {
+    OstTraceFunctionEntry0( CCONNECTIONSTATUSPOPUP_CONNECTIONERRORDISCREETPOPUP_ENTRY );
+    
+    TBool showPopup( EFalse );
+    TRAP_IGNORE( showPopup = ResolveErrorCodeL( aErrorCode ); );
+    
+    OstTraceExt2( TRACE_FLOW, CCONNECTIONSTATUSPOPUP_CONNECTIONERRORDISCREETPOPUP, "CConnectionStatusPopup::ConnectionErrorDiscreetPopup;aErrorCode=%d;showPopup=%u", aErrorCode, showPopup );
+    
+    if (showPopup)
+        {
+        SetState( EPopupError );
+        }
+
+    OstTraceFunctionExit0( CCONNECTIONSTATUSPOPUP_CONNECTIONERRORDISCREETPOPUP_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  CConnectionStatusPopup::SetState()
+//-----------------------------------------------------------------------------
+//
+void CConnectionStatusPopup::SetState( TPopupState aNewState )
+    {
+    OstTraceExt2( TRACE_FLOW, CCONNECTIONSTATUSPOPUP_SETSTATE, "CConnectionStatusPopup::SetState;iPopupState=%u;aNewState=%u", iPopupState, aNewState );
+    
+    switch (aNewState)
+        {
+        
+        case EPopupClosed:
+            // Close popup if it's not already closing or closed
+            if (iPopupState != EPopupClosed && iPopupState != EPopupError)
+                {
+                iPopup->Close();
+                }
+            break;
+            
+        case EPopupConnecting:
+            iPopup->EnableTouchActivation( EFalse );
+            iPopup->SetTimeout( KForeverTimeout );
+            break;
+            
+        case EPopupConnectingIap:
+            iPopup->EnableTouchActivation( ETrue );
+            iPopup->SetTimeout( KForeverTimeout );
+            break;
+            
+        default: // EPopupError
+            __ASSERT_DEBUG( aNewState == EPopupError, User::Invariant() );
+            iPopup->EnableTouchActivation( EFalse );
+            iPopup->SetTimeout( KHbLongNotificationDialogTimeout ); 
+            break;
+        }
+    
+    if (aNewState != EPopupClosed)
+        {
+        // Show or update popup
+        if (iPopupState == EPopupClosed)
+            {
+            TRAP_IGNORE( iPopup->ShowL() );
+            }
+        else
+            {
+            TRAP_IGNORE( iPopup->UpdateL() );
+            }
+        }
+    
+    iPopupState = aNewState;
+    }
+
+//-----------------------------------------------------------------------------
+//  CConnectionStatusPopup::FormatIapInfoL()
+//-----------------------------------------------------------------------------
+//
+void CConnectionStatusPopup::FormatIapInfoL( TUint32 aIapId )
+    {
+    OstTraceFunctionEntry0( CCONNECTIONSTATUSPOPUP_FORMATIAPINFOL_ENTRY );
+    
+    // Title
+    HBufC* title = HbTextResolverSymbian::LoadLC(
+            Ktxt_occ_dpophead_connecting );
+    iPopup->SetTitleL( title->Des() );
+    CleanupStack::PopAndDestroy( title );
+
+    // Load iap info from cmmanager
+    HBufC* connectionName( NULL );
+    TUint bearerType( 0 );
+
+    RCmManager cmMgr;
+    CleanupClosePushL( cmMgr );
+    RCmConnectionMethod plugin;
+    CleanupClosePushL( plugin );
+    cmMgr.OpenL();
+    plugin = cmMgr.ConnectionMethodL( aIapId );
+    bearerType = plugin.GetIntAttributeL( CMManager::ECmBearerType );
+    connectionName = plugin.GetStringAttributeL( CMManager::ECmName );
+    CleanupStack::PopAndDestroy( &plugin );
+    CleanupStack::PopAndDestroy( &cmMgr );
+    
+    // Text
+    CleanupStack::PushL( connectionName );
+    if (connectionName)
+        {
+        iPopup->SetTextL( connectionName->Des() );
+        }
+    else
+        {
+        iPopup->SetTextL( KTextNone );
+        }
+    CleanupStack::PopAndDestroy( connectionName ); 
+
+    // Icon
+    switch (bearerType)
+        {
+        case KUidWlanBearerType:
+            iPopup->SetIconNameL( KIconWlan );
+            break;
+        case KPluginVPNBearerTypeUid:
+            iPopup->SetIconNameL( KIconVpn );
+            break;
+        default:
+            iPopup->SetIconNameL( KIconCellular );
+        }
+    
+    OstTraceFunctionExit0( CCONNECTIONSTATUSPOPUP_FORMATIAPINFOL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  CConnectionStatusPopup::ResolveErrorCodeL()
+//-----------------------------------------------------------------------------
+//
+TBool CConnectionStatusPopup::ResolveErrorCodeL( TInt aErrorCode )
+    {
+    OstTraceFunctionEntry0( CCONNECTIONSTATUSPOPUP_RESOLVEERRORCODEL_ENTRY );
+    
+    // Icons, which are resolved at the end
+    enum TIconType
+        {
+        EIconWlan, EIconCellular, EIconNone
+        };
+    TIconType icon = EIconWlan;
+
+    TPtrC titlePtr;
+    titlePtr.Set( Ktxt_occ_dpophead_connection_failed );
+    TPtrC textPtr;
+
+    // Resolve title, text and icon of error code.
+    // Groups are from OCC UI spec 1.0
+    switch (aErrorCode)
+        {
+
+        // Skipped errors, for which the popup is not shown.
+        case KErrNone:
+        case KErrConnectionTerminated:
+        case KErrDisconnected:
+        case KErrCancel:
+            return EFalse;
+
+        // Group 1
+        case KErrIfChangingPassword:
+            icon = EIconCellular;
+        // These were GPRS; fall through
+        case KErrWlanInternalError:
+            textPtr.Set( Ktxt_occ_dpopinfo_internal_error );
+            break;
+
+        // Group 2
+        case KErrWlanNetworkNotFound:
+            textPtr.Set( Ktxt_occ_dpopinfo_wlan_network_not_found );
+            break;
+
+        // Group 3
+        case KErrGprsUserAuthenticationFailure:
+            icon = EIconCellular;
+        // These were GPRS; fall through
+        case KErrWlanOpenAuthFailed:
+        case KErrWlanSharedKeyAuthRequired:
+        case KErrWlanWpaAuthRequired:
+        case KErrWlanWpaAuthFailed:
+        case KErrWlan802dot1xAuthFailed:
+        case KErrWlanWpaCounterMeasuresActive:
+        case KErrWlanPskModeRequired:
+        case KErrWlanEapModeRequired:
+        case KErrWlanEapSimFailed:
+        case KErrWlanEapTlsFailed:
+        case KErrWlanEapPeapFailed:
+        case KErrWlanEapMsChapv2: // Is the same as KErrWlanEapMsChaPFailed
+        case KErrWlanEapAkaFailed:
+        case KErrWlanEapTtlsFailed:
+        case KErrWlanLeapFailed:
+        case KErrWlanEapGtcFailed:
+        case KErrWlanWpa2OnlyModeNotSupported:
+        case KErrWlanEapFastTunnelCompromiseError:
+        case KErrWlanEapFastUnexpextedTlvExhanged:
+        case KErrWlanEapFastNoPacNorCertsToAuthenticateWithProvDisabled:
+        case KErrWlanEapFastNoMatchingPacForAid:
+        case KErrWlanEapFastAuthFailed:
+        case KErrWlanEapFastPacStoreCorrupted:
+            textPtr.Set( Ktxt_occ_dpopinfo_authentication_unsuccessful );
+            break;
+
+        // Group 4
+        case KErrWlanSharedKeyAuthFailed:
+        case KErrWlanIllegalWpaPskKey:
+        case KErrWlanIllegalEncryptionKeys:
+            textPtr.Set( Ktxt_occ_dpopinfo_check_security_key );
+            break;
+
+        // Group 5
+        case KErrExitModemError:
+        case KErrExitLoginFail:
+        case KErrExitScriptTimeOut:
+        case KErrExitScriptError:
+        case KErrIfAuthenticationFailure:
+        case KErrIfAuthNotSecure:
+        case KErrIfAccountDisabled:
+        case KErrIfRestrictedLogonHours:
+        case KErrIfPasswdExpired:
+        case KErrIfNoDialInPermission:
+        case KErrGprsMissingorUnknownAPN:
+            icon = EIconCellular;
+            textPtr.Set( Ktxt_occ_dpopinfo_check_connection_settings );
+            break;
+
+        // Group 6
+        case KErrWlanSimNotInstalled:
+            textPtr.Set( Ktxt_occ_dpopinfo_sim_card_missing );
+            break;
+
+        // Group 7
+        case KErrWlanNotSubscribed:
+        case KErrWlanAccessBarred:
+            textPtr.Set( Ktxt_occ_dpopinfo_service_unreachable );
+            break;
+
+        // Group 8
+        case KErrPermissionDenied:
+        case KErrWlanPasswordExpired:
+        case KErrWlanNoDialinPermissions:
+        case KErrWlanAccountDisabled:
+        case KErrWlanRestrictedLogonHours:
+        case KErrWlanServerCertificateExpired:
+        case KErrWlanCerficateVerifyFailed:
+        case KErrWlanNoUserCertificate:
+        case KErrWlanNoCipherSuite:
+        case KErrWlanUserRejected:
+        case KErrWlanUserCertificateExpired:
+            textPtr.Set( Ktxt_occ_dpopinfo_permission_denied );
+            break;
+
+        // Group 9
+        case KErrPDPMaxContextsReached:
+            icon = EIconCellular;
+            // These were GPRS; fall through
+        case KErrWlanConnAlreadyActive:
+            textPtr.Set( Ktxt_occ_dpopinfo_connection_already_active );
+            break;
+
+        // Group 10
+        case KErrWlanSignalTooWeak:
+            textPtr.Set( Ktxt_occ_dpopinfo_signal_too_weak );
+            break;
+
+        // Group 11
+        case KErrIfCallbackNotAcceptable:
+        case KErrIfDNSNotFound:
+        case KErrIfLRDBadLine:
+        case KErrNetUnreach:
+        case KErrHostUnreach:
+        case KErrNoProtocolOpt:
+        case KErrUrgentData:
+        case KErrInet6NoRoute:
+        case KErrDndNameNotFound:
+        case KErrGeneralConnection:
+        case KErrGprsMSCTemporarilyNotReachable:
+        case KErrGprsLlcOrSndcpFailure:
+        case KErrGprsInsufficientResources:
+        case KErrGprsActivationRejectedByGGSN:
+        case KErrPacketDataTsyInvalidAPN:
+            icon = EIconCellular;
+            // These were GPRS; fall through
+        case KErrWlanRoamingFailed:
+            textPtr.Set( Ktxt_occ_dpopinfo_please_try_again );
+            break;
+
+        // Group 12
+        case KErrGenConnNoGPRSNetwork:
+        case KErrGprsServicesNotAllowed:
+        case KErrGprsAndNonGprsServicesNotAllowed:
+        case KErrGprsMSIdentityCannotBeDerivedByTheNetwork:
+        case KErrGprsMSImplicitlyDetached:
+        case KErrGsmMMNetworkFailure:
+        case KErrGprsUnknownPDPAddress:
+        case KErrGprsActivationRejected:
+        case KErrGsmMMServiceOptionNotSubscribed:
+        case KErrGsmMMServiceOptionTemporaryOutOfOrder:
+        case KErrGprsNSAPIAlreadyUsed:
+        case KErrGprsQoSNotAccepted:
+        case KErrGprsReactivationRequested:
+            icon = EIconCellular;
+            textPtr.Set( Ktxt_occ_dpopinfo_connection_unavailable );
+            break;
+
+        // Group 13
+        case KErrWlanProtectedSetupDevicePasswordAuthFailure:
+        case KErrWlanProtectedSetupPINMethodNotSupported:
+        case KErrWlanProtectedSetupPBMethodNotSupported:
+            titlePtr.Set( Ktxt_occ_dpophead_configuration_failed );
+            textPtr.Set( Ktxt_occ_dpopinfo_authentication_unsuccessful );
+            break;
+
+        // Group 14
+        case KErrWlanProtectedSetupOOBInterfaceReadError:
+        case KErrWlanProtectedSetupDecryptionCRCFailure:
+        case KErrWlanProtectedSetup2_4ChannelNotSupported:
+        case KErrWlanProtectedSetup5_0ChannelNotSupported:
+        case KErrWlanProtectedSetupNetworkAuthFailure:
+        case KErrWlanProtectedSetupNoDHCPResponse:
+        case KErrWlanProtectedSetupFailedDHCPConfig:
+        case KErrWlanProtectedSetupIPAddressConflict:
+        case KErrWlanProtectedSetupCouldNotConnectToRegistrar:
+        case KErrWlanProtectedSetupMultiplePBCSessionsDetected:
+        case KErrWlanProtectedSetupRogueActivitySuspected:
+        case KErrWlanProtectedSetupDeviceBusy:
+        case KErrWlanProtectedSetupSetupLocked:
+        case KErrWlanProtectedSetupMessageTimeout:
+        case KErrWlanProtectedSetupRegistrationSessionTimeout:
+            titlePtr.Set( Ktxt_occ_dpophead_configuration_failed );
+            textPtr.Set( Ktxt_occ_dpopinfo_please_try_again );
+            break;
+
+        // For error values not specifically mapped to any error message
+        // the discreet pop-up #12 is used.
+        default:
+            icon = EIconNone;
+            textPtr.Set( Ktxt_occ_dpopinfo_connection_unavailable );
+            break;
+        }
+
+    // Load and set title, text and icon
+    HBufC* titleBuf = HbTextResolverSymbian::LoadLC( titlePtr );
+    iPopup->SetTitleL( titleBuf->Des() );
+    HBufC* textBuf = HbTextResolverSymbian::LoadLC( textPtr );
+    iPopup->SetTextL( textBuf->Des() );
+    CleanupStack::PopAndDestroy( 2, titleBuf );
+
+    switch (icon)
+        {
+        case EIconWlan:
+            iPopup->SetIconNameL( KIconWlan );
+            break;
+        case EIconCellular:
+            iPopup->SetIconNameL( KIconCellular );
+            break;
+        default:
+            __ASSERT_DEBUG( icon == EIconNone, User::Invariant());
+            // Leave icon as-is, either set by ConnectingViaDiscreetPopup
+            // or undefined.
+            break;
+        }
+    
+    OstTraceFunctionExit0( CCONNECTIONSTATUSPOPUP_RESOLVEERRORCODEL_EXIT );
+    return ETrue;
+    }
+
+
+//-----------------------------------------------------------------------------
+//  CConnectionStatusPopup::NotificationDialogActivated()
+//-----------------------------------------------------------------------------
+//
+void CConnectionStatusPopup::NotificationDialogActivated(
+        const CHbDeviceNotificationDialogSymbian* /*aDialog*/ )
+    {
+    OstTraceFunctionEntry0( CCONNECTIONSTATUSPOPUP_NOTIFICATIONDIALOGACTIVATED_ENTRY );
+    
+    // Launch wlan view or connection view depending of bearer
+    TPtrC procName; 
+    if (iPopup->IconName().Compare( KIconWlan ) == 0)
+        {
+        procName.Set( KWlanViewExeFile );
+        }
+    else if (iPopup->IconName().Compare( KIconCellular ) == 0)
+        {
+        procName.Set( KConnViewExeFile );
+        }
+    else
+        {
+        OstTraceFunctionExit0( CCONNECTIONSTATUSPOPUP_NOTIFICATIONDIALOGACTIVATED_EXIT );
+
+        return;
+        }
+
+    RProcess proc;
+    TInt procError = proc.Create( procName, KExeFileCmd );
+    OstTrace1( TRACE_FLOW, CCONNECTIONSTATUSPOPUP_NOTIFICATIONDIALOGACTIVATED, "CConnectionStatusPopup::NotificationDialogActivated;procError=%d", procError );
+    if (!procError)
+        {
+        proc.Resume();
+        proc.Close(); // Closes the handle, not the process.
+        }
+
+    OstTraceFunctionExit0( DUP1_CCONNECTIONSTATUSPOPUP_NOTIFICATIONDIALOGACTIVATED_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  CConnectionStatusPopup::NotificationDialogClosed()
+//-----------------------------------------------------------------------------
+//
+void CConnectionStatusPopup::NotificationDialogClosed(
+        const CHbDeviceNotificationDialogSymbian* /*aDialog*/,
+        TInt /*aCompletionCode*/ )
+    {
+    OstTraceFunctionEntry0( CCONNECTIONSTATUSPOPUP_NOTIFICATIONDIALOGCLOSED_ENTRY );
+    
+    SetState( EPopupClosed );
+    
+    OstTraceFunctionExit0( CCONNECTIONSTATUSPOPUP_NOTIFICATIONDIALOGCLOSED_EXIT );
+    }