/*
* Copyright (c) 2005-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:  Common NativeUi definitions and utilities
*
*/


#include "ainativeuimodel.h"
#include "aidevicestatuscontentmodel.h"

namespace AiNativeUiController
    {

namespace AiNativeUiModel 
    {

struct TRenderingPriorityItem
	{
    TInt iContentId;
    TInt iRenderingPriority;	
	};

const TInt KHighestRenderingPriority = 20;

const TInt KPriorityOffset1 = 1;
const TInt KPriorityOffset2 = 2;
const TInt KPriorityOffset3 = 3;
const TInt KPriorityOffset4 = 4;
const TInt KPriorityOffset5 = 5;
const TInt KPriorityOffset6 = 6;


const TRenderingPriorityItem KNaviPaneRenderingPriorities[] =
    {
        { EAiDeviceStatusContentProfileName,            KHighestRenderingPriority },
        { EAiDeviceStatusContentSilentIndicator,        KHighestRenderingPriority },
        { EAiDeviceStatusContentTimedProfileIndicator,  KHighestRenderingPriority },
        { EAiDeviceStatusContentDate,                   KHighestRenderingPriority - KPriorityOffset1 },
        { EAiDeviceStatusContentGeneralProfileName,     KHighestRenderingPriority - KPriorityOffset2 },
        { EAiDeviceStatusContentVHZIndicator,           KHighestRenderingPriority - KPriorityOffset3 },
        { EAiDeviceStatusContentCUGIndicator,           KHighestRenderingPriority - KPriorityOffset4 },
        { EAiDeviceStatusContentMCNIndicator,           KHighestRenderingPriority - KPriorityOffset5 },
        { EAiDeviceStatusContentGeneralIndicator,       KHighestRenderingPriority - KPriorityOffset6 }
    };


TRenderingPriorities RenderingPriorities( const TDesC8& aUiElementId )
    {
    if( aUiElementId == KNaviPaneId )
        {
        return TRenderingPriorities( KNaviPaneRenderingPriorities, 
            sizeof(KNaviPaneRenderingPriorities) / sizeof(KNaviPaneRenderingPriorities[0]) );
        }
    else
        {
        return TRenderingPriorities( NULL, 0 );
        }
    }


TRenderingPriorities::TRenderingPriorities
        (const TRenderingPriorityItem* aRenderingPriorities, TInt aCount)
    : iRenderingPriorities(aRenderingPriorities), iCount(aCount)
    {
    }
    

TInt TRenderingPriorities::RenderingPriority( TInt aContentId )
    {
    if( !iRenderingPriorities )
        {
        return KErrNotFound;
        }
    for( TInt i = 0; i < iCount; ++i )
        {
        if( iRenderingPriorities[i].iContentId == aContentId )
            {
            return iRenderingPriorities[i].iRenderingPriority;
            }
        }
    return KErrNotFound;
    }


TBool TRenderingPriorities::GetNextContentId( TInt& aContentId, TInt& aNextPriority )
    {    
    if( !iRenderingPriorities )
        {
        return EFalse;
        }
    for( TInt i = 0; i < iCount; ++i )
        {
        if( iRenderingPriorities[i].iRenderingPriority < aNextPriority )
            {
            aContentId = iRenderingPriorities[i].iContentId;
            aNextPriority = iRenderingPriorities[i].iRenderingPriority;
            return ETrue;
            }
        }
    return EFalse;
    }

	}  // namespace AiNativeUi
    
    }
