emailuis/uicomponents/src/tuicscrollbarmodel.cpp
branchRCL_3
changeset 12 4ce476e64c59
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/emailuis/uicomponents/src/tuicscrollbarmodel.cpp	Wed Mar 31 21:08:33 2010 +0300
@@ -0,0 +1,169 @@
+/*
+* 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