diff -r a1caeb42b3a3 -r fcdfafb36fe7 uifw/AvKon/src/akntabgrp.cpp --- 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