--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/apengine/apsettingshandlerui/src/ApSettingsModel.cpp Thu Dec 17 08:55:21 2009 +0200
@@ -0,0 +1,1577 @@
+/*
+* 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 CApSettingsModel.
+*
+*/
+
+
+// INCLUDE FILES
+#include "APSettingsHandlerUIVariant.hrh"
+
+#include <ActiveApDb.h>
+#include <ApListItemList.h>
+#include <ApListItem.h>
+#include <ApSelect.h>
+#include <ApSetUI.rsg>
+#include <VpnApEngine.h>
+#include <hlplch.h>
+#include <eikenv.h>
+#include <eikappui.h>
+#include <StringLoader.h>
+#include <featmgr.h>
+
+#include "ApSettingsHandlerUI.hrh"
+
+#include "ApSettingsModel.h"
+#include <ApSettingsHandlerCommons.h>
+#include "Apsettingsdeleteoperation.h"
+
+#include <sysutil.h>
+#include <ErrorUI.h>
+
+
+#include "ApNetworks.h"
+#include "FeatureManagerWrapper.h"
+
+#include <WEPSecuritySettingsUI.h>
+#include <WPASecuritySettingsUI.h>
+
+#include <ApAccessPointItem.h>
+
+#include "ApSettingsHandlerLogger.h"
+
+//#define __TEST_PERFORMANCE
+
+// CONSTANTS
+
+
+
+
+/**
+* Estimated number of bytes in FFS for one writing operation. This amount
+* is checked to be available before each transaction which places write-lock.
+* Exact size is not known (because what happens in a transaction is unknown).
+* A typical access point is estimated to be less than ~2000 bytes;
+* so assuming the typical operation of adding one access point
+* (with database transaction overhead and safety) is estimated
+* to be 2000 bytes. This should be a safe guess.
+*/
+LOCAL_C const TInt KEstimatedFfsUsage = 2000;
+
+
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// CApSettingsModel::NewL
+// ---------------------------------------------------------
+//
+CApSettingsModel* CApSettingsModel::NewL( TInt aIspFilter, TInt aBearerFilter,
+ TInt aSortType, TInt aReqIpvType,
+ TVpnFilterType aVpnFilterType,
+ TInt aVariant,
+ TBool aIncludeEasyWlan,
+ TBool aNoEdit )
+ {
+ APSETUILOGGER_ENTERFN( EModel,"Model::NewL")
+ CApSettingsModel* db =
+ new( ELeave ) CApSettingsModel( aIspFilter, aBearerFilter,
+ aSortType, aReqIpvType, aVariant,
+ aVpnFilterType, aIncludeEasyWlan,
+ aNoEdit );
+ CleanupStack::PushL( db );
+ db->ConstructL( NULL );
+ CleanupStack::Pop(); // db
+ APSETUILOGGER_LEAVEFN( EModel,"Model::NewL")
+ return db;
+ }
+
+
+
+// ---------------------------------------------------------
+// CApSettingsModel::NewL
+// ---------------------------------------------------------
+//
+CApSettingsModel* CApSettingsModel::NewL( CActiveApDb& aDb, TInt aIspFilter,
+ TInt aBearerFilter, TInt aSortType,
+ TInt aReqIpvType,
+ TVpnFilterType aVpnFilterType,
+ TInt aVariant,
+ TBool aIncludeEasyWlan,
+ TBool aNoEdit )
+ {
+ APSETUILOGGER_ENTERFN( EModel,"Model::NewL2")
+ CApSettingsModel* db =
+ new( ELeave ) CApSettingsModel( aIspFilter, aBearerFilter,
+ aSortType, aReqIpvType, aVariant,
+ aVpnFilterType, aIncludeEasyWlan,
+ aNoEdit );
+ CleanupStack::PushL( db );
+ db->ConstructL( &aDb );
+ CleanupStack::Pop(); // db
+ APSETUILOGGER_LEAVEFN( EModel,"Model::NewL2")
+ return db;
+ }
+
+
+/**
+* Destructor.
+*/
+CApSettingsModel::~CApSettingsModel( )
+ {
+ APSETUILOGGER_ENTERFN( EModel,"~Model")
+ delete iFeatureManagerWrapper;
+
+ delete iApData;
+ delete iUtils;
+ delete iVpnApEngine;
+ if ( iDbOwned )
+ {
+ delete iDb;
+ }
+ if (iop)
+ {
+ delete iop;
+ }
+
+ delete iWepSecSettings;
+ delete iWepSecSettingsUi;
+
+ delete iWpaSecSettings;
+ delete iWpaSecSettingsUi;
+ APSETUILOGGER_LEAVEFN( EModel,"~Model")
+ }
+
+
+/**
+* Constructor
+*/
+CApSettingsModel::CApSettingsModel( TInt aIspFilter, TInt aBearerFilter,
+ TInt aSortType, TInt aReqIpvType,
+ TInt aVariant,
+ TVpnFilterType aVpnFilterType,
+ TBool aIncludeEasyWlan,
+ TBool aNoEdit )
+
+ {
+ APSETUILOGGER_ENTERFN( EModel,"Model")
+
+ iWepUiExitReason = 0;
+ iParams.iIspFilter = aIspFilter;
+ iParams.iBearerFilter = aBearerFilter;
+ iParams.iSortType = aSortType;
+ iReqIpvType = aReqIpvType;
+ iApData = NULL;
+ iDb = NULL;
+ iUtils = NULL;
+ iDbOwned = ETrue;
+ iVpnFilterType = aVpnFilterType;
+ iVariant = aVariant;
+ iIncludeEasyWlan = aIncludeEasyWlan;
+ iNoEdit = aNoEdit;
+ iInRefresh = EFalse;
+ iNeedRefresh = EFalse;
+ APSETUILOGGER_LEAVEFN( EModel,"Model")
+ }
+
+
+
+// ---------------------------------------------------------
+// CApSettingsModel::ConstructL
+// ---------------------------------------------------------
+//
+void CApSettingsModel::ConstructL( CActiveApDb* aDb )
+ {
+ APSETUILOGGER_ENTERFN( EModel,"Model::ConstructL")
+ if ( aDb )
+ {
+ iDbOwned = EFalse;
+ iDb = aDb;
+ }
+ else
+ {
+ iDb = CActiveApDb::NewL( EDatabaseTypeIAP );
+ iDbOwned = ETrue;
+ }
+ iApData = CApDataHandler::NewLC( *iDb->Database() );
+ CleanupStack::Pop( iApData ); // as it is a member
+ iUtils = CApUtils::NewLC( *iDb->Database() );
+ CleanupStack::Pop( iUtils ); //
+ iVpnApEngine = CVpnApEngine::NewLC( iDb->Database() );
+ CleanupStack::Pop( iVpnApEngine ); //
+
+ iFeatureManagerWrapper = CFeatureManagerWrapper::NewL();
+ iHelpSupported = FeatureManager::FeatureSupported( KFeatureIdHelp );
+ iProtectionSupported = FeatureManager::FeatureSupported(
+ KFeatureIdSettingsProtection );
+
+ APSETUILOGGER_LEAVEFN( EModel,"Model::ConstructL")
+ }
+
+
+
+// ---------------------------------------------------------
+// CApSettingsModel::Database
+// ---------------------------------------------------------
+//
+CActiveApDb* CApSettingsModel::Database()
+ {
+ APSETUILOGGER_ENTERFN( EModel,"Model::Database<->")
+ return iDb;
+ }
+
+
+
+
+// ---------------------------------------------------------
+// CApSettingsModel::AllListItemDataL
+// ---------------------------------------------------------
+//
+TInt CApSettingsModel::AllListItemDataL( TBool& aFailedLocked,
+ CApListItemList& aList,
+ TInt aIspFilter, TInt aBearerFilter,
+ TInt aSortType, TInt aReqIpvType )
+ {
+ APSETUILOGGER_ENTERFN( EModel,"Model::AllListItemDataL<->")
+ return AllListItemDataL( aFailedLocked, aList, aIspFilter,
+ aBearerFilter, aSortType, aReqIpvType,
+ iVpnFilterType, iIncludeEasyWlan );
+ }
+
+
+
+// ---------------------------------------------------------
+// CApSettingsModel::AllListItemDataL
+// ---------------------------------------------------------
+//
+TInt CApSettingsModel::AllListItemDataL(
+ TBool& aFailedLocked,
+ CApListItemList& aList,
+ TInt aIspFilter,
+ TInt aBearerFilter,
+ TInt aSortType,
+ TInt aReqIpvType,
+ TVpnFilterType aVpnFilterType,
+ TBool aIncludeEasyWlan
+ )
+ {
+ APSETUILOGGER_ENTERFN( EModel,"Model::AllListItemDataL2")
+ TInt retval( 0 );
+ if (iInRefresh)
+ {
+ APSETUILOGGER_WRITE( EModel,"AllListItemData overrun->");
+ iNeedRefresh = ETrue;
+ }
+ else
+ {
+ iInRefresh = ETrue;
+ aFailedLocked = EFalse;
+ CApSelect* apselect = CApSelect::NewLC( *iDb->Database(), aIspFilter,
+ aBearerFilter, aSortType,
+ aReqIpvType,
+ aVpnFilterType,
+ aIncludeEasyWlan );
+ APSETUILOGGER_WRITE( EModel,"ApSelect::NewLC returned");
+
+ retval = apselect->AllListItemDataL( aList );
+
+ APSETUILOGGER_WRITE( EModel,"ApSelect::AllListItemDataL returned");
+
+ CleanupStack::PopAndDestroy( apselect ); // apselect
+ retval = aList.Count();
+
+ iInRefresh = EFalse;
+ }
+ if (iNeedRefresh && !iInRefresh)
+ {
+ APSETUILOGGER_WRITE( EModel,"add. refresh starts");
+ retval = AllListItemDataL( aFailedLocked, aList, aIspFilter,
+ aBearerFilter, aSortType, aReqIpvType,
+ aVpnFilterType, aIncludeEasyWlan );
+ iNeedRefresh = EFalse;
+ APSETUILOGGER_WRITE( EModel,"add. refresh ends");
+ }
+ APSETUILOGGER_LEAVEFN( EModel,"Model::AllListItemDataL2")
+ return retval;
+ }
+
+
+
+// ---------------------------------------------------------
+// CApSettingsModel::AllListItemDataL
+// ---------------------------------------------------------
+//
+TInt CApSettingsModel::AllListItemDataL( TBool& aFailedLocked,
+ CApListItemList& aList )
+ {
+ APSETUILOGGER_ENTERFN( EModel,"Model::AllListItemDataL ->")
+ return AllListItemDataL( aFailedLocked, aList, iParams.iIspFilter,
+ iParams.iBearerFilter,
+ iParams.iSortType,
+ iReqIpvType, iVpnFilterType,
+ iIncludeEasyWlan );
+ }
+
+
+
+// ---------------------------------------------------------
+// CApSettingsModel::AccessPointDataL
+// ---------------------------------------------------------
+//
+void CApSettingsModel::AccessPointDataL( TUint32 aUid,
+ CApAccessPointItem& aApItem )
+ {
+ APSETUILOGGER_ENTERFN( EModel,"Model::AccessPointDataL")
+ TTransactionResult ownTransaction = StartTransactionLC( /*aWrite*/EFalse,
+ /*aShowNote*/ETrue,
+ /*aRetry*/ETrue );
+ if ( ownTransaction != EFailedWithLocked )
+ {
+ iApData->AccessPointDataL( aUid, aApItem ); // adds normal ap
+ // Load wlan data, only loads if WLAN ap.
+ TRAPD( err, LoadWlanL( aApItem ) );
+ if ( err != KErrUnknown)
+ {
+ User::LeaveIfError( err );
+ }
+
+ if ( ownTransaction == EOwnTransaction )
+ {
+ TInt err = CommitTransaction();
+ User::LeaveIfError( err );
+ CleanupStack::Pop(); // RollbackTransactionOnLeave
+ }
+ }
+
+ APSETUILOGGER_LEAVEFN( EModel,"Model::AccessPointDataL")
+ }
+
+
+
+// ---------------------------------------------------------
+// CApSettingsModel::UpdateAccessPointDataL
+// ---------------------------------------------------------
+//
+TBool CApSettingsModel::UpdateAccessPointDataL( CApAccessPointItem& aApItem )
+ {
+ APSETUILOGGER_ENTERFN( EModel,"Model::UpdateAccessPointDataL")
+ TBool nameChanged( EFalse );
+// It should be aWrite ETrue, but there is an error in Symbian stuff
+// causing a memory leak
+// TTransactionResult ownTransaction = StartTransactionLC( /*aWrite*/ETrue,
+ TTransactionResult ownTransaction = StartTransactionLC( /*aWrite*/EFalse,
+ /*aShowNote*/ETrue,
+ /*aRetry*/ETrue );
+ if ( ownTransaction != EFailedWithLocked )
+ {
+ TBool isnew(EFalse);
+ if ( aApItem.BearerTypeL() == EApBearerTypeWLAN )
+ { // it is WLAN...
+ // check that there were no bearer-change, because if orig. bearer
+ // was NOT wlan, then we shouls consider it as a new record!!!
+ if ( iUtils->BearerTypeL( aApItem.WapUid() ) != EApBearerTypeWLAN )
+ {
+ isnew = ETrue;
+ }
+ }
+ iApData->UpdateAccessPointDataL( aApItem, nameChanged );
+ // write wlan data, only writes if WLAN ap.
+ WriteWlanL( aApItem, isnew );
+
+#ifdef __WINS__
+ ShowNoteL( R_APUI_VIEW_SAVED );
+#endif
+ if ( ownTransaction == EOwnTransaction )
+ {
+ TInt err = CommitTransaction();
+ User::LeaveIfError( err );
+ CleanupStack::Pop(); // RollbackTransactionOnLeave
+ }
+ }
+
+ APSETUILOGGER_LEAVEFN( EModel,"Model::UpdateAccessPointDataL")
+ return nameChanged;
+ }
+
+
+
+
+// ---------------------------------------------------------
+// CApSettingsModel::DataHandler
+// ---------------------------------------------------------
+//
+CApDataHandler* CApSettingsModel::DataHandler()
+ {
+ APSETUILOGGER_ENTERFN( EModel,"Model::DataHandler <->")
+ return iApData;
+ }
+
+
+
+// ---------------------------------------------------------
+// CApSettingsModel::ApUtils
+// ---------------------------------------------------------
+//
+CApUtils* CApSettingsModel::ApUtils()
+ {
+ APSETUILOGGER_ENTERFN( EModel,"Model::ApUtils <->")
+ return iUtils;
+ }
+
+
+// ---------------------------------------------------------
+// CApSettingsModel::SetParams
+// ---------------------------------------------------------
+//
+void CApSettingsModel::SetParams( TApSettingsParams aParams )
+ {
+ APSETUILOGGER_ENTERFN( EModel,"Model::SetParams <->")
+ iParams = aParams;
+ }
+
+
+// ---------------------------------------------------------
+// CApSettingsModel::Params
+// ---------------------------------------------------------
+//
+TApSettingsParams CApSettingsModel::Params()
+ {
+ APSETUILOGGER_ENTERFN( EModel,"Model::Params <->")
+ return iParams;
+ }
+
+
+
+// ---------------------------------------------------------
+// CApSettingsModel::VpnEngine
+// ---------------------------------------------------------
+//
+CVpnApEngine* CApSettingsModel::VpnEngine()
+ {
+ APSETUILOGGER_ENTERFN( EModel,"Model::VpnEngine <->")
+ return iVpnApEngine;
+ }
+
+
+// ---------------------------------------------------------
+// CApSettingsModel::LaunchHelpL
+// ---------------------------------------------------------
+//
+void CApSettingsModel::LaunchHelpL()
+ {
+#ifdef __SERIES60_HELP
+ APSETUILOGGER_ENTERFN( EModel,"Model::LaunchHelpL")
+ HlpLauncher::LaunchHelpApplicationL(
+ EikEnv()->WsSession(),
+ EikEnv()->EikAppUi()->AppHelpContextL() );
+ APSETUILOGGER_LEAVEFN( EModel,"Model::LaunchHelpL")
+#endif // __SERIES60_HELP
+ }
+
+
+// ---------------------------------------------------------
+// CApSettingsModel::RemoveApL
+// ---------------------------------------------------------
+//
+void CApSettingsModel::RemoveApL( TUint32 aUid )
+ {
+ APSETUILOGGER_ENTERFN( EModel,"Model::RemoveApL")
+// DELETE OPERATION STARTS HERE
+ TBuf<KModifiableTextLength> sgd;
+ iUtils->NameL( aUid, sgd );
+ HBufC* temp = StringLoader::LoadLC( R_APUI_VIEW_DELETING_AP, sgd );
+
+ APSETUILOGGER_WRITE( EModel,"Creating thread");
+
+ if (!iop)
+ {
+ iop = CApSettingsDeleteOperation::NewL(
+ KApWaitNote, R_APUI_VIEW_WAIT_NOTE,
+ aUid, *temp
+ );
+ APSETUILOGGER_WRITE( EModel,"Thread created");
+ }
+ else
+ {
+ if (iop->State() != CApSettingsDeleteOperation::EProcOffDialogOff )
+ {
+ ShowNoteL( R_APUI_VIEW_TEXT_CANNOT_ACCESS_DB );
+ User::Leave( KErrInUse );
+ }
+ else
+ {
+ iop->SetUid( aUid );
+ iop->SetNoteTextL( *temp );
+ }
+ }
+
+ TRAPD(err, iop->StartL() );
+
+ APSETUILOGGER_WRITE_FORMAT( EModel, "Thread StartL returned, code:%d", err);
+
+ if ( err != KErrNone )
+ {
+ User::Leave( err );
+ }
+
+ CleanupStack::PopAndDestroy( temp );
+ APSETUILOGGER_LEAVEFN( EModel,"Model::RemoveApL")
+// DELETE OPERATION ENDS HERE
+
+ }
+
+
+
+
+// ---------------------------------------------------------
+// CApSettingsModel::StarTransactionLC
+// ---------------------------------------------------------
+//
+TTransactionResult CApSettingsModel::StartTransactionLC(
+ TBool aWrite, TBool aShowNote,
+ TBool aRetry, TBool aLFFSChecking /* ETrue */ )
+ {
+ APSETUILOGGER_ENTERFN( EModel,"Model::StartTransactionLC")
+ TTransactionResult retval( EOwnTransaction );
+
+ // Before attempting db modification, check if we would go below Critical
+ // Level in FFS (disk). The value used for checking is an estimate.
+ // Reading the db also allocates some bytes (transaction log), but
+ // this is not estimated and not checked, because it should be small
+ // enough, and would slow down operation. (Typical use is to read a lot
+ // and write much less.)
+ if ( aLFFSChecking &&
+ aWrite &&
+ FFSSpaceBelowCriticalLevelL
+ ( /*aShowErrorNote=*/EFalse, KEstimatedFfsUsage )
+ )
+ {
+ User::Leave( KErrDiskFull );
+ }
+
+ CCommsDatabase* aDb = iDb->Database();
+ TInt err( KErrNone );
+ if ( !aDb->InTransaction() )
+ {
+ TInt retriesLeft( aRetry ? KRetryCount : 1 );
+ err = aDb->BeginTransaction();
+ while ( ( ( err == KErrLocked ) || ( err == KErrAccessDenied ) )
+ && --retriesLeft )
+ {
+ User::After( KRetryWait );
+ err = aDb->BeginTransaction();
+ if (aWrite )
+ {
+ TRAP(err, GetWriteLockL() );
+ }
+ }
+ if ( err && aShowNote )
+ {
+ ShowNoteL( R_APUI_VIEW_TEXT_CANNOT_ACCESS_DB );
+ }
+ switch ( err )
+ {
+ case KErrNone:
+ {
+ CleanupStack::PushL(
+ TCleanupItem( RollbackTransactionOnLeave, aDb ) );
+ break;
+ }
+ case KErrLocked:
+ case KErrAccessDenied:
+ {
+ retval = EFailedWithLocked;
+ break;
+ }
+ default:
+ {
+ User::LeaveIfError( err );
+ break;
+ }
+ }
+ }
+ else
+ {
+ if ( aWrite )
+ {
+ TRAP(err, GetWriteLockL() );
+ }
+ if ( err && aShowNote )
+ {
+ ShowNoteL( R_APUI_VIEW_TEXT_CANNOT_ACCESS_DB );
+ }
+ if ( err != KErrLocked )
+ {
+ User::LeaveIfError( err );
+ }
+ if ( err )
+ {
+ retval = EFailedWithLocked;
+ }
+ else
+ {
+ retval = EUsingAlreadyStarted;
+ }
+ }
+ APSETUILOGGER_LEAVEFN( EModel,"Model::StartTransactionLC")
+ return retval;
+ }
+
+
+// ---------------------------------------------------------
+// CApSettingsModel::GetWriteLockL
+// ---------------------------------------------------------
+//
+void CApSettingsModel::GetWriteLockL( )
+ {
+ APSETUILOGGER_ENTERFN( EModel,"Model::GetWriteLockL")
+ CCommsDbTableView* v =
+ iDb->Database()->OpenTableLC( TPtrC(WAP_ACCESS_POINT ) );
+ TUint32 dummyUid( KApNoneUID );
+ TInt err = v->InsertRecord( dummyUid );
+ User::LeaveIfError( err );
+ v->CancelRecordChanges();
+ User::LeaveIfError( err );
+ CleanupStack::PopAndDestroy( v );
+ APSETUILOGGER_LEAVEFN( EModel,"Model::GetWriteLockL")
+ }
+
+// ---------------------------------------------------------
+// CApSettingsModel::RollbackTransactionOnLeave
+// ---------------------------------------------------------
+//
+void CApSettingsModel::RollbackTransactionOnLeave( TAny* aDb )
+ {
+ APSETUILOGGER_ENTERFN( EModel,"Model::RollbackTransactionOnLeave")
+ CCommsDatabase* db = STATIC_CAST( CCommsDatabase*, aDb );
+ db->RollbackTransaction();
+ APSETUILOGGER_LEAVEFN( EModel,"Model::RollbackTransactionOnLeave")
+ }
+
+
+
+// ---------------------------------------------------------
+// CApSettingsModel::CommitTransaction
+// ---------------------------------------------------------
+//
+TInt CApSettingsModel::CommitTransaction()
+ {
+ APSETUILOGGER_ENTERFN( EModel,"Model::CommitTransaction")
+ TInt err = iDb->Database()->CommitTransaction();
+ APSETUILOGGER_LEAVEFN( EModel,"Model::CommitTransaction")
+ return err;
+ }
+
+
+
+// ---------------------------------------------------------
+// CApSettingsModel::FFSSpaceBelowCriticalLevelL
+// ---------------------------------------------------------
+//
+TBool CApSettingsModel::FFSSpaceBelowCriticalLevelL
+ ( TBool aShowErrorNote, TInt aBytesToWrite /*=0*/ )
+ {
+ APSETUILOGGER_ENTERFN( EModel,"Model::FFSSpaceBelowCriticalLevelL")
+ TBool ret( EFalse );
+ if ( SysUtil::FFSSpaceBelowCriticalLevelL
+ ( &( EikEnv()->FsSession()), aBytesToWrite ) )
+ {
+ ret = ETrue;
+ if ( aShowErrorNote )
+ {
+ CErrorUI* errorUi = CErrorUI::NewLC( *EikEnv() );
+ errorUi->ShowGlobalErrorNoteL( KErrDiskFull );
+ CleanupStack::PopAndDestroy(); // errorUi
+ }
+ }
+ APSETUILOGGER_LEAVEFN( EModel,"Model::FFSSpaceBelowCriticalLevelL")
+ return ret;
+ }
+
+
+
+
+// ---------------------------------------------------------
+// CApSettingsModel::NetWorkListDataL
+// ---------------------------------------------------------
+//
+TInt CApSettingsModel::NetWorkListDataL( TBool& aFailedLocked,
+ CApNetworkItemList& aList )
+ {
+ APSETUILOGGER_ENTERFN( EModel,"Model::NetWorkListDataL")
+ TInt retval( KErrNone );
+ aFailedLocked = EFalse;
+ TTransactionResult ownTransaction = StartTransactionLC( /*aWrite*/EFalse,
+ /*aShowNote*/EFalse,
+ /*aRetry*/ETrue );
+ if ( ownTransaction != EFailedWithLocked )
+ {
+ CApNetworks* apnet = CApNetworks::NewLC( *iDb->Database() );
+ retval = apnet->AllListItemDataL( aList );
+ CleanupStack::PopAndDestroy( apnet ); // apSelect
+ if ( ownTransaction == EOwnTransaction )
+ {
+ TInt err = CommitTransaction();
+ User::LeaveIfError( err );
+ CleanupStack::Pop(); // RollbackTransactionOnLeave
+ }
+ }
+ else
+ {
+ aFailedLocked = ETrue;
+ }
+ APSETUILOGGER_LEAVEFN( EModel,"Model::NetWorkListDataL")
+ return retval;
+ }
+
+
+
+// ---------------------------------------------------------
+// CApSettingsModel::RequestedIPvType
+// ---------------------------------------------------------
+//
+TInt CApSettingsModel::RequestedIPvType( )
+ {
+ APSETUILOGGER_ENTERFN( EModel,"Model::RequestedIPvType<->")
+ return iReqIpvType;
+ }
+
+
+
+
+// ---------------------------------------------------------
+// CApSettingsModel::Need2DeleteSelect
+// called when menu needs to be displayed
+// ---------------------------------------------------------
+//
+TBool CApSettingsModel::Need2DeleteSelect( TInt aResourceId, TInt aCount )
+ {
+ APSETUILOGGER_ENTERFN( EModel,"Model::Need2DeleteSelect")
+ TBool retval( EFalse );
+
+ if ( ( aCount == 0 )
+ &&
+ ( aResourceId == R_APSETTINGSUI_MENU_SELECT_NORMAL ) )
+ {
+ retval = ETrue;
+ }
+ APSETUILOGGER_LEAVEFN( EModel,"Model::Need2DeleteSelect")
+ return retval;
+ }
+
+
+// ---------------------------------------------------------
+// CApSettingsModel::Need2DeleteOpen
+// called when menu needs to be displayed
+// ---------------------------------------------------------
+//
+TBool CApSettingsModel::Need2DeleteOpen( TInt aResourceId, TInt aCount,
+ TUint32 aUid, TBool aNeedsNone )
+ {
+ APSETUILOGGER_ENTERFN( EModel,"Model::Need2DeleteOpen")
+ TBool retval( EFalse );
+ TBool noItem( EFalse );
+ TBool onlyItemIsNone( EFalse );
+ TBool editOnlyVPN( EFalse );
+ TBool noEdit( EFalse );
+
+ noItem = ( aCount == 0) &&
+ ( ( aResourceId == R_APSETTINGSUI_MENU_NORMAL ) ||
+ ( aResourceId == R_APSETTINGSUI_MENU_SELECT_NORMAL ) );
+
+ onlyItemIsNone = ( aNeedsNone ) && ( aUid == KApNoneUID )
+ && ( ( aResourceId == R_APSETTINGSUI_MENU_SELECT_ONLY ) ||
+ ( aResourceId == R_APSETTINGSUI_MENU_SELECT_NORMAL ) ||
+ ( aResourceId == R_APSETTINGSUI_MENU_NORMAL ) );
+
+ editOnlyVPN = ( iVariant & KApUiEditOnlyVPNs )
+ && ( ( aResourceId == R_APSETTINGSUI_SELECT_ONLY_MENUBAR ) ||
+ ( aResourceId == R_APSETTINGSUI_SELECT_NORMAL_MENUBAR ) ||
+ ( aResourceId == R_APSETTINGSUI_MENU_NORMAL ) );
+ noEdit = ( iNoEdit )
+ && ( ( aResourceId == R_APSETTINGSUI_MENU_SELECT_NORMAL ) ||
+ ( aResourceId == R_APSETTINGSUI_MENU_NORMAL ) );
+
+ retval = noItem || onlyItemIsNone || editOnlyVPN || noEdit;
+
+ APSETUILOGGER_LEAVEFN( EModel,"Model::Need2DeleteOpen")
+ return retval;
+ }
+
+
+// ---------------------------------------------------------
+// CApSettingsModel::Need2DeleteDeleteL
+// called when menu needs to be displayed
+// ---------------------------------------------------------
+//
+TBool CApSettingsModel::Need2DeleteDeleteL( TInt aResourceId, TInt aCount,
+ TUint32 aUid, TBool aNeedsNone )
+ {
+ APSETUILOGGER_ENTERFN( EModel,"Model::Need2DeleteDeleteL")
+ TBool retval( EFalse );
+ TBool noItem( EFalse );
+ TBool onlyItemIsNone( EFalse );
+ TBool editOnlyVPN( EFalse );
+ TBool noEdit( EFalse );
+
+ noItem = ( aCount == 0) &&
+ ( ( aResourceId == R_APSETTINGSUI_MENU_NORMAL ) ||
+ ( aResourceId == R_APSETTINGSUI_MENU_SELECT_NORMAL ) );
+
+ onlyItemIsNone = ( aNeedsNone ) && ( aUid == KApNoneUID )
+ && ( ( aResourceId == R_APSETTINGSUI_MENU_SELECT_ONLY ) ||
+ ( aResourceId == R_APSETTINGSUI_MENU_SELECT_NORMAL ) ||
+ ( aResourceId == R_APSETTINGSUI_MENU_NORMAL ) );
+
+ editOnlyVPN = ( iVariant & KApUiEditOnlyVPNs )
+ && ( ( aResourceId == R_APSETTINGSUI_SELECT_ONLY_MENUBAR ) ||
+ ( aResourceId == R_APSETTINGSUI_SELECT_NORMAL_MENUBAR ) ||
+ ( aResourceId == R_APSETTINGSUI_MENU_NORMAL ) );
+
+ noEdit = ( iNoEdit )
+ && ( ( aResourceId == R_APSETTINGSUI_MENU_SELECT_NORMAL ) ||
+ ( aResourceId == R_APSETTINGSUI_MENU_NORMAL ) );
+
+ if ( editOnlyVPN )
+ {
+ // check if current item is VPN...
+ if ( ( aCount != 0 ) && ( aUid != KApNoneUID ) )
+ {
+ retval = ! iVpnApEngine->IsVpnApL( aUid );
+ }
+ else
+ {
+ retval = ETrue;
+ }
+ }
+ else
+ {
+ if ( onlyItemIsNone || noItem )
+ {
+ retval = ETrue;
+ }
+ }
+ if ( !retval )
+ {
+ if (noEdit)
+ {
+ retval = ETrue;
+ }
+ }
+ APSETUILOGGER_LEAVEFN( EModel,"Model::Need2DeleteDeleteL")
+ return retval;
+ }
+
+
+// ---------------------------------------------------------
+// CApSettingsModel::Need2DeleteNewUseExisting
+// called when menu needs to be displayed
+// ---------------------------------------------------------
+//
+TBool CApSettingsModel::Need2DeleteNewUseExisting(
+ TInt aResourceId,
+ TInt aCount )
+ {
+ APSETUILOGGER_ENTERFN( EModel,"Model::Need2DeleteNewUseExisting")
+ TBool noEdit( EFalse );
+ TBool retval( EFalse );
+
+ if ( iProtectionSupported )
+ {
+ if ( aResourceId == R_APSETTINGSUI_MENU_SELECT_NORMAL ||
+ aResourceId == R_APSETTINGSUI_MENU_NORMAL )
+ {
+ TRAP_IGNORE( retval = CApProtHandler::IsTableProtectedL( iDb->Database() ));
+ }
+ }
+
+ if ( aCount == 0)
+ {
+ if ( ( aResourceId == R_APSETTINGSUI_MENU_NORMAL ) ||
+ ( aResourceId == R_APSETTINGSUI_MENU_SELECT_NORMAL ) )
+ {
+ retval = ETrue;
+ }
+ }
+
+ noEdit = ( iNoEdit )
+ && ( ( aResourceId == R_APSETTINGSUI_MENU_SELECT_NORMAL ) ||
+ ( aResourceId == R_APSETTINGSUI_MENU_NORMAL ) );
+
+ if (noEdit)
+ {
+ retval = ETrue;
+ }
+ APSETUILOGGER_LEAVEFN( EModel,"Model::Need2DeleteNewUseExisting")
+ return retval;
+ }
+
+
+// ---------------------------------------------------------
+// CApSettingsModel::Need2DeleteNewL
+// called when menu needs to be displayed
+// ---------------------------------------------------------
+//
+TBool CApSettingsModel::Need2DeleteNewL( TInt aResourceId )
+ {
+ APSETUILOGGER_ENTERFN( EModel,"Model::Need2DeleteNewL")
+ TBool noEdit( EFalse );
+ TBool retval( EFalse );
+
+ if ( iProtectionSupported )
+ {
+ if ( aResourceId == R_APSETTINGSUI_MENU_SELECT_NORMAL ||
+ aResourceId == R_APSETTINGSUI_MENU_NORMAL )
+ {
+ if ( CApProtHandler::IsTableProtectedL( iDb->Database() ))
+ {
+ retval = ETrue;
+ }
+ }
+ }
+
+ if ( iVariant & KApUiEditOnlyVPNs )
+ {
+ if ( ( aResourceId == R_APSETTINGSUI_MENU_SELECT_NORMAL ) ||
+ ( aResourceId == R_APSETTINGSUI_MENU_NORMAL )
+ )
+ {
+ retval = ETrue;
+ }
+ }
+
+ noEdit = ( iNoEdit )
+ && ( ( aResourceId == R_APSETTINGSUI_MENU_SELECT_NORMAL ) ||
+ ( aResourceId == R_APSETTINGSUI_MENU_NORMAL ) );
+
+ if (noEdit)
+ {
+ retval = ETrue;
+ }
+ APSETUILOGGER_LEAVEFN( EModel,"Model::Need2DeleteNewL")
+ return retval;
+ }
+
+
+
+// ---------------------------------------------------------
+// CApSettingsModel::Need2DeleteHelp
+// called when menu needs to be displayed
+// ---------------------------------------------------------
+//
+TBool CApSettingsModel::Need2DeleteHelp( TInt aResourceId )
+ {
+ APSETUILOGGER_ENTERFN( EModel,"Model::Need2DeleteHelp")
+ TBool retval( EFalse );
+
+ if ( !iHelpSupported )
+ {
+ if ( aResourceId == R_APSETTINGSUI_MENU_NORMAL )
+ {
+ retval = ETrue;
+ }
+ }
+
+ APSETUILOGGER_LEAVEFN( EModel,"Model::Need2DeleteHelp")
+ return retval;
+ }
+
+
+
+
+
+
+
+
+
+// ---------------------------------------------------------
+// CApSettingsModel::GetLinkedVpnAccessPointLC
+// ---------------------------------------------------------
+//
+HBufC* CApSettingsModel::GetLinkedVpnAccessPointLC( TUint32 aUid )
+ {
+ APSETUILOGGER_ENTERFN( EModel,"Model::GetLinkedVpnAccessPointLC")
+ HBufC* retval = HBufC::NewLC( KCommsDbSvrMaxFieldLength );
+
+ // Get iap for the above WAP, aUid
+ TUint32 homeiap = iUtils->IapIdFromWapIdL( aUid );
+
+ // now get ALL VPN_SERVICE entry ID where HOME_IAP == iap
+ // Select * from VPN_SERVICE where HOME_IAP == homeiap
+ CCommsDbTableView* t;
+ t = iDb->Database()->OpenViewMatchingUintLC( TPtrC(VPN_SERVICE),
+ TPtrC(VPN_SERVICE_IAP),
+ homeiap );
+ TInt err = t->GotoFirstRecord();
+ // if not found, no such, simply exit, no change in passed array
+ if ( err != KErrNotFound )
+ {
+ User::LeaveIfError( err );
+ TPtr sgd = retval->Des();
+ t->ReadTextL( TPtrC(COMMDB_NAME), sgd );
+ CleanupStack::PopAndDestroy( t );//t
+ }
+ else
+ {
+ CleanupStack::PopAndDestroy( 2, retval );// retval, t
+ retval = NULL;
+ }
+
+ APSETUILOGGER_LEAVEFN( EModel,"Model::GetLinkedVpnAccessPointLC")
+ return retval;
+ }
+
+
+
+// ---------------------------------------------------------
+// CApSettingsModel::EikEnv
+// ---------------------------------------------------------
+//
+CEikonEnv* CApSettingsModel::EikEnv()
+ {
+ APSETUILOGGER_ENTERFN( EModel,"Model::EikEnv<->")
+ if ( !iEikEnv )
+ {
+ iEikEnv = CEikonEnv::Static();
+ }
+ return iEikEnv;
+ }
+
+
+
+// ---------------------------------------------------------
+// CApSettingsModel::CreateFromDataL
+// ---------------------------------------------------------
+//
+TUint32 CApSettingsModel::CreateFromDataL( CApAccessPointItem& aApItem )
+ {
+ APSETUILOGGER_ENTERFN( EModel,"Model::CreateFromDataL")
+ TTransactionResult ownTransaction = StartTransactionLC( /*aWrite*/EFalse,
+ /*aShowNote*/ETrue,
+ /*aRetry*/ETrue );
+ if ( ownTransaction != EFailedWithLocked )
+ {
+ iApData->CreateFromDataL( aApItem ); // adds normal ap
+ // write wlan data, only writes if WLAN ap.
+ WriteWlanL( aApItem, ETrue );
+
+ if ( ownTransaction == EOwnTransaction )
+ {
+ TInt err = CommitTransaction();
+ User::LeaveIfError( err );
+ CleanupStack::Pop(); // RollbackTransactionOnLeave
+ }
+ }
+
+ APSETUILOGGER_LEAVEFN( EModel,"Model::CreateFromDataL")
+ return aApItem.WapUid();
+ }
+
+
+
+
+
+// ---------------------------------------------------------
+// CApSettingsModel::ChangeWepSettingsL
+// ---------------------------------------------------------
+//
+TInt CApSettingsModel::ChangeWepSettingsL( CApAccessPointItem* aApItem )
+ {
+ APSETUILOGGER_ENTERFN( EModel,"Model::ChangeWepSettingsL")
+ TInt retval(0);
+
+ if ( !iWepSecSettings )
+ {
+ iWepSecSettings = CWEPSecuritySettings::NewL();
+ TUint32 iapid( 0 );
+ aApItem->ReadUint( EApIapServiceId, iapid );
+ iWepSecSettings->LoadL( iapid, *Database()->Database() );
+ }
+
+ if ( !iWepSecSettingsUi )
+ {
+ iWepSecSettingsUi = CWEPSecuritySettingsUi::NewL( *EikEnv() );
+ }
+
+ iWepUiExitReason = iWepSecSettings->EditL( *iWepSecSettingsUi,
+ aApItem->ConnectionName() );
+
+ if ( iWepUiExitReason & CWEPSecuritySettings::EExitReq )
+ {
+ retval += KApUiEventExitRequested;
+ }
+ if ( iWepUiExitReason & CWEPSecuritySettings::EShutDownReq )
+ {
+ retval += KApUiEventShutDownRequested;
+ }
+ APSETUILOGGER_LEAVEFN( EModel,"Model::ChangeWepSettingsL")
+ return retval;
+ }
+
+
+
+// ---------------------------------------------------------
+// CApSettingsModel::ChangeWpaSettingsL
+// ---------------------------------------------------------
+//
+TInt CApSettingsModel::ChangeWpaSettingsL( CApAccessPointItem* aApItem )
+ {
+ APSETUILOGGER_ENTERFN( EModel,"Model::ChangeWpaSettingsL")
+ TInt retval(0);
+
+ if ( !iWpaSecSettings )
+ {
+ iWpaSecSettings = CWPASecuritySettings::NewL( ESecurityModeWpa );
+ TUint32 iapid( 0 );
+ aApItem->ReadUint( EApIapServiceId, iapid );
+ iWpaSecSettings->LoadL( iapid, *Database()->Database() );
+ }
+
+ if ( !iWpaSecSettingsUi )
+ {
+ iWpaSecSettingsUi = CWPASecuritySettingsUi::NewL( *EikEnv() );
+ }
+
+ iWpaUiExitReason = iWpaSecSettings->EditL( *iWpaSecSettingsUi,
+ aApItem->ConnectionName() );
+
+ if ( iWpaUiExitReason & CWPASecuritySettings::EExitReq )
+ {
+ retval += KApUiEventExitRequested;
+ }
+ if ( iWpaUiExitReason & CWPASecuritySettings::EShutDownReq )
+ {
+ retval += KApUiEventShutDownRequested;
+ }
+ APSETUILOGGER_LEAVEFN( EModel,"Model::ChangeWpaSettingsL")
+ return retval;
+ }
+
+
+
+// ---------------------------------------------------------
+// CApSettingsModel::Change8021xSettingsL
+// ---------------------------------------------------------
+//
+TInt CApSettingsModel::Change8021xSettingsL( CApAccessPointItem* aApItem )
+ {
+ APSETUILOGGER_ENTERFN( EModel,"Model::Change8021xSettingsL")
+ TInt retval(0);
+
+ if ( !iWpaSecSettings )
+ {
+ iWpaSecSettings = CWPASecuritySettings::NewL( ESecurityMode8021x );
+ TUint32 iapid( 0 );
+ aApItem->ReadUint( EApIapServiceId, iapid );
+ iWpaSecSettings->LoadL( iapid, *Database()->Database() );
+ }
+
+ if ( !iWpaSecSettingsUi )
+ {
+ iWpaSecSettingsUi = CWPASecuritySettingsUi::NewL( *EikEnv() );
+ }
+
+ iWpaUiExitReason = iWpaSecSettings->EditL( *iWpaSecSettingsUi,
+ aApItem->ConnectionName() );
+
+ if ( iWpaUiExitReason & CWPASecuritySettings::EExitReq )
+ {
+ retval += KApUiEventExitRequested;
+ }
+ if ( iWpaUiExitReason & CWPASecuritySettings::EShutDownReq )
+ {
+ retval += KApUiEventShutDownRequested;
+ }
+ APSETUILOGGER_LEAVEFN( EModel,"Model::Change8021xSettingsL")
+ return retval;
+ }
+
+
+
+// ---------------------------------------------------------
+// CApSettingsModel::ClearWEPAndWPASettings
+// ---------------------------------------------------------
+//
+void CApSettingsModel::ClearWEPAndWPASettings()
+ {
+ APSETUILOGGER_ENTERFN( EModel,"Model::ClearWEPAndWPASettings")
+
+ delete iWepSecSettings;
+ iWepSecSettings = NULL;
+
+ delete iWpaSecSettings;
+ iWpaSecSettings = NULL;
+
+ APSETUILOGGER_LEAVEFN( EModel,"Model::ClearWEPAndWPASettings")
+ }
+
+
+
+// ---------------------------------------------------------
+// CApSettingsModel::WriteWlanL
+// ---------------------------------------------------------
+//
+void CApSettingsModel::WriteWlanL( CApAccessPointItem& aApItem,
+ TBool aIsNew )
+ {
+ APSETUILOGGER_ENTERFN( EModel,"Model::WriteWlanL")
+ // now check if it is WLAN and handle security savings...
+ if ( aApItem.BearerTypeL() == EApBearerTypeWLAN )
+ { // it is WLAN...
+ // check that there were no bearer-change, because if orig. bearer
+ // was NOT wlan, then we shouls consider it as a new record!!!
+ TUint32 wlanid(0);
+ aApItem.ReadUint( EApIapServiceId, wlanid );
+
+ TUint32 oldwlanid(wlanid);
+
+ TTypeOfSaving savetype( ESavingEditedAP );
+
+ if ( aIsNew )
+ {
+ savetype = ESavingBrandNewAP;
+ oldwlanid = 0;
+ }
+ // now check if it is WEP...
+ // read up security mode
+ TUint32 secmode( 0 );
+ aApItem.ReadUint( EApWlanSecurityMode, secmode );
+
+
+ TBool fresh(EFalse);
+
+
+ switch ( secmode )
+ {
+ case EOpen:
+ {
+ break;
+ }
+ case EWep:
+ {
+ // we have to try to save if:
+ // 1. it is a changed AP, it is possible that only
+ // sec. settings have been changed.
+ // In this case, iWepSecSettings might be NULL!!
+ // 2. it's sec. settings had been edited
+
+ if ( !iWepSecSettings )
+ {
+ iWepSecSettings = CWEPSecuritySettings::NewL();
+ fresh = ETrue;
+ iWepSecSettings->LoadL( oldwlanid,
+ *Database()->Database() );
+ }
+
+ if ( ( iWepUiExitReason & CWEPSecuritySettings::EValid )
+ || ( fresh ) )
+ { // save WEP settings, too, into same transaction...
+ iWepSecSettings->SaveL( wlanid, *iDb->Database() );
+ }
+ break;
+ }
+ case E802_1x:
+ {
+
+ if ( !iWpaSecSettings )
+ {
+ iWpaSecSettings =
+ CWPASecuritySettings::NewL( ESecurityMode8021x );
+ fresh = ETrue;
+ iWpaSecSettings->LoadL( oldwlanid,
+ *Database()->Database() );
+ }
+
+ if ( ( iWpaUiExitReason & CWPASecuritySettings::EValid )
+ || ( fresh ) )
+ { // save WPA settings, too, into same transaction...
+ iWpaSecSettings->SaveL( wlanid, *iDb->Database(),
+ savetype, oldwlanid );
+ }
+ break;
+ }
+ case EWpa:
+ case EWpa2:
+ {
+
+ if ( !iWpaSecSettings )
+ {
+ iWpaSecSettings =
+ CWPASecuritySettings::NewL( ESecurityModeWpa );
+ fresh = ETrue;
+ iWpaSecSettings->LoadL( oldwlanid,
+ *Database()->Database() );
+ }
+
+ if ( ( iWpaUiExitReason & CWPASecuritySettings::EValid )
+ || ( fresh ) )
+ { // save WPA settings, too, into same transaction...
+ iWpaSecSettings->SaveL( wlanid, *iDb->Database(),
+ savetype, oldwlanid );
+ }
+ break;
+ }
+ default:
+ {
+ __ASSERT_DEBUG( EFalse, Panic( EUnknownCase ) );
+ // do nothing in urel
+ break;
+ }
+ }
+ }
+ APSETUILOGGER_LEAVEFN( EModel,"Model::WriteWlanL")
+ }
+
+
+
+
+
+// ---------------------------------------------------------
+// CApSettingsModel::LoadWlanL
+// ---------------------------------------------------------
+//
+void CApSettingsModel::LoadWlanL( CApAccessPointItem& aApItem )
+ {
+ APSETUILOGGER_ENTERFN( EModel,"Model::LoadWlanL")
+ // now check if it is WLAN and handle security savings...
+ if ( aApItem.BearerTypeL() == EApBearerTypeWLAN )
+ { // it is WLAN...
+ // now check if it is WEP...
+ // read up security mode
+ TUint32 secmode( 0 );
+ aApItem.ReadUint( EApWlanSecurityMode, secmode );
+ switch ( secmode )
+ {
+ case EOpen:
+ {
+ break;
+ }
+ case EWep:
+ {
+ if ( !iWepSecSettings )
+ {
+ iWepSecSettings = CWEPSecuritySettings::NewL();
+ }
+
+ if ( !iWepSecSettingsUi )
+ {
+ iWepSecSettingsUi =
+ CWEPSecuritySettingsUi::NewL( *EikEnv() );
+ }
+ TUint32 wlanid( 0 );
+ aApItem.ReadUint( EApIapServiceId, wlanid );
+ iWepSecSettings->LoadL( wlanid, *Database()->Database() );
+ break;
+ }
+ case E802_1x:
+ {
+ if ( !iWpaSecSettings )
+ {
+ iWpaSecSettings =
+ CWPASecuritySettings::NewL( ESecurityMode8021x );
+ }
+
+ if ( !iWpaSecSettingsUi )
+ {
+ iWpaSecSettingsUi =
+ CWPASecuritySettingsUi::NewL( *EikEnv() );
+ }
+ TUint32 wlanid( 0 );
+ aApItem.ReadUint( EApIapServiceId, wlanid );
+ iWpaSecSettings->LoadL( wlanid, *Database()->Database() );
+ break;
+ }
+ case EWpa:
+ case EWpa2:
+ {
+ if ( !iWpaSecSettings )
+ {
+ iWpaSecSettings =
+ CWPASecuritySettings::NewL( ESecurityModeWpa );
+ }
+
+ if ( !iWpaSecSettingsUi )
+ {
+ iWpaSecSettingsUi =
+ CWPASecuritySettingsUi::NewL( *EikEnv() );
+ }
+ TUint32 wlanid( 0 );
+ aApItem.ReadUint( EApIapServiceId, wlanid );
+ iWpaSecSettings->LoadL( wlanid, *Database()->Database() );
+ break;
+ }
+ default:
+ {
+ __ASSERT_DEBUG( EFalse, Panic( EUnknownCase ) );
+ // do nothing in urel
+ break;
+ }
+ }
+ }
+ APSETUILOGGER_LEAVEFN( EModel,"Model::LoadWlanL")
+ }
+
+
+
+
+
+//----------------------------------------------------------
+// CApSettingsModel::HasWlanSecSettingsFilledL
+//----------------------------------------------------------
+//
+TBool CApSettingsModel::HasWlanSecSettingsFilledL( CApAccessPointItem& aApItem )
+ {
+ APSETUILOGGER_ENTERFN( EModel,"Model::HasWlanSecSettingsFilledL")
+ TBool retval(EFalse);
+
+ TUint32 secmode( 0 );
+ aApItem.ReadUint( EApWlanSecurityMode, secmode );
+
+ TUint32 wlanid(0);
+ aApItem.ReadUint( EApIapServiceId, wlanid );
+
+ TUint32 oldwlanid(wlanid);
+
+ TUint32 wapuid = aApItem.WapUid();
+
+ if ( ( wapuid == KApNoneUID )
+ || ( iUtils->BearerTypeL( wapuid ) != EApBearerTypeWLAN ) )
+ {
+ oldwlanid = 0;
+ }
+
+ switch ( secmode )
+ {
+ case EOpen:
+ {
+ retval = ETrue;
+ break;
+ }
+ case EWep:
+ {
+ if ( !iWepSecSettings )
+ {
+ iWepSecSettings = CWEPSecuritySettings::NewL();
+ iWepSecSettings->LoadL( oldwlanid,
+ *Database()->Database() );
+ }
+ retval = iWepSecSettings->IsValid();
+ break;
+ }
+ case E802_1x:
+ {
+ if ( !iWpaSecSettings )
+ {
+ iWpaSecSettings =
+ CWPASecuritySettings::NewL( ESecurityMode8021x );
+ iWpaSecSettings->LoadL( oldwlanid,
+ *Database()->Database() );
+ }
+ retval = iWpaSecSettings->IsValid();
+ break;
+ }
+ case EWpa:
+ case EWpa2:
+ {
+ if ( !iWpaSecSettings )
+ {
+ iWpaSecSettings =
+ CWPASecuritySettings::NewL( ESecurityModeWpa );
+ iWpaSecSettings->LoadL( oldwlanid,
+ *Database()->Database() );
+ }
+ retval = iWpaSecSettings->IsValid();
+ break;
+ }
+ default:
+ {
+ __ASSERT_DEBUG( EFalse, Panic( EUnknownCase ) );
+ // do nothing in urel
+ break;
+ }
+ }
+ APSETUILOGGER_LEAVEFN( EModel,"Model::HasWlanSecSettingsFilledL")
+ return retval;
+ }
+
+
+//----------------------------------------------------------
+// CApSettingsModel::UpdateSecurityModeL
+//----------------------------------------------------------
+//
+void CApSettingsModel::UpdateSecurityModeL( CApAccessPointItem& aApItem )
+ {
+ APSETUILOGGER_ENTERFN( EModel,"Model::UpdateSecurityModeL")
+ TUint32 secmode( 0 );
+ aApItem.ReadUint( EApWlanSecurityMode, secmode );
+
+ TUint32 wlanid(0);
+ aApItem.ReadUint( EApIapServiceId, wlanid );
+
+ switch ( secmode )
+ {
+ case EOpen:
+ {
+ break;
+ }
+ case EWep:
+ {
+ if ( iWepSecSettings )
+ {
+ delete iWepSecSettings;
+ iWepSecSettings = NULL; // to satisfy CodeScanner
+ }
+ iWepSecSettings = CWEPSecuritySettings::NewL();
+ iWepSecSettings->LoadL( wlanid,
+ *Database()->Database() );
+ break;
+ }
+ case E802_1x:
+ {
+ if ( iWpaSecSettings )
+ {
+ delete iWpaSecSettings;
+ iWpaSecSettings = NULL; // to satisfy CodeScanner
+ }
+ iWpaSecSettings =
+ CWPASecuritySettings::NewL( ESecurityMode8021x );
+ iWpaSecSettings->LoadL( wlanid,
+ *Database()->Database() );
+ break;
+ }
+ case EWpa:
+ case EWpa2:
+ {
+ if ( iWpaSecSettings )
+ {
+ delete iWpaSecSettings;
+ iWpaSecSettings = NULL; // to satisfy CodeScanner
+ }
+ iWpaSecSettings =
+ CWPASecuritySettings::NewL( ESecurityModeWpa );
+ iWpaSecSettings->LoadL( wlanid,
+ *Database()->Database() );
+ break;
+ }
+ default:
+ {
+ __ASSERT_DEBUG( EFalse, Panic( EUnknownCase ) );
+ // do nothing in urel
+ break;
+ }
+ }
+ APSETUILOGGER_LEAVEFN( EModel,"Model::UpdateSecurityModeL")
+ }
+
+// End of File