--- a/supl/locationomasuplprotocolhandler/protocolhandlerver2/src/epos_comasuplconnrequestor.cpp Tue Aug 31 15:37:04 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandlerver2/src/epos_comasuplconnrequestor.cpp Wed Sep 01 12:24:21 2010 +0100
@@ -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;
}
@@ -119,8 +127,8 @@
{
if(!iIsSettingInitilized)
{
- iTriggerSession = aTriggerSession;
- iState = EInitialState;
+ iTriggerSession = aTriggerSession;
+ iState = EInitialState;
InitilizeSetting();
}
else
@@ -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__);
@@ -167,15 +188,18 @@
iHostAddress.Zero();
iObserver.OperationCompleteL(errorCode);
}
+ }
}
- }
// -----------------------------------------------------------------------------
// COMASuplConnRequestor::OpenConnection
// -----------------------------------------------------------------------------
-// TODO : Remove this method
-void COMASuplConnRequestor::CreateConnectionL(TInt /*aDialogTimeOutDelay*/, TBool aTriggerSession)
+//
+void COMASuplConnRequestor::CreateConnectionL(TInt aDialogTimeOutDelay, TBool aTriggerSession)
{
+ iIsTimeoutDialogTimerStarted = ETrue;
+
+ iDialogTimer->StartTimer(aDialogTimeOutDelay);
CreateConnectionL(aTriggerSession);
}
// -----------------------------------------------------------------------------
@@ -223,10 +247,10 @@
SetActive();
}
}
- else
+ else
{
iState = EInitilizeSetting;
- InitilizeSetting();
+ InitilizeSetting();
}
}
@@ -271,15 +295,16 @@
switch(iState)
{
+
+ case EInitialState:
+ {
+ iIsSettingInitilized = ETrue;
+ iTrace->Trace(_L("Setting API Initilizing Completed..."), KTraceFileName, __LINE__);
+ CreateConnectionL(iTriggerSession);
+
+ break;
+ }
- case EInitialState:
- {
- iIsSettingInitilized = ETrue;
- iTrace->Trace(_L("Setting API Initilizing Completed..."), KTraceFileName, __LINE__);
- CreateConnectionL(iTriggerSession);
-
- break;
- }
case EConnecting:
{
if(iLastConnectionError < 0)
@@ -381,7 +406,6 @@
void COMASuplConnRequestor::InitilizeSetting()
{
iTrace->Trace(_L("Intilizing Setting API..."), KTraceFileName, __LINE__);
-
iSuplSettings->Initialize(iStatus);
SetActive();
}
@@ -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();
}