/*
* 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 <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;
}
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 - ERROR: not suported")
aApItem = aApItem;
return KErrNotSupported;
}
// ---------------------------------------------------------
// CApSettingsModel::ChangeWpaSettingsL
// ---------------------------------------------------------
//
TInt CApSettingsModel::ChangeWpaSettingsL( CApAccessPointItem* aApItem )
{
APSETUILOGGER_ENTERFN( EModel,"Model::ChangeWpaSettingsL - ERROR: not suported")
aApItem = aApItem;
return KErrNotSupported;
}
// ---------------------------------------------------------
// CApSettingsModel::Change8021xSettingsL
// ---------------------------------------------------------
//
TInt CApSettingsModel::Change8021xSettingsL( CApAccessPointItem* aApItem )
{
APSETUILOGGER_ENTERFN( EModel,"Model::Change8021xSettingsL - ERROR: not suported")
aApItem = aApItem;
return KErrNotSupported;
}
// ---------------------------------------------------------
// CApSettingsModel::ClearWEPAndWPASettings
// ---------------------------------------------------------
//
void CApSettingsModel::ClearWEPAndWPASettings()
{
APSETUILOGGER_ENTERFN( EModel,"Model::ClearWEPAndWPASettings - ERROR: not suported")
}
// ---------------------------------------------------------
// CApSettingsModel::WriteWlanL
// ---------------------------------------------------------
//
void CApSettingsModel::WriteWlanL( CApAccessPointItem& aApItem,
TBool aIsNew )
{
APSETUILOGGER_ENTERFN( EModel,"Model::WriteWlanL - ERROR: not supported")
aApItem;
aIsNew;
User::Leave( KErrNotSupported );
}
// ---------------------------------------------------------
// CApSettingsModel::LoadWlanL
// ---------------------------------------------------------
//
void CApSettingsModel::LoadWlanL( CApAccessPointItem& aApItem )
{
APSETUILOGGER_ENTERFN( EModel,"Model::LoadWlanL - ERROR: not supported")
aApItem;
User::Leave( KErrNotSupported );
}
//----------------------------------------------------------
// CApSettingsModel::HasWlanSecSettingsFilledL
//----------------------------------------------------------
//
TBool CApSettingsModel::HasWlanSecSettingsFilledL( CApAccessPointItem& aApItem )
{
APSETUILOGGER_ENTERFN( EModel,"Model::HasWlanSecSettingsFilledL - ERROR: not supported")
aApItem;
return EFalse;
}
//----------------------------------------------------------
// CApSettingsModel::UpdateSecurityModeL
//----------------------------------------------------------
//
void CApSettingsModel::UpdateSecurityModeL( CApAccessPointItem& aApItem )
{
APSETUILOGGER_ENTERFN( EModel,"Model::UpdateSecurityModeL - ERROR: not supported")
aApItem;
User::Leave( KErrNotSupported );
}
// End of File