commsconfig/cscengine/src/cscengservicehandler.cpp
branchRCL_3
changeset 21 f742655b05bf
parent 20 65a3ef1d5bd0
child 22 d38647835c2e
--- a/commsconfig/cscengine/src/cscengservicehandler.cpp	Thu Aug 19 09:45:22 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,615 +0,0 @@
-/*
-* Copyright (c) 2007-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:  For CSC needed Service Provider Settings handling
-*
-*/
-
-
-#include <spentry.h>
-#include <spproperty.h>
-#include <spsettings.h>
-#include <spnotifychange.h>
-#include <spsettingsvoiputils.h>
-#include <centralrepository.h>
-#include <settingsinternalcrkeys.h>
-
-#include "cscenglogger.h"
-#include "cscengservicehandler.h"
-#include "mcscengserviceobserver.h"
-
-const TInt KDummyServiceCount = 1;// only remove cs service, VoIP service is not returned
-const TInt KArrayInitSize = 2;
-
-// SCP-plugin uid for Sip VoIP
-const TInt32 KSipVoIPSubServicePlugId = 0x1027545A;
-// Preferred Telephony value is PS call
-const TInt KRCSEInternetCallPreferred = 1;
-// Preferred Telephony value is CS call
-const TInt KRCSECSCallPreferred = 0;
-
-// ======== MEMBER FUNCTIONS ========
-
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-CCSCEngServiceHandler::CCSCEngServiceHandler()
-    {    
-    }
-
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-void CCSCEngServiceHandler::ConstructL( MCSCEngServiceObserver* aObserver )
-    {
-    CSCENGDEBUG( "CCSCEngServiceHandler::ConstructL - begin" ); 
-    
-    iObserver = aObserver;
-    iServiceSettings = CSPSettings::NewL();
-    iNotifier = CSPNotifyChange::NewL( *this );
-    iSettingsVoIPUtils = CSPSettingsVoIPUtils::NewL();
-           
-    RArray<TUint> serviceIds;
-    iNotifier->NotifyChangeL( serviceIds );
-    
-    CSCENGDEBUG( "CCSCEngServiceHandler::ConstructL - end" ); 
-    }   
-    
-    
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CCSCEngServiceHandler* CCSCEngServiceHandler::NewL( 
-    MCSCEngServiceObserver* aObserver )
-    {    
-    CCSCEngServiceHandler* self = new (ELeave) CCSCEngServiceHandler;
-    CleanupStack::PushL( self );
-    self->ConstructL( aObserver );
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-CCSCEngServiceHandler::~CCSCEngServiceHandler()
-    {
-    CSCENGDEBUG( 
-        "CCSCEngServiceHandler::~CCSCEngCenrepHandler - begin" ); 
-    
-    iServiceName.Close();
-    delete iSettingsVoIPUtils;
-    delete iServiceSettings;
-    delete iNotifier;
-    
-    CSCENGDEBUG( 
-        "CCSCEngServiceHandler::~CCSCEngCenrepHandler - end" ); 
-    }
-    
-
-// ---------------------------------------------------------------------------
-// For getting all service ids
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCSCEngServiceHandler::GetAllServiceIdsL( 
-    RArray<TUint>& aServiceIds )
-    {
-    CSCENGDEBUG( "CCSCEngServiceHandler::GetAllServiceIds - begin" ); 
-    
-    iServiceSettings->FindServiceIdsL( aServiceIds );
-    
-    // Remove 'dummy service's' from service ids list.
-    if ( KDummyServiceCount <= aServiceIds.Count() )
-        {
-        for ( TUint i = 0; i < KDummyServiceCount; i++ )
-            {
-            aServiceIds.Remove( 0 );
-            }
-        }
-        
-    CSCENGDEBUG( "CCSCEngServiceHandler::GetAllServiceIds - end" ); 
-    }
-
-
-// ---------------------------------------------------------------------------
-// For getting service provider settings count
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CCSCEngServiceHandler::ServiceIdCountL()
-    {
-    CSCENGDEBUG2( 
-        "CCSCEngServiceHandler::ServiceIdCount COUNT=%d", 
-            iServiceSettings->SettingsCountL() );
-    
-    return iServiceSettings->SettingsCountL();
-    }
-
-
-// ---------------------------------------------------------------------------
-// For deleting service
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCSCEngServiceHandler::DeleteServiceL( TUint aServiceId )
-    {
-    CSCENGDEBUG( "CCSCEngServiceHandler::DeleteServiceL - begin" );
-    
-    User::LeaveIfError( iServiceSettings->DeleteEntryL( aServiceId ) );
-    
-    CSCENGDEBUG( "CCSCEngServiceHandler::DeleteServiceL - end" );
-    }
-
-
-// ---------------------------------------------------------------------------
-// For getting service name
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const TDesC16& CCSCEngServiceHandler::ServiceNameL( 
-    TUint aServiceId )
-    {
-    CSCENGDEBUG( "CCSCEngServiceHandler::ServiceNameL - begin" );
-    
-    iServiceName.Zero();
-    RArray<TUint> serviceIds;
-    CleanupClosePushL( serviceIds );
-    
-    GetAllServiceIdsL( serviceIds );
-    
-    CDesCArray* serviceNames = 
-        new ( ELeave ) CDesCArrayFlat( KArrayInitSize );
-    CleanupStack::PushL( serviceNames );
-    
-    iServiceSettings->FindServiceNamesL( serviceIds, *serviceNames );
-    
-    TBool serviceFound( EFalse );
-    for ( TInt i( 0 ) ; i < serviceIds.Count() && !serviceFound ; i++ )
-        {
-        if ( aServiceId == serviceIds[ i ] )
-            {
-            serviceFound = ETrue;
-            iServiceName.Close();
-            iServiceName.CreateL( serviceNames->MdcaPoint( i ) );
-            }
-        }
-    
-    if ( !serviceFound )
-        {
-        User::Leave( KErrNotFound ); // leave if service not found
-        }
-    
-    CleanupStack::PopAndDestroy( serviceNames );	
-    CleanupStack::PopAndDestroy( &serviceIds );
-    
-    CSCENGDEBUG( "CCSCEngServiceHandler::ServiceNameL - end" );
-            
-    return iServiceName;
-    }
-
-// ---------------------------------------------------------------------------
-// For getting brand id
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCSCEngServiceHandler::BrandIdL( 
-    TUint aServiceId, TDes16& aBrandId )
-    {
-    CSCENGDEBUG( "CCSCEngServiceHandler::BrandIdL - begin" ); 
-    
-    CSPProperty* property = CSPProperty::NewLC();
-    
-    User::LeaveIfError( iServiceSettings->FindPropertyL( 
-        aServiceId, EPropertyBrandId, *property ) );
-       
-    User::LeaveIfError( property->GetValue( aBrandId ) );
-    
-    CleanupStack::PopAndDestroy( property );
-    
-    CSCENGDEBUG2( "CCSCEngServiceHandler::BrandIdL BRANDID=%S", &aBrandId );
-    
-    CSCENGDEBUG( "CCSCEngServiceHandler::BrandIdL - end" ); 
-    }      
-
-// ---------------------------------------------------------------------------
-// For getting snap id
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CCSCEngServiceHandler::SnapIdL( TUint aServiceId )
-    {
-    CSCENGDEBUG( "CCSCEngServiceHandler::SnapIdL - begin" ); 
-    
-    CSPProperty* property = CSPProperty::NewLC();
-    TInt snapId( 0 );
-    
-    User::LeaveIfError( iServiceSettings->FindPropertyL( 
-        aServiceId, ESubPropertyVoIPPreferredSNAPId, *property ) );
-       
-    User::LeaveIfError( property->GetValue( snapId ) );
-    
-    CleanupStack::PopAndDestroy( property );
-    
-    CSCENGDEBUG( "CCSCEngServiceHandler::SnapIdL - end" ); 
-    
-    return snapId;
-    }  
-
-// ---------------------------------------------------------------------------
-// For getting service setup plug-in id
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt32 CCSCEngServiceHandler::ServiceSetupPluginIdL( 
-    TUint aServiceId )
-    {
-    CSCENGDEBUG( "CCSCEngServiceHandler::ServiceSetupPluginId - begin" ); 
-    
-    CSPProperty* property = CSPProperty::NewLC();
-     
-    User::LeaveIfError( iServiceSettings->FindPropertyL( 
-        aServiceId, EPropertyServiceSetupPluginId, *property ) );
-    
-    TInt serviceSetupPluginId( 0 );   
-    User::LeaveIfError( property->GetValue( serviceSetupPluginId ) ); 
-          
-    CleanupStack::PopAndDestroy( property );
-    
-    CSCENGDEBUG( "CCSCEngServiceHandler::ServiceSetupPluginId - end" ); 
-    
-    return serviceSetupPluginId;
-    }      
-
-
-// ---------------------------------------------------------------------------
-// For getting service´s phonebook tab view id
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CCSCEngServiceHandler::ServiceTabViewIdL( TUint aServiceId )
-    {
-    CSPProperty* property = CSPProperty::NewLC();
-     
-    User::LeaveIfError( iServiceSettings->FindPropertyL( 
-        aServiceId, EPropertyContactViewId, *property ) );
-    
-    TInt tabViewId( 0);                   
-    User::LeaveIfError( property->GetValue( tabViewId ) );     
-    
-    CleanupStack::PopAndDestroy( property );
-
-    CSCENGDEBUG2( "CCSCEngServiceHandler::ServiceTabViewIdL: %d", tabViewId );
-    
-    return tabViewId;
-    }      
-
-// ---------------------------------------------------------------------------
-// For getting service´s IM settings id.
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CCSCEngServiceHandler::ImSettingsIdL( TUint aServiceId )
-    {
-    CSCENGDEBUG( "CCSCEngServiceHandler::ImSettingsIdL - begin" ); 
-    
-    CSPProperty* property = CSPProperty::NewLC();
-     
-    User::LeaveIfError( iServiceSettings->FindPropertyL( 
-        aServiceId, ESubPropertyIMSettingsId, *property ) );
-    
-    TInt settingsId( 0 );                   
-    User::LeaveIfError( property->GetValue( settingsId ) );    
-    
-    CleanupStack::PopAndDestroy( property );
-
-    CSCENGDEBUG( "CCSCEngServiceHandler::ImSettingsIdL - end" );
-    
-    return settingsId;
-    }  
-
-// ---------------------------------------------------------------------------
-// For setting service´s IM settings id.
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCSCEngServiceHandler::SetImSettingsIdL(
-    TUint aServiceId, TInt aSettingsId )
-    {
-    CSCENGDEBUG( "CCSCEngServiceHandler::SetImSettingsIdL - begin" ); 
-    
-    CSPProperty* property = CSPProperty::NewLC();
-    
-    User::LeaveIfError( 
-        property->SetName( ESubPropertyIMSettingsId ) );
-    User::LeaveIfError( property->SetValue( aSettingsId ) );
-    
-    iServiceSettings->AddOrUpdatePropertyL( aServiceId, *property );
-    
-    CleanupStack::PopAndDestroy( property );
-    
-    CSCENGDEBUG( "CCSCEngServiceHandler::SetImSettingsIdL - end" );
-    } 
-
-// ---------------------------------------------------------------------------
-// For getting service´s presence request preference setting
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TOnOff CCSCEngServiceHandler::PresenceReqPrefL( TUint aServiceId )
-    {
-    CSCENGDEBUG( "CCSCEngServiceHandler::PresenceReqPrefL" ); 
-    
-    CSPProperty* property = CSPProperty::NewLC();
-    
-    User::LeaveIfError( iServiceSettings->FindPropertyL( 
-        aServiceId, ESubPropertyPresenceRequestPreference , *property ) );
-    
-    TOnOff onOff = EOn;    
-    User::LeaveIfError( property->GetValue( onOff ) );
-    
-    CleanupStack::PopAndDestroy( property );
-    
-    return onOff;
-    } 
-
-
-// ---------------------------------------------------------------------------
-// For setting service´s presence request preference setting
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCSCEngServiceHandler::SetPresenceReqPrefL( 
-    TUint aServiceId, TOnOff aOnOff )
-    {
-    CSCENGDEBUG2( 
-        "CCSCEngServiceHandler::SetPresenceReqPrefL: aOnOff=%d", aOnOff ); 
-    
-    CSPProperty* property = CSPProperty::NewLC();
-    User::LeaveIfError( 
-        property->SetName( ESubPropertyPresenceRequestPreference ) );
-    User::LeaveIfError( property->SetValue( aOnOff ) );
-    
-    iServiceSettings->AddOrUpdatePropertyL( aServiceId, *property );
-    CleanupStack::PopAndDestroy( property );
-    } 
-
-
-// ---------------------------------------------------------------------------
-// For getting service´s handover notification tone preference setting
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TOnOff CCSCEngServiceHandler::HandoverNotifTonePrefL( 
-    TUint aServiceId )
-    {
-    CSCENGDEBUG( "CCSCEngServiceHandler::HandoverNotifTonePrefL" ); 
-
-    CSPProperty* property = CSPProperty::NewLC();
-         
-    User::LeaveIfError( iServiceSettings->FindPropertyL( 
-        aServiceId, ESubPropertyVccHoNotificationToneMode , *property ) );
-         
-    RBuf value( 0 );  
-    CleanupClosePushL( value );
-    value.CreateL( 1 );
-    User::LeaveIfError( property->GetValue( value ) );
-         
-    // convert rbuf to int
-    TInt intValue;
-    TLex temp( value );
-    User::LeaveIfError( temp.Val( intValue ) );
-      
-    CleanupStack::PopAndDestroy( &value );
-    CleanupStack::PopAndDestroy( property );
-         
-    TOnOff onOff = EOONotSet;
-      
-    switch ( intValue )
-        {
-        case 0:
-            {
-            onOff = EOff;
-            }
-            break;
-        case 1:
-            {
-            onOff = EOn;
-            }
-            break;
-        default:
-            {
-            onOff = EOONotSet;
-            }
-            break;
-        }
-
-    CSCENGDEBUG2( "CCSCEngServiceHandler::HandoverNotifTonePrefL: %d", onOff ); 
-      
-    return onOff;
-    }
-        
-
-// ---------------------------------------------------------------------------
-// For setting service´s handover notification tone preference setting
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCSCEngServiceHandler::SetHandoverNotifTonePrefL( 
-    TUint aServiceId, TOnOff aOnOff )
-    {
-    CSPProperty* property = CSPProperty::NewLC();
-    User::LeaveIfError( 
-        property->SetName( ESubPropertyVccHoNotificationToneMode ) );
-    
-    RBuf value;
-    CleanupClosePushL( value );
-    value.CreateL( 1 );
-    value.AppendNum( aOnOff );
-    User::LeaveIfError( property->SetValue( value ) );
-       
-    iServiceSettings->AddOrUpdatePropertyL( aServiceId, *property );
-    
-    CleanupStack::PopAndDestroy( &value );
-    CleanupStack::PopAndDestroy( property );
-    }
-        
-
-// ---------------------------------------------------------------------------
-// For finding out if service supports VCC
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool CCSCEngServiceHandler::IsVccSupportedL( TUint aServiceId )
-    {
-    TBool supported( EFalse );
-    
-    TInt vccServiceId( KErrNone );
-    TInt error( KErrNone );
-        
-    //  Array of service provider IDs
-    // is defined as: typedef RArray<TServiceId> RIdArray
-    // in spdefinitions.h
-    RIdArray serviceIdArray;     
-    CleanupClosePushL( serviceIdArray );
-
-    // This should leave if error occurs
-    error = iServiceSettings->FindServiceIdsL( serviceIdArray );    
-    User::LeaveIfError( error );
-            
-    TInt serviceId( KErrNone );
-    TBool foundEntry( EFalse );
-        
-    for ( TInt i( 0 ); i < serviceIdArray.Count() && !foundEntry; i++ )
-        {
-        CSPProperty* property = CSPProperty::NewLC(); 
-        error = iServiceSettings->FindPropertyL(
-            serviceIdArray[i], ESubPropertyVccVDI, *property ); 
-           
-        if( error == KErrNone )
-            {            
-            vccServiceId =  serviceIdArray[i];
-            foundEntry = ETrue;
-            }
-        CleanupStack::PopAndDestroy( property );
-        }
-    
-    CleanupStack::PopAndDestroy( &serviceIdArray );
-    
-    if ( vccServiceId )
-        {
-        CSPProperty* property2 = CSPProperty::NewLC(); 
-        
-        iServiceSettings->FindPropertyL( 
-            vccServiceId,
-            ESubPropertyVccDtVoipServiceId,
-            *property2 );
-
-        TInt error = property2->GetValue( serviceId );
-        User::LeaveIfError( error );
-        CleanupStack::PopAndDestroy( property2 );
-        }    
-    
-    if ( serviceId == aServiceId )
-        {
-        supported = ETrue;
-        }
-    
-    CSCENGDEBUG2( "CCSCEngServiceHandler::IsVccSupportedL: %d", supported );
-    
-    return supported;
-    }
-
-
-// ---------------------------------------------------------------------------
-// For finding out if service supports SIP/VoIP
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool CCSCEngServiceHandler::IsSipVoIPL( TUint aServiceId )
-    {
-    TBool sipVoIP( EFalse );
-    TInt uid( 0 );
-    
-    CSPProperty* property = CSPProperty::NewLC();
-    
-    User::LeaveIfError( iServiceSettings->FindPropertyL( 
-        aServiceId, EPropertyVoIPSubServicePluginId , *property ) );
-    
-    User::LeaveIfError( property->GetValue( uid ) );
-    
-    if ( KSipVoIPSubServicePlugId == uid )
-        {
-        sipVoIP = ETrue;
-        }
-    
-    CSCENGDEBUG2( "CCSCEngServiceHandler::IsSipVoIP: %d", sipVoIP );
-    
-    CleanupStack::PopAndDestroy( property );
-    
-    return sipVoIP;
-    } 
-
-// ---------------------------------------------------------------------------
-// For finding out if service is the preferred service
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool CCSCEngServiceHandler::IsPreferredService( TUint aServiceId )
-    const
-    {
-    TUint service( 0 );
-    TInt ret = iSettingsVoIPUtils->GetPreferredService( service );
-    
-    return ( KErrNone == ret && service == aServiceId );
-    } 
-
-// ---------------------------------------------------------------------------
-// For finding out if voip is preferred telephony value
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool CCSCEngServiceHandler::IsPreferredTelephonyVoip() const
-    {
-    return iSettingsVoIPUtils->IsPreferredTelephonyVoIP();
-    } 
-
-// ---------------------------------------------------------------------------
-// Sets the preferred telephony value
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CCSCEngServiceHandler::SetVoipAsPrefTelephony( 
-    TBool aValue,
-    TUint aServiceId ) const
-    {
-    TRAPD( err, SetVoipAsPrefTelephonyL( aValue, aServiceId ) );
-    return err;
-    }
-    
-// ---------------------------------------------------------------------------
-// Sets the preferred telephony value
-// ---------------------------------------------------------------------------
-//
-void CCSCEngServiceHandler::SetVoipAsPrefTelephonyL( 
-    TBool aValue, 
-    TUint aServiceId ) const
-    {  
-    TInt value( aValue ? KRCSEInternetCallPreferred : KRCSECSCallPreferred );
-    TInt serviceId( aServiceId );
-          
-    CRepository* repository = CRepository::NewLC( KCRUidRichCallSettings );
-    
-    User::LeaveIfError( repository->Set( KRCSEPreferredTelephony, value ) );
-    User::LeaveIfError( repository->Set( KRCSPSPreferredService, serviceId ) );
-    CleanupStack::PopAndDestroy( repository );
-    }
-
-// ---------------------------------------------------------------------------
-// From class MSPNotifyChangeObserver
-// Notifies change in service table
-// ---------------------------------------------------------------------------
-//
-void CCSCEngServiceHandler::HandleNotifyChange( TUint /*aServiceId*/ )
-    {
-    CSCENGDEBUG( "CCSCEngServiceHandler::HandleNotifyChange - begin" );
-   
-    iObserver->NotifyServiceChange();
-     
-    CSCENGDEBUG( "CCSCEngServiceHandler::HandleNotifyChange - end" );  
-    }
-