QList<XQAccessPoint> XQAccessPointManagerPrivate::availableAccessPointsL() const
{
    QList<XQAccessPoint> iaps;

    RConnectionMonitor monitor;
    monitor.ConnectL();
    CleanupClosePushL(monitor);
    
    TRequestStatus status;
    TPckgBuf<TConnMonNetworkNames> pkgNetworks;
    TConnMonIapInfoBuf iapBuf;
    monitor.GetPckgAttribute(EBearerIdAll, 0, KIapAvailability, iapBuf, status);
    User::WaitForRequest(status) ;

    if (status.Int() == KErrNone) {
        XQAccessPoint ap;
        for(TUint i=0; i<iapBuf().iCount; i++) {
            ap = accessPointById(iapBuf().iIap[i].iIapId);
            if (!ap.isNull()) {
                iaps << ap;
            }
        }
    }
    CleanupStack::PopAndDestroy(&monitor);
    
    return iaps;
}
QList<XQAccessPoint> XQAccessPointManagerPrivate::activeAccessPointsL() const
{
    QList<XQAccessPoint> iaps;

    RConnectionMonitor monitor;
    monitor.ConnectL();
    CleanupClosePushL(monitor);

    TRequestStatus status;
    TUint connectionCount;
    monitor.GetConnectionCount(connectionCount, status);
    User::WaitForRequest(status);
    
    TUint connectionId;
    TUint subConnectionCount;
    TUint apId;
    if (status.Int() == KErrNone) {
        XQAccessPoint ap;
        for (TInt i = 1; i <= connectionCount; i++) {
            monitor.GetConnectionInfo(i, connectionId, subConnectionCount);
            monitor.GetUintAttribute(connectionId, subConnectionCount, KIAPId, apId, status);
            User::WaitForRequest(status);
            ap = accessPointById(apId);
            if (!ap.isNull()) {
                iaps << ap;
            }
        }
    }
    CleanupStack::PopAndDestroy(&monitor);

    return iaps;
}
QList<XQWLAN> XQAccessPointManagerPrivate::availableWLANsL() const
{
    QList<XQWLAN> wlans;
    
    RConnectionMonitor monitor;
    monitor.ConnectL();
    CleanupClosePushL(monitor);
    
    TRequestStatus status;
    TPckgBuf<TConnMonNetworkNames> pkgNetworks;
    monitor.GetPckgAttribute(EBearerIdWLAN, 0, KNetworkNames, pkgNetworks, status);
    User::WaitForRequest( status ) ;

    if (status.Int() == KErrNone) {
        for(TUint i=0; i<pkgNetworks().iCount; i++)
        {
            XQWLAN wlan;
            wlan.d = new XQWLANPrivate();

            TBuf<1000> buf16;
            buf16.Copy(pkgNetworks().iNetwork[i].iName);
            wlan.d->ssid = QString::fromUtf16(buf16.Ptr(),buf16.Length());

            wlan.d->signalStrength = pkgNetworks().iNetwork[i].iSignalStrength;

            wlans << wlan;
        }
    }

    CleanupStack::PopAndDestroy(&monitor);
    
    return wlans;
}
// ---------------------------------------------------------
// CActiveDisconnectDlgPlugin::IsConnectionL
// ---------------------------------------------------------
//
TBool CActiveDisconnectDlgPlugin::IsConnectionL( 
                                            CConnectionInfo* aConnectionInfo )
    {
    CLOG_ENTERFN( "CActiveDisconnectDlgPlugin::IsConnectionL" );
    
    TBool result( EFalse );
    
    TUint i( 0 );
    TUint connectionCount( 0 );
    TUint connNum( 0 );
    TUint subConnectionCount( 0 );
    TUint connId( 0 );    
    TInt bearer( 0 );
    TInt connStatus( 0 );

    //TRequestStatus status;
    TName apName;

    RConnectionMonitor connMon;
    result = connMon.ConnectL();
    CLOG_WRITEF( _L( "result: %d" ), result );     
    
    CDisconnectDlgActiveWaiter* waiter = CDisconnectDlgActiveWaiter::NewL();
    CleanupStack::PushL( waiter );
    
    connMon.GetConnectionCount( connNum, waiter->iStatus );
    waiter->WaitForRequest();
    //User::WaitForRequest( status );
    CLOG_WRITEF( _L( "status: %d" ), waiter->iStatus.Int() );  
    CLOG_WRITEF( _L( "connNum: %d" ), connNum );     
           
    for( i = 1; i < ( connNum + 1 ) && !connectionCount; ++i )
        {
        connMon.GetConnectionInfo( i, connId, subConnectionCount );

        connMon.GetStringAttribute( connId, 0, KIAPName, apName, waiter->iStatus );
        waiter->WaitForRequest();
        //User::WaitForRequest( status );
        CLOG_WRITEF( _L( "KIAPName status: %d" ), waiter->iStatus.Int() );     
         
    
        connMon.GetIntAttribute( connId, 0, KBearer, bearer, waiter->iStatus );
        waiter->WaitForRequest();
        //User::WaitForRequest( status );
        CLOG_WRITEF( _L( "KBearer status: %d" ), waiter->iStatus.Int() );     
        

        connMon.GetIntAttribute( connId, 0, KConnectionStatus, connStatus, 
                                 waiter->iStatus );
        waiter->WaitForRequest();
        //User::WaitForRequest( status );
        CLOG_WRITEF( _L( "KConnectionStatus status: %d" ), waiter->iStatus.Int() );     
        
        TUint iapId( 0 );
        connMon.GetUintAttribute( connId, 0, KIAPId, iapId, waiter->iStatus ); 
        waiter->WaitForRequest();
        //User::WaitForRequest( status );
        CLOG_WRITEF(_L( "KIAPId status: %d" ), waiter->iStatus.Int() );  
        CLOG_WRITEF(_L( "iapId: %d" ), iapId );
        
        TConnMonTimeBuf timeBuf;
        connMon.GetPckgAttribute( connId, 0, KStartTime, timeBuf, waiter->iStatus );
        waiter->WaitForRequest();
        CLOG_WRITEF(_L( "KStartTime status: %d" ), waiter->iStatus.Int() ); 
       
        switch( bearer )
            {
            case EBearerGPRS :
            case EBearerEdgeGPRS :
            case EBearerExternalGPRS : 
            case EBearerExternalEdgeGPRS :
            case EBearerWCDMA :
            case EBearerExternalWCDMA :
#ifdef __WINS__
            case EBearerLAN :
#endif // WINS
                {
                if ( ( connStatus == KLinkLayerOpen ) ||
                     ( connStatus == KConnectionOpen && 
                       bearer >= EBearerExternalCSD ) )
                    {      
                    apName.Trim();
                    if( apName.Left( KMrouterName().Length() ).
                        CompareF( KMrouterName ) )
                        {
                        ++connectionCount;
                        aConnectionInfo->SetIapNameL( apName );
                        aConnectionInfo->SetBearerType( bearer );
                        aConnectionInfo->SetConnId( connId );
                        aConnectionInfo->SetIAPId( iapId );
                        aConnectionInfo->SetStartTime( timeBuf() );
                        
                        TConnMonClientEnumBuf clientEnum;
                        connMon.GetPckgAttribute( connId, 0, KClientInfo,
                                                    clientEnum, waiter->iStatus );
                        waiter->WaitForRequest();
                        //User::WaitForRequest( status );
                        aConnectionInfo->SetClientInfo( clientEnum() );

                        CLOG_WRITEF( _L( "KClientInfo status: %d" ), waiter->iStatus.Int() );
                        }                    
                    }
                break;
                }
            default :
                {
                break;
                }                
            }
        }
    CleanupStack::PopAndDestroy( waiter );    
    connMon.Close();
    result = connectionCount ? ETrue : EFalse;

    CLOG_WRITEF( _L( "connectionCount: %d" ), connectionCount );     
    CLOG_WRITEF( _L( "result: %d" ), result );     
    CLOG_LEAVEFN( "CActiveDisconnectDlgPlugin::IsConnectionL" );

    return result;      
    }