// EIKOPBUT.CPP
//
// Copyright (c) 1997-1999 Symbian Ltd.  All rights reserved.
//

#include <eikopbut.h>
#include <eikenv.h>
#include <eikon.mbg>

const TInt KMaxBitmaps=4;

EXPORT_C CEikOptionButton::CEikOptionButton()
    {
    SetAllowTristate();
    SetBehavior(EEikButtonLatches);
	}

EXPORT_C void CEikOptionButton::ConstructL()
	{
	TPtrC filename = _L("z:\\System\\Data\\eikon.mbm");
	iBitmap[0] = iEikonEnv->CreateBitmapL(filename,EMbmEikonOpts);
	iBitmap[1] = iEikonEnv->CreateBitmapL(filename,EMbmEikonOptsp);
	iBitmap[2] = iEikonEnv->CreateBitmapL(filename,EMbmEikonOptc);
	iBitmap[3] = iEikonEnv->CreateBitmapL(filename,EMbmEikonOptcp);
	iMaskBitmap= iEikonEnv->CreateBitmapL(filename,EMbmEikonOptm);
	}

EXPORT_C CEikOptionButton::~CEikOptionButton()
    {
	for (TInt ii=0; ii<KMaxBitmaps;ii++)
		delete iBitmap[ii];
	delete iMaskBitmap;
	__DECLARE_NAME(_S("CEikOptionButton"));
    }

EXPORT_C void CEikOptionButton::ConstructFromResourceL(TResourceReader& /*aReader*/)
	{
	ConstructL();
	}

EXPORT_C TSize CEikOptionButton::MinimumSize()
    {
	return (iBitmap[0]->SizeInPixels());
    }

EXPORT_C TKeyResponse CEikOptionButton::OfferKeyEventL(const TKeyEvent& /*aKeyEvent*/,TEventCode /*aType*/)
    { // !! for now
    return(EKeyWasConsumed);
	}

EXPORT_C void CEikOptionButton::Draw(const TRect& /*aRect*/) const
    {
	TInt id=0;
	CWindowGc& gc = SystemGc();
	if (IsPressed())
		id=(State()==ESet)? 1 : 3;
	else
		id=(State()==ESet)? 0 : 2;

	TInt x=(Size().iWidth)-(iBitmap[0]->SizeInPixels().iWidth);
	TInt y=(Size().iHeight)-(iBitmap[0]->SizeInPixels().iHeight);
	TPoint pos=Rect().iTl;
	pos.iX=pos.iX+x/2;
	pos.iY=pos.iY+y/2; 
	TRect rect = TRect(Size());
	gc.BitBltMasked(pos,iBitmap[id],rect,iMaskBitmap,ETrue);
	}
