sipplugins/sippsystemstatemonitor/src/sipsystemstatemonitorimpl.cpp
branchRCL_3
changeset 12 c2e8c8b73582
parent 9 1e1cc61f56c3
equal deleted inserted replaced
10:dc4cddf5f2f8 12:c2e8c8b73582
    16 */
    16 */
    17 
    17 
    18 
    18 
    19 //  INCLUDE FILES
    19 //  INCLUDE FILES
    20 #include "sipsystemstatemonitorimpl.h"
    20 #include "sipsystemstatemonitorimpl.h"
    21 #include "CSystemStateConnUsagePermissionMonitor.h"
       
    22 #include "sipdevicestateaware.h"
    21 #include "sipdevicestateaware.h"
    23 #include "siprfsmonitorao.h"
    22 #include "siprfsmonitorao.h"
    24 #include "sipvpnmonitorao.h"
    23 #include "sipvpnmonitorao.h"
    25 #include <featmgr.h>          // for Feature Manager
    24 #include <featmgr.h>          // for Feature Manager
    26 
    25 
    43 // -----------------------------------------------------------------------------
    42 // -----------------------------------------------------------------------------
    44 //
    43 //
    45 void CSipSystemStateMonitorImpl::ConstructL()
    44 void CSipSystemStateMonitorImpl::ConstructL()
    46     {
    45     {
    47     iMonitorAo = CSipSystemStateMonitorAo::NewL();
    46     iMonitorAo = CSipSystemStateMonitorAo::NewL();
    48     iUsagePermissionMonitor = 
       
    49         CSystemStateConnUsagePermissionMonitor::NewL();
       
    50     iSipDeviceAwareObject = CSipDeviceStateAware::NewL();
    47     iSipDeviceAwareObject = CSipDeviceStateAware::NewL();
    51     }
    48     }
    52 
    49 
    53 // -----------------------------------------------------------------------------
    50 // -----------------------------------------------------------------------------
    54 // CSipSystemStateMonitorImpl::CSipSystemStateMonitorImpl
    51 // CSipSystemStateMonitorImpl::CSipSystemStateMonitorImpl
    71         iVpnMonitor = NULL;
    68         iVpnMonitor = NULL;
    72         }
    69         }
    73 		
    70 		
    74     delete iMonitorAo;
    71     delete iMonitorAo;
    75     iSnapMonitors.ResetAndDestroy();
    72     iSnapMonitors.ResetAndDestroy();
    76     delete iUsagePermissionMonitor;
       
    77     delete iRfsMonitor;
    73     delete iRfsMonitor;
    78 	delete iSipDeviceAwareObject;
    74 	delete iSipDeviceAwareObject;
    79     }
    75     }
    80     
    76     
    81 // -----------------------------------------------------------------------------
    77 // -----------------------------------------------------------------------------
   104     else if ( aVariable == ESnapAvailability )
   100     else if ( aVariable == ESnapAvailability )
   105         {
   101         {
   106         CSipSnapAvailabilityMonitor* monitor = FindSnapMonitorById( aObjectId );
   102         CSipSnapAvailabilityMonitor* monitor = FindSnapMonitorById( aObjectId );
   107         if ( !monitor )
   103         if ( !monitor )
   108             {
   104             {
   109             TInt permissionToUseNetwork = 
       
   110                 iUsagePermissionMonitor->CurrentUsagePermission();
       
   111             User::LeaveIfError( permissionToUseNetwork ); 
       
   112             monitor = CSipSnapAvailabilityMonitor::NewLC( 
   105             monitor = CSipSnapAvailabilityMonitor::NewLC( 
   113                 aObjectId, permissionToUseNetwork, aObserver );
   106                 aObjectId, aObserver );
   114             iUsagePermissionMonitor->AddObserverL( *monitor );
       
   115             iSnapMonitors.AppendL( monitor );
   107             iSnapMonitors.AppendL( monitor );
   116             CleanupStack::Pop( monitor );
   108             CleanupStack::Pop( monitor );
   117             }
   109             }
   118         else
   110         else
   119             {
   111             {
   157         }
   149         }
   158     else if ( aVariable == ESnapAvailability )
   150     else if ( aVariable == ESnapAvailability )
   159         {
   151         {
   160         CSipSnapAvailabilityMonitor* monitor = FindSnapMonitorById( aObjectId );
   152         CSipSnapAvailabilityMonitor* monitor = FindSnapMonitorById( aObjectId );
   161         if ( monitor )
   153         if ( monitor )
   162             {
   154             {            
   163             iUsagePermissionMonitor->RemoveObserver( *monitor );
       
   164             monitor->RemoveObserver( aObserver );
   155             monitor->RemoveObserver( aObserver );
   165             if ( !monitor->HasObservers() )
   156             if ( !monitor->HasObservers() )
   166                 {
   157                 {
   167                 iSnapMonitors.Remove( iSnapMonitors.Find( monitor ) );
   158                 iSnapMonitors.Remove( iSnapMonitors.Find( monitor ) );
   168                 delete monitor;
   159                 delete monitor;
   198         return iMonitorAo->State();
   189         return iMonitorAo->State();
   199         }
   190         }
   200     else if ( aVariable == ESnapAvailability )
   191     else if ( aVariable == ESnapAvailability )
   201         {
   192         {
   202         CSipSnapAvailabilityMonitor* monitor = FindSnapMonitorById( aObjectId );
   193         CSipSnapAvailabilityMonitor* monitor = FindSnapMonitorById( aObjectId );
   203         if ( monitor )
   194         if ( monitor )        
   204             {
   195             return monitor->SnapAvailability();
   205             TInt permissionToUseNetwork = 
       
   206                 iUsagePermissionMonitor->CurrentUsagePermission();
       
   207             if ( permissionToUseNetwork < 0 )
       
   208                 {
       
   209                 return permissionToUseNetwork;
       
   210                 }        
       
   211             return permissionToUseNetwork && monitor->SnapAvailability();
       
   212             }
       
   213         }
   196         }
   214     else if ( aVariable == ERfsState )
   197     else if ( aVariable == ERfsState )
   215         {
   198         {
   216         if(iRfsMonitor)
   199         if(iRfsMonitor)
   217             iRfsMonitor->State();
   200             iRfsMonitor->State();