// EIKFCTRY.CPP
//
// Copyright (c) 1997-1999 Symbian Ltd.  All rights reserved.
//

#include <e32std.h>
#include <eikfctry.h>
#include <eikctrls.hrh>
#include <eikon.rsg>
#include <eikedwin.h>
#include <eikmfne.h>
#include <eikseced.h>
#include <eikchkbx.h>
#include <eikchlst.h>
#include <eikopbut.h>
#include <eikhopbt.h>
#include <eikchred.h>
#include <eikchmap.h>
#include <eiklabel.h>
#include <eikimage.h>
#include <eikimgar.h>
#include <eikcmbox.h>
#include <eiktxlbx.h>
#include <eikprogi.h>
#include <eikfpne.h>
#include <eikbprev.h>
#include <eikfprev.h>
#include <eikrted.h>
#include <eikrnged.h>
#include <eikfsel.h>
#include <eikgysel.h>
#include <eikwsel.h>
#include <eikgted.h>
#include <eiksndsl.h>
#include <eikclock.h>
#include <eikcmbut.h>
#include <eikprtpv.h>
#include <eikmnbut.h>
#include <eikdclbx.h>
#include <eikdtlbx.h>
#include <eikcal.h>
#include <eikspace.h>
#include <eikclb.h>
#include <eiklbbut.h>
#include <eikdlgtb.h>
#include <eikfbrow.h>
#include <eikfnlab.h>
#include <eikufsel.h>
#include <eikteled.h>

