--- a/connectionutilities/ConnectionDialogs/cconndlg/src/ActiveSelectConnectionPlugin.cpp Thu Aug 19 10:18:49 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,819 +0,0 @@
-/*
-* Copyright (c) 2002 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 plugins (base & all derived).
-*
-*/
-
-
-// INCLUDE FILES
-#include "ActiveSelectConnectionPlugin.h"
-#include "SelectConnectionDialog.h"
-#include "ConnectionDialogsLogger.h"
-#include "ConnectionInfo.h"
-#include "ConnectionInfoArray.h"
-#include "sortsnaputils.h"
-#include "cdbcols.h"
-
-#include <featmgr.h>
-#include <StringLoader.h>
-#include <AknIconArray.h>
-#include <AknsUtils.h>
-#include <AknIconUtils.h>
-#include <data_caging_path_literals.hrh>
-
-#include <cmdestinationext.h>
-#include <cmconnectionmethoddef.h>
-#include <cmpluginwlandef.h>
-
-#include <cmmanager.mbg>
-#include <CConnDlgPlugin.rsg>
-#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
-#include <commsdat.h>
-#else
-#include <commsdat.h>
-#include <commsdat_partner.h>
-#endif
-
-#include <wlancontainer.h>
-#include <metadatabase.h>
-
-// CONSTANTS
-
-// Category for all panics in this module
-_LIT( KASCPCategory, "Select Connection Plugin" );
-
-LOCAL_D const TInt KIconsGranularity = 4;
-LOCAL_D const TInt KArrayGranularity = 4;
-LOCAL_D const TInt KMaxEntryLength = CommsDat::KMaxTextLength*2 + 20;
-/**
-* For iPeriodic Timer, 60 seconds
-*/
-LOCAL_C const TInt KTickDefaultInterval = 60000000;
-LOCAL_C const TInt KMicrosecondsToSecondsMultiplier = 1000000;
-
-// background scan automatic scanning value
-static const TUint KWlanBgScanIntervalAuto = 0xffffffff;
-
-using namespace CMManager;
-
-
-///////////////////////////////////////////////////////////////////////////////
-
-// ---------------------------------------------------------
-// CActiveSelectConnectionPlugin::CActiveSelectConnectionPlugin()
-// ---------------------------------------------------------
-//
-CActiveSelectConnectionPlugin::CActiveSelectConnectionPlugin(
- MEikSrvNotifierBase2* aPlugin,
- const TUint32 aElementId,
- TUint32 aBearerSet )
-: iBearerSet( aBearerSet ),
- iReqBearerSet( aBearerSet ),
- iElementId( aElementId ),
- iPlugin( aPlugin ),
- iDialogConn( NULL ),
- iIsWLANFeatureSupported( EFalse ),
- iRefreshInterval( KTickDefaultInterval ),
- iHighlightedItem( -1 ),
- iDefaultDestId( 0 ),
- iDefaultCMId( 0 )
- {
- }
-
-
-// ---------------------------------------------------------
-// CActiveSelectConnectionPlugin* CActiveSelectConnectionPlugin::NewL()
-// ---------------------------------------------------------
-//
-CActiveSelectConnectionPlugin* CActiveSelectConnectionPlugin::NewL(
- MEikSrvNotifierBase2* aPlugin,
- const TUint32 aElementId,
- TUint32 aBearerSet )
- {
- CLOG_ENTERFN( "CActiveSelectConnectionPlugin::NewL " );
-
- CActiveSelectConnectionPlugin* self = new ( ELeave )
- CActiveSelectConnectionPlugin( aPlugin, aElementId,
- aBearerSet );
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
-
- CLOG_LEAVEFN( "CActiveSelectConnectionPlugin::NewL " );
-
- return self;
- }
-
-
-// ---------------------------------------------------------
-// CActiveSelectConnectionPlugin::ConstructL()
-// ---------------------------------------------------------
-//
-void CActiveSelectConnectionPlugin::ConstructL()
- {
- CLOG_ENTERFN( "CActiveSelectConnectionPlugin::ConstructL " );
-
- CActiveBase::ConstructL();
-
- FeatureManager::InitializeLibL();
-
- iIsWLANFeatureSupported = FeatureManager::FeatureSupported(
- KFeatureIdProtocolWlan );
-
- FeatureManager::UnInitializeLib();
-
- iBearerSet |= ECommDbBearerVirtual; // To get also VPN APs
-
-#ifdef __WINS__
- iBearerSet |= ECommDbBearerLAN; // To add Ethernet AP
-#endif // __WINS__
-
- if ( iIsWLANFeatureSupported )
- {
- CLOG_WRITE( "WLAN Supported!" );
- iBearerSet |= ECommDbBearerWLAN; // To add WLan AP
- iRefreshInterval = GetRefreshIntervalL();
- }
-
-
-
- iItems = new( ELeave ) CConnectionInfoArray();
- iIcons = new( ELeave ) CAknIconArray( KIconsGranularity );
-
- iCmManagerExt.OpenL();
-
- TInt ret = iMPM.LaunchServer();
- if ( ret != KErrAlreadyExists )
- {
- User::LeaveIfError( ret );
- }
- CLOG_LEAVEFN( "CActiveSelectConnectionPlugin::ConstructL " );
- }
-
-
-// ---------------------------------------------------------
-// CActiveSelectConnectionPlugin::~CActiveSelectConnectionPlugin()
-// ---------------------------------------------------------
-//
-CActiveSelectConnectionPlugin::~CActiveSelectConnectionPlugin()
- {
- CLOG_ENTERFN( "~CActiveSelectConnectionPlugin" );
- Cancel();
-
- if ( iItems )
- {
- iItems->ResetAndDestroy();
- }
- delete iItems;
- iItems = NULL;
-
- iCmManagerExt.Close();
- iMPM.Close();
-
- CLOG_LEAVEFN( "~CActiveSelectConnectionPlugin" );
- }
-
-
-// ---------------------------------------------------------
-// CActiveSelectConnectionPlugin::Cancel()
-// ---------------------------------------------------------
-//
-void CActiveSelectConnectionPlugin::Cancel()
- {
- StopTimer();
- CActive::Cancel();
-
- if( iDialogConn && !( iDialogConn->GetOkToExit() ) )
- {
- CLOG_WRITEF( _L( "iDialogConn->GetOkToExit() : %b" ), iDialogConn->GetOkToExit() );
- delete iDialogConn;
- iDialogConn = NULL;
- }
- }
-
-
-// ---------------------------------------------------------
-// CActiveSelectConnectionPlugin::DoCancel()
-// ---------------------------------------------------------
-//
-void CActiveSelectConnectionPlugin::DoCancel()
- {
- }
-
-
-// ---------------------------------------------------------
-// CActiveSelectConnectionPlugin::RunL()
-// ---------------------------------------------------------
-//
-void CActiveSelectConnectionPlugin::RunL()
- {
- CLOG_ENTERFN( "CActiveSelectConnectionPlugin::RunL " );
-
- if( iStatus == KErrNone )
- {
- BuildConnectionListL();
- iDialogConn->RefreshDialogL( iItems, iIcons, ETrue, iHighlightedItem );
- }
-
- CLOG_LEAVEFN( "CActiveSelectConnectionPlugin::RunL " );
- }
-
-
-// ---------------------------------------------------------
-// CActiveSelectConnectionPlugin::ShowSelectConnectionL()
-// ---------------------------------------------------------
-//
-void CActiveSelectConnectionPlugin::ShowSelectConnectionL()
- {
- CLOG_ENTERFN( "CActiveSelectConnectionPlugin::ShowSelectConnectionL" );
-
- BuildConnectionListL();
-
- iDialogConn = CSelectConnectionDialog::NewL( iPlugin, iRefreshInterval,
- iBearerSet,
- iIsWLANFeatureSupported,
- iDefaultCMId );
-
- iDialogConn->PrepareAndRunLD( iItems, iIcons, EFalse, iHighlightedItem );
-
- if( iRefreshInterval )
- {
- StartTimerL( iRefreshInterval );
- }
-
- CLOG_LEAVEFN( "CActiveSelectConnectionPlugin::ShowSelectConnectionL" );
- }
-
-
-// ---------------------------------------------------------
-// CActiveSelectConnectionPlugin::BuildConnectionListL()
-// ---------------------------------------------------------
-//
-void CActiveSelectConnectionPlugin::BuildConnectionListL()
- {
- CLOG_ENTERFN( "CActiveSelectConnectionPlugin::BuildConnectionListL " );
-
- // iItems and iIcons are allocated at construction and deallocated at
- // destruction. Unless memory allocation has failed, they cannot be NULL.
- __ASSERT_ALWAYS( iItems, User::Panic( KASCPCategory, KErrGeneral ) );
- __ASSERT_ALWAYS( iIcons, User::Panic( KASCPCategory, KErrGeneral ) );
-
- iItems->ResetAndDestroy();
- iIcons->ResetAndDestroy();
-
- _LIT( KDriveZ, "z:" ); // ROM folder
- // Name of the MBM file containing icons
- _LIT( KManagerIconFilename, "cmmanager.mbm" );
-
- TFileName iconsFileName;
-
- iconsFileName.Append( KDriveZ );
- iconsFileName.Append( KDC_APP_BITMAP_DIR );
- iconsFileName.Append( KManagerIconFilename );
-
-// iIcons->AppendL( AknsUtils::CreateGulIconL( AknsUtils::SkinInstance(),
-// KAknsIIDQgnIndiCbHotAdd,
-// iconsFileName,
-// EMbmCmmanagerQgn_indi_cb_hot_add,
-// EMbmCmmanagerQgn_indi_cb_hot_add_mask ) );
-
- // Create color icon for marking the default connection
- //
- CFbsBitmap* bitmap = NULL;
- CFbsBitmap* mask = NULL;
- CGulIcon* icon = CGulIcon::NewLC();
-
- AknsUtils::CreateColorIconL( AknsUtils::SkinInstance(),
- KAknsIIDQgnIndiCbHotAdd,
- KAknsIIDQsnIconColors, EAknsCIQsnIconColorsCG13,
- bitmap,
- mask,
- iconsFileName,
- EMbmCmmanagerQgn_indi_cb_hot_add,
- EMbmCmmanagerQgn_indi_cb_hot_add_mask,
- KRgbBlack );
-
- icon->SetBitmap( bitmap );
- icon->SetMask( mask );
- iIcons->AppendL( icon );
-
- CleanupStack::Pop( icon );
-
- TCmDefConnValue defaultConnSetting;
-
- iCmManagerExt.ReadDefConnL( defaultConnSetting );
- if ( defaultConnSetting.iType == ECmDefConnDestination )
- {
- iDefaultDestId = defaultConnSetting.iId;
- }
- else if ( defaultConnSetting.iType == ECmDefConnConnectionMethod )
- {
- iDefaultCMId = defaultConnSetting.iId;
- }
-
- if ( iIsWLANFeatureSupported && (iReqBearerSet & ECommDbBearerWLAN) )
- {
- AddSearchForWLanItemL();
- }
-
- AddDestinationItemsL();
-
- CLOG_WRITEF( _L( "iItems count: %d" ), iItems->Count() );
- CLOG_LEAVEFN( "CActiveSelectConnectionPlugin::BuildConnectionListL " );
- }
-
-
-// ---------------------------------------------------------
-// CActiveSelectConnectionPlugin::AddSearchForWLanItemL
-// ---------------------------------------------------------
-//
-void CActiveSelectConnectionPlugin::AddSearchForWLanItemL()
- {
- TUint32 easyWlanId = iCmManagerExt.EasyWlanIdL();
- if ( easyWlanId )
- {
- CLOG_WRITEF( _L( "easyWlanId %d" ), easyWlanId );
-
- RCmConnectionMethodExt cmConnMethodExt;
- TRAPD( err, cmConnMethodExt = iCmManagerExt.ConnectionMethodL(
- easyWlanId ) );
- if ( err == KErrNone )
- {
- CleanupClosePushL( cmConnMethodExt );
-
- CGulIcon* wlanIcon = ( CGulIcon* )
- cmConnMethodExt.GetIntAttributeL( ECmBearerIcon );
- CleanupStack::PopAndDestroy(); // cmConnMethodExt
-
- if ( wlanIcon )
- {
- CleanupStack::PushL( wlanIcon );
- iIcons->AppendL( wlanIcon );
-
- // icon array took over ownership
- CleanupStack::Pop( wlanIcon );
-
- // +1 because it "Zero terminates" the string
- TBuf<CommsDat::KMaxTextLength+1> nameSearch;
- _LIT( KIconIdNameEmpty, "%d\t%s\t" );
-
- HBufC *msg = StringLoader::LoadL( R_WLAN_EASY_WLAN );
- nameSearch = *msg;
- nameSearch.ZeroTerminate();
- delete msg;
-
- TBuf<KMaxEntryLength> temp;
- temp.FillZ( KMaxEntryLength );
- temp.Format( KIconIdNameEmpty, iIcons->Count()-1,
- nameSearch.Ptr() );
-
- CConnectionInfo* conIn = CConnectionInfo::NewL( easyWlanId,
- 0, temp );
- CleanupStack::PushL( conIn );
- iItems->AppendL( conIn );
- CleanupStack::Pop( conIn );
- iHighlightedItem = 0;
- }
- }
- }
- }
-
-// ---------------------------------------------------------
-// CActiveSelectConnectionPlugin::AddDestinationItemsL
-// ---------------------------------------------------------
-//
-void CActiveSelectConnectionPlugin::AddDestinationItemsL()
- {
- /* TInt errConnect = iMPM.Connect();
- CLOG_WRITEF( _L( "errConnect = %d" ), errConnect );
- if ( errConnect == KErrNone )
- {*/
- TSortSnapUtils sortSnapUtils( iMPM );
- RArray<TUint32> destIdArray( KArrayGranularity );
- TRAPD( err, sortSnapUtils.GetDestIdArrayL( iCmManagerExt, destIdArray ) );
- //TRAPD( err, iCmManagerExt.AllDestinationsL( destIdArray ) );
- // Append the destinations to the list
- CLOG_WRITEF( _L( "GetDestIdArrayL returned with %d" ), err );
- if ( err == KErrNone )
- {
- CleanupClosePushL( destIdArray );
-
- CLOG_WRITEF( _L( "destIdArray.Count() = %d" ), destIdArray.Count() );
- for ( TInt i = 0; i < destIdArray.Count(); i++ )
- {
- RCmDestinationExt cmDestExt = iCmManagerExt.DestinationL(
- destIdArray[i] );
- CleanupClosePushL( cmDestExt );
- if ( /*cmDestExt.ElementId() != iElementId &&*/
- !cmDestExt.MetadataL( ESnapMetadataHiddenAgent ) )
- {
- CLOG_WRITEF( _L( "Destination id %d, Total number of methods %d" ),
- destIdArray[i], cmDestExt.ConnectionMethodCount() );
-
-#ifdef _DEBUG
- for ( TInt j = 0;
- j < cmDestExt.ConnectionMethodCount(); j++ )
- {
- RCmConnectionMethodExt cmConnMethodExt;
- TRAP( err, cmConnMethodExt =
- cmDestExt.ConnectionMethodL( j ) );
- if ( err == KErrNone )
- {
- CleanupClosePushL( cmConnMethodExt );
- HBufC* bufMethod =
- cmConnMethodExt.GetStringAttributeL( ECmName );
- CleanupStack::PushL( bufMethod );
- TBuf<CommsDat::KMaxTextLength+1> nameMethod;
- nameMethod = *bufMethod;
- nameMethod.ZeroTerminate();
-
- /*CLOG_WRITEF( _L( "ConnMethod id %d, Method name %s" ),
- cmConnMethodExt.GetIntAttributeL( ECmIapId ),
- nameMethod.Ptr() );*/
-
- CleanupStack::PopAndDestroy( bufMethod );
- CleanupStack::PopAndDestroy(); // cmConnMethodExt
- }
- }
-#endif
-
- AddDestinationItemL( cmDestExt, destIdArray[i], i == 0,
- destIdArray[i] == iDefaultDestId,
- sortSnapUtils );
- }
- CleanupStack::PopAndDestroy(); // cmDestExt
- }
- CleanupStack::PopAndDestroy(); // destIdArray
- }
- AddUncategorizedItemL( sortSnapUtils );
-/* }*/
- }
-
-
-// ---------------------------------------------------------
-// CActiveSelectConnectionPlugin::AddDestinationItemL
-// ---------------------------------------------------------
-//
-void CActiveSelectConnectionPlugin::AddDestinationItemL(
- RCmDestinationExt aDestination,
- TUint32 aDestId,
- TBool aFirstItem,
- TBool aDefaultDest,
- TSortSnapUtils& aSortSnapUtils )
- {
- TMpmSnapBuffer list;
-
- TInt errMPM = aSortSnapUtils.GetSortSnapData( aDestId, list );
- CLOG_WRITEF( _L( "errMPM = %d. list.Count() = %d" ), errMPM, list.Count() );
-
- if ( errMPM == KErrNone )
- {
- for ( TInt numCM = 0; numCM < list.Count(); numCM++ )
- {
- RCmConnectionMethodExt cmConnMethodExt;
- TRAPD( err, cmConnMethodExt = iCmManagerExt.ConnectionMethodL(
- list.iIapId[numCM] ) );
-
- CLOG_WRITEF( _L( "Trapped err = %d" ), err );
-
- if ( err == KErrNone )
- {
- CleanupClosePushL( cmConnMethodExt );
- if ( iBearerSet & cmConnMethodExt.GetIntAttributeL(
- ECmCommsDBBearerType ) )
- {
- HBufC* bufBest = cmConnMethodExt.GetStringAttributeL(
- ECmName );
-
- CleanupStack::PopAndDestroy(); // cmConnMethodExt
- CleanupStack::PushL( bufBest );
-
- _LIT( KIconIdNameBest, "%d\t%s\t\"%s\"" );
- _LIT( KIconIdNameBestDefaultConn, "%d\t%s\t\"%s\"\t0" );
-
- TBuf<CommsDat::KMaxTextLength+1> nameBest;
- nameBest = *bufBest;
- nameBest.ZeroTerminate();
- CleanupStack::PopAndDestroy( bufBest );
-
- TBuf<CommsDat::KMaxTextLength+1> nameDest;
- HBufC* name = aDestination.NameLC();
- nameDest = *name;
- nameDest.ZeroTerminate();
- CleanupStack::PopAndDestroy( name );
-
- CGulIcon* destIcon = aDestination.IconL();
- if ( destIcon )
- {
- CleanupStack::PushL( destIcon );
- iIcons->AppendL( destIcon );
-
- // icon array took over ownership
- CleanupStack::Pop( destIcon );
-
- TBuf<KMaxEntryLength> temp;
- temp.FillZ( KMaxEntryLength );
- if ( aDefaultDest )
- {
- temp.Format( KIconIdNameBestDefaultConn,
- iIcons->Count()-1,
- nameDest.Ptr(), nameBest.Ptr() );
- }
- else
- {
- temp.Format( KIconIdNameBest,
- iIcons->Count()-1,
- nameDest.Ptr(), nameBest.Ptr() );
- }
-
- CConnectionInfo* conIn =
- CConnectionInfo::NewL( 0, aDestId, temp );
- CleanupStack::PushL( conIn );
- iItems->AppendL( conIn );
- CleanupStack::Pop( conIn );
-
- if ( aFirstItem ||
- aDestination.MetadataL( ESnapMetadataHighlight ) )
- { // It sets the highlight to the
- // first Destination (Internet),
- // but if it finds another with
- // the bit set, then it changes
- iHighlightedItem = iItems->Count()-1;
- }
- }
-
- numCM = list.Count(); // break;
- }
- else
- {
- CleanupStack::PopAndDestroy(); // cmConnMethodExt
- }
- }
- }
- }
- }
-
-
-// ---------------------------------------------------------
-// CActiveSelectConnectionPlugin::AddUncategorizedItemL
-// ---------------------------------------------------------
-//
-void CActiveSelectConnectionPlugin::AddUncategorizedItemL(TSortSnapUtils& aSortSnapUtils )
- {
- TMpmSnapBuffer list;
-
- TInt errMPM = aSortSnapUtils.GetSortSnapData( 0, list );
- CLOG_WRITEF( _L( "Uncategorized: errMPM = %d. list.Count() = %d" ), errMPM, list.Count() );
-
- if ( errMPM == KErrNone )
- {
- TUint numOfUncatToBeListed = 0;
-
- for ( TInt numCM = 0; numCM < list.Count(); numCM++ )
- {
- RCmConnectionMethodExt cmConnMethodExt;
- TRAPD( err, cmConnMethodExt = iCmManagerExt.ConnectionMethodL(
- list.iIapId[numCM] ) );
- if ( err == KErrNone )
- {
- CleanupClosePushL( cmConnMethodExt );
- if ( iBearerSet & cmConnMethodExt.GetIntAttributeL(
- ECmCommsDBBearerType ) )
- {
- numOfUncatToBeListed++;
- }
- CleanupStack::PopAndDestroy(); // cmConnMethodExt
- }
- }
-
- if ( ( iBearerSet & ECommDbBearerWLAN ) && iIsWLANFeatureSupported )
- {
- numOfUncatToBeListed += CountAdhocWlanIapsL();
- }
-
- if ( numOfUncatToBeListed > 0 )
- {
- CGulIcon* uncatIcon =
- ( CGulIcon* )iCmManagerExt.UncategorizedIconL();
- if ( uncatIcon )
- {
- CleanupStack::PushL( uncatIcon );
- iIcons->AppendL( uncatIcon );
- CleanupStack::Pop( uncatIcon ); // icon array took over ownership
-
- // +1 because it "Zero terminates" the string
- TBuf<CommsDat::KMaxTextLength+1> nameUncat;
- TBuf<CommsDat::KMaxTextLength+1> numUncat;
-
- HBufC *bufUncat = StringLoader::LoadL( R_LIST_UNCATEGORIZED );
- nameUncat = *bufUncat;
- nameUncat.ZeroTerminate();
- delete bufUncat;
-
- HBufC *bufNumOfUncat;
- if ( numOfUncatToBeListed == 1 )
- {
- bufNumOfUncat = StringLoader::LoadL( R_CONN_METHODS_ONE );
- }
- else
- {
- bufNumOfUncat = StringLoader::LoadL( R_CONN_METHODS_MANY,
- numOfUncatToBeListed );
- }
-
- numUncat = *bufNumOfUncat;
- numUncat.ZeroTerminate();
- delete bufNumOfUncat;
-
- TBuf<KMaxEntryLength> temp;
- _LIT( KIconIdNameNumber, "%d\t%s\t%s" );
-
- temp.FillZ( KMaxEntryLength );
- temp.Format( KIconIdNameNumber, iIcons->Count()-1, nameUncat.Ptr(),
- numUncat.Ptr() );
-
- CConnectionInfo* conIn = CConnectionInfo::NewL( 0, 0, temp );
- CleanupStack::PushL( conIn );
- iItems->AppendL( conIn );
- CleanupStack::Pop( conIn );
- if ( iHighlightedItem < 0 )
- {
- iHighlightedItem = 0;
- }
- }
- }
- }
- }
-
-
-// ---------------------------------------------------------
-// CActiveSelectConnectionPlugin::GetElementIDL
-// ---------------------------------------------------------
-//
-TUint32 CActiveSelectConnectionPlugin::GetElementIDL( TUint32 aIAPId,
- TUint32 aDestinationId )
- {
- TUint32 retval = 0;
- TInt err;
-
- if ( aDestinationId )
- {
- RCmDestinationExt cmDestExt;
- TRAP( err, cmDestExt = iCmManagerExt.DestinationL( aDestinationId ) );
- if ( err == KErrNone )
- {
- retval = cmDestExt.ElementId();
- cmDestExt.Close();
- }
- }
- else if ( aIAPId )
- {
- RCmConnectionMethodExt cmConnMethodExt;
- TRAP( err, cmConnMethodExt = iCmManagerExt.ConnectionMethodL(
- aIAPId ) );
- if ( err == KErrNone )
- {
- CleanupClosePushL( cmConnMethodExt );
- retval = cmConnMethodExt.GetIntAttributeL( ECmElementID );
- CleanupStack::PopAndDestroy(); // cmConnMethodExt
- }
- }
-
- return retval;
- }
-
-
-// ---------------------------------------------------------
-// CActiveSelectConnectionPlugin::GetRefreshIntervalL()
-// ---------------------------------------------------------
-//
-TInt CActiveSelectConnectionPlugin::GetRefreshIntervalL( )
- {
- CLOG_ENTERFN( "CActiveSelectConnectionPlugin::GetRefreshInterval" );
-
- TInt variant( KTickDefaultInterval );
-
-
- CMDBSession* session = CMDBSession::NewL(KCDLatestVersion);
- CleanupStack::PushL( session );
-
- //session->OpenTransactionL();
- TMDBElementId tableId = 0;
-
- tableId = CCDWlanDeviceSettingsRecord::TableIdL( *session);
-
- CCDWlanDeviceSettingsRecord* record = new(ELeave)
- CCDWlanDeviceSettingsRecord(tableId);
- CleanupStack::PushL(record);
-
- record->iWlanDeviceSettingsType = KWlanUserSettings;
-
- if(record->FindL( *session ))
- {
- record->LoadL( *session );
-
- // In case iBgScanInterval is -1 (= automatic) then just use
- // KTickDefaultInterval as refresh interval
- if ( record->iBgScanInterval != KWlanBgScanIntervalAuto
- && record->iBgScanInterval > 0 )
- {
- variant = record->iBgScanInterval;
- variant = variant * KMicrosecondsToSecondsMultiplier;
- }
- }
- CleanupStack::PopAndDestroy( record );
-
- //session->CommitTransactionL();
-
- CleanupStack::PopAndDestroy( session );
-
- TUint32 variantToLog = variant;
-
- CLOG_WRITEF( _L( "Refresh interval (microseconds) : %d" ), variantToLog );
-
- CLOG_LEAVEFN( "CActiveSelectConnectionPlugin::GetRefreshInterval" );
-
- return variant;
- }
-
-// ---------------------------------------------------------
-// CActiveSelectConnectionPlugin::CountAdhocWlanIapsL()
-// ---------------------------------------------------------
-//
-TInt CActiveSelectConnectionPlugin::CountAdhocWlanIapsL()
- {
- CLOG_ENTERFN( "CActiveSelectExplicit::CountAdhocWlanIapsL " );
-
- // Creating a session with the latest version
- CMDBSession* db = CMDBSession::NewLC( CMDBSession::LatestVersion() );
- db->SetAttributeMask( ECDProtectedWrite );
-
- // Create wlan service record set (RArray (or RPtrArray?))
- CMDBRecordSet<CCDWlanServiceRecord>* wlanSet =
- new (ELeave)CMDBRecordSet<CCDWlanServiceRecord>( CCDWlanServiceRecord::TableIdL( *db ) );
- CleanupStack::PushL( wlanSet );
-
- // Create wlan service record
- CCDWlanServiceRecord* wlanRecord =
- new (ELeave)CCDWlanServiceRecord( CCDWlanServiceRecord::TableIdL( *db ) );
-
- CleanupStack::PushL( wlanRecord );
-
- // Set ConnectionMode field in wlan service record (see wlancontainer.h)
- // This works with EWlanOperatingModeAdhoc, fails with EWlanConnectionModeAdhoc
- wlanRecord->iWlanConnMode.SetL( EWlanOperatingModeAdhoc );
-
- // Append wlan service record to wlan service record set (currently empty)
- wlanSet->iRecords.AppendL( wlanRecord );
- CleanupStack::Pop( wlanRecord ); // ownership moved to RPointerArray
-
- TInt wlanRecordCount( 0 );
-
- // Find matcing wlan service records
- if( wlanSet->FindL( *db ) )
- {
- wlanRecordCount = wlanSet->iRecords.Count();
-
- for ( TInt i = 0; i < wlanRecordCount; i++ )
- {
- // Load the current record again to be sure all fields are up to date
- wlanRecord->SetElementId( wlanSet->iRecords[i]->ElementId() );
-
- // Load will only look at ElementId and updates the rest of the fields
- wlanRecord->LoadL( *db );
-
- if ( wlanRecord->iWLanSSID.IsNull() )
- {
- // Count active Easy WLAN using adhoc out
- wlanRecordCount--;
- break;
- }
- }
-
- CLOG_WRITEF( _L("wlanSet record count = %d"), wlanRecordCount );
- }
- else
- {
- CLOG_WRITEF( _L("no matcing wlan records found." ));
- }
-
- CleanupStack::PopAndDestroy( wlanSet );
- CleanupStack::PopAndDestroy( db );
-
- CLOG_LEAVEFN( "CActiveSelectExplicit::CountAdhocWlanIapsL" );
-
- return ( wlanRecordCount );
- }
-
-// End of File