diff -r e5618cc85d74 -r 6c158198356e javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/src/swtlink.cpp --- a/javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/src/swtlink.cpp Thu Jul 15 18:31:06 2010 +0300 +++ b/javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/src/swtlink.cpp Thu Aug 19 09:48:13 2010 +0300 @@ -193,7 +193,6 @@ UpdateDefaultFontL(); DoSetFont(&iDefaultFont->Font()); UpdateMarginValues(); - UpdateSkinColor(); SetBackground(this); // Back will be drawn by ASwtControlBase::Draw #ifdef RD_TACTILE_FEEDBACK @@ -216,40 +215,9 @@ UpdateMarginValues(); BuildDrawableFragmentsListL(TextRect()); } - else if (aType == KAknsMessageSkinChange) - { - if (!iCustomTextColor) - { - UpdateSkinColor(); - } - } } /** - * Updates skin colors - */ -void CSwtLink::UpdateSkinColor() -{ - AknsUtils::GetCachedColor(AknsUtils::SkinInstance(), - iTextColor, - KAknsIIDQsnTextColors, - EAknsCIQsnTextColorsCG6); - AknsUtils::GetCachedColor(AknsUtils::SkinInstance(), - iLinkColor, - KAknsIIDQsnHighlightColors, - EAknsCIQsnHighlightColorsCG3); - AknsUtils::GetCachedColor(AknsUtils::SkinInstance(), - iHighlightColor, - KAknsIIDQsnHighlightColors, - EAknsCIQsnHighlightColorsCG2); - AknsUtils::GetCachedColor(AknsUtils::SkinInstance(), - iHighlightedLinkColor, - KAknsIIDQsnTextColors, - EAknsCIQsnTextColorsCG24); -} - - -/** * Updates default font */ void CSwtLink::UpdateDefaultFontL() @@ -1006,20 +974,20 @@ TRect rect = fragment->Rect(); rect.Move(textRect.iTl); - TRgb textColor = iTextColor; + TRgb textColor = TextColor(); if (fragment->FragmentDescriptor()->Target()) { - textColor = iLinkColor; + textColor = LinkColor(); } // Same background highlight as that of HyperLink if (fragment->FragmentDescriptor() == iFocusedFragment && (iPressed || iDisplay.UiUtils().NaviKeyInput())) { - textColor = iHighlightedLinkColor; + textColor = PressedLinkColor(); gc.SetPenStyle(CGraphicsContext::ENullPen); gc.SetBrushStyle(CGraphicsContext::ESolidBrush); - gc.SetBrushColor(iHighlightColor); + gc.SetBrushColor(LinkBgColor()); gc.DrawRect(rect); } @@ -1128,7 +1096,7 @@ if (iPressed) { - Redraw(); + GetShell().UpdateHighlight(ETrue); // draw now } break; } @@ -1162,7 +1130,7 @@ if (pressed != iPressed) { - Redraw(); + GetShell().UpdateHighlight(ETrue); // draw now } break; } @@ -1193,7 +1161,7 @@ if (pressed != iPressed) { - Redraw(); + GetShell().UpdateHighlight(ETrue); // draw now } break; } @@ -1209,23 +1177,10 @@ void CSwtLink::SetForegroundL(const MSwtColor* aColor) { ASwtControlBase::DoSetForegroundL(aColor); - aColor ? iCustomTextColor = ETrue : iCustomTextColor = EFalse; - if (iCustomTextColor) - { - TRgb rgb; - TBool overrideColorSet(GetColor(EColorControlText, rgb)); - ASSERT(overrideColorSet); - iTextColor = rgb; - iLinkColor = rgb; - } - else - { - UpdateSkinColor(); - } + iCustomFg = aColor; Redraw(); } - // --------------------------------------------------------------------------- // From class MSwtControl. // --------------------------------------------------------------------------- @@ -1240,6 +1195,36 @@ return ComputeTextSizeL(aWHint, aHHint); } +// --------------------------------------------------------------------------- +// CSwtLink::DefaultFont +// From MSwtControl +// --------------------------------------------------------------------------- +// +void CSwtLink::SetFontL(const MSwtFont* aFont) +{ + ASwtControlBase::DoSetFontL(aFont); + DoSetFont(&GetFont()->Font()); + Redraw(); +} + +TBool CSwtLink::SetSwtFocus(TInt aReason /*= KSwtFocusByApi*/) +{ + TBool prevFocused = IsFocusControl(); + TBool res = ASwtControlBase::SetSwtFocus(aReason); + + // Gaines focus by pointer + if (IsFocusControl() && !prevFocused) + { + iFocusChanged = ETrue; + } + + return res; +} + +TInt CSwtLink::PressBackgroundPolicy() const +{ + return EEmbeddedPressBackground; +} // --------------------------------------------------------------------------- // CSwtLink::ComputeTextSizeL @@ -1450,18 +1435,61 @@ return result; } -// --------------------------------------------------------------------------- -// CSwtLink::DefaultFont -// From MSwtControl -// --------------------------------------------------------------------------- -// -void CSwtLink::SetFontL(const MSwtFont* aFont) +TRgb CSwtLink::TextColor() const { - ASwtControlBase::DoSetFontL(aFont); - DoSetFont(&GetFont()->Font()); - Redraw(); + TBool highlighted = HasHighlight(); + if (!highlighted && iCustomFg) + { + return iCustomFg->RgbValue(); + } + else + { + TRgb res(0); + AknsUtils::GetCachedColor(AknsUtils::SkinInstance(), + res, + KAknsIIDQsnTextColors, + highlighted ? KHighlightedTextColor : KNonHighlightedTextColor); + return res; + } } +TRgb CSwtLink::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 CSwtLink::PressedLinkColor() const +{ + TRgb res(0); + AknsUtils::GetCachedColor(AknsUtils::SkinInstance(), + res, + KAknsIIDQsnTextColors, + EAknsCIQsnTextColorsCG24); + return res; +} + +TRgb CSwtLink::LinkBgColor() const +{ + TRgb res(0); + AknsUtils::GetCachedColor(AknsUtils::SkinInstance(), + res, + KAknsIIDQsnHighlightColors, + EAknsCIQsnHighlightColorsCG2); + return res; +} void CSwtLink::DoSetFont(const CFont* aFont) { @@ -1564,20 +1592,6 @@ } } -TBool CSwtLink::SetSwtFocus(TInt aReason /*= KSwtFocusByApi*/) -{ - TBool prevFocused = IsFocusControl(); - TBool res = ASwtControlBase::SetSwtFocus(aReason); - - // Gaines focus by pointer - if (IsFocusControl() && !prevFocused) - { - iFocusChanged = ETrue; - } - - return res; -} - // --------------------------------------------------------------------------- // CSwtLinkFragmentDescriptor // ---------------------------------------------------------------------------