radioengine/utils/src/cradiorepositorymanagerimp.cpp
branchGCC_SURGE
changeset 37 451b2e1545b2
parent 26 6bcf277166c1
parent 33 11b6825f0862
--- a/radioengine/utils/src/cradiorepositorymanagerimp.cpp	Fri Jun 11 16:24:13 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,454 +0,0 @@
-/*
-* Copyright (c) 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:
-*
-*/
-
-#include "cradiorepositoryentity.h"
-#include "cradiorepositorymanager.h"
-#include "cradiorepositorymanagerimp.h"
-#include "radioengineutils.h"
-
-const TInt KVRRepositoryObserverArrayGranularity = 2;
-
-// ======== LOCAL FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// Panics the application.
-// ---------------------------------------------------------------------------
-//
-void Panic( TInt aReason )
-    {
-    _LIT( category, "CRadioRepositoryManagerImp" );
-    User::Panic( category, aReason );
-    }
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CRadioRepositoryManagerImp* CRadioRepositoryManagerImp::NewL( TInt aGranularity )
-    {
-    CRadioRepositoryManagerImp* self = new ( ELeave ) CRadioRepositoryManagerImp( aGranularity );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CRadioRepositoryManagerImp::ConstructL()
-    {
-    RadioEngineUtils::InitializeL();
-    CheckRepositoryKeysL();
-    }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CRadioRepositoryManagerImp::CRadioRepositoryManagerImp( TInt aGranularity )
-    : iObservers( KVRRepositoryObserverArrayGranularity )
-    , iEntities( aGranularity )
-    , iEnableSave( ETrue )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CRadioRepositoryManagerImp::~CRadioRepositoryManagerImp()
-    {
-    iObservers.Close();
-    iEntities.ResetAndDestroy();
-    RadioEngineUtils::Release();
-    }
-
-// ---------------------------------------------------------------------------
-// Adds observer
-// ---------------------------------------------------------------------------
-//
-void CRadioRepositoryManagerImp::AddObserverL( MRadioRepositoryEntityObserver* aObserver )
-    {
-    iObservers.AppendL( aObserver );
-    }
-
-// ---------------------------------------------------------------------------
-// Removes observer
-// ---------------------------------------------------------------------------
-//
- void CRadioRepositoryManagerImp::RemoveObserver( MRadioRepositoryEntityObserver* aObserver )
-    {
-    TInt objectIndex = iObservers.Find( aObserver );
-
-    if ( objectIndex != KErrNotFound )
-        {
-        iObservers.Remove( objectIndex );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Enables or disables the saving of entities.
-// ---------------------------------------------------------------------------
-//
-void CRadioRepositoryManagerImp::EnableSave( TBool aEnable )
-    {
-    iEnableSave = aEnable;
-    }
-
-// ---------------------------------------------------------------------------
-// Adds an entity.
-// ---------------------------------------------------------------------------
-//
-void CRadioRepositoryManagerImp::AddEntityL( const TUid& aUid, TUint32 aKey, TRadioEntityType aType )
-    {
-    CRadioRepositoryEntityBase* entity = NULL;
-
-    switch ( aType )
-        {
-        case ERadioEntityInt:
-            entity = CRadioRepositoryEntity<TInt>::NewL( aUid, aKey, *this );
-            break;
-        case ERadioEntityReal:
-            entity = CRadioRepositoryEntity<TReal>::NewL( aUid, aKey, *this );
-            break;
-        case ERadioEntityDes8:
-            entity = CRadioRepositoryEntity<TRadioEntityBuf8>::NewL( aUid, aKey, *this );
-            break;
-        case ERadioEntityDes16:
-            entity = CRadioRepositoryEntity<TRadioEntityBuf16>::NewL( aUid, aKey, *this );
-            break;
-        default:
-            User::Leave( KErrNotSupported );
-            break;
-        }
-
-    CleanupStack::PushL( entity );
-    iEntities.AppendL( entity );
-    CleanupStack::Pop( entity );
-    }
-
-// ---------------------------------------------------------------------------
-// Removes an entity.
-// ---------------------------------------------------------------------------
-//
-void CRadioRepositoryManagerImp::RemoveEntity( const TUid& aUid, TUint32 aKey )
-    {
-    TInt idx = EntityIndex( aUid, aKey );
-
-    if ( idx >= 0 )
-        {
-        CRadioRepositoryEntityBase* entity = iEntities[idx];
-        iEntities.Remove( idx );
-        iEntities.GranularCompress();
-        delete entity;
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Sets an entity's value.
-// ---------------------------------------------------------------------------
-//
-TInt CRadioRepositoryManagerImp::SetEntityValue( const TUid& aUid, TUint32 aKey, TInt aValue )
-    {
-    return DoSetEntityValue<TInt>( aUid, aKey, aValue );
-    }
-
-// ---------------------------------------------------------------------------
-// Sets an entity's value.
-// ---------------------------------------------------------------------------
-//
-TInt CRadioRepositoryManagerImp::SetEntityValue( const TUid& aUid, TUint32 aKey, const TReal& aValue )
-    {
-    return DoSetEntityValue<TReal>( aUid, aKey, aValue );
-    }
-
-// ---------------------------------------------------------------------------
-// Sets an entity's value.
-// ---------------------------------------------------------------------------
-//
-TInt CRadioRepositoryManagerImp::SetEntityValue( const TUid& aUid, TUint32 aKey, const TDesC8& aValue )
-    {
-    return DoSetEntityValue<TRadioEntityBuf8>( aUid, aKey, aValue );
-    }
-
-// ---------------------------------------------------------------------------
-// Sets an entity's value.
-// ---------------------------------------------------------------------------
-//
-TInt CRadioRepositoryManagerImp::SetEntityValue( const TUid& aUid, TUint32 aKey, const TDesC16& aValue )
-    {
-    return DoSetEntityValue<TRadioEntityBuf16>( aUid, aKey, aValue );
-    }
-
-// ---------------------------------------------------------------------------
-// Returns an entity's value.
-// ---------------------------------------------------------------------------
-//
-TInt CRadioRepositoryManagerImp::EntityValueInt( const TUid& aUid, TUint32 aKey ) const
-    {
-    return DoEntityValue<TInt>( aUid, aKey );
-    }
-
-// ---------------------------------------------------------------------------
-// Returns an entity's value.
-// ---------------------------------------------------------------------------
-//
-const TReal& CRadioRepositoryManagerImp::EntityValueReal( const TUid& aUid, TUint32 aKey ) const
-    {
-    return DoEntityValue<TReal>( aUid, aKey );
-    }
-
-// ---------------------------------------------------------------------------
-// Returns an entity's value.
-// ---------------------------------------------------------------------------
-//
-const TDesC8& CRadioRepositoryManagerImp::EntityValueDes8( const TUid& aUid, TUint32 aKey ) const
-    {
-    return DoEntityValue<TDesC8>( aUid, aKey );
-    }
-
-// ---------------------------------------------------------------------------
-// Returns an entity's value.
-// ---------------------------------------------------------------------------
-//
-const TDesC16& CRadioRepositoryManagerImp::EntityValueDes16( const TUid& aUid, TUint32 aKey ) const
-    {
-    return DoEntityValue<TDesC16>( aUid, aKey );
-    }
-
-// ---------------------------------------------------------------------------
-// Sets the value of a repository key.
-// ---------------------------------------------------------------------------
-//
-void CRadioRepositoryManagerImp::SetRepositoryValueL( const TUid& aUid, TUint32 aKey, TInt aValue )
-    {
-    DoSetRepositoryValueL( aUid, aKey, aValue );
-    }
-
-// ---------------------------------------------------------------------------
-// Sets the value of a repository key.
-// ---------------------------------------------------------------------------
-//
-void CRadioRepositoryManagerImp::SetRepositoryValueL( const TUid& aUid, TUint32 aKey, const TReal& aValue )
-    {
-    DoSetRepositoryValueL( aUid, aKey, aValue );
-    }
-
-// ---------------------------------------------------------------------------
-// Sets the value of a repository key.
-// ---------------------------------------------------------------------------
-//
-void CRadioRepositoryManagerImp::SetRepositoryValueL( const TUid& aUid, TUint32 aKey, const TDesC8& aValue )
-    {
-    DoSetRepositoryValueL( aUid, aKey, aValue );
-    }
-
-// ---------------------------------------------------------------------------
-// Sets the value of a repository key.
-// ---------------------------------------------------------------------------
-//
-void CRadioRepositoryManagerImp::SetRepositoryValueL( const TUid& aUid, TUint32 aKey, const TDesC16& aValue )
-    {
-    DoSetRepositoryValueL( aUid, aKey, aValue );
-    }
-
-// ---------------------------------------------------------------------------
-// Gets the value of a repository key.
-// ---------------------------------------------------------------------------
-//
-void CRadioRepositoryManagerImp::GetRepositoryValueL( const TUid& aUid, TUint32 aKey, TInt& aValue )
-    {
-    DoGetRepositoryValueL( aUid, aKey, aValue );
-    }
-
-// ---------------------------------------------------------------------------
-// Gets the value of a repository key.
-// ---------------------------------------------------------------------------
-//
-void CRadioRepositoryManagerImp::GetRepositoryValueL( const TUid& aUid, TUint32 aKey, TReal& aValue )
-    {
-    DoGetRepositoryValueL( aUid, aKey, aValue );
-    }
-
-// ---------------------------------------------------------------------------
-// Gets the value of a repository key.
-// ---------------------------------------------------------------------------
-//
-void CRadioRepositoryManagerImp::GetRepositoryValueL( const TUid& aUid, TUint32 aKey, TDes8& aValue )
-    {
-    DoGetRepositoryValueL( aUid, aKey, aValue );
-    }
-
-// ---------------------------------------------------------------------------
-// Gets the value of a repository key.
-// ---------------------------------------------------------------------------
-//
-void CRadioRepositoryManagerImp::GetRepositoryValueL( const TUid& aUid, TUint32 aKey, TDes16& aValue )
-    {
-    DoGetRepositoryValueL( aUid, aKey, aValue );
-    }
-
-// ---------------------------------------------------------------------------
-// Sets an entity's value.
-// ---------------------------------------------------------------------------
-//
-template <typename T>
-TInt CRadioRepositoryManagerImp::DoSetEntityValue( const TUid& aUid, TUint32 aKey, const T& aValue )
-    {
-    TInt idx = EntityIndex( aUid, aKey );
-
-    // If the entity could not be found, panic the application.
-    __ASSERT_ALWAYS( idx >= 0, ::Panic( KErrArgument ) );
-
-    return static_cast<CRadioRepositoryEntity<T>*>( iEntities[idx] )->SetValue( aValue, iEnableSave );
-    }
-
-// ---------------------------------------------------------------------------
-// Returns an entity's value.
-// ---------------------------------------------------------------------------
-//
-template <typename T>
-const T& CRadioRepositoryManagerImp::DoEntityValue( const TUid& aUid, TUint32 aKey ) const
-    {
-    TInt idx = EntityIndex( aUid, aKey );
-
-    // If the entity could not be found, panic the application.
-    __ASSERT_ALWAYS( idx >= 0, ::Panic( KErrArgument ) );
-
-    return static_cast<CRadioRepositoryEntity<T>*>( iEntities[idx] )->Value();
-    }
-
-// ---------------------------------------------------------------------------
-// Sets a key's value in the repository.
-// ---------------------------------------------------------------------------
-//
-template <typename T>
-void CRadioRepositoryManagerImp::DoSetRepositoryValueL( const TUid& aUid, TUint32 aKey, const T& aValue )
-    {
-    CRepository* repository = CRepository::NewLC( aUid );
-    User::LeaveIfError( repository->Set( aKey, aValue ) );
-    CleanupStack::PopAndDestroy( repository );
-    }
-
-// ---------------------------------------------------------------------------
-// Returns a key's value in the repository.
-// ---------------------------------------------------------------------------
-//
-template <typename T>
-void CRadioRepositoryManagerImp::DoGetRepositoryValueL( const TUid& aUid, TUint32 aKey, T& aValue )
-    {
-    CRepository* repository = CRepository::NewLC( aUid );
-    User::LeaveIfError( repository->Get( aKey, aValue ) );
-    CleanupStack::PopAndDestroy( repository );
-    }
-
-// ---------------------------------------------------------------------------
-// Returns the entity's index that matches the supplied arguments.
-// ---------------------------------------------------------------------------
-//
-TInt CRadioRepositoryManagerImp::EntityIndex( const TUid& aUid, TUint32 aKey ) const
-    {
-    TInt idx = KErrNotFound;
-
-    for ( TInt i = 0; i < iEntities.Count(); i++ )
-        {
-        CRadioRepositoryEntityBase* entity = iEntities[i];
-        if ( entity->Uid() == aUid && entity->Key() == aKey )
-            {
-            idx = i;
-            break;
-            }
-        }
-
-    return idx;
-    }
-
-// ---------------------------------------------------------------------------
-// SIS installation does not update central repository, this checks that the new keys are in the repository.
-// ---------------------------------------------------------------------------
-//
-void CRadioRepositoryManagerImp::CheckRepositoryKeysL()
-    {
-    // After adding a new cenrep key to radiointernalcrkeys.h, add it also here with a default value
-    /*
-    CRepository* repository = CRepository::NewLC( KVRCRUid );
-
-    TInt ret = repository->Create( KVRCRNewValue, TInt( 123 ) );
-    if ( ret != KErrAlreadyExists )
-        {
-        User::LeaveIfError( ret );
-        }
-
-    CleanupStack::PopAndDestroy( repository );
-    */
-    }
-
-// ---------------------------------------------------------------------------
-// Forwards the repository value changes
-// ---------------------------------------------------------------------------
-//
-void CRadioRepositoryManagerImp::HandleRepositoryValueChangeL( const TUid& aUid,
-        TUint32 aKey, TInt aValue, TInt aError )
-    {
-    for ( TInt i = 0; i < iObservers.Count(); i++ )
-        {
-        iObservers[i]->HandleRepositoryValueChangeL( aUid, aKey, aValue, aError );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Forwards the repository value changes
-// ---------------------------------------------------------------------------
-//
-void CRadioRepositoryManagerImp::HandleRepositoryValueChangeL( const TUid& aUid,
-        TUint32 aKey, const TReal& aValue, TInt aError )
-    {
-    for ( TInt i = 0; i < iObservers.Count(); i++ )
-        {
-        iObservers[i]->HandleRepositoryValueChangeL( aUid, aKey, aValue, aError );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Forwards the repository value changes
-// ---------------------------------------------------------------------------
-//
-void CRadioRepositoryManagerImp::HandleRepositoryValueChangeL( const TUid& aUid,
-        TUint32 aKey, const TDesC8& aValue, TInt aError )
-    {
-    for ( TInt i = 0; i < iObservers.Count(); i++ )
-        {
-        iObservers[i]->HandleRepositoryValueChangeL( aUid, aKey, aValue, aError );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Forwards the repository value changes
-// ---------------------------------------------------------------------------
-//
-void CRadioRepositoryManagerImp::HandleRepositoryValueChangeL( const TUid& aUid,
-        TUint32 aKey, const TDesC16& aValue, TInt aError )
-    {
-    for ( TInt i = 0; i < iObservers.Count(); i++ )
-        {
-        iObservers[i]->HandleRepositoryValueChangeL( aUid, aKey, aValue, aError );
-        }
-    }