diff -r 000000000000 -r eb1f2e154e89 textinput/peninputcommonctrlsjp/src/peninputjapanesecandidatecelllistboxdata.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/peninputcommonctrlsjp/src/peninputjapanesecandidatecelllistboxdata.cpp Tue Feb 02 01:02:04 2010 +0200 @@ -0,0 +1,173 @@ +/* +* Copyright (c) 2002-2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0"" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Candidate list CellListBoxData +* +*/ + +// INCLUDE FILES +#include // KAknBidiExtraSpacePerLine +#include // KMaxColumnDataLength others + +#include "peninputjapanesecandidatecelllistboxdata.h" + +const TInt KLayoutTempValue_5 = 5; + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CPeninputJapaneseCandidateCellListBoxData::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CPeninputJapaneseCandidateCellListBoxData* + CPeninputJapaneseCandidateCellListBoxData::NewL() + { + CPeninputJapaneseCandidateCellListBoxData* self = + new(ELeave) CPeninputJapaneseCandidateCellListBoxData; + self->ConstructLD(); + return self; + } + +// ----------------------------------------------------------------------------- +// CPeninputJapaneseCandidateCellListBoxData::Draw +// Draw items +// ----------------------------------------------------------------------------- +// +void CPeninputJapaneseCandidateCellListBoxData::Draw( + TListItemProperties aProperties, + CWindowGc& aGc, + const TDesC* aText, + const TRect& aRect, + TBool aHighlight, + const TColors& aColors) const + { + const TRect &aItemRect = aRect; + + DrawDefaultHighlight(aGc, aItemRect, aHighlight); + + // Draw the actual items. + DrawFormattedCandidate(aProperties, aGc, aText, aItemRect, aHighlight, aColors); + + aGc.Reset(); + + } + +// ----------------------------------------------------------------------------- +// CPeninputJapaneseCandidateCellListBoxData::DrawDefaultHighlight +// Draw highlight item +// ----------------------------------------------------------------------------- +// +void CPeninputJapaneseCandidateCellListBoxData::DrawDefaultHighlight( + CWindowGc& aGc, + const TRect& aItemRect, + TBool aHighlight) const + { + if (aHighlight) + { + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + TBool highlightDrawn = EFalse; + MAknsControlContext* cc = AknsDrawUtils::ControlContext(Control()); + if (cc) + { + TAknLayoutRect topLeft; + topLeft.LayoutRect(aItemRect, + ELayoutEmpty, + 1, 1, ELayoutEmpty, ELayoutEmpty, KLayoutTempValue_5, KLayoutTempValue_5); + + TAknLayoutRect bottomRight; + bottomRight.LayoutRect(aItemRect, + ELayoutEmpty, + ELayoutEmpty, ELayoutEmpty, 1, 0, KLayoutTempValue_5,KLayoutTempValue_5); + + TRect outerRect = + TRect(topLeft.Rect().iTl, bottomRight.Rect().iBr); + TRect innerRect = + TRect(topLeft.Rect().iBr, bottomRight.Rect().iTl); + aGc.SetPenStyle(CGraphicsContext::ENullPen); + + const TAknsItemID* skinHighlightFrameId = + &KAknsIIDQsnFrList; + const TAknsItemID* skinHighlightFrameCenterId = + &KAknsIIDQsnFrListCenter; + highlightDrawn = AknsDrawUtils::DrawFrame( + skin, + aGc, + outerRect, innerRect, + *skinHighlightFrameId, + *skinHighlightFrameCenterId); + } + + if (!highlightDrawn) + { + TAknLayoutRect highlightshadow; + TAknLayoutRect highlight; + highlightshadow.LayoutRect( + aItemRect, + AKN_LAYOUT_WINDOW_List_pane_highlight_graphics__various__Line_1(aItemRect)); + highlight.LayoutRect( + aItemRect, + AKN_LAYOUT_WINDOW_List_pane_highlight_graphics__various__Line_2(aItemRect)); + + highlightshadow.DrawRect(aGc); + highlight.DrawRect(aGc); + } + } + } + +// ----------------------------------------------------------------------------- +// CPeninputJapaneseCandidateCellListBoxData::DrawFormattedCandidate +// Draw one item +// ----------------------------------------------------------------------------- +// +void CPeninputJapaneseCandidateCellListBoxData::DrawFormattedCandidate( TListItemProperties&/* aProperties*/, + CWindowGc& aGc, + const TDesC* aText, + const TRect& aItemRect, + TBool /*aHighlight*/, + const TColors& aColors ) const + { + TRect textRect(aItemRect); + textRect.iTl.iX += 3; + + const CFont* font=SubCellFont(0); + if (font==NULL) + { + font=CEikonEnv::Static()->NormalFont(); + } + + TInt extraVerticalSpace=(textRect.Height()-font->HeightInPixels()); + TInt baseLineOffset=extraVerticalSpace/2+font->AscentInPixels(); + TPtrC text; + TextUtils::ColumnText(text,0, aText); + + TBuf clipbuf = + text.Left(KMaxColumnDataLength); + TInt maxClipWidth = textRect.Size().iWidth; + + TBool clipped = AknBidiTextUtils::ConvertToVisualAndClip( + text.Left(KMaxColumnDataLength), + clipbuf, + *font, + textRect.Size().iWidth, + maxClipWidth ); + aGc.UseFont(font); + aGc.SetBrushStyle( CGraphicsContext::ENullBrush ); + aGc.SetPenColor(aColors.iText); + aGc.SetPenStyle(CGraphicsContext::ESolidPen); + aGc.DrawText(clipbuf, textRect, baseLineOffset, CGraphicsContext::ELeft, 0); + aGc.DiscardFont(); + return; + } + +// End of File