diff -r d189ee25cf9d -r 3533d4323edc emailuis/emailui/src/ncscontrol.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/emailuis/emailui/src/ncscontrol.cpp Wed Sep 01 12:28:57 2010 +0100 @@ -0,0 +1,159 @@ +/* +* Copyright (c) 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: Implementation of the CNcsEngine +* +*/ + + +#include "emailtrace.h" +#include +#include +#include +#include +#include +#include + +#include "ncscontrol.h" +#include "FreestyleEmailUiLayoutData.h" +#include "ncsutility.h" + +// --------------------------------------------------------------------------- +// MNcsControl::MNcsControl +// --------------------------------------------------------------------------- +// +MNcsControl::MNcsControl( MNcsFieldSizeObserver* aObserver ) : + iSizeObserver( aObserver ) + { + FUNC_LOG; + } + + +// --------------------------------------------------------------------------- +// CNcsLabel::CNcsLabel +// --------------------------------------------------------------------------- +// +CNcsLabel::CNcsLabel( + const CCoeControl& aParent, + MNcsFieldSizeObserver* aSizeObserver ) : + MNcsControl( aSizeObserver ), iParent( aParent ) + { + FUNC_LOG; + UpdateTextColor(); + } + +// --------------------------------------------------------------------------- +// CNcsLabel::Reposition +// --------------------------------------------------------------------------- +// +void CNcsLabel::Reposition( TPoint& aPt, TInt /*aWidth*/ ) + { + FUNC_LOG; + SetPosition( aPt ); + } + +// --------------------------------------------------------------------------- +// CNcsLabel::FocusChanged +// --------------------------------------------------------------------------- +// +void CNcsLabel::FocusChanged( TDrawNow aDrawNow ) + { + FUNC_LOG; + if( IsFocused() ) + { + //Check if we need to reposition + if (Rect().iTl.iY < 0) + { + TPoint pt = TPoint(0,0); + Reposition(pt,Rect().Width()); + if ( iSizeObserver ) + { + iSizeObserver->UpdateFieldPosition(this); + } + } + } + + if( aDrawNow ) + { + DrawNow(); + } + } + +// --------------------------------------------------------------------------- +// CNcsLabel::HandleResourceChange +// --------------------------------------------------------------------------- +// +void CNcsLabel::HandleResourceChange( TInt aType ) + { + FUNC_LOG; + CEikLabel::HandleResourceChange( aType ); + if ( aType == KAknsMessageSkinChange || + aType == KEikMessageColorSchemeChange ) + { + UpdateTextColor(); + } + } + +// --------------------------------------------------------------------------- +// CNcsLabel::UpdateTextColor +// --------------------------------------------------------------------------- +// +void CNcsLabel::UpdateTextColor() + { + FUNC_LOG; + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + TRgb newColor; + + TInt err = AknsUtils::GetCachedColor( + skin, + newColor, + KAknsIIDFsTextColors, + EAknsCIFsTextColorsCG8 ); + + if ( err == KErrNone ) + { + TRAP_IGNORE( OverrideColorL( EColorLabelText, newColor ) ); + } + } + +// --------------------------------------------------------------------------- +// CNcsLabel::LayoutLineCount +// --------------------------------------------------------------------------- +// +TInt CNcsLabel::LayoutLineCount() const + { + FUNC_LOG; + return IsVisible() ? 1 : 0; + } + +// --------------------------------------------------------------------------- +// CNcsLabel::TextHitAreaRect +// --------------------------------------------------------------------------- +// +TRect CNcsLabel::TextHitAreaRect() + { + FUNC_LOG; + TRect rect; + if ( Font() && Text() ) + { + rect = Rect(); + rect.SetWidth( Font()->TextWidthInPixels( *Text() ) ); + if( AknLayoutUtils::LayoutMirrored() ) + { + rect.Move( Rect().Size().iWidth - + rect.Size().iWidth - + rect.iTl.iX - 2, 0 ); + } + } + return rect; + }