--- a/supl/locationomasuplprotocolhandler/protocolhandlerver2/src/epos_comasuplprotocolmanager2.cpp Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandlerver2/src/epos_comasuplprotocolmanager2.cpp Wed Oct 13 15:01:35 2010 +0300
@@ -104,7 +104,10 @@
// Destructor.
EXPORT_C COMASUPLProtocolManager2::~COMASUPLProtocolManager2()
{
-
+ if(iSettingsLauncher)
+ {
+ iSettingsLauncher->CancelLaunch();
+ }
if(iSuplSettings)
{
@@ -133,7 +136,7 @@
}
delete iSuplStorageSettings;
-
+ delete iSettingsLauncher;
delete iNotifier;
iMobilePhone.Close();
iTelServer.Close();
@@ -166,7 +169,7 @@
iSuplStorageSettings->SetObserverL(*this);
iSuplStorageSettings->SetSessionObserverL(*this);
-
+ iSettingsLauncher = COMASuplSettingsLauncher::NewL( *this );
TRAPD(err,iOMASuplAsnHandlerBaseImpl = COMASuplAsnHandlerBase::NewL(2);)
TBuf<64> buf(_L("ASN Plugin 2.0 loaded with error : "));
@@ -254,7 +257,7 @@
//Connect to ETel
User::LeaveIfError(ConnectToETelL());
-
+ ReadSuplUsage();
if(iSuplEcomEventWatcher)
{
@@ -1248,7 +1251,7 @@
if( aEvent == MSuplSettingsObserver::ESuplSettingsEventSuplUsageChange)
{
iTrace->Trace(_L("Setting Changed.SUPL Usage changed.. Reeading once again..."), KTraceFileName, __LINE__);
-
+ ReadSuplUsage();
}
else if( aEvent == MSuplSettingsObserver::ESuplSettingsEventCommParameterChange)
{
@@ -1257,9 +1260,6 @@
}
}
-
-
-
// -----------------------------------------------------------------------------
// COMASUPLProtocolManager2::LogPacket
// Logs
@@ -1742,6 +1742,72 @@
}
+// -----------------------------------------------------------------------------
+// COMASUPLProtocolManager2::LaunchSettingsUI
+//
+//
+// -----------------------------------------------------------------------------
+//
+TInt COMASUPLProtocolManager2::LaunchSettingsUI(MOMASuplUICompletionObserver* aObserver,const TDesC& aForHslp)
+ {
+ iTrace->Trace(_L("COMASUPLProtocolManager2::LaunchSettingsUI"), KTraceFileName, __LINE__);
+
+ if (iSuplSettings->IsUIActive())
+ return KErrInUse;
+ iSessnUIObserver = aObserver;
+ iSuplSettings->SetUIActive(ETrue);
+
+ if(iUIRequestArray.Count() <= 0 )
+ {
+ iTrace->Trace(_L("COMASUPLProtocolManager2::LaunchSettingsUI"), KTraceFileName, __LINE__);
+ iUIRequestArray.Append(aObserver);
+ iSuplSettings->SetUIActive(ETrue);
+ iCurrentlyUsedHslp.Copy(aForHslp);
+ return iSettingsLauncher->LaunchSettings();
+ }
+ else if(iCurrentlyUsedHslp.Compare(aForHslp) == KErrNone)
+ {
+ iUIRequestArray.Append(aObserver);
+ }
+ else
+ {
+ return KErrInUse;
+ }
+
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// COMASUPLProtocolManager2::SettingsUICompletedL
+//
+//
+// -----------------------------------------------------------------------------
+//
+void COMASUPLProtocolManager2::SettingsUICompletedL(TInt aError)
+ {
+ iTrace->Trace(_L("COMASUPLProtocolManager2::SettingsUICompletedL"), KTraceFileName, __LINE__);
+ iSuplSettings->SetUIActive(EFalse);
+
+ if (iDeInitDone)
+ {
+ iTrace->Trace(_L("COMASUPLProtocolManager2::SettingsUICompletedL, de-init done. Completing request"), KTraceFileName, __LINE__);
+ iDeInitDone = EFalse;
+ User::RequestComplete(iDeInitRequestStatus,KErrNone);
+ }
+ else
+ {
+ for(TInt i = 0; i < iUIRequestArray.Count(); i++)
+ {
+ iTrace->Trace(_L("COMASUPLProtocolManager2::SettingsUICompletedL,Forwarding ConnRerquestor "), KTraceFileName, __LINE__);
+ MOMASuplUICompletionObserver* observer = iUIRequestArray[i];
+ observer->SettingsUICompletedL(aError);
+ }
+ }
+
+ iCurrentlyUsedHslp.Copy(_L(""));
+ iUIRequestArray.Reset();
+ }
+
// -----------------------------------------------------------------------------
// COMASUPLProtocolManager2::DeInitialize
@@ -1798,10 +1864,73 @@
return networkMode;
}
+// -----------------------------------------------------------------------------
+// COMASUPLProtocolManager2::LaunchSuplUsageSettingsUI
+//
+//
+// -----------------------------------------------------------------------------
+//
+TInt COMASUPLProtocolManager2::LaunchSuplUsageSettingsUI(MOMASuplUICompletionObserver* aObserver, TBool aRoaming)
+ {
+ iTrace->Trace(_L("COMASUPLProtocolManager2::LaunchSuplUsageSettingsUI"), KTraceFileName, __LINE__);
+ if (iSuplSettings->IsUIActive() && !iTimeOutDialogPresent)
+ return KErrInUse;
+ // If timeout dialog is present, close it
+ if (iTimeOutDialogPresent)
+ {
+ iTimeOutDialogPresent = EFalse;
+ iSuplSettings->SetUIActive(EFalse);
+ iSettingsLauncher->Cancel();
+ }
+ iSessnUIObserver = aObserver;
+ iSuplSettings->SetUIActive(ETrue);
+ return iSettingsLauncher->LaunchSuplUsageSettingsUI(aRoaming);
+ }
+// -----------------------------------------------------------------------------
+// COMASUPLProtocolManager2::SettingsUsageUICompletedL
+//
+//
+// -----------------------------------------------------------------------------
+//
+void COMASUPLProtocolManager2::SettingsUsageUICompletedL(TInt aError)
+ {
+ iTrace->Trace(_L("COMASUPLProtocolManager2::SettingsUsageUICompletedL"), KTraceFileName, __LINE__);
+ iSuplSettings->SetUIActive(EFalse);
+ if (iDeInitDone)
+ {
+ iTrace->Trace(_L("COMASUPLProtocolManager2::SettingsUsageUICompletedL, de-init done. Completing request"), KTraceFileName, __LINE__);
+ iDeInitDone = EFalse;
+ User::RequestComplete(iDeInitRequestStatus,KErrNone);
+ }
+ else
+ {
+ if (iSessnUIObserver)
+ iSessnUIObserver->SettingsUsageUICompletedL(aError);
+ }
+ CheckOutstandingUsageUIRequestsL();
+ }
+
+// -----------------------------------------------------------------------------
+// COMASUPLProtocolManager2::ReadSuplUsage
+// Reads Supl Usage from Central Repository
+//
+// -----------------------------------------------------------------------------
+//
+void COMASUPLProtocolManager2::ReadSuplUsage()
+ {
+ iTrace->Trace(_L("COMASUPLProtocolManager2::ReadSuplUsage start"), KTraceFileName, __LINE__);
+ CSuplSettings::TSuplSettingsUsage suplUsage;
+ TInt err = iSuplStorageSettings->GetSuplUsage(suplUsage);
+ if(err == KErrNone )
+ {
+ iSuplSettings->SetSUPLUsage(suplUsage);
+ }
+ iTrace->Trace(_L("COMASUPLProtocolManager2::ReadSuplUsage end"), KTraceFileName, __LINE__);
+ }
void COMASUPLProtocolManager2::UpdateAllSubSessnsInSameSession(TInt aIpcSessionId)
{
@@ -1813,6 +1942,8 @@
OMAsuplSession = static_cast<COMASuplSession*>(iSuplSessions[cnt]);
TInt ipcSessnId = OMAsuplSession->SuplIpcSessionID();
+ if (ipcSessnId > 0 && ipcSessnId == aIpcSessionId)
+ OMAsuplSession->UpdateSuplUsage();
}
}
@@ -1828,7 +1959,23 @@
OMAsuplSession->SettingsChanged();
}
}
-
+
+void COMASUPLProtocolManager2::CheckOutstandingUsageUIRequestsL()
+ {
+ TInt TotalSession = iSuplSessions.Count();
+ COMASuplSession* OMAsuplSession = NULL;
+
+ for(TInt cnt = 0; cnt < TotalSession; ++cnt)
+ {
+ OMAsuplSession = static_cast<COMASuplSession*>(iSuplSessions[cnt]);
+
+ if (OMAsuplSession->GetSuplUsageFlag())
+ {
+ OMAsuplSession->StartUsageDialogLaunchL();
+ break;
+ }
+ }
+ }
void COMASUPLProtocolManager2::CheckForRoaming()
{
@@ -1908,7 +2055,63 @@
}
}
+// -----------------------------------------------------------------------------
+// COMASUPLProtocolManager2::LaunchSuplDialogTimeoutUI
+//
+//
+// -----------------------------------------------------------------------------
+//
+TInt COMASUPLProtocolManager2::LaunchSuplDialogTimeoutUI(MOMASuplUICompletionObserver* aObserver )
+ {
+ iTrace->Trace(_L("COMASUPLProtocolManager2::LaunchTimeOutUI"), KTraceFileName, __LINE__);
+
+ iSessnUIObserver = aObserver;
+ if (iSuplSettings->IsUIActive())
+ {
+ iSuplSettings->SetUIActive(EFalse);
+ iSettingsLauncher->Cancel();
+ }
+ iSuplSettings->SetUIActive(ETrue);
+ iTimeOutDialogPresent = ETrue;
+ return iSettingsLauncher->LaunchSessionTimeOutDialog();
+ }
+
+// -----------------------------------------------------------------------------
+// COMASUPLProtocolManager2::SettingsTimeOutUICompletedL
+//
+//
+// -----------------------------------------------------------------------------
+//
+void COMASUPLProtocolManager2::SettingsTimeOutUICompletedL(TInt aError)
+ {
+ iTrace->Trace(_L("COMASUPLProtocolManager2::SettingsTimeOutUICompletedL"), KTraceFileName, __LINE__);
+ iSuplSettings->SetUIActive(EFalse);
+ iTimeOutDialogPresent = EFalse;
+
+ if (iDeInitDone)
+ {
+ iTrace->Trace(_L("COMASUPLProtocolManager2::SettingsTimeOutUICompletedL, Completing request"), KTraceFileName, __LINE__);
+ iDeInitDone = EFalse;
+ User::RequestComplete(iDeInitRequestStatus,KErrNone);
+ }
+ else
+ {
+ if (iSessnUIObserver)
+ iSessnUIObserver->SettingsTimeOutUICompletedL(aError);
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// COMASUPLProtocolManager2::GetLastUsedAccessPoint
+//
+//
+// -----------------------------------------------------------------------------
+//
+TInt COMASUPLProtocolManager2::GetLastUsedAccessPoint(TDes& aLastlyUsedAccessPoint,TUint32& iIAPId)
+ {
+ return iSettingsLauncher->GetIAPName(aLastlyUsedAccessPoint,iIAPId);
+ }
// -----------------------------------------------------------------------------
// COMASUPLProtocolManager2::PrintHex