--- a/uifw/AvKon/src/akntabgrp.cpp Thu Jul 15 18:56:19 2010 +0300
+++ b/uifw/AvKon/src/akntabgrp.cpp Thu Aug 19 10:11:06 2010 +0300
@@ -104,6 +104,9 @@
/** Indicates whether or not the tab is shown in long tab group layout. */
TBool iLongTab;
+
+ /** Indicates the hilight status of the tab*/
+ TBool iHighlight;
};
CAknTabExtension* CAknTabExtension::NewL()
@@ -295,6 +298,8 @@
if ( !iExtension )
{
iExtension = CAknTabExtension::NewL();
+ //set the default highlight status of the tab
+ iExtension->iHighlight = EFalse;
}
iLabel = new (ELeave) CEikLabel;
@@ -807,7 +812,14 @@
}
-
+// ---------------------------------------------------------------------------
+// sets the highlight status of a tab
+// ---------------------------------------------------------------------------
+//
+void CAknTab::SetHighlight(TBool aHighlight)
+ {
+ iExtension->iHighlight = aHighlight;
+ }
// ---------------------------------------------------------------------------
// Handles size change events in flat status pane layouts.
// ---------------------------------------------------------------------------
@@ -1033,7 +1045,7 @@
}
else
{
- if ( iActive )
+ if (iActive || iExtension->iHighlight)
{
TInt error = AknsUtils::GetCachedColor( skin, color,
KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG3 );
@@ -1071,7 +1083,7 @@
iColorBitmaps->At(KTabColorBitmapActiveColorIndex) &&
iColorBitmaps->At(KTabColorBitmapPassiveColorIndex) )
{
- if( iActive )
+ if (iActive || iExtension->iHighlight)
{
colorBitmap = iColorBitmaps->At(KTabColorBitmapActiveColorIndex);
}
@@ -1262,8 +1274,8 @@
if ( !iColorBitmaps )
{
- LoadColorBitmapL();
- }
+ TRAP_IGNORE(LoadColorBitmapL());
+ }
}
void CAknTab::SetNarrowTabLayout( TBool aNarrow )
@@ -1399,6 +1411,9 @@
/** This is the tab width that is set by the application. */
TInt iRequestedTabWidth;
+
+ /** Indicates whether highlight tab is being drawn or not*/
+ TBool iHighlight;
};
@@ -1406,6 +1421,8 @@
{
iPointerDownTab = -1;
iPointerDownXPosition = -1;
+ //Highlight is disabled by default.
+ iHighlight = EFalse;
}
@@ -1871,7 +1888,7 @@
{
iExtension->iTabBackgroundLayout.iUse = EFalse;
- iExtension->iTabSvgGraphics->DrawTabGroupBackgroundL(
+ iExtension->iTabSvgGraphics->DrawTabGroupBackground(
CAknTabGroupGraphics::ENoDraw,
iLongTabs,
iNumberOfTabsShown,
@@ -2617,11 +2634,13 @@
if (iExtension->iNarrowTabLayout)
{
- iExtension->iTabSvgGraphics->DrawTabGroupNarrowBackgroundL(
- CAknTabGroupGraphics::ENormal, iLongTabs,
- iNumberOfTabsShown, positionActive + 1, &gc,
- iExtension->iTabBackgroundLayout);
-
+ iExtension->iTabSvgGraphics->DrawTabGroupNarrowBackground(
+ CAknTabGroupGraphics::ENormal,
+ iLongTabs,
+ iNumberOfTabsShown,
+ positionActive + 1,
+ &gc,
+ iExtension->iTabBackgroundLayout);
}
else
{
@@ -2631,18 +2650,36 @@
if ( animationOngoing )
{
- animation
- = iExtension->iTabCycleAnimationDirection == ELeft
- ? CAknTabGroupGraphics::ECycleToLeft
- : CAknTabGroupGraphics::ECycleToRight;
+ animation = iExtension->iTabCycleAnimationDirection == ELeft ?
+ CAknTabGroupGraphics::ECycleToLeft : CAknTabGroupGraphics::ECycleToRight;
}
- iExtension->iTabSvgGraphics->DrawTabGroupBackgroundL(
- CAknTabGroupGraphics::ENormal, iLongTabs,
- iNumberOfTabsShown, positionActive + 1, &gc,
- animationOngoing ? iExtension->iNextTabBackgroundLayout
- : iExtension->iTabBackgroundLayout,
- iExtension->iTabsHidden, animation);
-
+
+ if (!iExtension->iHighlight)
+ {
+ // if highlight is not active
+ iExtension->iTabSvgGraphics->DrawTabGroupBackground(
+ CAknTabGroupGraphics::ENormal,
+ iLongTabs,
+ iNumberOfTabsShown,
+ positionActive + 1,
+ &gc,
+ animationOngoing ? iExtension->iNextTabBackgroundLayout : iExtension->iTabBackgroundLayout,
+ iExtension->iTabsHidden,
+ animation);
+ }
+ else
+ {
+ // Highlight is active
+ TInt highlightTab = iExtension->iPointerDownTab - iFirstShownTab + 1; //pointer down tab index w.r.t shown tabs
+ iExtension->iTabSvgGraphics->DrawTabGroupBackground(
+ CAknTabGroupGraphics::ENormal,
+ iLongTabs,
+ iNumberOfTabsShown,
+ positionActive + 1,
+ &gc,
+ animationOngoing ? iExtension->iNextTabBackgroundLayout : iExtension->iTabBackgroundLayout,
+ iExtension->iTabsHidden, animation, highlightTab );
+ }
}
}
else
@@ -2881,6 +2918,20 @@
}
iExtension->iPointerDownTab = newTab;
iExtension->iPointerDownXPosition = aPointerEvent.iPosition.iX;
+
+ //Activates highlight drawing for pressed tab.
+ if (!iExtension->iHighlight)
+ {
+ iExtension->iHighlight = ETrue;
+
+ // Set the pressed tab to highlight
+ if ( iExtension->iPointerDownTab >= 0 )
+ {
+ iTabArray->At( iExtension->iPointerDownTab )->SetHighlight( ETrue );
+ }
+ DrawDeferred();
+ }
+
return;
}
else if ( aPointerEvent.iType == TPointerEvent::EButton1Up )
@@ -2910,9 +2961,15 @@
// if the button up event occurs ouside tabgroup, ignore it.
if ( !Rect().Contains( aPointerEvent.iPosition ) || iExtension->iPointerDownTab != newTab )
{
- iExtension->iPointerDownTab = -1;
+ iExtension->iPointerDownTab = -1;
iExtension->iPointerDownXPosition = -1;
- return ;
+ if (iExtension->iHighlight)
+ {
+ iExtension->iHighlight = EFalse;
+ ResetHighlightStatus();
+ DrawDeferred();
+ }
+ return;
}
if ( newTab != iActiveTab &&
@@ -3020,6 +3077,12 @@
iExtension->iPointerDownTab = -1;
iExtension->iPointerDownXPosition = -1;
+ if( iExtension->iHighlight )
+ {
+ iExtension->iHighlight = EFalse;
+ ResetHighlightStatus();
+ DrawDeferred();
+ }
}
}
}
@@ -3388,14 +3451,14 @@
ParentRect( iExtension->iNaviArrowsUsed ) );
iExtension->iTabBackgroundLayout.iUse = EFalse;
- TRAP_IGNORE( iExtension->iTabSvgGraphics->DrawTabGroupBackgroundL(
+ iExtension->iTabSvgGraphics->DrawTabGroupBackground(
CAknTabGroupGraphics::ENoDraw,
iLongTabs,
iNumberOfTabsShown,
1,
NULL,
iExtension->iTabBackgroundLayout,
- CAknTabGroupGraphics::ENone ) );
+ CAknTabGroupGraphics::ENone );
iExtension->iTabBackgroundLayout.iUse = ETrue;
SetDecoratorLayout( EFalse );
}
@@ -3403,6 +3466,11 @@
if ( iExtension )
{
iExtension->iNarrowTabLayout = EFalse;
+ if( iExtension->iHighlight )
+ {
+ iExtension->iHighlight = EFalse;
+ ResetHighlightStatus();
+ }
}
if ( !COMPARE_BOOLS( iMirrored, AknLayoutUtils::LayoutMirrored() ) )
@@ -4043,7 +4111,7 @@
if ( aNarrow )
{
iExtension->iNextTabBackgroundLayout.iUse = EFalse;
- iExtension->iTabSvgGraphics->DrawTabGroupNarrowBackgroundL(
+ iExtension->iTabSvgGraphics->DrawTabGroupNarrowBackground(
CAknTabGroupGraphics::ENoDraw,
iLongTabs,
iNumberOfTabsShown,
@@ -4055,7 +4123,7 @@
if ( !aUseAnimation )
{
iExtension->iTabBackgroundLayout.iUse = EFalse;
- iExtension->iTabSvgGraphics->DrawTabGroupNarrowBackgroundL(
+ iExtension->iTabSvgGraphics->DrawTabGroupNarrowBackground(
CAknTabGroupGraphics::ENoDraw,
iLongTabs,
iNumberOfTabsShown,
@@ -4068,7 +4136,7 @@
else
{
iExtension->iNextTabBackgroundLayout.iUse = EFalse;
- iExtension->iTabSvgGraphics->DrawTabGroupBackgroundL(
+ iExtension->iTabSvgGraphics->DrawTabGroupBackground(
CAknTabGroupGraphics::ENoDraw,
iLongTabs,
iNumberOfTabsShown,
@@ -4079,7 +4147,7 @@
iExtension->iNextTabBackgroundLayout.iUse = ETrue;
iExtension->iTabBackgroundLayout.iUse = EFalse;
- iExtension->iTabSvgGraphics->DrawTabGroupBackgroundL(
+ iExtension->iTabSvgGraphics->DrawTabGroupBackground(
CAknTabGroupGraphics::ENoDraw,
iLongTabs,
iNumberOfTabsShown,
@@ -4444,4 +4512,12 @@
CancelTabAnimationEventTimer();
}
+void CAknTabGroup::ResetHighlightStatus()
+ {
+ // Resets highlight status to EFalse
+ for( TInt i = 0; i < iTabArray->Count(); i++ )
+ {
+ iTabArray->At(i)->SetHighlight( EFalse );
+ }
+ }
// End of File