diff -r e5618cc85d74 -r 6c158198356e javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/src/swthyperlink.cpp --- a/javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/src/swthyperlink.cpp Thu Jul 15 18:31:06 2010 +0300 +++ b/javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/src/swthyperlink.cpp Thu Aug 19 09:48:13 2010 +0300 @@ -86,7 +86,6 @@ UpdateDefaultFontL(); iFormattedText.CreateL(KNullDesC); iOriginalText.CreateL(KNullDesC); - UpdateSkinColor(); SetBackground(this); // Back will be drawn by ASwtControlBase::Draw #ifdef RD_TACTILE_FEEDBACK @@ -103,13 +102,6 @@ { UpdateDefaultFontL(); } - else if (aType == KAknsMessageSkinChange) - { - if (!iCustomTextColor) - { - UpdateSkinColor(); - } - } } @@ -165,14 +157,14 @@ textLocation.iX += alignmentSpace; } - TRgb textColor = iLinkColor; + TRgb textColor = LinkColor(); // Same background highlight as that of Link if (iPressed || (iDisplay.UiUtils().NaviKeyInput() && IsFocused())) { - textColor = iHighlightedLinkColor; + textColor = PressedLinkColor(); aGc.SetPenStyle(CGraphicsContext::ENullPen); aGc.SetBrushStyle(CGraphicsContext::ESolidBrush); - aGc.SetBrushColor(iHighlightColor); + aGc.SetBrushColor(LinkBgColor()); aGc.DrawRect(TRect(TPoint(textLocation.iX, textLocation.iY - aFont->FontMaxAscent()), TSize(textWidth, aFont->FontLineGap()))); } @@ -188,23 +180,6 @@ } -void CSwtHyperLink::UpdateSkinColor() -{ - AknsUtils::GetCachedColor(AknsUtils::SkinInstance(), - iLinkColor, - KAknsIIDQsnHighlightColors, - EAknsCIQsnHighlightColorsCG3); - AknsUtils::GetCachedColor(AknsUtils::SkinInstance(), - iHighlightColor, - KAknsIIDQsnHighlightColors, - EAknsCIQsnHighlightColorsCG2); - AknsUtils::GetCachedColor(AknsUtils::SkinInstance(), - iHighlightedLinkColor, - KAknsIIDQsnTextColors, - EAknsCIQsnTextColorsCG24); -} - - void CSwtHyperLink::UpdateDefaultFontL() { if (iDefaultFont) @@ -272,6 +247,43 @@ return scheme; } +TRgb CSwtHyperLink::LinkColor() const +{ + TBool highlighted = HasHighlight(); + if (!highlighted && iCustomFg) + { + return iCustomFg->RgbValue(); + } + else + { + TRgb res(0); + AknsUtils::GetCachedColor(AknsUtils::SkinInstance(), + res, + KAknsIIDQsnHighlightColors, + EAknsCIQsnHighlightColorsCG3); + return res; + } +} + +TRgb CSwtHyperLink::PressedLinkColor() const +{ + TRgb res(0); + AknsUtils::GetCachedColor(AknsUtils::SkinInstance(), + res, + KAknsIIDQsnTextColors, + EAknsCIQsnTextColorsCG24); + return res; +} + +TRgb CSwtHyperLink::LinkBgColor() const +{ + TRgb res(0); + AknsUtils::GetCachedColor(AknsUtils::SkinInstance(), + res, + KAknsIIDQsnHighlightColors, + EAknsCIQsnHighlightColorsCG2); + return res; +} // --------------------------------------------------------------------------- // From class CCoeControl. @@ -446,7 +458,7 @@ #endif //RD_JAVA_ADVANCED_TACTILE_FEEDBACK } #endif //RD_TACTILE_FEEDBACK - Redraw(); + GetShell().UpdateHighlight(ETrue); // draw now break; } @@ -463,7 +475,7 @@ } if (pressed != iPressed) { - Redraw(); + GetShell().UpdateHighlight(ETrue); // draw now } break; } @@ -478,7 +490,7 @@ } if (pressed != iPressed) { - Redraw(); + GetShell().UpdateHighlight(ETrue); // draw now } break; } @@ -497,18 +509,7 @@ void CSwtHyperLink::SetForegroundL(const MSwtColor* aColor) { ASwtControlBase::DoSetForegroundL(aColor); - aColor ? iCustomTextColor = ETrue : iCustomTextColor = EFalse; - if (iCustomTextColor) - { - TRgb rgb; - TBool overrideColorSet(GetColor(EColorControlText, rgb)); - ASSERT(overrideColorSet); - iLinkColor = rgb; - } - else - { - UpdateSkinColor(); - } + iCustomFg = aColor; Redraw(); } @@ -542,6 +543,15 @@ return res; } +// --------------------------------------------------------------------------- +// CSwtHyperLink::PressBackgroundPolicy +// From MSwtControl +// --------------------------------------------------------------------------- +// +TInt CSwtHyperLink::PressBackgroundPolicy() const +{ + return EEmbeddedPressBackground; +} // --------------------------------------------------------------------------- // From class ASwtControlBase.