EXPORT_C SEikControlInfo EikControlFactory::CreateByTypeL(TInt aControlType)
    {// static
	SEikControlInfo controlInfo;
	controlInfo.iControl = NULL;
	controlInfo.iTrailerTextId = 0;
	controlInfo.iFlags = 0;

    switch (aControlType)
        {
    case EEikCtEdwin:
		controlInfo.iControl = new(ELeave) CEikEdwin;
		break;
	case EEikCtRichTextEditor:
		controlInfo.iControl = new(ELeave) CEikRichTextEditor;
		break;
    case EEikCtSecretEd:
		controlInfo.iControl = new(ELeave) CEikSecretEditor;
		break;
    case EEikCtCheckBox:
		controlInfo.iControl = new(ELeave) CEikCheckBox;
		controlInfo.iFlags = EEikControlHasEars;
		break;
    case EEikCtChoiceList:
		controlInfo.iControl = new(ELeave) CEikChoiceList;
		controlInfo.iFlags = EEikControlHasEars;
		break;
    case EEikCtOptionButton:
		controlInfo.iControl = new(ELeave) CEikOptionButton;
		controlInfo.iFlags = EEikControlHasEars;
		break;
    case EEikCtHorOptionButList:
		controlInfo.iControl = new(ELeave) CEikHorOptionButtonList;
		controlInfo.iFlags = EEikControlHasEars;
		break;
    case EEikCtCharEd:
		controlInfo.iControl = new(ELeave) CEikCharEditor;
		break;
    case EEikCtFileNameSel:
		controlInfo.iControl = new(ELeave) CEikFileNameSelector;
		controlInfo.iFlags = EEikControlHasEars;
		break;
    case EEikCtFolderNameSel:
		controlInfo.iControl = new(ELeave) CEikFolderNameSelector;
		controlInfo.iFlags = EEikControlHasEars;
		break;
    case EEikCtDriveNameSel:
		controlInfo.iControl = new(ELeave) CEikDriveNameSelector;
		controlInfo.iFlags = EEikControlHasEars;
		break;
    case EEikCtFileNameEd:
		controlInfo.iControl = new(ELeave) CEikFileNameEditor;
		break;
    case EEikCtFolderNameEd:
		controlInfo.iControl = new(ELeave) CEikFolderNameEditor;
		break;
    case EEikCtCharMap:
		controlInfo.iControl = new(ELeave) CEikCharMap;
		break;
    case EEikCtListBox:
		controlInfo.iControl = new(ELeave) CEikTextListBox;
		break;
    case EEikCtComboBox:
		controlInfo.iControl = new(ELeave) CEikComboBox;
		break;
    case EEikCtLabel:
		controlInfo.iControl = new(ELeave) CEikLabel;
		controlInfo.iFlags = EEikControlIsNonFocusing|EEikControlHasExtraAscent;
		break;
    case EEikCtImage:
		controlInfo.iControl = new(ELeave) CEikImage;
		controlInfo.iFlags = EEikControlIsNonFocusing;
		break;
    case EEikCtImageArray:
		controlInfo.iControl = new(ELeave) CEikImageArray;
		controlInfo.iFlags = EEikControlIsNonFocusing;
		break;
	case EEikCtProgInfo:
		controlInfo.iControl = new(ELeave) CEikProgressInfo;
		controlInfo.iFlags = EEikControlIsNonFocusing;
		break;
	case EEikCtFlPtEd:
		controlInfo.iControl = new(ELeave) CEikFloatingPointEditor;
		break;
	case EEikCtFxPtEd:
		controlInfo.iControl = new(ELeave) CEikFixedPointEditor;
		break;
	case EEikCtTwipsEd:
		controlInfo.iControl = new(ELeave) CEikTwipsEditor;
		{
		TLocale locale;
		controlInfo.iTrailerTextId = locale.UnitsDistanceShort()==EUnitsMetric? R_EIK_TBUF_CM: R_EIK_TBUF_INCHES;
		}
		break;
	case EEikCtNumberEditor:
		controlInfo.iControl = new(ELeave) CEikNumberEditor;
		controlInfo.iFlags = EEikControlHasEars;
		break;
	case EEikCtRangeEditor:
		controlInfo.iControl = new(ELeave) CEikRangeEditor;
		break;
	case EEikCtTimeEditor:
		controlInfo.iControl = new(ELeave) CEikTimeEditor;
		break;
	case EEikCtDateEditor:
		controlInfo.iControl = new(ELeave) CEikDateEditor;
		break;
	case EEikCtTimeAndDateEditor:
		controlInfo.iControl = new(ELeave) CEikTimeAndDateEditor;
		break;
	case EEikCtDurationEditor:
		controlInfo.iControl = new(ELeave) CEikDurationEditor;
		break;
	case EEikCtTimeOffsetEditor:
		controlInfo.iControl = new(ELeave) CEikTimeOffsetEditor;
		break;
	case EEikCtLatitudeEditor:
		controlInfo.iControl = new(ELeave) CEikLatitudeEditor;
		break;
	case EEikCtLongitudeEditor:
		controlInfo.iControl = new(ELeave) CEikLongitudeEditor;
		break;
	case EEikCtBorderPreview:
		controlInfo.iControl = new(ELeave) CEikBorderPreview;
		controlInfo.iFlags = EEikControlIsNonFocusing;
		break;
	case EEikCtFontPreview:
		controlInfo.iControl = new(ELeave) CEikFontPreviewLabel;
		controlInfo.iFlags = EEikControlIsNonFocusing;
		break;
	case EEikCtGraySelector:
		controlInfo.iControl = new(ELeave) CEikGraySelector;
		controlInfo.iFlags = EEikControlHasEars;
		break;
	case EEikCtWorldSelector:
		controlInfo.iControl = new(ELeave) CEikWorldSelector;
		controlInfo.iFlags = EEikControlHasEars;
		break;
	case EEikCtGlobalTextEditor:
		controlInfo.iControl = new(ELeave) CEikGlobalTextEditor;
		break;
	case EEikCtSoundSelector:
		controlInfo.iControl = new(ELeave) CEikSoundSelector;
		controlInfo.iFlags = EEikControlHasEars;
		break;
	case EEikCtClock:
		controlInfo.iControl = new(ELeave) CEikClock;
		controlInfo.iFlags = EEikControlIsNonFocusing;
		break;
	case EEikCtCommandButton:
		controlInfo.iControl= new(ELeave) CEikCommandButton;
		controlInfo.iFlags = EEikControlIsNonFocusing;
		break;
	case EEikCtPrintPreview:
		controlInfo.iControl= new(ELeave) CEikPrintPreview;
		break;
	case EEikCtMenuButton:
		controlInfo.iControl= new(ELeave) CEikMenuButton;
		break;
	case EEikCtDirContentsListBox:
		controlInfo.iControl = new(ELeave) CEikDirContentsListBox;
		break;
	case EEikCtDirTreeListBox:
		controlInfo.iControl = new(ELeave) CEikDirectoryTreeListBox;
		break;
	case EEikCtCalendar:
		controlInfo.iControl = new(ELeave) CEikCalendar;
		break;
	case EEikCtSpacer:
		controlInfo.iControl = new(ELeave) CEikSpacer;
		controlInfo.iFlags = EEikControlIsNonFocusing;
		break;
	case EEikCtColListBox:
		controlInfo.iControl = new(ELeave) CEikColumnListBox;
		break;
	case EEikCtRangeRefEditor:
		controlInfo.iControl = new(ELeave) CEikRangeRefEditor;
		break;
	case EEikCtTextButton:
		controlInfo.iControl= new(ELeave) CEikTextButton;
		controlInfo.iFlags = EEikControlIsNonFocusing;
		break;
	case EEikCtBitmapButton:
		controlInfo.iControl= new(ELeave) CEikBitmapButton;
		controlInfo.iFlags = EEikControlIsNonFocusing;
		break;
	case EEikCtLabeledButton:
		controlInfo.iControl = new(ELeave) CEikLabeledButton;
		controlInfo.iFlags = EEikControlIsNonFocusing;
		break;
	case EEikCtDialogToolBar:
		controlInfo.iControl = new(ELeave) CEikDialogToolBar;
		controlInfo.iFlags = EEikControlIsNonFocusing;
		break;
	case EEikCtFileBrowser:
		controlInfo.iControl = new(ELeave) CEikFileBrowser;
		break;
	case EEikCtFileNameLabel:
		controlInfo.iControl = new(ELeave) CEikFileNameLabel;
		controlInfo.iFlags = EEikControlIsNonFocusing;
		break;
	case EEikCtUnifiedFileSel:
		controlInfo.iControl = new(ELeave) CEikUnifiedFileNameSelector;
		controlInfo.iFlags = EEikControlHasEars;
		break;
	case EEikCtTelephoneNumberEditor:
		controlInfo.iControl = new(ELeave) CEikTelephoneNumberEditor;
		break;
	default:
		break;
		}	
	return controlInfo;
    }
