realtimenetprots/sipfw/SIP/ConnectionMgr/src/cellulardatausagemonitor.cpp
changeset 0 307788aac0a8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/realtimenetprots/sipfw/SIP/ConnectionMgr/src/cellulardatausagemonitor.cpp	Tue Feb 02 01:03:15 2010 +0200
@@ -0,0 +1,166 @@
+/*
+* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* Name          : cellulardatausagemonitor.cpp
+* Part of       : ConnectionMgr
+* See class definition below.
+*/
+
+
+
+#include <centralrepository.h>
+#include "cellulardatausagemonitor.h"
+#include <cmmanagerkeys.h>
+#include <cmgenconnsettings.h>
+#include "SipLogs.h"
+
+// -----------------------------------------------------------------------------
+// CSipCellularDataUsageMonitor::NewLC
+// -----------------------------------------------------------------------------
+//
+CSipCellularDataUsageMonitor* CSipCellularDataUsageMonitor::NewL(MSipCellularDataUsageObserver & aObserver)
+{
+	CSipCellularDataUsageMonitor* self = new (ELeave) CSipCellularDataUsageMonitor(aObserver);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+}
+
+// -----------------------------------------------------------------------------
+// CSipCellularDataUsageMonitor::CSipCellularDataUsageMonitor
+// -----------------------------------------------------------------------------
+//
+
+CSipCellularDataUsageMonitor::CSipCellularDataUsageMonitor(MSipCellularDataUsageObserver & aObserver) :
+	CActive(EPriorityStandard),
+	iObserver(aObserver)
+{
+	CActiveScheduler::Add(this);
+}
+	
+// -----------------------------------------------------------------------------
+// CSipCellularDataUsageMonitor::~CSipCellularDataUsageMonitor
+// -----------------------------------------------------------------------------
+//
+
+
+CSipCellularDataUsageMonitor::~CSipCellularDataUsageMonitor()
+{
+	Cancel();
+	delete iRepository;
+}
+
+// -----------------------------------------------------------------------------
+// CSipCellularDataUsageMonitor::DoCancel
+// -----------------------------------------------------------------------------
+//
+
+void CSipCellularDataUsageMonitor::DoCancel()
+{
+	if (iRepository)
+		{
+		iRepository->NotifyCancelAll();
+		}
+}
+
+// -----------------------------------------------------------------------------
+// CSipCellularDataUsageMonitor::ConstructL
+// -----------------------------------------------------------------------------
+//
+
+void CSipCellularDataUsageMonitor:: ConstructL()
+{
+iRepository = CRepository::NewL( KCRUidCmManager );
+//Current Usage Status;
+TInt iUsageStatus;
+iRepository->Get( KCurrentCellularDataUsage, iUsageStatus );
+__SIP_INT_LOG1( "CSipCellularDataUsageMonitor::ConstructL, Initial CenRepValue ", iUsageStatus )	
+SetCellularUsageStatus(iUsageStatus);
+MonitorStatus();
+}
+
+// -----------------------------------------------------------------------------
+// CSipCellularDataUsageMonitor::MonitorStatus
+// -----------------------------------------------------------------------------
+//
+
+void CSipCellularDataUsageMonitor::MonitorStatus()
+{
+__SIP_LOG( "CSipCellularDataUsageMonitor::MonitorStatus, Requesting Notify" )
+TInt err = iRepository->NotifyRequest( KCurrentCellularDataUsage, iStatus );
+SetActive();
+}
+
+// -----------------------------------------------------------------------------
+// CSipCellularDataUsageMonitor::RunL
+// -----------------------------------------------------------------------------
+//
+
+void CSipCellularDataUsageMonitor::RunL()
+{
+	__SIP_INT_LOG1( "CSipCellularDataUsageMonitor::RunL, Status ", iStatus.Int() )
+	if (iStatus.Int() >=  KErrNone)
+		{
+		TInt iUsageStatus;
+		TInt err = iRepository->Get( KCurrentCellularDataUsage, iUsageStatus );
+		__SIP_INT_LOG1( "CSipCellularDataUsageMonitor::RunL, Notified CenRepValue ", iUsageStatus )
+		SetCellularUsageStatus(iUsageStatus);
+		iObserver.CellularDataUsageChangedL(iPermissionStatus);
+		}
+
+	MonitorStatus();
+}
+
+// -----------------------------------------------------------------------------
+// CSipCellularDataUsageMonitor::RunError
+// -----------------------------------------------------------------------------
+//
+
+TInt CSipCellularDataUsageMonitor::RunError(TInt aError)
+{
+return aError;
+}
+
+// -----------------------------------------------------------------------------
+// CSipCellularDataUsageMonitor::CellularUsageStatus
+// -----------------------------------------------------------------------------
+//
+
+MSipCellularDataUsageObserver::TCellularDataUsageStatus CSipCellularDataUsageMonitor::CellularUsageStatus()
+{
+
+__SIP_INT_LOG1( "CSipCellularDataUsageMonitor::CellularUsageStatus, Status is ", iPermissionStatus )
+return iPermissionStatus;
+}
+
+// -----------------------------------------------------------------------------
+// CSipCellularDataUsageMonitor::SetCellularUsageStatus
+// -----------------------------------------------------------------------------
+//
+
+void CSipCellularDataUsageMonitor::SetCellularUsageStatus(TInt aVal)
+
+{
+if(aVal != ECmCellularDataUsageDisabled) 
+	{
+	// This means the connectivity Settings Value is set to either "Automatic" or "Always Ask" for  the current Network.
+		iPermissionStatus = MSipCellularDataUsageObserver::EDataUsageAllowed;
+	}
+else
+	{
+	// This means the connectivity Settings Value is set to "WLAN Only" for  the current Network.
+	iPermissionStatus = MSipCellularDataUsageObserver::EDataUsageNotAllowed;
+	}
+}