idlefw/src/utility/contentprioritymap.cpp
author kashif.sayed
Fri, 26 Mar 2010 04:17:01 +0530
branchv5backport
changeset 31 a3e98f9c292b
parent 0 79c6a41cd166
permissions -rw-r--r--
added missing files user: kashif.sayed added dependencies/AknTaskList.h added dependencies/DRMEvent.h added dependencies/DRMEventObserver.h added dependencies/DRMNotifier.h added dependencies/SchemeDefs.hrh added dependencies/SchemeHandler.h added dependencies/SchemeHandler.inl added dependencies/aiwcommon.hrh added dependencies/aiwdialdata.h added dependencies/drmrightsinfo.h added dependencies/drmutilitytypes.h added dependencies/javaattribute.h added dependencies/javadomainpskeys.h added dependencies/javaregistry.h added dependencies/javaregistryapplicationentry.h added dependencies/javaregistryentry.h added dependencies/javaregistryentrytype.h added dependencies/javaregistrypackageentry.h added dependencies/mjavaattribute.h added dependencies/swi/bld.inf added dependencies/swi/sispackagetrust.h added dependencies/swi/sisregistryentry.h added dependencies/swi/sisregistrylog.h added dependencies/swi/sisregistrysession.h changed .cproject changed dependencies/S3libs/bld.inf changed dependencies/bld.inf

/*
* Copyright (c) 2006 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 "contentprioritymap.h"

using namespace AiUtility;


// ======== MEMBER FUNCTIONS ========

CContentPriorityMap::CContentPriorityMap()
    {
    }

EXPORT_C CContentPriorityMap* CContentPriorityMap::NewL()
    {
    CContentPriorityMap* self = new( ELeave ) CContentPriorityMap;
    return self;
    }

CContentPriorityMap::~CContentPriorityMap()
    {
    iPriorityMap.ResetAndDestroy();
    }


EXPORT_C TInt CContentPriorityMap::CurrentPriority( const TDesC8& aUiElementId ) const
    {
    // Find current priority value for aUiElementId
    const TInt* currentPriority = iPriorityMap.Find( aUiElementId );
    
    // Return current priority value or KErrNotFound if it has not been set
    return currentPriority ? *currentPriority : KErrNotFound;
    }

EXPORT_C TInt CContentPriorityMap::SetCurrentPriority( const TDesC8& aUiElementId,
                                                       TInt aPriority )
    {
    TInt error = KErrNone;
    TInt* currentPriority = iPriorityMap.Find( aUiElementId );
    
    if ( currentPriority )
        {
        // Update old value
        *currentPriority = aPriority;
        }
    else
        {
        // Insert new <key,value> pair
        TRAP( error,
            {
            HBufC8* key = aUiElementId.AllocLC();
            TInt* value = new( ELeave ) TInt( aPriority );
            CleanupStack::PushL( value );
            iPriorityMap.InsertL( key, value );
            CleanupStack::Pop( 2, key );
            } );
        }
    
    return error;
    }

EXPORT_C void CContentPriorityMap::ClearPriority( const TDesC8& aUiElementId )
    {
    TInt* currentPriority = iPriorityMap.Find( aUiElementId );
    
    if ( currentPriority )
        {
        // Clear old value. Use KErrNotFound to avoid future reallocations of
        // the same key.
        *currentPriority = KErrNotFound;
        }
    }

EXPORT_C void CContentPriorityMap::Reset()
    {
    iPriorityMap.ResetAndDestroy();
    }

EXPORT_C TBool CContentPriorityMap::OverrideContent( const TDesC8& aUiElementId,
                                                     TInt aNewPriority ) const
    {
    return ( aNewPriority >= CurrentPriority( aUiElementId ) );
    }