// EIKTXLBX.CPP
//
// Copyright (c) 1997-1999 Symbian Ltd.  All rights reserved.
//
			  
#include <e32base.h>
#include <e32keys.h>

#include <bamatch.h>
#include <badesca.h>
#include <barsread.h>

#include <eiktxlbx.h>
#include <eiklbv.h>
#include <eiklbi.h>
#include <eiktxlbm.h>
#include <eikenv.h>
#include <eikpanic.h>
#include <w32std.h> 


EXPORT_C CEikTextListBox::CEikTextListBox()
    {
    }

EXPORT_C CEikTextListBox::~CEikTextListBox()
    {
    }

EXPORT_C void CEikTextListBox::CreateItemDrawerL()
	{
	iItemDrawer = new(ELeave) CTextListItemDrawer((CTextListBoxModel*)iModel,iEikonEnv->NormalFont());
	}

EXPORT_C void CEikTextListBox::ConstructFromResourceL(TResourceReader& aReader)
    {
	RestoreCommonListBoxPropertiesL(aReader);
	iRequiredCellCharWidth = aReader.ReadInt16();
    TInt array_id = aReader.ReadInt32();
    if (array_id)
		{
		CDesCArray* desArray = iCoeEnv->ReadDesCArrayResourceL(array_id);
		CleanupStack::PushL(desArray);
		iModel = new(ELeave) CTextListBoxModel;
		((CTextListBoxModel*)iModel)->ConstructL(desArray);
		CleanupStack::Pop();
		}
	else
		{
		iModel = new(ELeave) CTextListBoxModel;
		((CTextListBoxModel*)iModel)->ConstructL();
		}
	CreateItemDrawerL();
	((CTextListItemDrawer*)iItemDrawer)->SetCellWidthInChars(iRequiredCellCharWidth);
	CreateViewL();
	// HandleItemAdditionL();
    }

EXPORT_C void CEikTextListBox::ConstructL(const CCoeControl* aParent, TInt aFlags)
	{
	iModel = new(ELeave) CTextListBoxModel;
	((CTextListBoxModel*)iModel)->ConstructL();
	CreateItemDrawerL();
	CEikListBox::ConstructL(aParent,aFlags);
	}

EXPORT_C CTextListBoxModel* CEikTextListBox::Model() const
	{
	return (CTextListBoxModel*) iModel;
	}

EXPORT_C void CEikTextListBox::Reserved_3()
	{}


// class CEikSnakingTextListBox

EXPORT_C CEikSnakingTextListBox::CEikSnakingTextListBox()
    {
    }

EXPORT_C CEikSnakingTextListBox::~CEikSnakingTextListBox()
    {
    }

EXPORT_C void CEikSnakingTextListBox::ConstructL(const CCoeControl* aParent, TInt aFlags)
	{
	iModel = new(ELeave) CTextListBoxModel;
	((CTextListBoxModel*)iModel)->ConstructL();
	iItemDrawer = new(ELeave) CTextListItemDrawer((CTextListBoxModel*)iModel, iEikonEnv->NormalFont());
	CEikListBox::ConstructL(aParent, aFlags);
	}

EXPORT_C CTextListBoxModel* CEikSnakingTextListBox::Model() const
	{
	return (CTextListBoxModel*) iModel;
	}

