diff -r 10852b179f64 -r ea98413ce11f supl/locationomasuplprotocolhandler/protocolhandlerver2/src/epos_comasuplconnrequestor.cpp --- a/supl/locationomasuplprotocolhandler/protocolhandlerver2/src/epos_comasuplconnrequestor.cpp Wed Sep 15 12:40:28 2010 +0300 +++ b/supl/locationomasuplprotocolhandler/protocolhandlerver2/src/epos_comasuplconnrequestor.cpp Wed Oct 13 15:01:35 2010 +0300 @@ -47,8 +47,11 @@ iCommMgr(aCommMgr), iProtocolManager(aProtoMgr), iPort(aPort), - iObserver( aObserver), - iTriggerSession(EFalse) + iObserver( aObserver), + iIapDialogShown(EFalse), + iIapDlgTimerExpired(EFalse), + iIsTimeoutDialogTimerStarted(EFalse), + iTriggerSession(EFalse) { } @@ -75,7 +78,7 @@ iCurrentSLPId = KErrNotFound; - + iDialogTimer = COMASuplDialogTimer::NewL(*this); } // ----------------------------------------------------------------------------- @@ -105,8 +108,13 @@ COMASuplConnRequestor::~COMASuplConnRequestor() { Cancel(); - - delete iSuplSettings; + if(iDialogTimer) + { + iDialogTimer->Cancel(); + delete iDialogTimer; + iDialogTimer = NULL; + } + delete iSuplSettings; delete iTrace; delete iFallBackHandler; } @@ -147,14 +155,27 @@ buffer.Copy(_L("No access point configured for ")); buffer.Append(iHostAddress); iTrace->Trace(buffer,KTraceFileName, __LINE__); - buffer.Copy(_L("Calling CreateConnection with no IAP")); - iTrace->Trace(buffer,KTraceFileName, __LINE__); - iConnection = iCommMgr.CreateConnectionL(iHostAddress,iTls,iPskTls,iPort,-1); - OpenConnection(); + if( isIapDialogShown ) + { + TInt err = iProtocolManager.LaunchSettingsUI(this,iHostAddress); + if(err != KErrNone) + { + buffer.Copy(_L("Error in launching UI : ")); + buffer.AppendNum(err); + iTrace->Trace(buffer,KTraceFileName, __LINE__); + iHostAddress.Zero(); + iObserver.OperationCompleteL(err); + } + else + iIapDialogShown = ETrue; + } + } else { + iIsTimeoutDialogTimerStarted = EFalse; + iDialogTimer->Cancel(); buffer.Copy(_L("Connecting to ")); buffer.Append(iHostAddress); iTrace->Trace(buffer,KTraceFileName, __LINE__); @@ -174,8 +195,11 @@ // COMASuplConnRequestor::OpenConnection // ----------------------------------------------------------------------------- // -void COMASuplConnRequestor::CreateConnectionL(TInt /*aDialogTimeOutDelay*/, TBool aTriggerSession) +void COMASuplConnRequestor::CreateConnectionL(TInt aDialogTimeOutDelay, TBool aTriggerSession) { + iIsTimeoutDialogTimerStarted = ETrue; + + iDialogTimer->StartTimer(aDialogTimeOutDelay); CreateConnectionL(aTriggerSession); } // ----------------------------------------------------------------------------- @@ -452,7 +476,57 @@ return result; } +// ----------------------------------------------------------------------------- +// COMASuplConnRequestor::SettingsUICompleted +// +// ----------------------------------------------------------------------------- +void COMASuplConnRequestor::SettingsUICompletedL(TInt aError) + { + TBuf<128> buffer(_L("COMASuplConnRequestor:SettingsUICompleted Error: ")); + buffer.AppendNum(aError); + iTrace->Trace(buffer,KTraceFileName, __LINE__); + + if (iIsTimeoutDialogTimerStarted) + { + iTrace->Trace(_L("COMASuplSession::SettingsUICompleted, stopping timer "), KTraceFileName, __LINE__); + iIsTimeoutDialogTimerStarted = EFalse; + iDialogTimer->StopTimer(); + } + if (iIapDlgTimerExpired) + { + iIapDlgTimerExpired = EFalse; + iIapDialogShown = EFalse; + iProtocolManager.LaunchSuplDialogTimeoutUI(this); + iObserver.OperationCompleteL(KErrNone); + return; + } + if(aError == KErrNone) + { + TBuf<100> IapName; + TInt err = iProtocolManager.GetLastUsedAccessPoint(IapName,iIAPId); + if(err == KErrNone) + { + buffer.Copy(_L("Connecting to ")); + buffer.Append(iHostAddress); + buffer.Append(_L(" using IAP ")); + buffer.Append(IapName); + iTrace->Trace(buffer,KTraceFileName, __LINE__); + iConnection = iCommMgr.CreateConnectionL(iHostAddress,iTls,iPskTls,iPort,iIAPId); + SaveAccessPoint(IapName); + OpenConnection(); + } + else + { + iObserver.OperationCompleteL(err); + } + } + else + { + iObserver.OperationCompleteL(aError); + } + + } // ----------------------------------------------------------------------------- // COMASuplConnRequestor::SaveAccessPoint @@ -520,13 +594,25 @@ iFallBackHandler->UpdateSLPListForHomeUsage(aHomeNetwork); } +// ----------------------------------------------------------------------------- +// COMASuplConnRequestor::DialogTimerExpiredL +// Checks whether UI is displayed or not previously +// +// ----------------------------------------------------------------------------- +void COMASuplConnRequestor::DialogTimerExpiredL() +{ + iTrace->Trace(_L("COMASuplConnRequestor:Timer Expired for SUPL IAP Dialog"), KTraceFileName, __LINE__); + + if (!iIapDialogShown) + iProtocolManager.LaunchSuplDialogTimeoutUI(this); + else + iIapDlgTimerExpired = ETrue; + return; +} TUint COMASuplConnRequestor::GetPortNumber() { - if(iConnection) - return iConnection->GetPortNumberUsed(); - else - return 0; + return iConnection->GetPortNumberUsed(); }