diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/webview/WebPageFullScreenHandler.cpp --- a/webengine/osswebengine/WebKit/s60/webview/WebPageFullScreenHandler.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/webview/WebPageFullScreenHandler.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -41,7 +41,7 @@ { WebPageFullScreenHandler* self = new (ELeave) WebPageFullScreenHandler( webView ); CleanupStack::PushL(self); - self->constructL(); + self->ConstructL(); CleanupStack::Pop(); //self return self; } @@ -52,8 +52,7 @@ // might leave. // ----------------------------------------------------------------------------- // -WebPageFullScreenHandler::WebPageFullScreenHandler(WebView& webView) -: m_webView(&webView), m_spriteVisible(EFalse), m_tappedOnSprite(EFalse) +WebPageFullScreenHandler::WebPageFullScreenHandler(WebView& webView) : m_webView(&webView) { } @@ -62,8 +61,12 @@ // The constructor that can contain code that might leave. // ----------------------------------------------------------------------------- // -void WebPageFullScreenHandler::constructL() +void WebPageFullScreenHandler::ConstructL() { + m_buttonIcon = StaticObjectsContainer::instance()->webCannedImages()->getImage(WebCannedImages::EImageEscFullScreen); + TPoint pos = CalculatePosition(); + BaseConstructL(m_webView, pos, m_buttonIcon.m_img, m_buttonIcon.m_msk, ETrue); + Hide(); } // ----------------------------------------------------------------------------- @@ -75,6 +78,17 @@ } +TPoint WebPageFullScreenHandler::CalculatePosition() +{ + TPoint pos = m_webView->Rect().iBr; + TSize iconSize = m_buttonIcon.m_img->SizeInPixels(); + + pos -= iconSize; + pos -= TPoint(KFullScreenButtonBuff, KFullScreenButtonBuff); + //pos -= m_webView->PositionRelativeToScreen(); + return pos; +} + //------------------------------------------------------------------------------- // WebPageFullScreenHandler::showEscBtnL // Draws the full screen button on the screen @@ -82,10 +96,8 @@ void WebPageFullScreenHandler::showEscBtnL() { - if (AknLayoutUtils::PenEnabled() && !m_spriteVisible) { - constructSprite(); - SizeChanged(); - AddWsObserverToControl(); + if (AknLayoutUtils::PenEnabled()) { + Show(); } } @@ -96,9 +108,8 @@ void WebPageFullScreenHandler::hideEscBtnL() { - if (AknLayoutUtils::PenEnabled() && m_spriteVisible) { - destructSprite(); - m_eventMonitor->RemoveObserver(this); + if (AknLayoutUtils::PenEnabled()) { + Hide(); } } @@ -109,12 +120,9 @@ void WebPageFullScreenHandler::SizeChanged(void) { - if (AknLayoutUtils::PenEnabled() && m_spriteVisible) { - m_pos = m_webView->Rect().iBr; - TPoint point (m_webView->PositionRelativeToScreen()); - m_pos -= TSize( KFullScreenButtonWidth + KFullScreenButtonBuff, - KFullScreenButtonHeight - point.iY + KFullScreenButtonBuff); - m_sprite.SetPosition(m_pos); + if (AknLayoutUtils::PenEnabled()) { + TPoint pos = CalculatePosition(); + SetPos(pos); } } @@ -129,101 +137,23 @@ } -//------------------------------------------------------------------------------- -// WebPageFullScreenHandler::HitRegionContains -// Defines a control's hit region -//------------------------------------------------------------------------------- - -TBool WebPageFullScreenHandler::HitRegionContains(const TPoint& aPoint) -{ - TRect spriteRect (m_pos, TSize(KFullScreenButtonHeight, KFullScreenButtonWidth)); - return spriteRect.Contains(aPoint); -} - - -//------------------------------------------------------------------------------- -// WebPageFullScreenHandler::destructSprite -// close/hide sprite for time being -//------------------------------------------------------------------------------- - -void WebPageFullScreenHandler::destructSprite() +void WebPageFullScreenHandler::HandlePointerEventL(const TPointerEvent& aPointerEvent) { - m_sprite.Close(); - m_spriteVisible = EFalse; -} - -//------------------------------------------------------------------------------- -// WebPageFullScreenHandler::constructSprite -// Show/create sprite at m_pos -//------------------------------------------------------------------------------- + switch (aPointerEvent.iType) + { + case TPointerEvent::EButton1Down: + m_isTouchDown = ETrue; + break; -void WebPageFullScreenHandler::constructSprite() -{ - m_sprite = RWsSprite(m_webView->brCtl()->CCoeControlParent()->ControlEnv()->WsSession()); - m_sprite.Construct(m_webView->brCtl()->CCoeControlParent()->ControlEnv()->RootWin(), m_pos, ESpriteNoShadows); - TCannedImageData cannedImage = StaticObjectsContainer::instance()->webCannedImages()->getImage(WebCannedImages::EImageEscFullScreen); - - TSpriteMember spriteMem; - spriteMem.iBitmap = cannedImage.m_img; - spriteMem.iMaskBitmap = cannedImage.m_msk; //masked bitmap still of the canned image need to be changed - - m_sprite.AppendMember(spriteMem); - m_sprite.Activate(); - - m_spriteVisible = ETrue; + case TPointerEvent::EButton1Up: + { + if (m_isTouchDown) { + Hide(); + m_webView->notifyFullscreenModeChangeL( false ); + } + m_isTouchDown = EFalse; + } + break; + } } -//------------------------------------------------------------------------------- -// WebPageFullScreenHandler::HandleWsEventL -// check if click region hits sprite -//------------------------------------------------------------------------------- - -void WebPageFullScreenHandler::HandleWsEventL(const TWsEvent& aEvent,CCoeControl* aDestination) -{ - if (!aDestination) return; - - if(aEvent.Type() == EEventPointer) - { - switch (aEvent.Pointer()->iType) - { - case TPointerEvent::EButton1Down: - if (m_spriteVisible) - { - TPoint point (aDestination->PositionRelativeToScreen()); - m_tappedOnSprite = HitRegionContains(aEvent.Pointer()->iPosition + point); - } - break; - - case TPointerEvent::EButton1Up: - { - TPoint point (aDestination->PositionRelativeToScreen()); - if (m_spriteVisible && m_tappedOnSprite && - HitRegionContains(aEvent.Pointer()->iPosition + point)) - { - hideEscBtnL(); - m_webView->notifyFullscreenModeChangeL( false ); - } - m_tappedOnSprite = EFalse; - } - break; - - } - } -} - - -//------------------------------------------------------------------------------- -// WebPageFullScreenHandler::AddWsObserverToControl -// register for events from WSession -//------------------------------------------------------------------------------- - -void WebPageFullScreenHandler::AddWsObserverToControl() -{ - m_eventMonitor = ((CAknAppUi*)m_webView->ControlEnv()->AppUi())->EventMonitor(); - - if(m_eventMonitor) - { - m_eventMonitor->AddObserverL(this); - m_eventMonitor->Enable(ETrue); - } -}