emailuis/emailui/src/FreestyleEmailUiFolderListControl.cpp
changeset 0 8466d47a6819
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/emailuis/emailui/src/FreestyleEmailUiFolderListControl.cpp	Thu Dec 17 08:39:21 2009 +0200
@@ -0,0 +1,182 @@
+/*
+* 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:  Implements control for the application.
+*
+*/
+
+#include "emailtrace.h"
+#include <AknUtils.h>
+// <cmail> SF
+#include <alf/alfevent.h>
+// </cmail>
+#include "FreestyleEmailUiFolderListControl.h"
+#include "FreestyleEmailUiFolderListVisualiser.h"
+
+// ---------------------------------------------------------------------------
+// Two-phased constructor.
+// ---------------------------------------------------------------------------
+//
+CFSEmailUiFolderListControl* CFSEmailUiFolderListControl::NewL(CAlfEnv& aEnv, CFSEmailUiFolderListVisualiser& aVisualiser)
+    {
+    FUNC_LOG;
+    CFSEmailUiFolderListControl* self = CFSEmailUiFolderListControl::NewLC(aEnv, aVisualiser);
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Two-phased constructor.
+// ---------------------------------------------------------------------------
+//
+CFSEmailUiFolderListControl* CFSEmailUiFolderListControl::NewLC(CAlfEnv& aEnv, CFSEmailUiFolderListVisualiser& aVisualiser)
+    {
+    FUNC_LOG;
+    CFSEmailUiFolderListControl* self = new (ELeave) CFSEmailUiFolderListControl(aVisualiser);
+    CleanupStack::PushL(self);
+    self->ConstructL(aEnv);
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+//C++ constructor.
+// ---------------------------------------------------------------------------
+//
+CFSEmailUiFolderListControl::CFSEmailUiFolderListControl(CFSEmailUiFolderListVisualiser& aVisualiser)
+    : CAlfControl(), 
+	iVisualiser(aVisualiser)
+    {
+    FUNC_LOG;
+    }
+
+// ---------------------------------------------------------------------------
+// Two-phased constructor.
+// ---------------------------------------------------------------------------
+//
+void CFSEmailUiFolderListControl::ConstructL(CAlfEnv& aEnv)
+    {
+    FUNC_LOG;
+    CAlfControl::ConstructL(aEnv);
+    }
+
+// ---------------------------------------------------------------------------
+// Virtual destructor.
+// ---------------------------------------------------------------------------
+//
+CFSEmailUiFolderListControl::~CFSEmailUiFolderListControl()
+    {
+    FUNC_LOG;
+    }
+
+// ---------------------------------------------------------------------------
+// CFSEmailUiFolderListControl::OfferEventL
+// ---------------------------------------------------------------------------
+//
+TBool CFSEmailUiFolderListControl::OfferEventL( const TAlfEvent& aEvent )
+	{
+    FUNC_LOG;
+	// Handle expand/collapse functionality, but only in full screen mode
+	if ( aEvent.IsKeyEvent() && iVisualiser.IsFullScreen() )
+		{
+		// Recalculate the horizontal position when scrolling is finished
+		if ( aEvent.Code() == EEventKeyUp &&
+		    ( aEvent.KeyEvent().iScanCode == EStdKeyUpArrow ||
+		      aEvent.KeyEvent().iScanCode == EStdKeyDownArrow ) )
+			{
+            iVisualiser.DoHorizontalScrollL();
+			}
+
+		// Check expanding an collapsing
+		else if ( aEvent.Code() == EEventKey )
+		    {
+            // Swap left and right with mirrored layout
+            TInt scanCode = aEvent.KeyEvent().iScanCode;
+            if ( AknLayoutUtils::LayoutMirrored() )
+                {
+                if ( scanCode == EStdKeyLeftArrow ) scanCode = EStdKeyRightArrow;
+                else if ( scanCode == EStdKeyRightArrow ) scanCode = EStdKeyLeftArrow;
+                }
+            
+            // Left click collapses the current node, right click expands it
+            switch ( scanCode )
+                {
+                case EStdKeyLeftArrow:
+                    {
+                    iVisualiser.ExpandOrCollapseL(
+                            CFSEmailUiFolderListVisualiser::EFolderListCollapse );
+                    }
+                    break;
+    
+                case EStdKeyRightArrow:
+                    {
+                    iVisualiser.ExpandOrCollapseL(
+                            CFSEmailUiFolderListVisualiser::EFolderListExpand );
+                    }
+                    break;
+                    
+                default:
+                    break;
+                }
+		    }
+		}
+
+// <cmail> Touch
+	// Offer events to view
+	
+	TBool result = EFalse;
+	
+    if ( aEvent.IsPointerEvent() )
+        {
+        
+        result = iVisualiser.HandlePointerEventL( aEvent ); 
+        }
+    else
+        {
+        result = iVisualiser.OfferEventL( aEvent );
+        }
+    return result;
+// </cmail>
+	}
+
+// ---------------------------------------------------------------------------
+// CFSEmailUiFolderListControl::HandleCommandL
+// ---------------------------------------------------------------------------
+//
+void CFSEmailUiFolderListControl::HandleCommandL( TInt aCommand )
+	{
+    FUNC_LOG;
+	// Offer aCommand to view
+	return iVisualiser.HandleCommandL( aCommand );
+	}
+
+// ---------------------------------------------------------------------------
+// 
+// ---------------------------------------------------------------------------
+//
+void CFSEmailUiFolderListControl::TimerEventL( CFSEmailUiGenericTimer* /*aTriggeredTimer*/ )
+	{
+    FUNC_LOG;
+	iVisualiser.ExpandOrCollapseL(
+	        CFSEmailUiFolderListVisualiser::EFolderListAutomatic );
+	}
+
+// ---------------------------------------------------------------------------
+// 
+// ---------------------------------------------------------------------------
+/*
+void CFSEmailUiFolderListControl::StartTestTimer()
+	{
+	iFolderListTimer.Start( KAutoExpandCollapseDelay * 5 );
+	}
+*/
+