--- 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();
}