uiacceltk/hitchcock/coretoolkit/src/HuiDeckLayout.cpp
changeset 0 15bf7259bb7c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uiacceltk/hitchcock/coretoolkit/src/HuiDeckLayout.cpp	Tue Feb 02 07:56:43 2010 +0200
@@ -0,0 +1,104 @@
+/*
+* Copyright (c) 2006-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:   Implementation for CHuiDeckLayout. Deck layout is a very simple layout
+*                that overlays all its children to match the layout's own rectangle.
+*                Think of it as a deck of cards.
+*
+*/
+
+
+
+#include "uiacceltk/HuiDeckLayout.h"  // Class definition
+#include "uiacceltk/HuiControl.h"
+#include "uiacceltk/HuiPanic.h"
+
+
+EXPORT_C CHuiDeckLayout* CHuiDeckLayout::AddNewL(CHuiControl& aOwnerControl,
+                                                 CHuiLayout* aParentLayout)
+    {
+    CHuiDeckLayout* layout = new (ELeave) CHuiDeckLayout(aOwnerControl);
+    CleanupStack::PushL(layout);
+    layout->ConstructL();    
+    aOwnerControl.AppendL(layout, aParentLayout);
+    CleanupStack::Pop(layout);           
+    return layout;
+    }
+
+
+CHuiDeckLayout::CHuiDeckLayout(MHuiVisualOwner& aOwner)
+        : CHuiLayout(aOwner)
+    {
+    }
+
+
+void CHuiDeckLayout::ConstructL()
+    {    
+    CHuiLayout::ConstructL();
+    }
+
+    
+EXPORT_C CHuiDeckLayout::~CHuiDeckLayout()
+    {    
+    }
+
+
+void CHuiDeckLayout::SetSize(const THuiRealSize& aSize, TInt aTransitionTime)
+    {
+    CHuiLayout::SetSize(aSize, aTransitionTime);
+    UpdateChildrenLayout(aTransitionTime);    
+    }
+
+TBool CHuiDeckLayout::ChildSize(TInt aOrdinal, TSize& aSize)
+    {
+    TBool result(EFalse);
+    THuiRealRect rect;
+    TInt childRectStatus(THuiLayoutChildRectUpdateNotNeeded);
+    childRectStatus = ChildRect(aOrdinal, rect);
+    if(childRectStatus != THuiLayoutChildRectNotImplemented)
+        {
+        result = (childRectStatus & THuiLayoutChildRectSizeUpdateNeeded);
+        if(result)
+            {
+            THuiRealPoint size(rect.Width(), rect.Height());
+            aSize = LocalPointInPixels(size).AsSize();
+            }
+        }
+    return result;
+    }
+
+TBool CHuiDeckLayout::ChildPos(TInt aOrdinal, TPoint& aPos)
+    {
+    TBool result(EFalse);
+    THuiRealRect rect;
+    TInt childRectStatus(THuiLayoutChildRectUpdateNotNeeded);
+    childRectStatus = ChildRect(aOrdinal, rect);
+    if(childRectStatus != THuiLayoutChildRectNotImplemented)
+        {
+        result = (childRectStatus & THuiLayoutChildRectPosUpdateNeeded);
+        if(result)
+            {
+            aPos = LocalPointInPixels(rect.iTl);
+            }
+        }
+    return result;
+    }
+
+TInt CHuiDeckLayout::ChildRect(TInt /*aOrdinal*/, THuiRealRect& aPos)
+    {
+    THuiRealSize innerSize = InnerSize();
+    aPos.iTl = InnerTopLeft(); 
+    aPos.iBr = aPos.iTl + THuiRealPoint(innerSize.iWidth, innerSize.iHeight) ; 
+    return THuiLayoutChildRectLayoutUpdateNeeded;
+    }
+