143 iCoeEnv->WsSession().Flush(); |
143 iCoeEnv->WsSession().Flush(); |
144 #endif |
144 #endif |
145 |
145 |
146 |
146 |
147 SetMopParent( aParent ); |
147 SetMopParent( aParent ); |
148 SetFlags( EHgVgMediaWallDrawToWindowGC | EHgVgMediaWallUninitialized ); |
148 SetFlags( EHgVgMediaWallUninitialized ); |
149 |
149 |
150 } |
150 } |
151 |
151 |
152 // ----------------------------------------------------------------------------- |
152 // ----------------------------------------------------------------------------- |
153 // CHgVgMediaWall::InitScreenL() |
153 // CHgVgMediaWall::InitScreenL() |
159 // Set the windows size |
159 // Set the windows size |
160 SetRect ( aRect ); |
160 SetRect ( aRect ); |
161 |
161 |
162 #ifdef MEDIAWALL_ORIENTATION_FIX |
162 #ifdef MEDIAWALL_ORIENTATION_FIX |
163 TSize screenSize = iCoeEnv->ScreenDevice()->SizeInPixels(); |
163 TSize screenSize = iCoeEnv->ScreenDevice()->SizeInPixels(); |
164 if (aRect == TRect(TPoint(0,0), screenSize) && iMediaWallStyle == EHgVgMediaWallStyleCoverflowFullScreen) |
164 if (aRect == TRect(TPoint(0,0), screenSize) |
|
165 && iMediaWallStyle == EHgVgMediaWallStyleCoverflowFullScreen) |
165 { |
166 { |
166 Window().FixNativeOrientation(); |
167 Window().FixNativeOrientation(); |
167 } |
168 } |
168 #endif |
169 #endif |
169 |
170 |
173 // CHgVgMediaWall::RefreshScreen() |
174 // CHgVgMediaWall::RefreshScreen() |
174 // ----------------------------------------------------------------------------- |
175 // ----------------------------------------------------------------------------- |
175 // |
176 // |
176 EXPORT_C void CHgVgMediaWall::RefreshScreen( TInt aIndex ) |
177 EXPORT_C void CHgVgMediaWall::RefreshScreen( TInt aIndex ) |
177 { |
178 { |
178 |
179 ClearFlags(EHgVgMediaWallDrawToWindowGC); |
179 if( !iIsForeground ) |
180 if( !iIsForeground ) |
180 { |
181 { |
181 return; |
182 return; |
182 } |
183 } |
183 |
184 |
184 if( !iAnimationTimer->IsActive() ) |
185 if( !iAnimationTimer->IsActive() ) |
185 { |
186 { |
186 if( /*iMediaWallStyle == EHgVgMediaWallStyleGrid ||*/ |
187 if( /*iMediaWallStyle == EHgVgMediaWallStyleGrid ||*/ |
187 (aIndex >= FirstIndexOnScreen() && aIndex <= FirstIndexOnScreen() + ItemsOnScreen()) ) |
188 (aIndex >= FirstIndexOnScreen() |
188 { |
189 && aIndex <= FirstIndexOnScreen() + ItemsOnScreen()) ) |
189 |
190 { |
190 UpdateLabelsAndPopup(); |
191 UpdateLabelsAndPopup(); |
191 if(iFlags & EHgVgMediaWallDrawToWindowGC) |
192 DrawNow(); |
192 { |
|
193 DrawNow(); |
|
194 } |
|
195 else |
|
196 { |
|
197 DrawOpenVG(); |
|
198 } |
|
199 |
|
200 } |
193 } |
201 } |
194 } |
202 } |
195 } |
203 |
196 |
204 // ----------------------------------------------------------------------------- |
197 // ----------------------------------------------------------------------------- |
372 { |
365 { |
373 FillSystemGcWithSkin( ); |
366 FillSystemGcWithSkin( ); |
374 return; |
367 return; |
375 } |
368 } |
376 |
369 |
377 CHgVgMediaWall* self = const_cast<CHgVgMediaWall*>(this); |
370 if(iFlags & EHgVgMediaWallDrawToWindowGC) |
378 |
371 { |
379 if( iFlags & EHgVgMediaWallDrawToWindowGC ) |
372 CHgVgMediaWall* self = const_cast<CHgVgMediaWall*>(this); |
380 { |
373 self->ClearFlags(EHgVgMediaWallDrawToWindowGC); |
381 CFbsBitmap* screenshot = NULL; |
374 FillSystemGcWithSkin( ); |
382 screenshot = self->DrawToBitmap(); |
375 return; |
383 if (screenshot) |
376 } |
384 { |
377 |
385 SystemGc().BitBlt( Rect().iTl,screenshot ); |
378 // draw with alpha to make a hole to composition layer |
386 delete screenshot; |
379 SystemGc().SetDrawMode(CGraphicsContext::EDrawModeWriteAlpha); |
387 } |
380 SystemGc().SetBrushColor(TRgb(0,0,0,0)); |
388 else |
381 SystemGc().Clear(); |
389 { |
382 DrawOpenVG(); |
390 // draw with alpha to make a hole to composition layer |
|
391 SystemGc().SetDrawMode(CGraphicsContext::EDrawModeWriteAlpha); |
|
392 SystemGc().SetBrushColor(TRgb(0,0,0,0)); |
|
393 SystemGc().Clear(); |
|
394 DrawOpenVG(); |
|
395 } |
|
396 } |
|
397 else |
|
398 { |
|
399 // draw with alpha to make a hole to composition layer |
|
400 SystemGc().SetDrawMode(CGraphicsContext::EDrawModeWriteAlpha); |
|
401 SystemGc().SetBrushColor(TRgb(0,0,0,0)); |
|
402 SystemGc().Clear(); |
|
403 DrawOpenVG(); |
|
404 } |
|
405 } |
383 } |
406 |
384 |
407 // ----------------------------------------------------------------------------- |
385 // ----------------------------------------------------------------------------- |
408 // CHgVgMediaWall::FillSystemGcWithSkin() |
386 // CHgVgMediaWall::FillSystemGcWithSkin() |
409 // Draws the display. |
387 // Draws the display. |
443 |
421 |
444 // ----------------------------------------------------------------------------- |
422 // ----------------------------------------------------------------------------- |
445 // CHgVgMediaWall::ChangeStyleL() |
423 // CHgVgMediaWall::ChangeStyleL() |
446 // ----------------------------------------------------------------------------- |
424 // ----------------------------------------------------------------------------- |
447 // |
425 // |
448 EXPORT_C void CHgVgMediaWall::ChangeStyleL( THgVgMediaWallStyle aStyle, const TRect& aRect, TBool /*aReuseSurface*/ ) |
426 EXPORT_C void CHgVgMediaWall::ChangeStyleL( THgVgMediaWallStyle aStyle, |
|
427 const TRect& aRect, TBool /*aReuseSurface*/ ) |
449 { |
428 { |
450 |
429 |
451 // If animation is on, stop it before changing style. |
430 // If animation is on, stop it before changing style. |
452 HandleTransitionAnimationStop(); |
431 HandleTransitionAnimationStop(); |
453 |
432 |
708 iScrollBar->SetViewPosition(TPoint((TInt)iSelectedIndex, 0)); |
687 iScrollBar->SetViewPosition(TPoint((TInt)iSelectedIndex, 0)); |
709 |
688 |
710 } |
689 } |
711 |
690 |
712 // inform observer if needed |
691 // inform observer if needed |
713 if (iMediaWallStyle != EHgVgMediaWallStyleGrid && |
692 if (iMediaWallStyle != EHgVgMediaWallStyleGrid |
714 (iItems.Count() > 0 && iSelectionObserver && !aDontUpdateObserver && !iPointerDown)) |
693 && (iItems.Count() > 0 && iSelectionObserver |
|
694 && !aDontUpdateObserver && !iPointerDown)) |
715 { |
695 { |
716 TRAP_IGNORE(iSelectionObserver->HandleSelectL(iSelectedIndex, this);) |
696 TRAP_IGNORE(iSelectionObserver->HandleSelectL(iSelectedIndex, this);) |
717 } |
697 } |
718 |
698 |
719 // update scroll buffer manager position |
699 // update scroll buffer manager position |
1179 else |
1162 else |
1180 iAnimationState = EHgVgMediaWallAnimationStateIdle; |
1163 iAnimationState = EHgVgMediaWallAnimationStateIdle; |
1181 |
1164 |
1182 iAnimationTimer->Cancel(); |
1165 iAnimationTimer->Cancel(); |
1183 } |
1166 } |
1184 |
|
1185 SetFlags( EHgVgMediaWallDrawToWindowGC ); |
|
1186 DrawNow(); |
|
1187 } |
1167 } |
1188 |
1168 |
1189 if( aType == KEikMessageUnfadeWindows ) |
1169 if( aType == KEikMessageUnfadeWindows ) |
1190 { |
1170 { |
1191 ClearFlags( EHgVgMediaWallDrawToWindowGC ); |
1171 ClearFlags( EHgVgMediaWallDrawToWindowGC ); |
1192 DrawNow(); |
1172 DrawNow(); |
1193 } |
1173 } |
1194 |
1174 } |
1195 if( aType == KEikDynamicLayoutVariantSwitch && !(iFlags & EHgVgMediaWallDrawToWindowGC) ) |
|
1196 { |
|
1197 SetFlags( EHgVgMediaWallDrawToWindowGC ); |
|
1198 DrawNow(); |
|
1199 } |
|
1200 } |
|
1201 |
|
1202 |
1175 |
1203 // --------------------------------------------------------------------------- |
1176 // --------------------------------------------------------------------------- |
1204 // CHgVgMediaWall::InitItemsL() |
1177 // CHgVgMediaWall::InitItemsL() |
1205 // --------------------------------------------------------------------------- |
1178 // --------------------------------------------------------------------------- |
1206 // |
1179 // |
1251 iAnimationTimer->Cancel(); |
1224 iAnimationTimer->Cancel(); |
1252 } |
1225 } |
1253 |
1226 |
1254 iIsForeground = EFalse; |
1227 iIsForeground = EFalse; |
1255 |
1228 |
1256 // draw screenshot using window gc, this is needed |
|
1257 // for nga effects to work |
|
1258 DrawNow(); |
|
1259 |
|
1260 // free textures |
1229 // free textures |
1261 FreeItemsImages(); |
1230 FreeItemsImages(); |
1262 // free other resources |
1231 // free other resources |
1263 DestroyRendering(); |
1232 DestroyRendering(); |
1264 |
1233 |
1265 SetFlags( EHgVgMediaWallUninitialized | EHgVgMediaWallDrawToWindowGC ); |
1234 SetFlags( EHgVgMediaWallUninitialized ); |
|
1235 DrawNow(); |
1266 |
1236 |
1267 iCoeEnv->WsSession().Flush(); |
1237 iCoeEnv->WsSession().Flush(); |
1268 } |
1238 } |
1269 |
1239 |
1270 // --------------------------------------------------------------------------- |
1240 // --------------------------------------------------------------------------- |
1411 return ETrue; |
1381 return ETrue; |
1412 } |
1382 } |
1413 |
1383 |
1414 void CHgVgMediaWall::HandleTransitionAnimationStop() |
1384 void CHgVgMediaWall::HandleTransitionAnimationStop() |
1415 { |
1385 { |
1416 if (iAnimationTimer->IsActive() && (iAnimationState == EHgVgMediaWallAnimationStateTransition || |
1386 if (iAnimationTimer->IsActive() |
1417 iAnimationState == EHgVgMediaWallAnimationStateFastTransition)) |
1387 && (iAnimationState == EHgVgMediaWallAnimationStateTransition || |
|
1388 iAnimationState == EHgVgMediaWallAnimationStateFastTransition)) |
1418 { |
1389 { |
1419 // stop to this location |
1390 // stop to this location |
1420 iSpring->Reset(); |
1391 iSpring->Reset(); |
1421 iAnimationState = EHgVgMediaWallAnimationStateIdle; |
1392 iAnimationState = EHgVgMediaWallAnimationStateIdle; |
1422 |
1393 |
1580 ETrue, CHgScroller::EHgScrollerScrollBar); |
1551 ETrue, CHgScroller::EHgScrollerScrollBar); |
1581 |
1552 |
1582 iScrollBar->SetViewPosition( TPoint(iSelectedIndex, 0) ); |
1553 iScrollBar->SetViewPosition( TPoint(iSelectedIndex, 0) ); |
1583 |
1554 |
1584 #ifdef MEDIAWALL_ORIENTATION_FIX |
1555 #ifdef MEDIAWALL_ORIENTATION_FIX |
1585 iScrollBar->EnableLandscapeRendering( iMediaWallStyle == CHgVgMediaWall::EHgVgMediaWallStyleCoverflowFullScreen ); |
1556 iScrollBar->EnableLandscapeRendering( |
|
1557 iMediaWallStyle == CHgVgMediaWall::EHgVgMediaWallStyleCoverflowFullScreen ); |
1586 #endif |
1558 #endif |
1587 |
1559 |
1588 } |
1560 } |
1589 |
1561 |
1590 // --------------------------------------------------------------------------- |
1562 // --------------------------------------------------------------------------- |
1884 |
1856 |
1885 // --------------------------------------------------------------------------- |
1857 // --------------------------------------------------------------------------- |
1886 // CHgVgMediaWall::HandleDragging() |
1858 // CHgVgMediaWall::HandleDragging() |
1887 // --------------------------------------------------------------------------- |
1859 // --------------------------------------------------------------------------- |
1888 // |
1860 // |
1889 void CHgVgMediaWall::HandleDragging(const AknTouchGestureFw::MAknTouchGestureFwDragEvent& aEvent) |
1861 void CHgVgMediaWall::HandleDragging( |
|
1862 const AknTouchGestureFw::MAknTouchGestureFwDragEvent& aEvent) |
1890 { |
1863 { |
1891 |
1864 |
1892 switch (aEvent.State()) |
1865 switch (aEvent.State()) |
1893 { |
1866 { |
1894 case AknTouchGestureFw::EAknTouchGestureFwStart: |
1867 case AknTouchGestureFw::EAknTouchGestureFwStart: |
1989 |
1962 |
1990 // --------------------------------------------------------------------------- |
1963 // --------------------------------------------------------------------------- |
1991 // CHgVgMediaWall::HandleDragStart() |
1964 // CHgVgMediaWall::HandleDragStart() |
1992 // --------------------------------------------------------------------------- |
1965 // --------------------------------------------------------------------------- |
1993 // |
1966 // |
1994 void CHgVgMediaWall::HandleDragStart(const AknTouchGestureFw::MAknTouchGestureFwDragEvent& /*aEvent*/) |
1967 void CHgVgMediaWall::HandleDragStart( |
|
1968 const AknTouchGestureFw::MAknTouchGestureFwDragEvent& /*aEvent*/) |
1995 { |
1969 { |
1996 |
1970 |
1997 // cancel ongoing animation. |
1971 // cancel ongoing animation. |
1998 if (iAnimationTimer->IsActive()) |
1972 if (iAnimationTimer->IsActive()) |
1999 { |
1973 { |
2017 |
1991 |
2018 // --------------------------------------------------------------------------- |
1992 // --------------------------------------------------------------------------- |
2019 // CHgVgMediaWall::HandleDragOn() |
1993 // CHgVgMediaWall::HandleDragOn() |
2020 // --------------------------------------------------------------------------- |
1994 // --------------------------------------------------------------------------- |
2021 // |
1995 // |
2022 void CHgVgMediaWall::HandleDragOn(const AknTouchGestureFw::MAknTouchGestureFwDragEvent& aEvent) |
1996 void CHgVgMediaWall::HandleDragOn( |
|
1997 const AknTouchGestureFw::MAknTouchGestureFwDragEvent& aEvent) |
2023 { |
1998 { |
2024 |
1999 |
2025 // calculate delta of dragging |
2000 // calculate delta of dragging |
2026 TInt delta = aEvent.StartPosition().iX - aEvent.CurrentPosition().iX; |
2001 TInt delta = aEvent.StartPosition().iX - aEvent.CurrentPosition().iX; |
2027 TReal fDelta = GetAsPercentageOfScreenWidth(delta); |
2002 TReal fDelta = GetAsPercentageOfScreenWidth(delta); |
2061 |
2036 |
2062 // --------------------------------------------------------------------------- |
2037 // --------------------------------------------------------------------------- |
2063 // CHgVgMediaWall::HandleDragStop() |
2038 // CHgVgMediaWall::HandleDragStop() |
2064 // --------------------------------------------------------------------------- |
2039 // --------------------------------------------------------------------------- |
2065 // |
2040 // |
2066 void CHgVgMediaWall::HandleDragStop(const AknTouchGestureFw::MAknTouchGestureFwDragEvent& /*aEvent*/) |
2041 void CHgVgMediaWall::HandleDragStop( |
|
2042 const AknTouchGestureFw::MAknTouchGestureFwDragEvent& /*aEvent*/) |
2067 { |
2043 { |
2068 iPointerDown = EFalse; |
2044 iPointerDown = EFalse; |
2069 if (iMediaWallStyle == EHgVgMediaWallStyleGrid) |
2045 if (iMediaWallStyle == EHgVgMediaWallStyleGrid) |
2070 { |
2046 { |
2071 // if we dragged grids position outside bounds, |
2047 // if we dragged grids position outside bounds, |
2116 } |
2092 } |
2117 else if (iMediaWallStyle == EHgVgMediaWallStyleCoverflowFullScreen || |
2093 else if (iMediaWallStyle == EHgVgMediaWallStyleCoverflowFullScreen || |
2118 iMediaWallStyle == EHgVgMediaWallStyleGrid) |
2094 iMediaWallStyle == EHgVgMediaWallStyleGrid) |
2119 { |
2095 { |
2120 // when scrollbar is being dragged we draw letter popup |
2096 // when scrollbar is being dragged we draw letter popup |
2121 if (iLetterPopup && (iScrollBarHit || (iKeyScrollingState != ENoKeyScrolling && dist > KDrawLetterPopupDistance))) |
2097 if (iLetterPopup && |
|
2098 (iScrollBarHit |
|
2099 || (iKeyScrollingState != ENoKeyScrolling |
|
2100 && dist > KDrawLetterPopupDistance))) |
2122 { |
2101 { |
2123 iLetterPopup->Draw(iRect, KMaxLetterPopupOpacity); |
2102 iLetterPopup->Draw(iRect, KMaxLetterPopupOpacity); |
2124 } |
2103 } |
2125 else |
2104 else |
2126 { |
2105 { |
2137 void CHgVgMediaWall::DrawButtonsAndScrollbar() |
2116 void CHgVgMediaWall::DrawButtonsAndScrollbar() |
2138 { |
2117 { |
2139 if (iScrollBar || iHideSKButton) |
2118 if (iScrollBar || iHideSKButton) |
2140 { |
2119 { |
2141 TReal alpha = 1.0f; |
2120 TReal alpha = 1.0f; |
2142 if (iAnimationState == EHgVgMediaWallAnimationStateOpening || iAnimationState == EHgVgMediaWallAnimationStateClosing) |
2121 if (iAnimationState == EHgVgMediaWallAnimationStateOpening |
|
2122 || iAnimationState == EHgVgMediaWallAnimationStateClosing) |
2143 alpha = 1.0f - iAnimationAlpha; |
2123 alpha = 1.0f - iAnimationAlpha; |
2144 else if (iAnimationState == EHgVgMediaWallAnimationStateItemOpened) |
2124 else if (iAnimationState == EHgVgMediaWallAnimationStateItemOpened) |
2145 alpha = 0.0f; |
2125 alpha = 0.0f; |
2146 if (iScrollBar && iItems.Count() > 0) |
2126 if (iScrollBar && iItems.Count() > 0) |
2147 iScrollBar->Draw(iRect, alpha); |
2127 iScrollBar->Draw(iRect, alpha); |
2172 ret = ETrue; |
2152 ret = ETrue; |
2173 |
2153 |
2174 DrawOpenVG(); |
2154 DrawOpenVG(); |
2175 |
2155 |
2176 if (iMediaWallObserver) |
2156 if (iMediaWallObserver) |
2177 iMediaWallObserver->HandleMediaWallEvent((TInt)EHgVgMediaWallEventRequestShowSoftkeys, this); |
2157 iMediaWallObserver->HandleMediaWallEvent( |
|
2158 EHgVgMediaWallEventRequestShowSoftkeys, this); |
2178 |
2159 |
2179 } |
2160 } |
2180 // if screen is hit when button is not visible, show button and scrollbar |
2161 // if screen is hit when button is not visible, show button and scrollbar |
2181 else if (!iHideSKButton->IsEnabled() && aEvent.iType == TPointerEvent::EButton1Down) |
2162 else if (!iHideSKButton->IsEnabled() |
|
2163 && aEvent.iType == TPointerEvent::EButton1Down) |
2182 { |
2164 { |
2183 |
2165 |
2184 if (iScrollBar) |
2166 if (iScrollBar) |
2185 iScrollBar->SetEnabled(ETrue); |
2167 iScrollBar->SetEnabled(ETrue); |
2186 |
2168 |
2187 iHideSKButton->SetEnabled(ETrue); |
2169 iHideSKButton->SetEnabled(ETrue); |
2188 |
2170 |
2189 DrawOpenVG(); |
2171 DrawOpenVG(); |
2190 |
2172 |
2191 if (iMediaWallObserver) |
2173 if (iMediaWallObserver) |
2192 iMediaWallObserver->HandleMediaWallEvent((TInt)EHgVgMediaWallEventRequestHideSoftkeys, this); |
2174 iMediaWallObserver->HandleMediaWallEvent( |
|
2175 EHgVgMediaWallEventRequestHideSoftkeys, this); |
2193 |
2176 |
2194 } |
2177 } |
2195 } |
2178 } |
2196 |
2179 |
2197 return ret; |
2180 return ret; |