diff -r 000000000000 -r dfb7c4ff071f datacommsserver/networkcontroller/src/CNetConRequestBase.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/datacommsserver/networkcontroller/src/CNetConRequestBase.cpp Thu Dec 17 09:22:25 2009 +0200 @@ -0,0 +1,262 @@ +// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +/** + @file CNetConRequestBase.cpp +*/ + +#include "CNetworkController.h" +#include "CNetConRequestBase.h" +#include "NetConPanic.h" +#include "NetConLog.h" + +#include "CNetConDlgProcessor.h" + +CNetConRequestBase::~CNetConRequestBase() +/** +Destructor +*/ + { + if (iDatabase) + { + iDatabase->CancelRequestNotificationOfServiceChange(ipServiceChangeObserver); + delete iDatabase; + } + delete iDialogPrc; + } + +CNetConRequestBase::CNetConRequestBase(MNetConEnv* aController, MNetworkControllerObserver* aObserver, CStoreableOverrideSettings* aOverrides) +: iController(aController), iObserver(aObserver), iOverrides(aOverrides) +/** +Constructor + +@param aDatabase, allow the requests and bearers access to the database. +@param aDialogPrc, allow the requests access to the dialog processor. +@param aController, For upcalls from the requests. +@param aObserver, define the reverse API - from a Network Controller towards NIFMAN +@param aOverrides, store and retrieve override sets to and from both streams and buffers. +*/ + { } + +void CNetConRequestBase::ConstructL() + { + iDatabase = iController->NewDatabaseL(); + __ASSERT_DEBUG(iDatabase, NetConPanic(NetworkController::ETelBearerBadState)); + } + +void CNetConRequestBase::CancelRequest() +/** +Cancel this request +*/ + { + // cancel any outstanding dialog processor activity + if (iDialogPrc) + { + iDialogPrc->CancelEverything(); + } + + // cancel any outstanding bearer availability check + iController->CancelBearerAvailabilityCheck(); + + // Cancel Service Change Notification + iDatabase->CancelRequestNotificationOfServiceChange(ipServiceChangeObserver); + } + +/** +accessors +send for customer input + +@return iObserver, a reverse API - from a Network Controller towards NIFMAN +*/ +MNetworkControllerObserver* CNetConRequestBase::Observer() const + { + return iObserver; + } + +/** +accessors +Network controller connection overrides. +send for customer input + +@return iOverrides, override sets to and from both streams and buffers. +*/ +CStoreableOverrideSettings* CNetConRequestBase::Overrides() const + { + return iOverrides; + } + +TBool CNetConRequestBase::SelectedServiceAvailable(TUint32 aAvailableBearerSet) const +/** +The function checks whether the Selected Service is Available + +@param aAvailableBearerSet the set of available bearers +@return ETrue if the selected service is available otherwise EFalse +*/ + { + + TBool available(EFalse); + + if (iSettings.iServiceType == TPtrC(DIAL_OUT_ISP) || iSettings.iServiceType == TPtrC(DIAL_IN_ISP)) + { + // user requested a CSD type connection but is the bearer available? + available = (aAvailableBearerSet & KCommDbBearerCSD); + } + if (iSettings.iServiceType == TPtrC(LAN_SERVICE)) + { + // user requested a CDMA type connection but is the bearer available? + available = (aAvailableBearerSet & KCommDbBearerLAN); + } + if (iSettings.iServiceType == TPtrC(VPN_SERVICE)) + { + // user requested a Vpn service... + available = (aAvailableBearerSet & KCommDbBearerVirtual ); + } + + if (available) + { + LOG( NetConLog::Printf(_L("\tSelected service is available")); ) + } + else + { + LOG( NetConLog::Printf(_L("\tSelected service is not available")); ) + } + + return available; + } + +void CNetConRequestBase::SelectConnection(const TConnectionPrefs& aPrefs) +/** +Display a dialog to the user asking them to select an IAP to connect to + +MNetConDialogProcAccess Interface + +@param aObserver the object to receive notification when the dialog box completes +@param aPrefs the connection preferences used to select this IAP +*/ + { + const TInt err = ConstructDialogProcessor(); + if( KErrNone != err ) + { + TConnectionSettings settings; + MDPOSelectComplete(err, settings); + return; + } + + iDialogPrc->SelectConnection(*this, aPrefs); + } + +void CNetConRequestBase::SelectConnection(const TConnectionPrefs& aPrefs, TInt aLastError) +/** +Display a dialog to the user asking them to select an IAP to connect to + +@param aObserver the object to receive notification when the dialog box completes +@param aPrefs the connection preferences used to select this IAP +@param aLastError if this is not the 1st connection attempt this is the error of the last attempt +*/ + { + const TInt err = ConstructDialogProcessor(); + if( KErrNone != err ) + { + TConnectionSettings settings; + MDPOSelectComplete(err, settings); + return; + } + + iDialogPrc->SelectConnection(*this, aPrefs, aLastError); + } + +void CNetConRequestBase::SelectModemAndLocation() +/** +Display a dialog to the user asking the user to select a modem and location entry from CommDb + +@param aObserver the object to receive notification when the dialog box completes +*/ + { + const TInt err = ConstructDialogProcessor(); + if( KErrNone != err ) + { + TConnectionSettings settings; + MDPOSelectModemAndLocationComplete(err, settings); + return; + } + + iDialogPrc->SelectModemAndLocation(*this); + } + +void CNetConRequestBase::WarnNewConnection(const TConnectionPrefs& aPrefs, const TDesC* aNewIapName, const TIspConnectionNames* aNewConnectionNames, TInt aLastError) +/** +Display a dialog to the user warning that a new connection is about to be attempted to the specified IAP + +@param aObserver the object to receive notification when the dialog box completes +@param aPrefs the connection preferences used to select this IAP +@param aNewIapName the name of the IAP used for the connection. +@param aNewConnectionNames this parameter is no-longer used. +@param aLastError if this is not the 1st connection attempt this is the error of the last attempt +*/ + { + const TInt err = ConstructDialogProcessor(); + if( KErrNone != err ) + { + MDPOWarnComplete(err, EFalse); + return; + } + + iDialogPrc->WarnNewConnection(*this, aPrefs, aNewIapName, aNewConnectionNames, aLastError); + } + +void CNetConRequestBase::Reconnect() +/** +Display a dialog to the user asking whether to reconnect a failed connection + +@param aObserver the object to receive notification when the dialog box completes +*/ + { + const TInt err = ConstructDialogProcessor(); + if( KErrNone != err ) + { + MDPOReconnectComplete(err); + return; + } + + iDialogPrc->Reconnect(*this); + } + + +/** +Ensure the request dialog processor is correctly constructed. Construct it if not. + +@return KErrNone on success, and error code otherwise +*/ +TInt CNetConRequestBase::ConstructDialogProcessor() + { + if (!iDialogPrc) + { + // construct dialog processor + TRAPD( err, iDialogPrc = iController->NewDialogProcessorL() ); + return err; + } + __ASSERT_DEBUG(iDialogPrc, NetConPanic(NetworkController::ETelBearerBadState)); + return KErrNone; + } + +/** +Return the Request's internal database access pointer +*/ +CCommsDbAccess* CNetConRequestBase::DbAccess() + { + __ASSERT_DEBUG(iDatabase, NetConPanic(NetworkController::ETelBearerBadState)); + return iDatabase; + } +