webengine/osswebengine/WebKit/s60/webview/WebPageFullScreenHandler.cpp
changeset 13 10e98eab6f85
parent 8 7c90e6132015
child 68 92a765b5b3e7
child 73 a1a5d4e727e8
--- 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);
-        }
-}