// EIKCHKBX.CPP
//
// Copyright (c) 1997-1999 Symbian Ltd.  All rights reserved.
//

#include <eikchkbx.h>
#include <eikenv.h>
#include <eiksfont.h>

EXPORT_C CEikCheckBox::~CEikCheckBox()
    {
    }

EXPORT_C CEikCheckBox::CEikCheckBox()
    {
	__DECLARE_NAME(_S("CEikCheckBox"));
	iBorder=TEikBorder(TEikBorder::ESingleGray);
    SetAllowTristate();
    SetBehavior(EEikButtonLatches);
    }

EXPORT_C TSize CEikCheckBox::MinimumSize()
    {
    const TInt height=iEikonEnv->EditableControlStandardHeight();
    return(TSize(height,height));
    }
    
const TInt KEikTickEdge=2;

EXPORT_C void CEikCheckBox::Draw(const TRect& /*aRect*/) const
    {
    iBorder.Draw(SystemGc(),Rect());
	DrawTick();
	}

void CEikCheckBox::DrawTick() const
	{
    CWindowGc& gc=SystemGc();
    TRect inner=iBorder.InnerRect(Rect());
    TRgb brushColor=iEikonEnv->ControlColor(EEikColorControlBackground, *this);
	if (IsPressed() || IsDimmed())
		brushColor=KRgbGray;
	gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
	gc.SetBrushColor(brushColor);
	gc.Clear(inner);
	inner.Shrink(KEikTickEdge,KEikTickEdge);
	if (State()==EIndeterminate)
		{
	    brushColor=KRgbGray;
	    if (IsPressed() || IsDimmed())
		    brushColor=KRgbDarkGray;

		gc.SetBrushColor(brushColor);
		gc.Clear(inner);
		}
	else
		{
        TRgb tickColor=IsDimmed()? KRgbGray: iEikonEnv->ControlColor(EEikColorControlBackground, *this);
		if (State()==ESet)
			tickColor=IsDimmed()? KRgbDarkGray : iEikonEnv->ControlColor(EEikColorControlText, *this);
		else if (IsPressed())
			tickColor=KRgbGray;

		TBuf<1> buf;
		buf.Append(TChar(ESymFontTick));
		gc.UseFont(iEikonEnv->SymbolFont());
		gc.SetPenColor(tickColor);
		gc.SetPenStyle(CGraphicsContext::ESolidPen);
		gc.DrawText(buf,inner,inner.Height(),CGraphicsContext::ECenter);
		}
	}
