--- /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;
+ }
+}