supl/locationsuplfw/terminalinitiationapi/src/epos_suplterminalapi.cpp
changeset 22 4c4ed41530db
parent 18 3825cf2dc8c2
child 39 3efc7a0e8755
--- a/supl/locationsuplfw/terminalinitiationapi/src/epos_suplterminalapi.cpp	Mon May 03 12:54:42 2010 +0300
+++ b/supl/locationsuplfw/terminalinitiationapi/src/epos_suplterminalapi.cpp	Fri May 14 16:17:02 2010 +0300
@@ -1025,7 +1025,15 @@
 	{
 	__ASSERT_ALWAYS(SubSessionHandle(), 
 				User::Panic(KSuplClientFault, ESuplServerBadHandle));
-    
+   
+   
+  if(!CheckSuplTriggerServiceStatus()) //To check that triggering service is allowed by user...
+  {
+  	TRequestStatus *status = &aStatus; 
+		User::RequestComplete(status,KErrNotSupported);	
+		return;
+  }
+  
 	if( iSuplService != ESUPL_2_0 )
 		{
 		TRequestStatus *status = &aStatus; 
@@ -1094,6 +1102,13 @@
 	__ASSERT_ALWAYS(SubSessionHandle(), 
 			User::Panic(KSuplClientFault, ESuplServerBadHandle));
     
+  if(!CheckSuplTriggerServiceStatus()) //To check that triggering service is allowed by user...
+		{
+			TRequestStatus *status = &aStatus; 
+			User::RequestComplete(status,KErrNotSupported);	
+			return;
+		} 
+
 	if( iSuplService != ESUPL_2_0 )
 		{
 		TRequestStatus *status = &aStatus; 
@@ -1193,6 +1208,13 @@
 	__ASSERT_ALWAYS(SubSessionHandle(), 
 			User::Panic(KSuplClientFault, ESuplServerBadHandle));
 
+		if(!CheckSuplTriggerServiceStatus()) //To check that triggering service is allowed by user...
+		{
+		TRequestStatus *status = &aStatus; 
+		User::RequestComplete(status,KErrNotSupported);	
+		return;
+		}
+
 	if( iSuplService != ESUPL_2_0 )
 		{
 		TRequestStatus *status = &aStatus; 
@@ -1232,4 +1254,41 @@
 	SendReceive(ESuplTerminalSubssnNotifyTriggerFired, args, aStatus);
 	}
 
+// ---------------------------------------------------------
+// RSuplTerminalSubSession::CheckSuplTriggerServiceStatus
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+TBool RSuplTerminalSubSession::CheckSuplTriggerServiceStatus()
+{
+	
+	delete iSuplStorageSettings;
+	iSuplStorageSettings = NULL;
+	
+	CSuplSettings::TSuplTriggerStatus suplTriggerStatus;
+
+	// create local object iSuplStorageSettings
+	TRAPD(err,iSuplStorageSettings = CSuplSettings::NewL());
+	if(err == KErrNone)
+	{
+			iSuplStorageSettings->GetSuplTriggeredServiceStatus(suplTriggerStatus);
+			delete iSuplStorageSettings;
+			iSuplStorageSettings = NULL;
+
+			if(suplTriggerStatus == CSuplSettings::ESuplTriggerOn)
+			{
+					return ETrue;						
+			}
+			else
+			{
+					return EFalse;	
+			}
+	}		
+	else
+	{
+			return ETrue;
+	}
+}
+
 // end of file