emailuis/uicomponents/src/tuicscrollbarmodel.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 31 Mar 2010 21:08:33 +0300
branchRCL_3
changeset 12 4ce476e64c59
permissions -rw-r--r--
Revision: 201011 Kit: 201013

/*
* Copyright (c) 2007-2008 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: tuicscrollbarmodel.cpp
*
*/

#include "tuicscrollbarmodel.h"
#include "emailtrace.h"

#include <aknlayoutscalable_avkon.cdl.h>
#include <AknUtils.h>

// ---------------------------------------------------------------------------
// TUiCScrollBarModel::TUiCScrollbarModel
// ---------------------------------------------------------------------------
//
TUiCScrollBarModel::TUiCScrollBarModel()
    : iHeight( 0 ), iWindowHeight( 0 ), iWindowPosition( 0 )
    {
    FUNC_LOG;
    }

// ---------------------------------------------------------------------------
// TUiCScrollBarModel::SetHeight
// ---------------------------------------------------------------------------
//
void TUiCScrollBarModel::SetHeight( TInt aHeight )
    {
    FUNC_LOG;
    iHeight = aHeight;
    }

// ---------------------------------------------------------------------------
// TUiCScrollBarModel::Height
// ---------------------------------------------------------------------------
//
TInt TUiCScrollBarModel::Height() const
    {
    FUNC_LOG;
    return iHeight;
    }

// ---------------------------------------------------------------------------
// TUiCScrollBarModel::SetWindowHeight
// ---------------------------------------------------------------------------
//
void TUiCScrollBarModel::SetWindowHeight( TInt aHeight )
    {
    FUNC_LOG;
    iWindowHeight = aHeight;
    }

// ---------------------------------------------------------------------------
// TUiCScrollBarModel::WindowHeight
// ---------------------------------------------------------------------------
//
TInt TUiCScrollBarModel::WindowHeight() const
    {
    FUNC_LOG;
    return iWindowHeight;
    }

// ---------------------------------------------------------------------------
// TUiCScrollBarModel::SetWindowPosition
// ---------------------------------------------------------------------------
//
void TUiCScrollBarModel::SetWindowPosition( TInt aPosition )
    {
    FUNC_LOG;
    iWindowPosition = aPosition;
    }

// ---------------------------------------------------------------------------
// TUiCScrollBarModel::WindowPosition
// ---------------------------------------------------------------------------
//
TInt TUiCScrollBarModel::WindowPosition() const
    {
    FUNC_LOG;
    return iWindowPosition;
    }

// ---------------------------------------------------------------------------
// TUiCScrollBarModel::ThumbHeight
// ---------------------------------------------------------------------------
//
TInt TUiCScrollBarModel::ThumbHeight() const
    {
    FUNC_LOG;
    TInt thumbHeight( 0 );
    if ( iHeight > 0 )
        {
        thumbHeight = Min( 
                Max( CalculatedThumbHeight(), MinimumThumbHeight() ), 
                    iWindowHeight );
        }
    return thumbHeight;
    }

// ---------------------------------------------------------------------------
// TUiCScrollBarModel::ThumbPosition
// ---------------------------------------------------------------------------
//
TInt TUiCScrollBarModel::ThumbPosition() const
    {
    FUNC_LOG;    
    TInt thumbPosition( 0 );
    if ( iHeight > 0 )
        {
        thumbPosition = iWindowHeight * iWindowPosition / iHeight;
        if ( iWindowHeight > 0 )
            {
            thumbPosition -= (ThumbHeight() - CalculatedThumbHeight()) 
                    * thumbPosition / iWindowHeight;
            }
        }    
    return thumbPosition;
    } 

// ---------------------------------------------------------------------------
// TUiCScrollBarModel::ScrollBarNeeded
// ---------------------------------------------------------------------------
//
TBool TUiCScrollBarModel::ScrollBarNeeded() const
    {
    FUNC_LOG;
    return iWindowHeight < iHeight;
    }

// ---------------------------------------------------------------------------
// TUiCScrollBarModel::MinimumThumbHeight
// ---------------------------------------------------------------------------
//
TInt TUiCScrollBarModel::MinimumThumbHeight() const
    {
    FUNC_LOG;
    TAknLayoutRect layoutRect;
    TAknWindowComponentLayout layout = AknLayoutScalable_Avkon::aid_size_min_handle();
    layoutRect.LayoutRect( TRect(), layout.LayoutLine() );
    return layoutRect.Rect().Height();
    }

// ---------------------------------------------------------------------------
// TUiCScrollBarModel::CalculatedThumbHeight
// ---------------------------------------------------------------------------
//
TInt TUiCScrollBarModel::CalculatedThumbHeight() const
    {
    FUNC_LOG;
    TInt thumbHeight( 0 );
    if ( iHeight > 0 )
        {
        thumbHeight = iWindowHeight * iWindowHeight / iHeight;
        }
    return thumbHeight;
    }

// end of file