uiservicetab/vimpstengine/src/cvimpstenginevoipsubservice.cpp
changeset 0 5e5d6b214f4f
child 14 9fdee5e1da30
equal deleted inserted replaced
-1:000000000000 0:5e5d6b214f4f
       
     1 /*
       
     2 * Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  Class that capsulates single service data members
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 //  INCLUDES
       
    20 #include "cvimpstenginevoipsubservice.h"
       
    21 
       
    22 #include "cvimpstenginecchhandler.h"
       
    23 #include "tvimpstconsts.h"
       
    24 #include "cvimpstengineservicetablefetcher.h"
       
    25 #include "mvimpstengineserviceconnectioneventobserver.h"
       
    26 //debug
       
    27 #include "vimpstdebugtrace.h"
       
    28 
       
    29 
       
    30 // ================= MEMBER FUNCTIONS =======================
       
    31 // ---------------------------------------------------------
       
    32 // CVIMPSTEngineVOIPSubService::NewL
       
    33 // 
       
    34 // ---------------------------------------------------------
       
    35 CVIMPSTEngineVOIPSubService* CVIMPSTEngineVOIPSubService::NewL( TUint32 aServiceId,
       
    36 									CVIMPSTEngineCchHandler& aCchHandler,
       
    37 									CVIMPSTEngineServiceTableFetcher& aTableFetcher,
       
    38 									MVIMPSTEngineServiceConnectionEventObserver& aObserver
       
    39 									)
       
    40     {
       
    41     TRACE( T_LIT("CVIMPSTEngineVOIPSubService::NewL start"));
       
    42     TRACE( T_LIT("NewL() aServiceId: %d"), aServiceId);
       
    43     
       
    44     CVIMPSTEngineVOIPSubService* self = CVIMPSTEngineVOIPSubService::NewLC(aServiceId,aCchHandler,
       
    45     										aTableFetcher, aObserver);
       
    46     CleanupStack::Pop( self );
       
    47 	
       
    48 	TRACE( T_LIT("CVIMPSTEngineVOIPSubService::NewL end"));
       
    49     return self;
       
    50     }
       
    51 
       
    52 
       
    53 // ---------------------------------------------------------
       
    54 // CVIMPSTEngineVOIPSubService::NewLC
       
    55 // 
       
    56 // ---------------------------------------------------------
       
    57     
       
    58 CVIMPSTEngineVOIPSubService* CVIMPSTEngineVOIPSubService::NewLC( TUint32 aServiceId,
       
    59                                                    	CVIMPSTEngineCchHandler& aCchHandler,
       
    60                                                    	CVIMPSTEngineServiceTableFetcher& aTableFetcher,
       
    61                                                    	MVIMPSTEngineServiceConnectionEventObserver& aObserver )
       
    62 	{
       
    63 	TRACE( T_LIT("CVIMPSTEngineVOIPSubService::NewLC start"));
       
    64 	TRACE( T_LIT("NewL() aServiceId: %d"), aServiceId);
       
    65 	
       
    66     CVIMPSTEngineVOIPSubService* self = new (ELeave) CVIMPSTEngineVOIPSubService(
       
    67     												aServiceId,aCchHandler,aTableFetcher,
       
    68     												aObserver  );
       
    69     CleanupStack::PushL( self );
       
    70     self->ConstructL( );
       
    71     
       
    72     TRACE( T_LIT("CVIMPSTEngineVOIPSubService::NewLC end"));
       
    73     return self;
       
    74 	}
       
    75 
       
    76 // ---------------------------------------------------------
       
    77 // CVIMPSTEngineVOIPSubService::~CVIMPSTEngineVOIPSubService
       
    78 // 
       
    79 // ---------------------------------------------------------
       
    80 
       
    81 CVIMPSTEngineVOIPSubService::~CVIMPSTEngineVOIPSubService()
       
    82 	{
       
    83 	TRACE( T_LIT("CVIMPSTEngineVOIPSubService::~CVIMPSTEngineVOIPSubService start"));
       
    84    	
       
    85    	iCchHandler.UnRegisterCchObserver(ECCHVoIPSub);	
       
    86    	
       
    87    	TRACE( T_LIT("CVIMPSTEngineVOIPSubService::~CVIMPSTEngineVOIPSubService end"));
       
    88  	}
       
    89 
       
    90 
       
    91 // ---------------------------------------------------------
       
    92 // CVIMPSTEngineVOIPSubService::ConstructL
       
    93 // 
       
    94 // ---------------------------------------------------------
       
    95 
       
    96 void CVIMPSTEngineVOIPSubService::ConstructL(  )
       
    97 	{
       
    98 	TRACE( T_LIT("CVIMPSTEngineVOIPSubService::ConstructL start"));
       
    99 	
       
   100 	TCCHSubserviceState serviceState = ECCHUninitialized;    
       
   101     TInt error = iCchHandler.GetServiceState( 
       
   102         			iServiceId, ECCHVoIPSub, serviceState );
       
   103 	
       
   104 	iServiceState = ResolveServiceState(serviceState, error);    	
       
   105 	
       
   106 	iCchHandler.RegisterCchObserverL(this,ECCHVoIPSub);       	
       
   107     
       
   108     TRACE( T_LIT("ConstructL() ResolveServiceState returned ServiceState: %d"), 
       
   109 							iServiceState );
       
   110    	
       
   111    	TRACE( T_LIT("CVIMPSTEngineVOIPSubService::ConstructL end"));
       
   112    	
       
   113    	}
       
   114 
       
   115 
       
   116 // ---------------------------------------------------------
       
   117 // CVIMPSTEngineVOIPSubService::CVIMPSTEngineVOIPSubService
       
   118 // 
       
   119 // ---------------------------------------------------------
       
   120 
       
   121 CVIMPSTEngineVOIPSubService::CVIMPSTEngineVOIPSubService( TUint32 aServiceId, 
       
   122                                               CVIMPSTEngineCchHandler& aCchHandler,
       
   123                                               CVIMPSTEngineServiceTableFetcher& aTableFetcher,
       
   124                                               MVIMPSTEngineServiceConnectionEventObserver& aObserver) :
       
   125 iServiceId(aServiceId),
       
   126 iCchHandler(aCchHandler),
       
   127 iTableFetcher(aTableFetcher),
       
   128 iType (TVIMPSTEnums::EVoip),
       
   129 iObserver(aObserver)
       
   130 	{
       
   131 		
       
   132 	}
       
   133 
       
   134 
       
   135 // ---------------------------------------------------------------------------
       
   136 // CVIMPSTEngineVOIPSubService::CchEventOccuredL()
       
   137 // ---------------------------------------------------------------------------
       
   138 // 
       
   139 void CVIMPSTEngineVOIPSubService::CchEventOccuredL( TUint /*aServiceId*/, 
       
   140     TCCHSubserviceState aState, TInt aServiceError )
       
   141 	{	
       
   142 	
       
   143 	TRACE( T_LIT("CVIMPSTEngineVOIPSubService::CchEventOccuredL start"));
       
   144 	TRACE( T_LIT("CchEventOccuredL() TCCHSubserviceState : %d, ServiceErr: %d"), 
       
   145 									aState, aServiceError );
       
   146 	
       
   147 	if ( aServiceError && ECCHDisabled != aState )
       
   148         {
       
   149         //we might even end up in waiting for connection state for all
       
   150         //those service which are ALR enabled
       
   151         //So better check here if you get any CCH errors
       
   152         iServiceState = ResolveServiceState( aState, aServiceError );
       
   153         iObserver.HandleServceConnectionEventL();
       
   154         DoHandleCchErrorL( aServiceError );
       
   155         }
       
   156     else
       
   157         {
       
   158         iServiceState = ResolveServiceState( aState, aServiceError );    
       
   159         iObserver.HandleServceConnectionEventL();
       
   160         }	
       
   161 	
       
   162 	TRACE( T_LIT("CVIMPSTEngineVOIPSubService::CchEventOccuredL end"));
       
   163 	
       
   164     }    
       
   165 
       
   166 	
       
   167 // ---------------------------------------------------------------------------
       
   168 // CVIMPSTEngineVOIPSubService::DoHandleCchErrorL()
       
   169 // ---------------------------------------------------------------------------
       
   170 // 
       
   171 void CVIMPSTEngineVOIPSubService::DoHandleCchErrorL( 
       
   172     TInt aServiceError )
       
   173     {
       
   174     
       
   175     TRACE( T_LIT("CVIMPSTEngineVOIPSubService::DoHandleCchErrorL start"));
       
   176     TRACE( T_LIT("DoHandleCchErrorL() ServiceErr: %d"), 
       
   177 									aServiceError );
       
   178 	/*								
       
   179 	MCchUi& cchUi = iCchHandler.CchUiApi();
       
   180 										
       
   181     switch ( aServiceError )
       
   182         {
       
   183         
       
   184         case KCCHErrorNetworkLost:  
       
   185         	{
       
   186         	cchUi.ShowDialogL( iServiceId, MCchUiObserver::ECchUiDialogTypeNoConnectionAvailable );
       
   187             break;
       
   188             }
       
   189             
       
   190         default:
       
   191             {
       
   192             break;
       
   193             }
       
   194             
       
   195         }
       
   196         */
       
   197 	
       
   198 	TRACE( T_LIT("CVIMPSTEngineVOIPSubService::DoHandleCchErrorL end"));
       
   199         
       
   200     }	
       
   201     
       
   202     
       
   203 
       
   204 // ---------------------------------------------------------------------------
       
   205 // CVIMPSTEngineVOIPSubService::ResolveServiceState
       
   206 // ---------------------------------------------------------------------------
       
   207 // 
       
   208 TVIMPSTEnums::TVIMPSTRegistrationState CVIMPSTEngineVOIPSubService::ResolveServiceState(
       
   209 										TCCHSubserviceState aState, 
       
   210             							TInt aServiceError )
       
   211     {
       
   212     
       
   213     TRACE( T_LIT("CVIMPSTEngineVOIPSubService::ResolveServiceState start"));    
       
   214         
       
   215     TVIMPSTEnums::TVIMPSTRegistrationState state = TVIMPSTEnums::ESVCENotRegistered;       
       
   216     
       
   217     TRACE( T_LIT("ResolveServiceState() iServiceId: %d, ServiceState: %d"), 
       
   218     							iServiceId, aState );    	
       
   219 
       
   220     TBool handleServiceStates = ETrue;
       
   221     if ( aServiceError && ECCHDisabled != aState )
       
   222         {    
       
   223 		//Only if the Service supports ALR, the state can goto WaitingForNetwork
       
   224 		//Still API from CCH is required to know whether ALR is supported or not
       
   225         if ( (KCCHErrorInvalidSettings != aServiceError) && (ECCHConnecting == aState) )        
       
   226             {   
       
   227             TRACE( T_LIT("ResolveServiceState() ESVCEWaitingForNetwork") );
       
   228             handleServiceStates = EFalse;  
       
   229             state = TVIMPSTEnums::ESVCEWaitingForNetwork;	           
       
   230             }
       
   231         }
       
   232     
       
   233     if ( handleServiceStates )
       
   234         {        
       
   235         switch ( aState )
       
   236             {
       
   237             case ECCHEnabled:
       
   238                 {
       
   239                 TRACE( T_LIT("ResolveServiceState() ESVCERegistered") );                
       
   240                 state = TVIMPSTEnums::ESVCERegistered;
       
   241                 }
       
   242                 break;
       
   243 
       
   244             case ECCHDisconnecting:      
       
   245                 {
       
   246                 TRACE( T_LIT("ResolveServiceState() ESVCENetworkDisConnecting") );                
       
   247                 state = TVIMPSTEnums::ESVCENetworkDisConnecting;
       
   248                 }
       
   249                 break;
       
   250 
       
   251             case ECCHUninitialized:
       
   252             case ECCHDisabled:  
       
   253                 {
       
   254                 TRACE( T_LIT("ResolveServiceState() ESVCENotRegistered") );                
       
   255                 state = TVIMPSTEnums::ESVCENotRegistered;
       
   256                 }
       
   257                 break;
       
   258                 
       
   259             case ECCHConnecting:               
       
   260                 {
       
   261                 TRACE( T_LIT("ResolveServiceState() ESVCENetworkConnecting") );                
       
   262                 state = TVIMPSTEnums::ESVCENetworkConnecting;
       
   263                 }
       
   264                 break;
       
   265             
       
   266             default:
       
   267                 break;
       
   268             }
       
   269         }        
       
   270         
       
   271 	TRACE( T_LIT("CVIMPSTEngineVOIPSubService::ResolveServiceState end"));
       
   272 	        
       
   273     return state;  
       
   274 	
       
   275     }
       
   276 
       
   277 
       
   278 // ---------------------------------------------------------------------------
       
   279 // CVIMPSTEngineVOIPSubService::SubServiceState
       
   280 // ---------------------------------------------------------------------------
       
   281 // 
       
   282 TVIMPSTEnums::TVIMPSTRegistrationState CVIMPSTEngineVOIPSubService::SubServiceState() const
       
   283 	{
       
   284 	TRACE( T_LIT("SubServiceState() ServiceId: %d ServiceState: %d"), 
       
   285 							iServiceId, iServiceState );
       
   286 	return iServiceState;
       
   287 	}
       
   288  
       
   289 
       
   290 // ---------------------------------------------------------------------------
       
   291 // CVIMPSTEngineVOIPSubService::Type
       
   292 // ---------------------------------------------------------------------------
       
   293 // 
       
   294 TVIMPSTEnums::SubServiceType CVIMPSTEngineVOIPSubService::Type() const	
       
   295 	{
       
   296 	TRACE( T_LIT("CVIMPSTEngineVOIPSubService::Type: %d"), iType );
       
   297 	TRACE( T_LIT("CVIMPSTEngineVOIPSubService: [0x%x]"), this );		    	
       
   298 	return iType;	
       
   299 	}
       
   300 
       
   301 
       
   302     
       
   303 //  End of File
       
   304