// TSHOWDLG.CPP
//
// Copyright (c) 1997-1999 Symbian Ltd.  All rights reserved.
//

#include <basched.h>
#include <eikenv.h>
#include <eikdialg.h>
#include <eikbtpan.h>
#include <eiklbbut.h>
#include <eikcmbut.h>
#include <eikappui.h>
#include <eikapp.h>
#include <eikdoc.h>
#include <eikchlst.h>
#include <eikchred.h>
#include <eikseced.h>
#include <eikcfdlg.h>
#include <eikprogi.h>
#include <eikfpne.h>
#include <eikhopbt.h>
#include <eikchkbx.h>
#include <eikrted.h>
#include <eikgted.h>
#include <eikdlgtb.h>
#include <txtrich.h>
#include <txtglobl.h>
#include <eikdialg.hrh>
#include <eikcmds.hrh>
#include <eikedwin.hrh>
#include <eikon.rsg>
#include <eikclb.h>
#include <eikclbd.h>
#include <eiktxtut.h>
#include <badesca.h>
#include <eiktxlbx.h>
#include <eikfctry.h>
#include <bautils.h>

#include "tshowdlg.hrh"
#include <tshowdlg.rsg>
#include <protodlg.rsg>


class CSimpleControl : public CCoeControl
    {
public:
	~CSimpleControl() {};
    void ConstructL(const TRect& aRect);
private: // from CCoeControl
	//TInt CountComponentControls() const;
	//CCoeControl* ComponentControl(TInt aIndex) const;
private:
    };

void CSimpleControl::ConstructL(const TRect& aRect)
    {
    CreateWindowL();
    Window().SetShadowDisabled(ETrue);
	SetRectL(aRect);
    ActivateL();
    }

//
// class CSimpleAppUi
//

class CSimpleAppUi : public CEikAppUi
    {
public:
    void ConstructL();
    ~CSimpleAppUi();
private: // framework
    void HandleCommandL(TInt aCommand);
private:
	void InitDialogResourceFileL();
private:
	CSimpleControl* iSimpleControl;
	TInt iDialogResourceFileOffset;
    };

void CSimpleAppUi::ConstructL()
    {
    BaseConstructL();
	iSimpleControl=new(ELeave) CSimpleControl;
    iSimpleControl->ConstructL(ClientRect());
	InitDialogResourceFileL();
    }

CSimpleAppUi::~CSimpleAppUi()
    {
	iEikonEnv->DeleteResourceFile(iDialogResourceFileOffset);
	delete iSimpleControl;
    }

void CSimpleAppUi::InitDialogResourceFileL()
    {
    TParse path;
	path.Set(Application()->DllName(),NULL,NULL);
	TBuf<256> fullName(path.DriveAndPath());
	fullName.Append(_L("protodlg.rsc"));
	TFileName fileName(fullName);
	BaflUtils::NearestLanguageFile(iEikonEnv->FsSession(),fileName);
	iDialogResourceFileOffset=iEikonEnv->AddResourceFileL(fileName);
    }

void CSimpleAppUi::HandleCommandL(TInt aCommand)
    {
    switch (aCommand)
        {
    case EEikCmdExit:
        Exit();
        break;
	case EAppCmdShowDlg:
		CEikDialog* dialog=new(ELeave) CEikDialog;
		dialog->ExecuteLD(R_TDLG_PROTOTYPING_DIALOG);
		break;
        }
    }

//
// CSimpleDocument
//

class CSimpleDocument : public CEikDocument
	{
public:
	CSimpleDocument(CEikApplication& aApp): CEikDocument(aApp) { }
private: // from CApaDocument
	CEikAppUi* CreateAppUiL();
	};

CEikAppUi* CSimpleDocument::CreateAppUiL()
	{
    return(new(ELeave) CSimpleAppUi);
	}

//
// CSimpleApplication
//

class CSimpleApplication : public CEikApplication
	{
private: // from CApaApplication
	CApaDocument* CreateDocumentL();
	TUid AppDllUid() const;
	};

const TUid KUidSimpleApp={250};

TUid CSimpleApplication::AppDllUid() const
	{
	return(KUidSimpleApp);
	}

CApaDocument* CSimpleApplication::CreateDocumentL()
	{
	return(new(ELeave) CSimpleDocument(*this));
	}

//
// EXPORTed functions
//

EXPORT_C CApaApplication* NewApplication()
	{
	return(new CSimpleApplication);
	}

GLDEF_C TInt E32Dll(TDllReason)
	{
	return(KErrNone);
	}
