uifw/AvKon/src/akngridm.cpp
changeset 0 2f259fa3e83a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uifw/AvKon/src/akngridm.cpp	Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,155 @@
+/*
+* Copyright (c) 2002 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: 
+*     This class is an extension of the text list
+*     model class. It is designed specifically to be used with
+*     the grid class and the grid view class.
+*
+*/
+
+
+// AknGridM.cpp
+//
+// Copyright (c) 1997-2001 Symbian Ltd.  All rights reserved.
+//
+
+#include <AknGridM.h>
+#include "akntrace.h"
+
+/**
+ * Constructor
+ */
+EXPORT_C CAknGridM::CAknGridM()
+    {
+    }
+
+/**
+ * Destructor
+ */
+EXPORT_C CAknGridM::~CAknGridM()
+	{
+	}
+
+/**
+ * @return Number of the non empty cells in the grid.
+ */
+EXPORT_C TInt CAknGridM::NumberOfData() const
+	{
+	return iItemTextArray->MdcaCount();
+	}
+
+/**
+ * Altered version of the CTextListBoxModel::NumberOfItems method.
+ * This ensures that the functionality of the parental list
+ * box code will work correctly with the layout of a
+ * grid.
+ * @return Number of cells within the grid (including
+ * empty cells).
+ */
+EXPORT_C TInt CAknGridM::NumberOfItems() const
+	{
+	// number of items now data + empty cells - therefore
+	// will always be a mapping between list box index and
+	// actual data index
+
+	TInt numberOfCells = NumberOfData();
+
+	// add on empty cells
+	numberOfCells += iEmptyCellsAtStart;
+	_AKNTRACE( "[%s] number of items are %d", 
+			   __FUNCTION__, numberOfCells );
+	return numberOfCells;
+	}
+
+/**
+ * @return ETrue if the data index given is a data cell within the
+ * grid otherwise EFalse.
+ */
+EXPORT_C TBool CAknGridM::IndexContainsData(TInt aDataIndex) const
+	{
+	TInt numOfData = NumberOfData();
+
+	// check data in array
+	if (numOfData == 0)
+		{
+		return EFalse;
+		}
+
+	// check index is in range
+	if (aDataIndex >= (numOfData + iEmptyCellsAtStart))
+		{
+		return EFalse;
+		}
+
+	// check index is not an empty start cell
+	return (aDataIndex >= iEmptyCellsAtStart);
+	}
+
+/**
+ * @return TPtr to the associated item text for a cell. Note
+ * it assumes that the item index is a valid grid index. A
+ * check should be made using IndexContainsData before the
+ * function is called.
+ * 
+ * <p>Beware that if you have empty cells at the start that the
+ * index given should take these in account.
+ */
+EXPORT_C TPtrC CAknGridM::ItemText(TInt aItemIndex) const
+	{
+	TInt realIndex = aItemIndex - iEmptyCellsAtStart;
+	return iItemTextArray->MdcaPoint(realIndex);
+	}
+
+/**
+ * Sets the number of empty cells at the start of the grid.
+ */
+EXPORT_C void CAknGridM::SetStartCells(TInt aNumEmpty)
+	{
+	iEmptyCellsAtStart = aNumEmpty;
+	}
+
+/**
+ * @return Index of the first data item if data exists in
+ * model or -1 if no data exists.
+ */
+EXPORT_C TInt CAknGridM::IndexOfFirstDataItem() const
+	{
+	if (NumberOfData())
+		{
+		return iEmptyCellsAtStart;
+		}
+	else
+		{
+		return -1;
+		}
+	}
+
+/**
+ * @return Index of the last data item if data exists in
+ * model or -1 if no data exists.
+ */
+EXPORT_C TInt CAknGridM::IndexOfLastDataItem() const
+	{
+	TInt gridCheck = NumberOfData();
+	if (gridCheck > 0)
+		{
+		return (gridCheck + iEmptyCellsAtStart - 1);
+		}
+	else
+		{
+		return -1;
+		}
+	}
+
+// End of File