uiacceltk/hitchcock/Client/src/alfgridlayout.cpp
changeset 64 9f8c0686fb49
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uiacceltk/hitchcock/Client/src/alfgridlayout.cpp	Wed Nov 03 19:29:22 2010 +0200
@@ -0,0 +1,461 @@
+/*
+* Copyright (c) 2006 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:   Grid layout
+*
+*/
+
+
+
+#include "alf/alfgridlayout.h"
+#include "alf/alflayout.h"
+#include "alf/alfcontrol.h"
+#include "alfclient.h"
+#include "alf/alfenv.h"
+#include "alf/alfgencomponent.h"
+#include "alf/alfconstants.h"
+#include "alflogger.h"
+
+
+// Struct for private data
+struct CAlfGridLayout::TGridLayoutPrivateData
+    {
+    
+    };
+
+// ======== LOCAL FUNCTIONS ========
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// 1st phase constructor
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CAlfGridLayout::CAlfGridLayout()
+    : CAlfLayout()
+    {
+    }
+
+
+// ---------------------------------------------------------------------------
+// 2nd phase constructor
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAlfGridLayout::ConstructL(CAlfControl& aOwner)
+    {
+    CAlfLayout::ConstructL(aOwner);     
+    }
+
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CAlfGridLayout::~CAlfGridLayout()
+    {
+    if ( iGridLayoutData )
+        {
+        }
+        
+    delete iGridLayoutData;
+    iGridLayoutData = NULL;
+    }
+
+
+// ---------------------------------------------------------------------------
+// Creates new grid layout for the control.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CAlfGridLayout* CAlfGridLayout::AddNewL(
+    CAlfControl& aOwnerControl,
+    TInt aColumns, TInt aRows,
+    CAlfLayout* aParentLayout )
+    {
+    CAlfGridLayout* layout = STATIC_CAST(CAlfGridLayout*,
+        aOwnerControl.AppendLayoutL(EAlfLayoutTypeGrid, aParentLayout));
+    layout->SetColumnsL(aColumns);
+    layout->SetRowsL(aRows);
+    return layout;
+    }
+
+// ---------------------------------------------------------------------------
+// Sets amount of columns in the grid.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAlfGridLayout::SetColumnsL(TInt aColumnCount)
+    {
+    TPckgC<TInt> buf (aColumnCount);
+
+    TInt err = Comms()->DoCmdNoReply(EAlfGridLayoutSetColumns, buf );
+    
+    if ( err )
+        {
+        __ALFLOGSTRING1( "CAlfGridLayout::SetColumnsL error %d", err )
+        User::Leave(err);
+        }
+    }
+    
+// ---------------------------------------------------------------------------
+// Sets amount of rows in the grid.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAlfGridLayout::SetRowsL(TInt aRowCount)
+    {
+    TPckgC<TInt> buf (aRowCount);
+
+    TInt err = Comms()->DoCmdNoReply(EAlfGridLayoutSetRows, buf );
+    
+    if ( err )
+        {
+        __ALFLOGSTRING1( "CAlfGridLayout::SetRowsL error %d", err )
+        User::Leave(err);
+        }
+    }
+
+EXPORT_C void CAlfGridLayout::SetColumnsL(const RArray<TInt>& aWeights)
+    {
+    HBufC8* buffer = ExternalizeLC(aWeights);
+
+    TInt err = Comms()->DoCmdNoReply(EAlfGridLayoutSetColumnWeights, *buffer );
+    if ( err )
+        {
+        __ALFLOGSTRING1( "CAlfGridLayout::SetColumnsL error %d", err )
+        User::Leave(err);
+        }
+        
+    CleanupStack::PopAndDestroy( buffer );
+    }
+
+EXPORT_C void CAlfGridLayout::SetRowsL(const RArray<TInt>& aWeights)
+    {
+    HBufC8* buffer = ExternalizeLC(aWeights);
+
+    TInt err = Comms()->DoCmdNoReply(EAlfGridLayoutSetRowsWeights, *buffer );
+    if ( err )
+        {
+        __ALFLOGSTRING1( "CAlfGridLayout::SetRowsL error %d", err )
+        User::Leave(err);
+        }
+        
+    CleanupStack::PopAndDestroy( buffer );
+    }
+
+// ---------------------------------------------------------------------------
+// Weight metrics
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAlfGridLayout::FillWeightsL(TAlfGridDimension aDim, TInt aCount, const TAlfMetric& aWeight)
+    {
+    TAlfGridLayoutFillWeightsParams params;
+    params.iDim = aDim;
+    params.iCount = aCount;
+    params.iWeight = aWeight;
+    TPckg<TAlfGridLayoutFillWeightsParams> paramsPckg(params);
+
+    TBuf8<1> dum;
+    TInt err = Comms()->DoSynchronousCmd(EAlfGridLayoutFillWeights, paramsPckg, dum );
+    if ( err != KErrNone )
+        {
+        __ALFLOGSTRING1( "CAlfGridLayout::FillWeightsL return error %d", err )
+        User::Leave(err);
+        }
+    }
+    
+EXPORT_C void CAlfGridLayout::AppendWeightL(TAlfGridDimension aDim, const TAlfMetric& aWeight)
+    {
+    TAlfGridLayoutAppendWeightParams params;
+    params.iDim = aDim;
+    params.iWeight = aWeight;
+    TPckg<TAlfGridLayoutAppendWeightParams> paramsPckg(params);
+
+    TBuf8<1> dum;
+    TInt err = Comms()->DoSynchronousCmd(EAlfGridLayoutAppendWeight, paramsPckg, dum );
+    if ( err != KErrNone )
+        {
+        __ALFLOGSTRING1( "CAlfGridLayout::AppendWeightL return error %d", err )
+        User::Leave(err);
+        }
+    }
+    
+EXPORT_C void CAlfGridLayout::InsertWeightL(TAlfGridDimension aDim, const TAlfMetric& aWeight, TInt aPos)
+    {
+    TAlfGridLayoutInsertWeightParams params;
+    params.iDim = aDim;
+    params.iWeight = aWeight;
+    params.iPos = aPos;
+    TPckg<TAlfGridLayoutInsertWeightParams> paramsPckg(params);
+
+    TBuf8<1> dum;
+    TInt err = Comms()->DoSynchronousCmd(EAlfGridLayoutInsertWeight, paramsPckg, dum );
+    if ( err != KErrNone )
+        {
+        __ALFLOGSTRING1( "CAlfGridLayout::InsertWeightL return error %d", err )
+        User::Leave(err);
+        }
+    }
+    
+EXPORT_C void CAlfGridLayout::ReplaceWeightL(TAlfGridDimension aDim, const TAlfMetric& aWeight, TInt aPos)
+    {
+    TAlfGridLayoutReplaceWeightParams params;
+    params.iDim = aDim;
+    params.iWeight = aWeight;
+    params.iPos = aPos;
+    TPckg<TAlfGridLayoutReplaceWeightParams> paramsPckg(params);
+
+    TBuf8<1> dum;
+    TInt err = Comms()->DoSynchronousCmd(EAlfGridLayoutReplaceWeight, paramsPckg, dum );
+    if ( err != KErrNone )
+        {
+        __ALFLOGSTRING1( "CAlfGridLayout::ReplaceWeightL return error %d", err )
+        User::Leave(err);
+        }
+    }
+    
+EXPORT_C void CAlfGridLayout::RemoveWeightL(TAlfGridDimension aDim, TInt aPos)
+    {
+    TAlfGridLayoutRemoveWeightParams params;
+    params.iDim = aDim;
+    params.iPos = aPos;
+    TPckg<TAlfGridLayoutRemoveWeightParams> paramsPckg(params);
+
+    TBuf8<1> dum;
+    TInt err = Comms()->DoSynchronousCmd(EAlfGridLayoutRemoveWeight, paramsPckg, dum );
+    if ( err != KErrNone )
+        {
+        __ALFLOGSTRING1( "CAlfGridLayout::RemoveWeightL return error %d", err )
+        User::Leave(err);
+        }
+    
+    }
+    
+EXPORT_C TAlfMetric CAlfGridLayout::Weight(TAlfGridDimension aDim, TInt aPos) const
+    {
+    TAlfGridLayoutWeightParams params;
+    params.iDim = aDim;
+    params.iPos = aPos;
+    TPckg<TAlfGridLayoutWeightParams> paramsPckg(params);
+
+    TAlfMetric metric;
+    TPckg<TAlfMetric> metricPckg(metric);
+        
+    TInt err = Comms()->DoSynchronousCmd(EAlfGridLayoutWeight, paramsPckg, metricPckg);
+    if ( err )
+        {
+        __ALFLOGSTRING1( "CAlfGridLayout::RowCount ignore error %d", err )
+        }
+    return metric;
+    }
+    
+EXPORT_C TInt CAlfGridLayout::DimensionCount(TAlfGridDimension aDim) const
+    {
+    TPckgC<TInt> buf (aDim);
+    TInt count = 0;
+    TPckg<TInt> countPckg(count);
+    
+    TInt err = Comms()->DoSynchronousCmd(EAlfGridLayoutCount, buf, countPckg);
+    if ( err )
+        {
+        __ALFLOGSTRING1( "CAlfGridLayout::RowCount ignore error %d", err )
+        }
+    
+    return count;
+    }
+    
+    
+// ---------------------------------------------------------------------------
+// Sets expanding flags in the grid.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAlfGridLayout::SetExpanding(TInt aFlags)
+    {
+    TPckgC<TInt> buf (aFlags);
+
+    TInt err = Comms()->DoCmdNoReply(EAlfGridLayoutSetExpanding, buf);
+    
+    if ( err )
+        {
+        __ALFLOGSTRING1( "CAlfGridLayout::SetExpanding ignore error %d", err )
+        }
+    }
+    
+// ---------------------------------------------------------------------------
+// Gets amount of rows in the grid.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CAlfGridLayout::RowCount() const
+    {
+    TBuf8<1> dum;
+    TInt count = 0;
+    TPckg<TInt> countPckg(count);
+    
+    TInt err = Comms()->DoSynchronousCmd(EAlfGridLayoutRowCount, dum, countPckg);
+    if ( err )
+        {
+        __ALFLOGSTRING1( "CAlfGridLayout::RowCount ignore error %d", err )
+        }
+    
+    return count;
+    }
+    
+// ---------------------------------------------------------------------------
+// Gets amount of columns in the grid.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CAlfGridLayout::ColumnCount() const
+    {
+    TBuf8<1> dum;
+    TInt count = 0;
+    TPckg<TInt> countPckg(count);
+    
+    TInt err = Comms()->DoSynchronousCmd(EAlfGridLayoutColumnCount, dum, countPckg);
+    if ( err )
+        {
+        __ALFLOGSTRING1( "CAlfGridLayout::ColumnCount ignore error %d", err )
+        }
+    
+    return count;
+    }
+    
+// ---------------------------------------------------------------------------
+// Calculates the position of a child in the grid.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TPoint CAlfGridLayout::OrdinalToBlock(TInt aOrdinal) const
+    {
+    TPckgC<TInt> buf (aOrdinal);
+    TPoint result;
+    TPckg<TPoint> resBuf(result);
+    
+    TInt err = Comms()->DoSynchronousCmd(EAlfGridLayoutOrdinalToBlock, buf, resBuf);
+    
+    if ( err )
+        {
+        __ALFLOGSTRING1( "CAlfGridLayout::OrdinalToBlock ignore error %d", err )
+        }
+        
+    return result;                                 
+    }
+
+
+// ---------------------------------------------------------------------------
+// Set Layout Mode Flags
+// ---------------------------------------------------------------------------
+// 
+
+EXPORT_C void CAlfGridLayout::SetLayoutModeFlags(TAlfGridDimension aDim, TUint aGridLayoutModeFlags)
+{
+    TInt2 params( aDim, aGridLayoutModeFlags );
+    TPckg<TInt2> paramsPckg(params);
+
+    TInt err = Comms()->DoCmdNoReply(EAlfGridLayoutSetLayoutModeFlags, paramsPckg );
+    
+    if ( err )
+        {
+        __ALFLOGSTRING1( "CAlfGridLayout::SetLayoutModeFlags ignore error %d", err )
+        }
+}
+
+// ---------------------------------------------------------------------------
+// Get Layout Mode Flags
+// ---------------------------------------------------------------------------
+// 
+EXPORT_C TInt CAlfGridLayout::LayoutModeFlags(TAlfGridDimension aDim)
+{
+    TUint flags = 0;
+    TPckg<TUint> flagPckg(flags);
+    TPckgC<TInt> paramsPckg (aDim);  
+    
+    TInt err = Comms()->DoSynchronousCmd(EAlfGridLayoutLayoutModeFlags, paramsPckg, flagPckg);
+    
+    if ( err )
+        {
+        __ALFLOGSTRING1( "CAlfGridLayout::LayoutModeFlags ignore error %d", err )
+        }
+        
+   return flags;
+}
+    
+// ---------------------------------------------------------------------------
+// Clear Layout Mode Flags
+// ---------------------------------------------------------------------------
+// 
+
+EXPORT_C void CAlfGridLayout::ClearLayoutModeFlags(TAlfGridDimension aDim, TUint aGridLayoutModeFlags)
+{    
+    TInt2 params( aDim, aGridLayoutModeFlags );
+    TPckg<TInt2> paramsPckg(params);
+    TBuf8<1> resBuf;    
+    
+    TInt err = Comms()->DoSynchronousCmd(EAlfGridLayoutClearLayoutModeFlags, paramsPckg, resBuf);
+    
+    if ( err )
+        {
+        __ALFLOGSTRING1( "CAlfGridLayout::ClearLayoutModeFlags ignore error %d", err )
+        }  
+}
+    
+
+// ---------------------------------------------------------------------------
+// Place holder from CAlfVisual
+// ---------------------------------------------------------------------------
+//     
+EXPORT_C void CAlfGridLayout::RemoveAndDestroyAllD()
+    {
+    CAlfLayout::RemoveAndDestroyAllD();
+    }
+  
+// ---------------------------------------------------------------------------
+// Place holder from CAlfVisual
+// ---------------------------------------------------------------------------
+//  
+EXPORT_C void CAlfGridLayout::UpdateChildrenLayout(TInt aTransitionTime )
+    {
+    CAlfLayout::UpdateChildrenLayout( aTransitionTime );
+    }
+  
+// ---------------------------------------------------------------------------
+// Place holder from CAlfVisual
+// ---------------------------------------------------------------------------
+//  
+EXPORT_C CAlfVisual* CAlfGridLayout::FindTag(const TDesC8& aTag)
+    {
+    return CAlfLayout::FindTag( aTag );
+    }
+
+// ---------------------------------------------------------------------------
+// Place holder from CAlfVisual
+// ---------------------------------------------------------------------------
+//  
+EXPORT_C void CAlfGridLayout::DoRemoveAndDestroyAllD()
+    {
+    CAlfLayout::DoRemoveAndDestroyAllD();
+    }
+    
+// ---------------------------------------------------------------------------
+// Place holder from CAlfLayout
+// ---------------------------------------------------------------------------
+//  
+EXPORT_C TAlfXYMetric CAlfGridLayout::BaseUnit() const
+    {
+    return CAlfLayout::BaseUnit();
+    }
+
+// ---------------------------------------------------------------------------
+//  future proofing  
+// ---------------------------------------------------------------------------
+//  
+EXPORT_C void CAlfGridLayout::PropertyOwnerExtension(const TUid& aExtensionUid, TAny** aExtensionParams)
+    {
+    CAlfLayout::PropertyOwnerExtension(aExtensionUid,aExtensionParams);
+    }
+