voipplugins/sipconnectionprovider/src/scpservicestorage.cpp
branchRCL_3
changeset 21 f742655b05bf
parent 20 65a3ef1d5bd0
child 22 d38647835c2e
--- a/voipplugins/sipconnectionprovider/src/scpservicestorage.cpp	Thu Aug 19 09:45:22 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,495 +0,0 @@
-/*
-* Copyright (c) 2002-2007 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:  Service storage class.
-*
-*/
-
-
-#include "scpservicestorage.h"
-#include "scplogger.h"
-#include "scpservice.h"
-#include "scpsubservice.h"
-#include "scpsettinghandler.h"
-
-const TInt KServiceIdCounterIncrement = 100;
-
-// -----------------------------------------------------------------------------
-// CScpServiceStorage::CScpServiceStorage
-// -----------------------------------------------------------------------------
-//
-CScpServiceStorage::CScpServiceStorage( CScpSettingHandler& aSettingHandler ) : 
-    iSettingHandler( aSettingHandler )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CScpServiceStorage::NewL
-// -----------------------------------------------------------------------------
-//
-CScpServiceStorage* CScpServiceStorage::NewL( CScpSettingHandler& aSettingHandler )
-    {
-    SCPLOGSTRING( "CScpServiceStorage::NewL" );
-
-    CScpServiceStorage* self = new ( ELeave ) CScpServiceStorage( aSettingHandler );
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CScpServiceStorage::~CScpServiceStorage
-// -----------------------------------------------------------------------------
-//
-CScpServiceStorage::~CScpServiceStorage()
-    {
-    SCPLOGSTRING( "CScpServiceStorage::~CScpServiceStorage" );
-
-    iServiceItems.ResetAndDestroy();
-    iServiceItems.Close();
-    }
-
-// -----------------------------------------------------------------------------
-// CScpServiceStorage::CreateServiceL
-// -----------------------------------------------------------------------------
-//
-CScpService& CScpServiceStorage::CreateServiceL( 
-    TInt aServiceId, 
-    CScpProfileHandler& aProfileHandler,
-    MCchServiceObserver& aServiceObserver )
-    {
-    SCPLOGSTRING( "CScpServiceStorage::CreateServiceL" );
-
-    CScpService* service( NULL );
-    
-    // Check that the service id does not already exist
-    service = GetServiceByServiceId( aServiceId );
-    if( service )
-        {
-        User::Leave( KErrAlreadyExists );
-        }
-
-    TInt newId = GenerateNewInternalIdForService();
-
-    service = CScpService::NewL( newId, 
-                                 aServiceId, 
-                                 aProfileHandler,
-                                 *this,
-                                 aServiceObserver );
-
-    CleanupStack::PushL( service );
-    iServiceItems.AppendL( service );
-    CleanupStack::Pop( service );
-
-    CScpService* lastService = iServiceItems[ iServiceItems.Count() - 1 ];
-    return *lastService;    
-    }
-
-// -----------------------------------------------------------------------------
-// CScpServiceStorage::GenerateNewServiceId
-// -----------------------------------------------------------------------------
-//
-TInt CScpServiceStorage::GenerateNewInternalIdForService()
-    {
-    SCPLOGSTRING( "CScpServiceStorage::GenerateNewInternalIdForService" );
-
-    iServiceIdCounter += KServiceIdCounterIncrement;
-    
-    return iServiceIdCounter;
-    }
-
-// -----------------------------------------------------------------------------
-// CScpServiceStorage::RemoveService
-// -----------------------------------------------------------------------------
-//
-TInt CScpServiceStorage::RemoveService( TInt aId )
-    {    
-    SCPLOGSTRING2( "CScpServiceStorage::RemoveService id: %d", aId );
-
-    for( TInt i=0; i<iServiceItems.Count(); i++)
-        {
-        CScpService* service = iServiceItems[ i ];
-        if( service && aId == service->Id() )
-            {
-            delete service;
-            iServiceItems.Remove( i );
-            return KErrNone;
-            }
-        }
-
-    return KErrNotFound;      
-    }
-
-// -----------------------------------------------------------------------------
-// CScpServiceStorage::RemoveDisabledServices
-// -----------------------------------------------------------------------------
-//
-void CScpServiceStorage::RemoveDisabledServices()
-    {
-    SCPLOGSTRING( "CScpServiceStorage::RemoveEmptyServices" );
-
-    RArray< TInt > subServiceIds;
-    RArray< TInt > removedServiceIds;
-
-    for( TInt i=0; i<iServiceItems.Count(); i++)
-        {
-        CScpService* service = iServiceItems[ i ];
-        if( service )
-            {
-            subServiceIds.Reset();
-                
-            service->GetSubServiceIds( subServiceIds );
-
-            TBool remove( ETrue );
-
-            // Remove if there are no sub services
-            if( subServiceIds.Count() > 0 )
-                {
-                for ( TInt j=0; j<subServiceIds.Count(); j++ )
-                    {
-                    CScpSubService* subService = 
-                        service->GetSubService( subServiceIds[ j ] );
-                    
-                    // Don't remove if there is at least one enabled or disconnecting
-                    // sub service
-                    if( subService && (
-                            subService->EnableRequestedState() == CScpSubService::EScpEnabled ||
-                            subService->State() == ECCHDisconnecting ) )
-                        {
-                        remove = EFalse;
-                        }
-                    else if ( subService )
-                        {
-                        service->RemoveSubService( subService->Id() );
-                        }
-                    }
-                }
-
-            if( remove ) 
-                {
-                removedServiceIds.Append( service->Id() ); 
-                }
-            }
-        }
-
-    for( TInt i=0; i<removedServiceIds.Count(); i++ )
-        {
-        RemoveService( removedServiceIds[ i ] );
-        }
-
-    removedServiceIds.Close();
-    subServiceIds.Close();
-    }
-
-// -----------------------------------------------------------------------------
-// CScpServiceStorage::GetService
-// -----------------------------------------------------------------------------
-//
-CScpService* CScpServiceStorage::GetService( TInt aId ) const
-    {
-    SCPLOGSTRING2( "CScpServiceStorage::GetService id: %d", aId );
-
-    for( TInt i=0; i<iServiceItems.Count(); i++)
-        {
-        CScpService* service = iServiceItems[ i ];
-        if( aId == service->Id() )
-            {
-            return service;
-            }
-        }
-    
-    return NULL;    
-    }
-
-// -----------------------------------------------------------------------------
-// CScpServiceStorage::GetServiceByServiceId
-// -----------------------------------------------------------------------------
-//
-CScpService* CScpServiceStorage::GetServiceByServiceId( TUint aServiceId ) const
-    {
-    SCPLOGSTRING2( "CScpServiceStorage::GetServiceByServiceId id: %d", aServiceId );
-
-    for( TInt i=0; i<iServiceItems.Count(); i++)
-        {
-        CScpService* service = iServiceItems[ i ];
-        if( aServiceId == service->ServiceId() )
-            {
-            return service;
-            }
-        }
-    
-    return NULL;
-    }
-
-// -----------------------------------------------------------------------------
-// CScpServiceStorage::GetSubService
-// -----------------------------------------------------------------------------
-//
-CScpSubService* CScpServiceStorage::GetSubService( TInt aId ) const
-    {
-    SCPLOGSTRING2( "CScpServiceStorage::GetSubService id: %d", aId );
-
-    CScpSubService* returnSubService( NULL );
-
-    RArray<TInt> subServiceIds;
-    for( TInt i=0; i<iServiceItems.Count() && !returnSubService; i++)
-        {
-        CScpService* service = iServiceItems[ i ];
-        
-        subServiceIds.Reset();
-        service->GetSubServiceIds( subServiceIds );
-
-        for( TInt j=0; j<subServiceIds.Count(); j++)
-            {
-            returnSubService = service->GetSubService( subServiceIds[ j ] );
-
-            if( returnSubService )
-                {
-                if( returnSubService->Id() == aId )
-                    {
-                    break;
-                    }
-                else
-                    {
-                    returnSubService = NULL;
-                    }
-                }
-            }
-        }
-
-    subServiceIds.Close();
-    
-    return returnSubService;
-    }
-
-// -----------------------------------------------------------------------------
-// CScpServiceStorage::GetServiceIds
-// -----------------------------------------------------------------------------
-//
-void CScpServiceStorage::GetServiceIds( RArray<TInt>& aIds ) const
-    {
-    SCPLOGSTRING( "CScpServiceStorage::GetServiceIds" );
-    __ASSERT_DEBUG( aIds.Count() == 0, User::Panic( KNullDesC, KErrGeneral ) );
-
-    for( TInt i=0; i<iServiceItems.Count(); i++)
-        {
-        CScpService* service = iServiceItems[ i ];
-        aIds.Append( service->Id() );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CScpServiceStorage::GetSubServiceIds
-// -----------------------------------------------------------------------------
-//
-void CScpServiceStorage::GetSubServiceIds( RArray<TInt>& aIds ) const
-    {
-    SCPLOGSTRING( "CScpServiceStorage::GetSubServiceIds" );
-    __ASSERT_DEBUG( aIds.Count() == 0, User::Panic( KNullDesC, KErrGeneral ) );
-
-    RArray<TInt> subServiceIds;
-
-    for( TInt i=0; i<iServiceItems.Count(); i++ )
-        {
-        CScpService* service = iServiceItems[ i ];
-        
-        subServiceIds.Reset();
-        service->GetSubServiceIds( subServiceIds );
-
-        for( TInt j=0; j<subServiceIds.Count(); j++ )
-            {
-            aIds.Append( subServiceIds[ j ] );
-            }
-        }
-
-    subServiceIds.Close();
-    }
-
-// -----------------------------------------------------------------------------
-// CScpServiceStorage::GetSubServiceIds
-// -----------------------------------------------------------------------------
-//
-void CScpServiceStorage::GetSubServiceIds( TCCHSubserviceType aSubServiceType,
-                                           RArray<TInt>& aIds ) const
-    {
-    SCPLOGSTRING( "CScpServiceStorage::GetSubServiceIds" );
-    __ASSERT_DEBUG( aIds.Count() == 0, User::Panic( KNullDesC, KErrGeneral ) );
-
-    RArray< TInt > subServiceIds;
-    GetSubServiceIds( subServiceIds );
-    
-    for( TInt i=0; i<subServiceIds.Count(); i++ )
-        {
-        CScpSubService* subService;
-        subService = GetSubService( subServiceIds[ i ] );
-
-        if( subService && subService->SubServiceType() == aSubServiceType )
-            {
-            aIds.Append( subService->Id() );
-            }
-        }
-    
-    subServiceIds.Close();
-    }
-
-// -----------------------------------------------------------------------------
-// CScpServiceStorage::GetSubServiceIds
-// -----------------------------------------------------------------------------
-//
-void CScpServiceStorage::GetSubServiceIds( TUint32 aProfileId,
-                                           TCCHSubserviceType aSubServiceType,  
-                                           RArray<TInt>& aIds ) const
-    {
-    SCPLOGSTRING3( "CScpServiceStorage::GetSubServiceIds profileId: %d type: %d",
-                   aProfileId, aSubServiceType );
-    __ASSERT_DEBUG( aIds.Count() == 0, User::Panic( KNullDesC, KErrGeneral ) );
-
-    RArray< TInt > subServiceIds;
-    GetSubServiceIds( subServiceIds );
-    
-    for( TInt i=0; i<subServiceIds.Count(); i++ )
-        {
-        CScpSubService* subService;
-        subService = GetSubService( subServiceIds[ i ] );
-
-        if( subService &&
-            subService->SipProfileId() == aProfileId &&
-            ( subService->SubServiceType() == aSubServiceType ||
-            aSubServiceType == ECCHUnknown ) )
-            {
-            aIds.Append( subService->Id() );
-            }
-        }
-    
-    subServiceIds.Close();
-    }
-
-// -----------------------------------------------------------------------------
-// CScpServiceStorage::IsSubServiceEnabled
-// -----------------------------------------------------------------------------
-//
-TBool CScpServiceStorage::IsSubServiceEnabled( TUint32 aProfileId ) const
-    {
-    SCPLOGSTRING2( "CScpServiceStorage::IsSubServiceEnabled profile id: %d",
-                   aProfileId );
-
-    TBool result( EFalse );
-    RArray< TInt > subServiceIds;
-
-    GetSubServiceIds( aProfileId, ECCHUnknown, subServiceIds );
-
-    for( TInt i=0; i<subServiceIds.Count(); i++ )
-        {
-        CScpSubService* subService = GetSubService( subServiceIds[ i ] );
-        if( subService )
-            {
-            // Find at least one sub service that is still enabled
-            if( subService->EnableRequestedState() == CScpSubService::EScpEnabled )
-                {
-                result = ETrue;
-                break;
-                }
-            }
-        }
-
-    subServiceIds.Close();
-    return result;
-    }
-
-// -----------------------------------------------------------------------------
-// CScpServiceStorage::AreAllSubServicesDisconnected
-// -----------------------------------------------------------------------------
-//
-TBool CScpServiceStorage::AreAllSubServicesDisconnected( TUint32 aProfileId ) const
-    {
-    SCPLOGSTRING2( "CScpServiceStorage::AreAllSubServicesDisconnected profile id: %d",
-                   aProfileId );
-
-    TBool result( ETrue );
-    RArray< TInt > subServiceIds;
-
-    GetSubServiceIds( aProfileId, ECCHUnknown, subServiceIds );
-
-    for( TInt i=0; i<subServiceIds.Count(); i++ )
-        {
-        CScpSubService* subService = GetSubService( subServiceIds[ i ] );
-        if( subService )
-            {
-            // Find at least one sub service that has been disabled but
-            // it has not yet disconnected the service
-            if( subService->EnableRequestedState() == CScpSubService::EScpDisabled &&
-                subService->SubServiceDisconnected() == EFalse )
-                {
-                result = EFalse;
-                break;
-                }
-            }
-        }
-
-    subServiceIds.Close();
-    return result;
-    }
-
-// -----------------------------------------------------------------------------
-// CScpServiceStorage::SettingsHandler
-// -----------------------------------------------------------------------------
-//
-CScpSettingHandler& CScpServiceStorage::SettingsHandler()
-    {
-    SCPLOGSTRING( "CScpServiceStorage::SettingsHandler" );
-
-    return iSettingHandler;
-    }
-
-
-#ifdef _DEBUG
-// -----------------------------------------------------------------------------
-// CScpServiceStorage::GetDebugInfo
-// -----------------------------------------------------------------------------
-//
-void CScpServiceStorage::GetDebugInfo( TDes& aInfo ) const
-    {
-    TInt serviceCount = iServiceItems.Count();
-    TInt subServiceCount( 0 );
-    TInt enabledSubServices( 0 );
-
-    for( TInt i=0; i<serviceCount; i++ )
-        {
-        CScpService* service = iServiceItems[ i ];
-        subServiceCount += service->SubServiceCount();
-    
-        RArray<TInt> subServiceIds;
-        service->GetSubServiceIds( subServiceIds );
-
-        for( TInt j=0; j<subServiceIds.Count(); j++ )
-            {
-            CScpSubService* subService = service->GetSubService( subServiceIds[ j ] );
-            
-            if( subService &&
-                    subService->EnableRequestedState() == CScpSubService::EScpEnabled )
-                {
-                enabledSubServices++;
-                }
-            }
-
-        subServiceIds.Close();
-        }
-
-    TBuf< 255 > buffer;
-    buffer.Format( _L( "\nServices: %d\n SubServices: %d\n Enabled: %d\n" ),
-                  serviceCount, subServiceCount, enabledSubServices ); 
-
-    aInfo.Append( buffer );
-    }
-#endif
-
-//  End of File  
-