classicui_pub/grids_api/tsrc/src/testsdkgridsblocksakngridview.cpp
changeset 0 2f259fa3e83a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/classicui_pub/grids_api/tsrc/src/testsdkgridsblocksakngridview.cpp	Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,1781 @@
+/*
+* Copyright (c) 2002 - 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:  Test akngridview.h
+*
+*/
+
+
+/*
+ * Include files
+ */
+#include <akngridview.h>
+#include <akngrid.h>
+#include <barsread.h>
+#include <eikenv.h>
+#include <testsdkgrids.rsg>
+#include <eiktxlbm.h> 
+#include <eikdialg.h> 
+#include <eiklbv.h> 
+#include <akngridm.h>
+
+#include "testsdkgridscontainer.h"
+#include "stifgridview.h"
+#include "testsdkgrids.h"
+
+const TInt KOne = 1;
+const TInt KTwo = 2;
+const TInt KThree = 3;
+const TInt KZero = 0;
+const TInt KTen = 10;
+const TInt KWidth = 240;
+const TInt KHeight = 320;
+const TInt KMinusone = -1;
+const TInt KNine = 9;
+const TInt KTwoHundredThirtyeight = 238;
+const TInt KTwoHundredThirtynine = 239;
+const TInt KThreeHundredeightten = 318;
+const TInt KThreeHundredninetten = 319;
+const TInt KTestIfExist = 100000000;
+const TInt KTwenty = 20;
+
+_LIT( KListText, "It is a list text!");
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewDestructorAndDestructorL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewDestructorAndDestructorL( CStifItemParser& /*aItem*/ )
+    {
+    CAknGridView* view = new( ELeave ) CAknGridView;
+    CleanupStack::PushL( view );
+    STIF_ASSERT_NOT_NULL( view );
+    CleanupStack::PopAndDestroy( view );
+    
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewActualDataIndexL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewActualDataIndexL( CStifItemParser& /*aItem*/ )
+    {
+    CAknGridView* view = new( ELeave ) CAknGridView;
+    CleanupStack::PushL( view );
+    
+    CAknGridView::SGrid gridnumber;
+    gridnumber.iColsInView = KNine;
+    gridnumber.iRowsInView = KNine;
+    gridnumber.iSizeBetweenItems = TSize( KZero, KZero );
+    gridnumber.iSizeOfItems = TSize( KTen, KTen );
+    gridnumber.iPageSize = KOne;
+    gridnumber.iGridDimensions = TSize( KWidth, KHeight );
+    gridnumber.iGridFlags = KOne;
+    
+    view->SetGridDetails( gridnumber );
+    TInt actualdataindex = view->ActualDataIndex( KOne );
+    STIF_ASSERT_NOT_EQUALS( KZero, actualdataindex );
+    
+    CleanupStack::PopAndDestroy( view );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewListBoxIndexL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewListBoxIndexL( CStifItemParser& /*aItem*/ )
+    {
+    CAknGridView* view = new( ELeave ) CAknGridView;
+    CleanupStack::PushL( view );
+    
+    CAknGridView::SGrid gridnumber;
+    gridnumber.iColsInView = KNine;
+    gridnumber.iRowsInView = KNine;
+    gridnumber.iSizeBetweenItems = TSize( KZero, KZero );
+    gridnumber.iSizeOfItems = TSize( KTen, KTen );
+    gridnumber.iPageSize = KOne;
+    gridnumber.iGridDimensions = TSize( KWidth, KHeight );
+    gridnumber.iGridFlags = KOne;
+    
+    view->SetGridDetails( gridnumber );
+    TInt listboxindex = view->ListBoxIndex( KOne );
+    STIF_ASSERT_NOT_EQUALS( KZero, listboxindex );
+    
+    CleanupStack::PopAndDestroy( view );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewCurrentDataIndexL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewCurrentDataIndexL( CStifItemParser& aItem )
+    {
+    TInt err = TestGridsGridviewSetCurrentDataIndexL( aItem );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewSetCurrentDataIndexL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewSetCurrentDataIndexL( CStifItemParser& /*aItem*/ )
+    {
+    CAknGridView* view = new( ELeave ) CAknGridView;
+    CleanupStack::PushL( view );
+    
+    CAknGridView::SGrid gridnumber;
+    gridnumber.iColsInView = KNine;
+    gridnumber.iRowsInView = KNine;
+    gridnumber.iSizeBetweenItems = TSize( KZero, KZero );
+    gridnumber.iSizeOfItems = TSize( KTen, KTen );
+    gridnumber.iPageSize = KOne;
+    gridnumber.iGridDimensions = TSize( KWidth, KHeight );
+    gridnumber.iGridFlags = KOne;
+    
+    view->SetGridDetails( gridnumber );
+    
+    CAknGrid* grid = new( ELeave ) CAknGrid();
+    CleanupStack::PushL( grid );
+    
+    CAknGridM* model = new( ELeave ) CAknGridM();
+    CleanupStack::PushL( model );
+    grid->SetModel( model );
+    CleanupStack::Pop( model );
+    
+    TResourceReader reader;
+    CEikonEnv::Static()->CreateResourceReaderLC( reader, R_TESTSDKGRIDS_GRID );
+    grid->SetContainerWindowL( *iContainer );
+    grid->ConstructFromResourceL( reader );
+    
+    CTextListBoxModel* modeltwo = grid->Model();
+    CListItemDrawer* drawer = grid->ItemDrawer();
+    CWsScreenDevice * screendevice = CEikonEnv::Static()->ScreenDevice();
+    RWindowGroup& parent = CCoeEnv::Static()->RootWin();
+    CEikDialog* mydialog= new(ELeave) CEikDialog; 
+    mydialog->PrepareLC(R_TEST_DIALOG); 
+    RWindow* window = (RWindow*)mydialog->DrawableWindow(); 
+    const TRect rect = iContainer->Rect();
+    view->ConstructL( modeltwo, drawer, screendevice, &parent, window, rect, KTen );
+        
+    view->SetCurrentDataIndex( KZero );
+    TInt dataindex = view->CurrentDataIndex();
+    STIF_ASSERT_NOT_EQUALS( KZero, dataindex );
+    
+    view->SetCurrentDataIndex( KThree );
+    dataindex = view->CurrentDataIndex();
+    STIF_ASSERT_NOT_EQUALS( KThree, dataindex );
+    
+    CleanupStack::PopAndDestroy( mydialog );
+    CleanupStack::PopAndDestroy();
+    CleanupStack::PopAndDestroy( grid );
+    CleanupStack::Pop( view );
+    
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewSetPrimaryScrollingTypeL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewSetPrimaryScrollingTypeL( CStifItemParser& /*aItem*/ )
+    {
+    CAknGridView* view = new( ELeave ) CAknGridView;
+    CleanupStack::PushL( view );
+    
+    CAknGridView::SGrid gridnumber;
+    gridnumber.iColsInView = KNine;
+    gridnumber.iRowsInView = KNine;
+    gridnumber.iSizeBetweenItems = TSize( KZero, KZero );
+    gridnumber.iSizeOfItems = TSize( KTen, KTen );
+    gridnumber.iPageSize = KOne;
+    gridnumber.iGridDimensions = TSize( KWidth, KHeight );
+    gridnumber.iGridFlags = KOne;
+    
+    view->SetGridDetails( gridnumber );
+    
+    CAknGridView::TScrollingType scrollingtype = CAknGridView::EScrollFollowsItemsAndStops;
+    
+    view->SetPrimaryScrollingType( scrollingtype );
+    
+    scrollingtype = CAknGridView::EScrollFollowsGrid;
+    
+    view->SetPrimaryScrollingType( scrollingtype );
+    
+    CleanupStack::PopAndDestroy( view );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewSetSecondaryScrollingTypeL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewSetSecondaryScrollingTypeL( CStifItemParser& /*aItem*/ )
+    {
+    CAknGridView* view = new( ELeave ) CAknGridView;
+    CleanupStack::PushL( view );
+    
+    CAknGridView::SGrid gridnumber;
+    gridnumber.iColsInView = KNine;
+    gridnumber.iRowsInView = KNine;
+    gridnumber.iSizeBetweenItems = TSize( KZero, KZero );
+    gridnumber.iSizeOfItems = TSize( KTen, KTen );
+    gridnumber.iPageSize = KOne;
+    gridnumber.iGridDimensions = TSize( KWidth, KHeight );
+    gridnumber.iGridFlags = KOne;
+    
+    view->SetGridDetails( gridnumber );
+    
+    CAknGridView::TScrollingType scrollingtype = CAknGridView::EScrollFollowsItemsAndStops;
+        
+    view->SetSecondaryScrollingType( scrollingtype );
+    
+    scrollingtype = CAknGridView::EScrollFollowsGrid;
+    
+    view->SetSecondaryScrollingType( scrollingtype );
+    
+    CleanupStack::PopAndDestroy( view );
+    
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewSetGridCellDimensionsL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewSetGridCellDimensionsL( CStifItemParser& /*aItem*/ )
+    {
+    CAknGridView* view = new( ELeave ) CAknGridView;
+    CleanupStack::PushL( view );
+    
+    CAknGridView::SGrid gridnumber;
+    gridnumber.iColsInView = KNine;
+    gridnumber.iRowsInView = KNine;
+    gridnumber.iSizeBetweenItems = TSize( KZero, KZero );
+    gridnumber.iSizeOfItems = TSize( KTen, KTen );
+    gridnumber.iPageSize = KOne;
+    gridnumber.iGridDimensions = TSize( KWidth, KHeight );
+    gridnumber.iGridFlags = KOne;
+    
+    view->SetGridDetails( gridnumber );
+    
+    TSize size( KThree, KThree );
+    view->SetGridCellDimensions( size );
+    
+    TSize returnsize = view->GridCellDimensions();
+    
+    STIF_ASSERT_EQUALS( size, returnsize );
+    
+    CleanupStack::PopAndDestroy( view );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewGridCellDimensions
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewGridCellDimensionsL( CStifItemParser& aItem )
+    {
+    TInt err = TestGridsGridviewSetGridCellDimensionsL( aItem );
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewSetSpacesBetweenItemsL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewSetSpacesBetweenItemsL( CStifItemParser& /*aItem*/ )
+    {
+    CAknGridView* view = new( ELeave ) CAknGridView;
+    CleanupStack::PushL( view );
+    
+    CAknGridView::SGrid gridnumber;
+    gridnumber.iColsInView = KNine;
+    gridnumber.iRowsInView = KNine;
+    gridnumber.iSizeBetweenItems = TSize( KZero, KZero );
+    gridnumber.iSizeOfItems = TSize( KTen, KTen );
+    gridnumber.iPageSize = KOne;
+    gridnumber.iGridDimensions = TSize( KWidth, KHeight );
+    gridnumber.iGridFlags = KOne;
+    
+    view->SetGridDetails( gridnumber );
+    
+    view->SetSpacesBetweenItems( TSize( KZero ,KZero ));
+    view->SetSpacesBetweenItems( TSize( KThree, KThree ));
+    
+    CleanupStack::PopAndDestroy( view );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewIsPrimaryVerticalL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewIsPrimaryVerticalL( CStifItemParser& /*aItem*/ )
+    {
+    CAknGridView* view = new( ELeave ) CAknGridView;
+    CleanupStack::PushL( view );
+    
+    CAknGridView::SGrid gridnumber;
+    gridnumber.iColsInView = KNine;
+    gridnumber.iRowsInView = KNine;
+    gridnumber.iSizeBetweenItems = TSize( KZero, KZero );
+    gridnumber.iSizeOfItems = TSize( KTen, KTen );
+    gridnumber.iPageSize = KOne;
+    gridnumber.iGridDimensions = TSize( KWidth, KHeight );
+    gridnumber.iGridFlags = KOne;
+    
+    view->SetGridDetails( gridnumber );
+    
+    TBool flag = view->IsPrimaryVertical();
+    STIF_ASSERT_TRUE( flag );
+    
+    gridnumber.iGridFlags = KZero;
+    view->SetGridDetails( gridnumber );
+    
+    flag = view->IsPrimaryVertical();
+    STIF_ASSERT_FALSE( flag );
+    
+    CleanupStack::PopAndDestroy( view );    
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewDataIndexFromLogicalPosL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewDataIndexFromLogicalPosL( CStifItemParser& /*aItem*/ )
+    {
+    CAknGridView* view = new( ELeave ) CAknGridView;
+    CleanupStack::PushL( view );
+    
+    CAknGridView::SGrid gridnumber;
+    gridnumber.iColsInView = KNine;
+    gridnumber.iRowsInView = KNine;
+    gridnumber.iSizeBetweenItems = TSize( KZero, KZero );
+    gridnumber.iSizeOfItems = TSize( KTen, KTen );
+    gridnumber.iPageSize = KOne;
+    gridnumber.iGridDimensions = TSize( KWidth, KHeight );
+    gridnumber.iGridFlags = KOne;
+    
+    view->SetGridDetails( gridnumber );
+    
+    TInt dataindex( KZero );
+    view->DataIndexFromLogicalPos( dataindex, KOne, KOne );
+    STIF_ASSERT_NOT_EQUALS( KZero, dataindex );
+    
+    dataindex = KZero;
+    gridnumber.iGridFlags = KZero;
+    
+    view->DataIndexFromLogicalPos( dataindex, KOne, KOne );
+    STIF_ASSERT_NOT_EQUALS( KZero, dataindex );
+    
+    CleanupStack::PopAndDestroy( view );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewLogicalPosFromDataIndexL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewLogicalPosFromDataIndexL( CStifItemParser& /*aItem*/ )
+    {
+    CAknGridView* view = new( ELeave ) CAknGridView;
+    CleanupStack::PushL( view );
+    
+    CAknGridView::SGrid gridnumber;
+    gridnumber.iColsInView = KNine;
+    gridnumber.iRowsInView = KNine;
+    gridnumber.iSizeBetweenItems = TSize( KZero, KZero );
+    gridnumber.iSizeOfItems = TSize( KTen, KTen );
+    gridnumber.iPageSize = KOne;
+    gridnumber.iGridDimensions = TSize( KWidth, KHeight );
+    gridnumber.iGridFlags = KOne;
+    
+    view->SetGridDetails( gridnumber );
+    
+    TInt rowindex( KZero );
+    TInt colindex( KZero );
+    
+    view->LogicalPosFromDataIndex( KNine, rowindex, colindex );
+    STIF_ASSERT_EQUALS( KThreeHundredninetten, rowindex );
+    STIF_ASSERT_EQUALS( KTwoHundredThirtyeight, colindex );
+    
+    gridnumber.iGridFlags = KZero;
+    view->SetGridDetails( gridnumber );
+    
+    view->LogicalPosFromDataIndex( KNine, rowindex, colindex );
+    STIF_ASSERT_EQUALS( KThreeHundredeightten, rowindex );
+    STIF_ASSERT_EQUALS( KTwoHundredThirtynine, colindex );
+    
+    view->LogicalPosFromDataIndex( KMinusone, rowindex, colindex );
+    STIF_ASSERT_EQUALS( KThreeHundredninetten, rowindex );
+    STIF_ASSERT_EQUALS( KTwoHundredThirtynine, colindex );
+    
+    CleanupStack::PopAndDestroy( view );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewListBoxIndexFromLogicalPosL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewListBoxIndexFromLogicalPosL( CStifItemParser& /*aItem*/ )
+    {
+    CAknGridView* view = new( ELeave ) CAknGridView;
+    CleanupStack::PushL( view );
+    
+    CAknGridView::SGrid gridnumber;
+    gridnumber.iColsInView = KNine;
+    gridnumber.iRowsInView = KNine;
+    gridnumber.iSizeBetweenItems = TSize( KZero, KZero );
+    gridnumber.iSizeOfItems = TSize( KTen, KTen );
+    gridnumber.iPageSize = KOne;
+    gridnumber.iGridDimensions = TSize( KWidth, KHeight );
+    gridnumber.iGridFlags = KOne;
+    
+    view->SetGridDetails( gridnumber );
+    
+    TInt mitemindex( KZero );
+    view->ListBoxIndexFromLogicalPos( mitemindex, KOne, KOne );
+    STIF_ASSERT_EQUALS( KTen, mitemindex );
+    
+    gridnumber.iGridFlags = KZero;
+    view->SetGridDetails( gridnumber );
+    
+    view->ListBoxIndexFromLogicalPos( mitemindex, KZero, KOne );
+    STIF_ASSERT_EQUALS( KOne, mitemindex );
+    
+    CleanupStack::PopAndDestroy( view );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewLogicalPosFromListBoxIndexL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewLogicalPosFromListBoxIndexL( CStifItemParser& /*aItem*/ )
+    {
+    CAknGridView* view = new( ELeave ) CAknGridView;
+    CleanupStack::PushL( view );
+    
+    CAknGridView::SGrid gridnumber;
+    gridnumber.iColsInView = KNine;
+    gridnumber.iRowsInView = KNine;
+    gridnumber.iSizeBetweenItems = TSize( KZero, KZero );
+    gridnumber.iSizeOfItems = TSize( KTen, KTen );
+    gridnumber.iPageSize = KOne;
+    gridnumber.iGridDimensions = TSize( KWidth, KHeight );
+    gridnumber.iGridFlags = KOne;
+    
+    view->SetGridDetails( gridnumber );
+    
+    TInt rolindex( KZero );
+    TInt colindex( KZero );
+    
+    view->LogicalPosFromListBoxIndex( KZero, rolindex, colindex );
+    STIF_ASSERT_EQUALS( KZero, rolindex );
+    STIF_ASSERT_EQUALS( KZero, colindex );
+    
+    view->LogicalPosFromListBoxIndex( KNine, rolindex, colindex );
+    STIF_ASSERT_EQUALS( KZero, rolindex );
+    STIF_ASSERT_EQUALS( KOne, colindex );
+    
+    gridnumber.iGridFlags = KZero;
+    view->SetGridDetails( gridnumber );
+    
+    view->LogicalPosFromListBoxIndex( KNine, rolindex, colindex );
+    STIF_ASSERT_EQUALS( KOne, rolindex );
+    STIF_ASSERT_EQUALS( KZero, colindex );
+    
+    CleanupStack::PopAndDestroy( view );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewDrawEmptyListL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewDrawEmptyListL( CStifItemParser& /*aItem*/ )
+    {
+    CAknGridView* view = new( ELeave ) CAknGridView;
+    CleanupStack::PushL( view );
+    
+    CAknGridView::SGrid gridnumber;
+    gridnumber.iColsInView = KNine;
+    gridnumber.iRowsInView = KNine;
+    gridnumber.iSizeBetweenItems = TSize( KZero, KZero );
+    gridnumber.iSizeOfItems = TSize( KTen, KTen );
+    gridnumber.iPageSize = KOne;
+    gridnumber.iGridDimensions = TSize( KWidth, KHeight );
+    gridnumber.iGridFlags = KOne;
+    
+    view->SetGridDetails( gridnumber );
+    
+    TBuf<32> buf( KListText );
+    view->SetListEmptyTextL( buf );
+    
+    CAknGrid* grid = new( ELeave ) CAknGrid();
+    CleanupStack::PushL( grid );
+    
+    CAknGridM* model = new( ELeave ) CAknGridM();
+    CleanupStack::PushL( model );
+    grid->SetModel( model );
+    CleanupStack::Pop( model );
+    
+    TResourceReader reader;
+    CEikonEnv::Static()->CreateResourceReaderLC( reader, R_TESTSDKGRIDS_GRID );
+    grid->SetContainerWindowL( *iContainer );
+    grid->ConstructFromResourceL( reader );
+    
+    CTextListBoxModel* modeltwo = grid->Model();
+    CListItemDrawer* drawer = grid->ItemDrawer();
+    CWsScreenDevice * screendevice = CEikonEnv::Static()->ScreenDevice();
+    RWindowGroup& parent = CCoeEnv::Static()->RootWin();
+    CEikDialog* mydialog= new(ELeave) CEikDialog; 
+    mydialog->PrepareLC(R_TEST_DIALOG); 
+    RWindow* window = (RWindow*)mydialog->DrawableWindow(); 
+    const TRect rect = iContainer->Rect();
+    view->ConstructL( modeltwo, drawer, screendevice, &parent, window, rect, KTen );
+    
+    view->DrawEmptyList();
+    
+    CleanupStack::PopAndDestroy( mydialog );
+    CleanupStack::PopAndDestroy();
+    CleanupStack::PopAndDestroy( grid );
+    CleanupStack::Pop( view );
+    
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewSetGridDetailsL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewSetGridDetailsL( CStifItemParser& aItem )
+    {
+    TInt err = TestGridsGridviewIsPrimaryVerticalL( aItem );
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewMoveToItemIndexLL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewMoveToItemIndexLL( CStifItemParser& /*aItem*/ )
+    {
+    CAknGridView* view = new( ELeave ) CAknGridView;
+    CleanupStack::PushL( view );
+    
+    CAknGridView::SGrid gridnumber;
+    gridnumber.iColsInView = KNine;
+    gridnumber.iRowsInView = KNine;
+    gridnumber.iSizeBetweenItems = TSize( KZero, KZero );
+    gridnumber.iSizeOfItems = TSize( KTen, KTen );
+    gridnumber.iPageSize = KOne;
+    gridnumber.iGridDimensions = TSize( KWidth, KHeight );
+    gridnumber.iGridFlags = KOne;
+    
+    view->SetGridDetails( gridnumber );
+    
+    CAknGrid* grid = new( ELeave ) CAknGrid();
+    CleanupStack::PushL( grid );
+    
+    CAknGridM* model = new( ELeave ) CAknGridM();
+    CleanupStack::PushL( model );
+    grid->SetModel( model );
+    CleanupStack::Pop( model );
+    
+    TResourceReader reader;
+    CEikonEnv::Static()->CreateResourceReaderLC( reader, R_TESTSDKGRIDS_GRID );
+    grid->SetContainerWindowL( *iContainer );
+    grid->ConstructFromResourceL( reader );
+    
+    CTextListBoxModel* modeltwo = grid->Model();
+    CListItemDrawer* drawer = grid->ItemDrawer();
+    CWsScreenDevice * screendevice = CEikonEnv::Static()->ScreenDevice();
+    RWindowGroup& parent = CCoeEnv::Static()->RootWin();
+    CEikDialog* mydialog= new(ELeave) CEikDialog; 
+    mydialog->PrepareLC(R_TEST_DIALOG); 
+    RWindow* window = (RWindow*)mydialog->DrawableWindow(); 
+    const TRect rect = iContainer->Rect();
+    view->ConstructL( modeltwo, drawer, screendevice, &parent, window, rect, KTen );
+    
+    view->SetCurrentItemIndex( KOne );
+    
+    view->MoveToItemIndexL( 200, CListBoxView::ENoSelection );
+    view->MoveToItemIndexL( KThree, CListBoxView::ESingleSelection );
+    view->MoveToItemIndexL( KZero, CListBoxView::EDisjointSelection );
+    view->MoveToItemIndexL( KZero, CListBoxView::EDisjointMarkSelection );
+    
+    CleanupStack::PopAndDestroy( mydialog );
+    CleanupStack::PopAndDestroy();
+    CleanupStack::PopAndDestroy( grid );
+    CleanupStack::Pop( view );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewNumberOfColsInViewL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewNumberOfColsInViewL( CStifItemParser& /*aItem*/ )
+    {
+    CAknGridView* view = new( ELeave ) CAknGridView;
+    CleanupStack::PushL( view );
+    
+    CAknGridView::SGrid gridnumber;
+    gridnumber.iColsInView = KNine;
+    gridnumber.iRowsInView = KNine;
+    gridnumber.iSizeBetweenItems = TSize( KZero, KZero );
+    gridnumber.iSizeOfItems = TSize( KTen, KTen );
+    gridnumber.iPageSize = KOne;
+    gridnumber.iGridDimensions = TSize( KWidth, KHeight );
+    gridnumber.iGridFlags = KOne;
+    
+    view->SetGridDetails( gridnumber );
+    
+    TInt numberofcols = view->NumberOfColsInView();
+    STIF_ASSERT_EQUALS( KNine, numberofcols );
+    
+    CleanupStack::PopAndDestroy( view );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewNumberOfRowsInViewL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewNumberOfRowsInViewL( CStifItemParser& /*aIetm*/ )
+    {
+    CAknGridView* view = new( ELeave ) CAknGridView;
+    CleanupStack::PushL( view );
+    
+    CAknGridView::SGrid gridnumber;
+    gridnumber.iColsInView = KNine;
+    gridnumber.iRowsInView = KNine;
+    gridnumber.iSizeBetweenItems = TSize( KZero, KZero );
+    gridnumber.iSizeOfItems = TSize( KTen, KTen );
+    gridnumber.iPageSize = KOne;
+    gridnumber.iGridDimensions = TSize( KWidth, KHeight );
+    gridnumber.iGridFlags = KOne;
+    
+    view->SetGridDetails( gridnumber );
+    
+    TInt numberofcols = view->NumberOfRowsInView();
+    STIF_ASSERT_EQUALS( KNine, numberofcols );
+    
+    CleanupStack::PopAndDestroy( view );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewDrawMatcherCursorL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewDrawMatcherCursorL( CStifItemParser& /*aItem*/ )
+    {
+    CAknGridView* view = new( ELeave ) CAknGridView;
+    CleanupStack::PushL( view );
+    
+    view->DrawMatcherCursor();
+    
+    CleanupStack::PopAndDestroy( view );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewCurrentItemIndexL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewCurrentItemIndexL( CStifItemParser& /*aItem*/ )
+    {
+    CAknGridView* view = new( ELeave ) CAknGridView;
+    CleanupStack::PushL( view );
+    
+    CAknGridView::SGrid gridnumber;
+    gridnumber.iColsInView = KNine;
+    gridnumber.iRowsInView = KNine;
+    gridnumber.iSizeBetweenItems = TSize( KZero, KZero );
+    gridnumber.iSizeOfItems = TSize( KTen, KTen );
+    gridnumber.iPageSize = KOne;
+    gridnumber.iGridDimensions = TSize( KWidth, KHeight );
+    gridnumber.iGridFlags = KOne;
+    
+    view->SetGridDetails( gridnumber );
+    
+    CAknGrid* grid = new( ELeave ) CAknGrid();
+    CleanupStack::PushL( grid );
+    
+    CAknGridM* model = new( ELeave ) CAknGridM();
+    CleanupStack::PushL( model );
+    grid->SetModel( model );
+    CleanupStack::Pop( model );
+    
+    TResourceReader reader;
+    CEikonEnv::Static()->CreateResourceReaderLC( reader, R_TESTSDKGRIDS_GRID );
+    grid->SetContainerWindowL( *iContainer );
+    grid->ConstructFromResourceL( reader );
+    
+    CTextListBoxModel* modeltwo = grid->Model();
+    CListItemDrawer* drawer = grid->ItemDrawer();
+    CWsScreenDevice * screendevice = CEikonEnv::Static()->ScreenDevice();
+    RWindowGroup& parent = CCoeEnv::Static()->RootWin();
+    CEikDialog* mydialog= new(ELeave) CEikDialog; 
+    mydialog->PrepareLC(R_TEST_DIALOG); 
+    RWindow* window = (RWindow*)mydialog->DrawableWindow(); 
+    const TRect rect = iContainer->Rect();
+    view->ConstructL( modeltwo, drawer, screendevice, &parent, window, rect, KTen );
+    
+    TInt currentindex = view->CurrentItemIndex();
+    STIF_ASSERT_EQUALS( KZero, currentindex );
+    
+    CStifGridView* stifgridview = static_cast<CStifGridView*>( view );
+    CAknGridM* gridm = stifgridview->DoGridModel();
+    
+    view->SetCurrentItemIndex( KOne );
+    currentindex = view->CurrentItemIndex();
+    STIF_ASSERT_EQUALS( KOne, currentindex );
+    
+    CleanupStack::PopAndDestroy( mydialog );
+    CleanupStack::PopAndDestroy();
+    CleanupStack::PopAndDestroy( grid );
+    CleanupStack::Pop( view );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewItemExistsL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewItemExistsL( CStifItemParser& /*aItem*/ )
+    {
+    CStifGridView* view = new( ELeave ) CStifGridView;
+    CleanupStack::PushL( view );
+    
+    CAknGridView::SGrid gridnumber;
+    gridnumber.iColsInView = KNine;
+    gridnumber.iRowsInView = KNine;
+    gridnumber.iSizeBetweenItems = TSize( KZero, KZero );
+    gridnumber.iSizeOfItems = TSize( KTen, KTen );
+    gridnumber.iPageSize = KOne;
+    gridnumber.iGridDimensions = TSize( KWidth, KHeight );
+    gridnumber.iGridFlags = KOne;
+    
+    view->SetGridDetails( gridnumber );
+    
+    TBool justiceifexist = view->DoItemExists( KOne );
+    STIF_ASSERT_TRUE( justiceifexist );
+    justiceifexist = view->DoItemExists( KMinusone );
+    STIF_ASSERT_FALSE( justiceifexist );
+    justiceifexist = view->DoItemExists( KTestIfExist );
+    STIF_ASSERT_FALSE( justiceifexist );
+    
+    CleanupStack::PopAndDestroy( view );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewSetColumnWidthL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewSetColumnWidthL( CStifItemParser& /*aItem*/ )
+    {
+    CAknGridView* view = new( ELeave ) CAknGridView;
+    CleanupStack::PushL( view );
+    
+    CAknGridView::SGrid gridnumber;
+    gridnumber.iColsInView = KNine;
+    gridnumber.iRowsInView = KNine;
+    gridnumber.iSizeBetweenItems = TSize( KZero, KZero );
+    gridnumber.iSizeOfItems = TSize( KTen, KTen );
+    gridnumber.iPageSize = KOne;
+    gridnumber.iGridDimensions = TSize( KWidth, KHeight );
+    gridnumber.iGridFlags = KOne;
+    
+    view->SetGridDetails( gridnumber );
+    
+    CAknGrid* grid = new( ELeave ) CAknGrid();
+    CleanupStack::PushL( grid );
+    
+    CAknGridM* model = new( ELeave ) CAknGridM();
+    CleanupStack::PushL( model );
+    grid->SetModel( model );
+    CleanupStack::Pop( model );
+    
+    TResourceReader reader;
+    CEikonEnv::Static()->CreateResourceReaderLC( reader, R_TESTSDKGRIDS_GRID );
+    grid->SetContainerWindowL( *iContainer );
+    grid->ConstructFromResourceL( reader );
+    
+    CTextListBoxModel* modeltwo = grid->Model();
+    CListItemDrawer* drawer = grid->ItemDrawer();
+    CWsScreenDevice * screendevice = CEikonEnv::Static()->ScreenDevice();
+    RWindowGroup& parent = CCoeEnv::Static()->RootWin();
+    CEikDialog* mydialog= new(ELeave) CEikDialog; 
+    mydialog->PrepareLC(R_TEST_DIALOG); 
+    RWindow* window = (RWindow*)mydialog->DrawableWindow(); 
+    const TRect rect = iContainer->Rect();
+    view->ConstructL( modeltwo, drawer, screendevice, &parent, window, rect, KTen );
+    
+    view->SetColumnWidth( KTen );
+    TInt columnwidth = view->ColumnWidth();
+    STIF_ASSERT_EQUALS( KTen, columnwidth );
+    
+    view->SetColumnWidth( KWidth );
+    columnwidth = view->ColumnWidth();
+    STIF_ASSERT_EQUALS( KWidth, columnwidth );
+    
+    CleanupStack::PopAndDestroy( mydialog );
+    CleanupStack::PopAndDestroy();
+    CleanupStack::PopAndDestroy( grid );
+    CleanupStack::Pop( view );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewMoveCursorLL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewMoveCursorLL( CStifItemParser& /*aItem*/ )
+    {
+    CAknGrid* grid = new( ELeave ) CAknGrid();
+    CleanupStack::PushL( grid );
+    
+    CAknGridM* model = new( ELeave ) CAknGridM();
+    CleanupStack::PushL( model );
+    grid->SetModel( model );
+    CleanupStack::Pop( model );
+    TResourceReader reader;
+    grid->SetContainerWindowL( *iContainer );
+    CEikonEnv::Static()->CreateResourceReaderLC( reader, R_TESTSDKGRIDS_GRID );
+    grid->ConstructFromResourceL( reader );
+    CleanupStack::PopAndDestroy();
+    
+    grid->GridView()->MoveCursorL( CListBoxView::ECursorFirstItem, CListBoxView::ENoSelection );
+    
+    CleanupStack::PopAndDestroy( grid );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewDrawL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewDrawL( CStifItemParser& /*aItem*/ )
+    {
+    CAknGridView* view = new( ELeave ) CAknGridView;
+    CleanupStack::PushL( view );
+    
+    CAknGridView::SGrid gridnumber;
+    gridnumber.iColsInView = KNine;
+    gridnumber.iRowsInView = KNine;
+    gridnumber.iSizeBetweenItems = TSize( KZero, KZero );
+    gridnumber.iSizeOfItems = TSize( KTen, KTen );
+    gridnumber.iPageSize = KOne;
+    gridnumber.iGridDimensions = TSize( KWidth, KHeight );
+    gridnumber.iGridFlags = KOne;
+    
+    view->SetGridDetails( gridnumber );
+    
+    CAknGrid* grid = new( ELeave ) CAknGrid();
+    CleanupStack::PushL( grid );
+    
+    CAknGridM* model = new( ELeave ) CAknGridM();
+    CleanupStack::PushL( model );
+    grid->SetModel( model );
+    CleanupStack::Pop( model );
+    
+    TResourceReader reader;
+    CEikonEnv::Static()->CreateResourceReaderLC( reader, R_TESTSDKGRIDS_GRID );
+    grid->SetContainerWindowL( *iContainer );
+    grid->ConstructFromResourceL( reader );
+    
+    CTextListBoxModel* modeltwo = grid->Model();
+    CListItemDrawer* drawer = grid->ItemDrawer();
+    CWsScreenDevice * screendevice = CEikonEnv::Static()->ScreenDevice();
+    RWindowGroup& parent = CCoeEnv::Static()->RootWin();
+    CEikDialog* mydialog= new(ELeave) CEikDialog; 
+    mydialog->PrepareLC(R_TEST_DIALOG); 
+    RWindow* window = (RWindow*)mydialog->DrawableWindow(); 
+    const TRect rect = iContainer->Rect();
+    view->ConstructL( modeltwo, drawer, screendevice, &parent, window, rect, KTen );
+    
+    view->Draw();
+    TRect drawrect = iContainer->Rect();
+    TRect* drawrectptr = &drawrect;
+    view->Draw( drawrectptr );
+    
+    CleanupStack::PopAndDestroy( mydialog );
+    CleanupStack::PopAndDestroy();
+    CleanupStack::PopAndDestroy( grid );
+    CleanupStack::Pop( view );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewDrawItemL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewDrawItemL( CStifItemParser& /*aItem*/ )
+    {
+    CAknGrid* grid = new( ELeave ) CAknGrid();
+    CleanupStack::PushL( grid );
+    
+    CAknGridM* model = new( ELeave ) CAknGridM();
+    CleanupStack::PushL( model );
+    grid->SetModel( model );
+    CleanupStack::Pop( model );
+    TResourceReader reader;
+    grid->SetContainerWindowL( *iContainer );
+    CEikonEnv::Static()->CreateResourceReaderLC( reader, R_TESTSDKGRIDS_GRID );
+    grid->ConstructFromResourceL( reader );
+    CleanupStack::PopAndDestroy();
+    
+    grid->GridView()->DrawItem( 0 );
+    
+    CleanupStack::PopAndDestroy( grid );
+    return KErrNone;
+    
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewItemPosL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewItemPosL( CStifItemParser& /*aItem*/ )
+    {
+    CAknGridView* view = new( ELeave ) CAknGridView;
+    CleanupStack::PushL( view );
+    
+    CAknGridView::SGrid gridnumber;
+    gridnumber.iColsInView = KNine;
+    gridnumber.iRowsInView = KNine;
+    gridnumber.iSizeBetweenItems = TSize( KZero, KZero );
+    gridnumber.iSizeOfItems = TSize( KTen, KTen );
+    gridnumber.iPageSize = KOne;
+    gridnumber.iGridDimensions = TSize( KWidth, KHeight );
+    gridnumber.iGridFlags = KOne;
+    
+    view->SetGridDetails( gridnumber );
+    
+    TPoint topleftpoint = view->ItemPos( KZero );
+    STIF_ASSERT_EQUALS( TPoint( KZero, KZero ), topleftpoint );
+    
+    topleftpoint = view->ItemPos( KOne );
+    STIF_ASSERT_NOT_EQUALS( TPoint( KZero, KZero ), topleftpoint );
+    
+    gridnumber.iGridFlags = KZero;
+    view->SetGridDetails( gridnumber );
+    
+    topleftpoint = view->ItemPos( KZero );
+    STIF_ASSERT_EQUALS( TPoint( KZero, KZero ), topleftpoint );
+    
+    topleftpoint = view->ItemPos( KOne );
+    STIF_ASSERT_NOT_EQUALS( TPoint( KZero, KZero ), topleftpoint );
+    
+    CleanupStack::PopAndDestroy( view );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewCalcBottomItemIndexL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewCalcBottomItemIndexL( CStifItemParser& /*aItem*/ )
+    {
+    CAknGridView* view = new( ELeave ) CAknGridView;
+    CleanupStack::PushL( view );
+    
+    CAknGridView::SGrid gridnumber;
+    gridnumber.iColsInView = KNine;
+    gridnumber.iRowsInView = KNine;
+    gridnumber.iSizeBetweenItems = TSize( KZero, KZero );
+    gridnumber.iSizeOfItems = TSize( KTen, KTen );
+    gridnumber.iPageSize = KOne;
+    gridnumber.iGridDimensions = TSize( KWidth, KHeight );
+    gridnumber.iGridFlags = KOne;
+    
+    view->SetGridDetails( gridnumber );
+    
+    CAknGrid* grid = new( ELeave ) CAknGrid();
+    CleanupStack::PushL( grid );
+    
+    CAknGridM* model = new( ELeave ) CAknGridM();
+    CleanupStack::PushL( model );
+    grid->SetModel( model );
+    CleanupStack::Pop( model );
+    
+    TResourceReader reader;
+    CEikonEnv::Static()->CreateResourceReaderLC( reader, R_TESTSDKGRIDS_GRID );
+    grid->SetContainerWindowL( *iContainer );
+    grid->ConstructFromResourceL( reader );
+    
+    CTextListBoxModel* modeltwo = grid->Model();
+    CListItemDrawer* drawer = grid->ItemDrawer();
+    CWsScreenDevice * screendevice = CEikonEnv::Static()->ScreenDevice();
+    RWindowGroup& parent = CCoeEnv::Static()->RootWin();
+    CEikDialog* mydialog= new(ELeave) CEikDialog; 
+    mydialog->PrepareLC(R_TEST_DIALOG); 
+    RWindow* window = (RWindow*)mydialog->DrawableWindow(); 
+    const TRect rect = iContainer->Rect();
+    view->ConstructL( modeltwo, drawer, screendevice, &parent, window, rect, KTen );
+        
+    view->CalcBottomItemIndex();
+    
+    CleanupStack::PopAndDestroy( mydialog );
+    CleanupStack::PopAndDestroy();
+    CleanupStack::PopAndDestroy( grid );
+    CleanupStack::Pop( view );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewCalcNewTopItemIndexSoItemIsVisibleL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewCalcNewTopItemIndexSoItemIsVisibleL( CStifItemParser& /*aItem*/ )
+    {
+    CAknGridView* view = new( ELeave ) CAknGridView;
+    CleanupStack::PushL( view );
+    
+    CAknGridView::SGrid gridnumber;
+    gridnumber.iColsInView = KNine;
+    gridnumber.iRowsInView = KNine;
+    gridnumber.iSizeBetweenItems = TSize( KZero, KZero );
+    gridnumber.iSizeOfItems = TSize( KTen, KTen );
+    gridnumber.iPageSize = KOne;
+    gridnumber.iGridDimensions = TSize( KWidth, KHeight );
+    gridnumber.iGridFlags = KOne;
+    
+    view->SetGridDetails( gridnumber );
+    
+    CAknGrid* grid = new( ELeave ) CAknGrid();
+    CleanupStack::PushL( grid );
+    
+    CAknGridM* model = new( ELeave ) CAknGridM();
+    CleanupStack::PushL( model );
+    grid->SetModel( model );
+    CleanupStack::Pop( model );
+    
+    TResourceReader reader;
+    CEikonEnv::Static()->CreateResourceReaderLC( reader, R_TESTSDKGRIDS_GRID );
+    grid->SetContainerWindowL( *iContainer );
+    grid->ConstructFromResourceL( reader );
+    
+    CTextListBoxModel* modeltwo = grid->Model();
+    CListItemDrawer* drawer = grid->ItemDrawer();
+    CWsScreenDevice * screendevice = CEikonEnv::Static()->ScreenDevice();
+    RWindowGroup& parent = CCoeEnv::Static()->RootWin();
+    CEikDialog* mydialog= new(ELeave) CEikDialog; 
+    mydialog->PrepareLC(R_TEST_DIALOG); 
+    RWindow* window = (RWindow*)mydialog->DrawableWindow(); 
+    const TRect rect = iContainer->Rect();
+    view->ConstructL( modeltwo, drawer, screendevice, &parent, window, rect, KTen );
+    
+    TInt topitemindex = view->CalcNewTopItemIndexSoItemIsVisible( KZero );
+    STIF_ASSERT_EQUALS( KZero, topitemindex );
+    
+    topitemindex = view->CalcNewTopItemIndexSoItemIsVisible( KOne );
+    STIF_ASSERT_NOT_EQUALS( KZero, topitemindex );
+    
+    view->SetTopItemIndex( KTwo );
+    topitemindex = view->CalcNewTopItemIndexSoItemIsVisible( KOne );
+    STIF_ASSERT_EQUALS( KZero, topitemindex );
+    
+    gridnumber.iGridFlags = KZero;
+    view->SetGridDetails( gridnumber );
+    
+    topitemindex = view->CalcNewTopItemIndexSoItemIsVisible( KOne );
+    STIF_ASSERT_EQUALS( KZero, topitemindex );
+    
+    view->SetTopItemIndex( KZero );
+    topitemindex = view->CalcNewTopItemIndexSoItemIsVisible( KOne );
+    STIF_ASSERT_NOT_EQUALS( KZero, topitemindex );
+    
+    CleanupStack::PopAndDestroy( mydialog );
+    CleanupStack::PopAndDestroy();
+    CleanupStack::PopAndDestroy( grid );
+    CleanupStack::Pop( view );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewDrawItemRangeL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewDrawItemRangeL( CStifItemParser& /*aItem*/ )
+    {
+    CAknGridView* view = new( ELeave ) CAknGridView;
+    CleanupStack::PushL( view );
+    
+    CAknGridView::SGrid gridnumber;
+    gridnumber.iColsInView = KNine;
+    gridnumber.iRowsInView = KNine;
+    gridnumber.iSizeBetweenItems = TSize( KZero, KZero );
+    gridnumber.iSizeOfItems = TSize( KTen, KTen );
+    gridnumber.iPageSize = KOne;
+    gridnumber.iGridDimensions = TSize( KWidth, KHeight );
+    gridnumber.iGridFlags = KOne;
+    
+    view->SetGridDetails( gridnumber );
+    
+    CAknGrid* grid = new( ELeave ) CAknGrid();
+    CleanupStack::PushL( grid );
+    
+    CAknGridM* model = new( ELeave ) CAknGridM();
+    CleanupStack::PushL( model );
+    grid->SetModel( model );
+    CleanupStack::Pop( model );
+    
+    TResourceReader reader;
+    CEikonEnv::Static()->CreateResourceReaderLC( reader, R_TESTSDKGRIDS_GRID );
+    grid->SetContainerWindowL( *iContainer );
+    grid->ConstructFromResourceL( reader );
+    
+    CTextListBoxModel* modeltwo = grid->Model();
+    CListItemDrawer* drawer = grid->ItemDrawer();
+    CWsScreenDevice * screendevice = CEikonEnv::Static()->ScreenDevice();
+    RWindowGroup& parent = CCoeEnv::Static()->RootWin();
+    CEikDialog* mydialog= new(ELeave) CEikDialog; 
+    mydialog->PrepareLC(R_TEST_DIALOG); 
+    RWindow* window = (RWindow*)mydialog->DrawableWindow(); 
+    const TRect rect = iContainer->Rect();
+    view->ConstructL( modeltwo, drawer, screendevice, &parent, window, rect, KTen );
+    
+    view->DrawItemRange( KZero, KTen );
+    
+    CleanupStack::PopAndDestroy( mydialog );
+    CleanupStack::PopAndDestroy();
+    CleanupStack::PopAndDestroy( grid );
+    CleanupStack::Pop( view );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewColumnWidthL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewColumnWidthL( CStifItemParser& aItem )
+    {
+    TInt err = TestGridsGridviewSetColumnWidthL( aItem );
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewSetTopItemIndexL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewSetTopItemIndexL( CStifItemParser& aItem )
+    {
+    TInt err = TestGridsGridviewCalcNewTopItemIndexSoItemIsVisibleL( aItem );
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewSetItemHeightL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewSetItemHeightL( CStifItemParser& /*aItem*/ )
+    {
+    CAknGridView* view = new( ELeave ) CAknGridView;
+    CleanupStack::PushL( view );
+    
+    CAknGridView::SGrid gridnumber;
+    gridnumber.iColsInView = KNine;
+    gridnumber.iRowsInView = KNine;
+    gridnumber.iSizeBetweenItems = TSize( KZero, KZero );
+    gridnumber.iSizeOfItems = TSize( KTen, KTen );
+    gridnumber.iPageSize = KOne;
+    gridnumber.iGridDimensions = TSize( KWidth, KHeight );
+    gridnumber.iGridFlags = KOne;
+    
+    view->SetGridDetails( gridnumber );
+    
+    CAknGrid* grid = new( ELeave ) CAknGrid();
+    CleanupStack::PushL( grid );
+    
+    CAknGridM* model = new( ELeave ) CAknGridM();
+    CleanupStack::PushL( model );
+    grid->SetModel( model );
+    CleanupStack::Pop( model );
+    
+    TResourceReader reader;
+    CEikonEnv::Static()->CreateResourceReaderLC( reader, R_TESTSDKGRIDS_GRID );
+    grid->SetContainerWindowL( *iContainer );
+    grid->ConstructFromResourceL( reader );
+    
+    CTextListBoxModel* modeltwo = grid->Model();
+    CListItemDrawer* drawer = grid->ItemDrawer();
+    CWsScreenDevice * screendevice = CEikonEnv::Static()->ScreenDevice();
+    RWindowGroup& parent = CCoeEnv::Static()->RootWin();
+    CEikDialog* mydialog= new(ELeave) CEikDialog; 
+    mydialog->PrepareLC(R_TEST_DIALOG); 
+    RWindow* window = (RWindow*)mydialog->DrawableWindow(); 
+    const TRect rect = iContainer->Rect();
+    view->ConstructL( modeltwo, drawer, screendevice, &parent, window, rect, KTen );
+    
+    CStifGridView* stifgridview = static_cast<CStifGridView*>( view );
+    
+    TInt griditemheight = stifgridview->GetItemHeight();
+    STIF_ASSERT_EQUALS( KTen, griditemheight );
+    
+    view->SetItemHeight( KOne );
+    griditemheight = stifgridview->GetItemHeight();
+    STIF_ASSERT_EQUALS( KOne, griditemheight );
+    
+    CleanupStack::PopAndDestroy( mydialog );
+    CleanupStack::PopAndDestroy();
+    CleanupStack::PopAndDestroy( grid );
+    CleanupStack::Pop( view );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewXYPosToItemIndexL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewXYPosToItemIndexL( CStifItemParser& /*aItem*/ )
+    {
+    CAknGridView* view = new( ELeave ) CAknGridView;
+    CleanupStack::PushL( view );
+    
+    CAknGridView::SGrid gridnumber;
+    gridnumber.iColsInView = KNine;
+    gridnumber.iRowsInView = KNine;
+    gridnumber.iSizeBetweenItems = TSize( KZero, KZero );
+    gridnumber.iSizeOfItems = TSize( KTen, KTen );
+    gridnumber.iPageSize = KOne;
+    gridnumber.iGridDimensions = TSize( KWidth, KHeight );
+    gridnumber.iGridFlags = KOne;
+    
+    view->SetGridDetails( gridnumber );
+    
+    CAknGrid* grid = new( ELeave ) CAknGrid();
+    CleanupStack::PushL( grid );
+    
+    CAknGridM* model = new( ELeave ) CAknGridM();
+    CleanupStack::PushL( model );
+    grid->SetModel( model );
+    CleanupStack::Pop( model );
+    
+    TResourceReader reader;
+    CEikonEnv::Static()->CreateResourceReaderLC( reader, R_TESTSDKGRIDS_GRID );
+    grid->SetContainerWindowL( *iContainer );
+    grid->ConstructFromResourceL( reader );
+    
+    CTextListBoxModel* modeltwo = grid->Model();
+    CListItemDrawer* drawer = grid->ItemDrawer();
+    CWsScreenDevice * screendevice = CEikonEnv::Static()->ScreenDevice();
+    RWindowGroup& parent = CCoeEnv::Static()->RootWin();
+    CEikDialog* mydialog= new(ELeave) CEikDialog; 
+    mydialog->PrepareLC(R_TEST_DIALOG); 
+    RWindow* window = (RWindow*)mydialog->DrawableWindow(); 
+    const TRect rect = iContainer->Rect();
+    view->ConstructL( modeltwo, drawer, screendevice, &parent, window, rect, KTen );
+    
+    TInt returnitem( KZero );
+    TBool flag = view->XYPosToItemIndex( TPoint( KOne, KTen ), returnitem );
+    STIF_ASSERT_FALSE( flag );
+    STIF_ASSERT_EQUALS( KZero, returnitem );
+    
+    
+    CleanupStack::PopAndDestroy( mydialog );
+    CleanupStack::PopAndDestroy();
+    CleanupStack::PopAndDestroy( grid );
+    CleanupStack::Pop( view );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewCalcDataWidthL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewCalcDataWidthL( CStifItemParser& /*aItem*/ )
+    {
+    CAknGridView* view = new( ELeave ) CAknGridView;
+    CleanupStack::PushL( view );
+    
+    CAknGridView::SGrid gridnumber;
+    gridnumber.iColsInView = KNine;
+    gridnumber.iRowsInView = KNine;
+    gridnumber.iSizeBetweenItems = TSize( KZero, KZero );
+    gridnumber.iSizeOfItems = TSize( KTen, KTen );
+    gridnumber.iPageSize = KOne;
+    gridnumber.iGridDimensions = TSize( KWidth, KHeight );
+    gridnumber.iGridFlags = KOne;
+    
+    view->SetGridDetails( gridnumber );
+    
+    CStifGridView* stifgridview = static_cast<CStifGridView*>( view );
+    view->CalcDataWidth();
+    TInt datawidth = stifgridview->GetDataWidth();
+    STIF_ASSERT_EQUALS( KWidth, datawidth );
+    
+    gridnumber.iGridDimensions = TSize( KTen, KHeight );
+    view->SetGridDetails( gridnumber );
+    
+    view->CalcDataWidth();
+    datawidth = stifgridview->GetDataWidth();
+    STIF_ASSERT_EQUALS( KTen, datawidth );
+    
+    CleanupStack::PopAndDestroy( view );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewVisibleWidthL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewVisibleWidthL( CStifItemParser& /*aItem*/ )
+    {
+    CAknGridView* view = new( ELeave ) CAknGridView;
+    CleanupStack::PushL( view );
+    
+    CAknGridView::SGrid gridnumber;
+    gridnumber.iColsInView = KNine;
+    gridnumber.iRowsInView = KNine;
+    gridnumber.iSizeBetweenItems = TSize( KZero, KZero );
+    gridnumber.iSizeOfItems = TSize( KTen, KTen );
+    gridnumber.iPageSize = KOne;
+    gridnumber.iGridDimensions = TSize( KWidth, KHeight );
+    gridnumber.iGridFlags = KOne;
+    
+    view->SetGridDetails( gridnumber );
+    
+    TInt colwidth = view->ColumnWidth();
+    TPoint topleftpoint( KZero, KZero );
+    TPoint bottomrightpoint( KTen, KTen );
+    TRect rect( topleftpoint, bottomrightpoint );
+    
+    TInt visiblewidth = view->VisibleWidth( rect );
+    STIF_ASSERT_EQUALS( KOne, visiblewidth );
+    
+    CleanupStack::PopAndDestroy( view );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewScrollToMakeItemVisibleL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewScrollToMakeItemVisibleL( CStifItemParser& /*aItem*/ )
+    {
+    CAknGrid* grid = new( ELeave ) CAknGrid();
+    CleanupStack::PushL( grid );
+    
+    CAknGridM* model = new( ELeave ) CAknGridM();
+    CleanupStack::PushL( model );
+    grid->SetModel( model );
+    CleanupStack::Pop( model );
+    TResourceReader reader;
+    grid->SetContainerWindowL( *iContainer );
+    CEikonEnv::Static()->CreateResourceReaderLC( reader, R_TESTSDKGRIDS_GRID );
+    grid->ConstructFromResourceL( reader );
+    CleanupStack::PopAndDestroy();
+    
+    grid->GridView()->ScrollToMakeItemVisible( 0 );
+    
+    CleanupStack::PopAndDestroy( grid );
+    return KErrNone;
+
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewCalculateHScrollOffsetSoItemIsVisibleL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewCalculateHScrollOffsetSoItemIsVisibleL( CStifItemParser& /*aItem*/ )
+    {
+    CAknGridView* view = new( ELeave ) CAknGridView;
+    CleanupStack::PushL( view );
+    
+    CAknGridView::SGrid gridnumber;
+    gridnumber.iColsInView = KNine;
+    gridnumber.iRowsInView = KNine;
+    gridnumber.iSizeBetweenItems = TSize( KZero, KZero );
+    gridnumber.iSizeOfItems = TSize( KTen, KTen );
+    gridnumber.iPageSize = KOne;
+    gridnumber.iGridDimensions = TSize( KWidth, KHeight );
+    gridnumber.iGridFlags = KOne;
+    
+    view->SetGridDetails( gridnumber );
+    
+    CAknGrid* grid = new( ELeave ) CAknGrid();
+    CleanupStack::PushL( grid );
+    
+    CAknGridM* model = new( ELeave ) CAknGridM();
+    CleanupStack::PushL( model );
+    grid->SetModel( model );
+    CleanupStack::Pop( model );
+    
+    TResourceReader reader;
+    CEikonEnv::Static()->CreateResourceReaderLC( reader, R_TESTSDKGRIDS_GRID );
+    grid->SetContainerWindowL( *iContainer );
+    grid->ConstructFromResourceL( reader );
+    
+    CTextListBoxModel* modeltwo = grid->Model();
+    CListItemDrawer* drawer = grid->ItemDrawer();
+    CWsScreenDevice * screendevice = CEikonEnv::Static()->ScreenDevice();
+    RWindowGroup& parent = CCoeEnv::Static()->RootWin();
+    CEikDialog* mydialog= new(ELeave) CEikDialog; 
+    mydialog->PrepareLC(R_TEST_DIALOG); 
+    RWindow* window = (RWindow*)mydialog->DrawableWindow(); 
+    const TRect rect = iContainer->Rect();
+    view->ConstructL( modeltwo, drawer, screendevice, &parent, window, rect, KTen );
+    
+    TInt needredraw = view->CalculateHScrollOffsetSoItemIsVisible( KZero );
+    STIF_ASSERT_EQUALS( KZero, needredraw );
+    
+    needredraw = view->CalculateHScrollOffsetSoItemIsVisible( 50 );
+    STIF_ASSERT_NOT_EQUALS( KZero, needredraw );
+    
+    gridnumber.iGridFlags = KZero;
+    view->SetGridDetails( gridnumber );
+    
+    needredraw = view->CalculateHScrollOffsetSoItemIsVisible( KZero );
+    STIF_ASSERT_EQUALS( KZero, needredraw );
+    
+    needredraw = view->CalculateHScrollOffsetSoItemIsVisible( 50 );
+    STIF_ASSERT_NOT_EQUALS( KZero, needredraw );
+    
+    CleanupStack::PopAndDestroy( mydialog );
+    CleanupStack::PopAndDestroy();
+    CleanupStack::PopAndDestroy( grid );
+    CleanupStack::Pop( view );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewItemSizeL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewItemSizeL( CStifItemParser& /*aItem*/ )
+    {
+    CAknGridView* view = new( ELeave ) CAknGridView;
+    CleanupStack::PushL( view );
+    
+    CAknGridView::SGrid gridnumber;
+    gridnumber.iColsInView = KNine;
+    gridnumber.iRowsInView = KNine;
+    gridnumber.iSizeBetweenItems = TSize( KZero, KZero );
+    gridnumber.iSizeOfItems = TSize( KTen, KTen );
+    gridnumber.iPageSize = KOne;
+    gridnumber.iGridDimensions = TSize( KWidth, KHeight );
+    gridnumber.iGridFlags = KOne;
+    
+    view->SetGridDetails( gridnumber );
+    
+    TSize returnitemsize = view->ItemSize( KZero );
+    STIF_ASSERT_EQUALS( TSize( KTen, KTwenty), returnitemsize );
+    
+    gridnumber.iSizeOfItems = TSize( KThree, KThree );
+    view->SetGridDetails( gridnumber );
+    
+    returnitemsize = view->ItemSize( KZero );
+    STIF_ASSERT_EQUALS( TSize( KThree, KTwenty), returnitemsize );
+    
+    returnitemsize = view->ItemSize( KThree );
+    STIF_ASSERT_EQUALS( TSize( KThree, KTwenty), returnitemsize );
+    
+    CleanupStack::PopAndDestroy( view );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewCalcRowAndColIndexesFromItemIndexL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewCalcRowAndColIndexesFromItemIndexL( CStifItemParser& aItem )
+    {
+    TInt err = TestGridsGridviewItemPosL( aItem );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewCalcItemIndexFromRowAndColIndexesL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewCalcItemIndexFromRowAndColIndexesL( CStifItemParser& /*aItem*/ )
+    {
+    CAknGridView* view = new( ELeave ) CAknGridView;
+    CleanupStack::PushL( view );
+    
+    CAknGridView::SGrid gridnumber;
+    gridnumber.iColsInView = KNine;
+    gridnumber.iRowsInView = KNine;
+    gridnumber.iSizeBetweenItems = TSize( KZero, KZero );
+    gridnumber.iSizeOfItems = TSize( KTen, KTen );
+    gridnumber.iPageSize = KOne;
+    gridnumber.iGridDimensions = TSize( KWidth, KHeight );
+    gridnumber.iGridFlags = KOne;
+    
+    view->SetGridDetails( gridnumber );
+    
+    TInt resultitemindex( KZero );
+    view->CalcItemIndexFromRowAndColIndexes( resultitemindex, KOne, KTen );
+    STIF_ASSERT_NOT_EQUALS( KZero, resultitemindex );
+    
+    view->CalcItemIndexFromRowAndColIndexes( resultitemindex, KZero, KZero );
+    STIF_ASSERT_EQUALS( KZero, resultitemindex );
+    
+    gridnumber.iGridFlags = KZero;
+    view->SetGridDetails( gridnumber );
+    
+    view->CalcItemIndexFromRowAndColIndexes( resultitemindex, KOne, KTen );
+    STIF_ASSERT_NOT_EQUALS( KZero, resultitemindex );
+    
+    view->CalcItemIndexFromRowAndColIndexes( resultitemindex, KZero, KZero );
+    STIF_ASSERT_EQUALS( KZero, resultitemindex );
+    
+    CleanupStack::PopAndDestroy( view );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewDrawColumnRangeL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewDrawColumnRangeL( CStifItemParser& /*aItem*/ )
+    {
+    CAknGridView* view = new( ELeave ) CAknGridView;
+    CleanupStack::PushL( view );
+    
+    CAknGridView::SGrid gridnumber;
+    gridnumber.iColsInView = KNine;
+    gridnumber.iRowsInView = KNine;
+    gridnumber.iSizeBetweenItems = TSize( KZero, KZero );
+    gridnumber.iSizeOfItems = TSize( KTen, KTen );
+    gridnumber.iPageSize = KOne;
+    gridnumber.iGridDimensions = TSize( KWidth, KHeight );
+    gridnumber.iGridFlags = KOne;
+    
+    view->SetGridDetails( gridnumber );
+    
+    CAknGrid* grid = new( ELeave ) CAknGrid();
+    CleanupStack::PushL( grid );
+    
+    CAknGridM* model = new( ELeave ) CAknGridM();
+    CleanupStack::PushL( model );
+    grid->SetModel( model );
+    CleanupStack::Pop( model );
+    
+    TResourceReader reader;
+    CEikonEnv::Static()->CreateResourceReaderLC( reader, R_TESTSDKGRIDS_GRID );
+    grid->SetContainerWindowL( *iContainer );
+    grid->ConstructFromResourceL( reader );
+    
+    CTextListBoxModel* modeltwo = grid->Model();
+    CListItemDrawer* drawer = grid->ItemDrawer();
+    CWsScreenDevice * screendevice = CEikonEnv::Static()->ScreenDevice();
+    RWindowGroup& parent = CCoeEnv::Static()->RootWin();
+    CEikDialog* mydialog= new(ELeave) CEikDialog; 
+    mydialog->PrepareLC(R_TEST_DIALOG); 
+    RWindow* window = (RWindow*)mydialog->DrawableWindow(); 
+    const TRect rect = iContainer->Rect();
+    view->ConstructL( modeltwo, drawer, screendevice, &parent, window, rect, KTen );
+    CStifGridView* stifgridview = static_cast<CStifGridView*>( view );
+    
+    stifgridview->DoDrawColumnRange( KZero, KTen );
+    view->SetItemHeight( KZero );
+    stifgridview->DoDrawColumnRange( KZero, KTen );
+    
+    CleanupStack::PopAndDestroy( mydialog );
+    CleanupStack::PopAndDestroy();
+    CleanupStack::PopAndDestroy( grid );
+    CleanupStack::Pop( view );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewClearUnusedItemSpaceL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewClearUnusedItemSpaceL( CStifItemParser& /*aItem*/ )
+    {
+    CAknGridView* view = new( ELeave ) CAknGridView;
+    CleanupStack::PushL( view );
+    
+    CAknGridView::SGrid gridnumber;
+    gridnumber.iColsInView = KNine;
+    gridnumber.iRowsInView = KNine;
+    gridnumber.iSizeBetweenItems = TSize( KZero, KZero );
+    gridnumber.iSizeOfItems = TSize( KTen, KTen );
+    gridnumber.iPageSize = KOne;
+    gridnumber.iGridDimensions = TSize( KWidth, KHeight );
+    gridnumber.iGridFlags = KOne;
+    
+    view->SetGridDetails( gridnumber );
+    
+    CAknGrid* grid = new( ELeave ) CAknGrid();
+    CleanupStack::PushL( grid );
+    
+    CAknGridM* model = new( ELeave ) CAknGridM();
+    CleanupStack::PushL( model );
+    grid->SetModel( model );
+    CleanupStack::Pop( model );
+    
+    TResourceReader reader;
+    CEikonEnv::Static()->CreateResourceReaderLC( reader, R_TESTSDKGRIDS_GRID );
+    grid->SetContainerWindowL( *iContainer );
+    grid->ConstructFromResourceL( reader );
+    
+    CTextListBoxModel* modeltwo = grid->Model();
+    CListItemDrawer* drawer = grid->ItemDrawer();
+    CWsScreenDevice * screendevice = CEikonEnv::Static()->ScreenDevice();
+    RWindowGroup& parent = CCoeEnv::Static()->RootWin();
+    CEikDialog* mydialog= new(ELeave) CEikDialog; 
+    mydialog->PrepareLC(R_TEST_DIALOG); 
+    RWindow* window = (RWindow*)mydialog->DrawableWindow(); 
+    const TRect rect = iContainer->Rect();
+    view->ConstructL( modeltwo, drawer, screendevice, &parent, window, rect, KTen );
+    CStifGridView* stifgridview = static_cast<CStifGridView*>( view );
+    
+    stifgridview->DoClearUnusedItemSpace( KZero, KTen );
+    
+    CleanupStack::PopAndDestroy( mydialog );
+    CleanupStack::PopAndDestroy();
+    CleanupStack::PopAndDestroy( grid );
+    CleanupStack::Pop( view );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewUpdateHScrollOffsetBasedOnTopItemIndexL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewUpdateHScrollOffsetBasedOnTopItemIndexL( CStifItemParser& /*aItem*/ )
+    {
+    CAknGridView* view = new( ELeave ) CAknGridView;
+    CleanupStack::PushL( view );
+    
+    CAknGridView::SGrid gridnumber;
+    gridnumber.iColsInView = KTwo;
+    gridnumber.iRowsInView = KTwo;
+    gridnumber.iSizeBetweenItems = TSize( KZero, KZero );
+    gridnumber.iSizeOfItems = TSize( KTen, KTen );
+    gridnumber.iPageSize = KOne;
+    gridnumber.iGridDimensions = TSize( KWidth, KHeight );
+    gridnumber.iGridFlags = KOne;
+    
+    view->SetGridDetails( gridnumber );
+    
+    CAknGrid* grid = new( ELeave ) CAknGrid();
+    CleanupStack::PushL( grid );
+    
+    CAknGridM* model = new( ELeave ) CAknGridM();
+    CleanupStack::PushL( model );
+    grid->SetModel( model );
+    CleanupStack::Pop( model );
+    
+    TResourceReader reader;
+    CEikonEnv::Static()->CreateResourceReaderLC( reader, R_TESTSDKGRIDS_GRID );
+    grid->SetContainerWindowL( *iContainer );
+    grid->ConstructFromResourceL( reader );
+    
+    CTextListBoxModel* modeltwo = grid->Model();
+    CListItemDrawer* drawer = grid->ItemDrawer();
+    CWsScreenDevice * screendevice = CEikonEnv::Static()->ScreenDevice();
+    RWindowGroup& parent = CCoeEnv::Static()->RootWin();
+    CEikDialog* mydialog= new(ELeave) CEikDialog; 
+    mydialog->PrepareLC(R_TEST_DIALOG); 
+    RWindow* window = (RWindow*)mydialog->DrawableWindow(); 
+    const TRect rect = iContainer->Rect();
+    view->ConstructL( modeltwo, drawer, screendevice, &parent, window, rect, KTen );
+        
+    view->SetTopItemIndex( KTwo );
+    CStifGridView* stifgridview = static_cast<CStifGridView*>( view );
+    
+    stifgridview->DoUpdateHScrollOffsetBasedOnTopItemIndex();
+    TInt offset = stifgridview->GetiHScrollOffset();
+    STIF_ASSERT_EQUALS( KOne, offset );
+    
+    gridnumber.iRowsInView = KOne;
+    view->SetGridDetails( gridnumber );
+    stifgridview->DoUpdateHScrollOffsetBasedOnTopItemIndex();
+    offset = stifgridview->GetiHScrollOffset();
+    STIF_ASSERT_EQUALS( KTwo, offset );
+    
+    CleanupStack::PopAndDestroy( mydialog );
+    CleanupStack::PopAndDestroy();
+    CleanupStack::PopAndDestroy( grid );
+    CleanupStack::Pop( view );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CTestSDKGrids::TestGridsGridviewDoMoveLL
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKGrids::TestGridsGridviewDoMoveLL( CStifItemParser& /*aItem*/ )
+    {
+    CAknGridView* view = new( ELeave ) CAknGridView;
+    CleanupStack::PushL( view );
+    
+    CAknGridView::SGrid gridnumber;
+    gridnumber.iColsInView = KNine;
+    gridnumber.iRowsInView = KNine;
+    gridnumber.iSizeBetweenItems = TSize( KZero, KZero );
+    gridnumber.iSizeOfItems = TSize( KTen, KTen );
+    gridnumber.iPageSize = KOne;
+    gridnumber.iGridDimensions = TSize( KWidth, KHeight );
+    gridnumber.iGridFlags = KOne;
+    
+    view->SetGridDetails( gridnumber );
+    
+    CAknGrid* grid = new( ELeave ) CAknGrid();
+    CleanupStack::PushL( grid );
+        
+    CAknGridM* model = new( ELeave ) CAknGridM();
+    CleanupStack::PushL( model );
+    grid->SetModel( model );
+    CleanupStack::Pop( model );
+    
+    TResourceReader reader;
+    CEikonEnv::Static()->CreateResourceReaderLC( reader, R_TESTSDKGRIDS_GRID );
+    grid->SetContainerWindowL( *iContainer );
+    grid->ConstructFromResourceL( reader );
+    
+    CTextListBoxModel* modeltwo = grid->Model();
+    CListItemDrawer* drawer = grid->ItemDrawer();
+    CWsScreenDevice * screendevice = CEikonEnv::Static()->ScreenDevice();
+    RWindowGroup& parent = CCoeEnv::Static()->RootWin();
+    CEikDialog* mydialog= new(ELeave) CEikDialog; 
+    mydialog->PrepareLC(R_TEST_DIALOG); 
+    RWindow* window = (RWindow*)mydialog->DrawableWindow(); 
+    const TRect rect = iContainer->Rect();
+    view->ConstructL( modeltwo, drawer, screendevice, &parent, window, rect, KTen );
+        
+    CStifGridView* stifgridview = static_cast<CStifGridView*>( view );
+    
+    stifgridview->DoDoMoveL( CListBoxView::ECursorNextItem, CListBoxView::ESingleSelection );
+    stifgridview->DoDoMoveL( CListBoxView::ECursorNextScreen, CListBoxView::ESingleSelection );
+    
+    gridnumber.iGridFlags = KZero;
+    view->SetGridDetails( gridnumber );
+    
+    stifgridview->DoDoMoveL( CListBoxView::ECursorNextItem, CListBoxView::ESingleSelection );
+    stifgridview->DoDoMoveL( CListBoxView::ECursorNextScreen, CListBoxView::ESingleSelection );
+    
+    CleanupStack::PopAndDestroy( mydialog );
+    CleanupStack::PopAndDestroy();
+    CleanupStack::PopAndDestroy( grid );
+    CleanupStack::Pop( view );
+    return KErrNone;
+    }
+
+/*
+ * End files
+ */