webengine/osswebengine/WebKit/s60/webview/BrCtl.cpp
changeset 13 10e98eab6f85
parent 8 7c90e6132015
child 16 a359256acfc6
equal deleted inserted replaced
8:7c90e6132015 13:10e98eab6f85
   282   }
   282   }
   283 }
   283 }
   284 
   284 
   285 void CBrCtl::Draw(const TRect& aRect) const
   285 void CBrCtl::Draw(const TRect& aRect) const
   286 {
   286 {
   287     if (m_webView->isPluginFullscreen()) return; //don't draw if in plugin fullscreen mode
       
   288 
       
   289     if (!(m_capabilities & TBrCtlDefs::ECapabilityDisplayScrollBar) 
       
   290           || (getMainScrollbarWidth() == 0)
       
   291           || AknLayoutUtils::PenEnabled()) { //touch screen scrollbar is drawn
       
   292         return;                         //by WebScrollbarDrawer
       
   293     }
       
   294     CWindowGc& gc = SystemGc();
       
   295     TRect rect(Rect());
       
   296     int documentHeight = (m_displayHeight > m_documentHeight) ? m_displayHeight : m_documentHeight;
       
   297     int documentWidth = (m_displayWidth > m_documentWidth) ? m_displayWidth : m_documentWidth;
       
   298     gc.SetDrawMode(CGraphicsContext::EDrawModePEN);
       
   299     if (AknLayoutUtils::LayoutMirrored()) {
       
   300         // rtl
       
   301         if (m_hasHorizontalScrollbar) {
       
   302             TRect vertical(0, 0, KMainScrollbarWidth, rect.Height() - KMainScrollbarWidth);
       
   303             TRect horizontal(KMainScrollbarWidth, rect.Height() - KMainScrollbarWidth, rect.Width(), rect.Height());
       
   304             TRect verticalThumb(0, (m_displayPosY * m_displayHeight) / documentHeight,
       
   305                 KMainScrollbarWidth, (m_displayPosY * m_displayHeight + m_displayHeight * m_displayHeight) / documentHeight);
       
   306             TRect horizontalThumb(KMainScrollbarWidth + (m_displayPosX * m_displayWidth) / documentWidth, rect.Height() - KMainScrollbarWidth,
       
   307                 KMainScrollbarWidth + (m_displayPosX * m_displayWidth + m_displayWidth * m_displayWidth) / documentWidth, rect.Height());
       
   308             TRect corner(0, rect.Height() - KMainScrollbarWidth, KMainScrollbarWidth, rect.Height());
       
   309             vertical.Intersection(aRect);
       
   310             horizontal.Intersection(aRect);
       
   311             if (!(vertical.IsEmpty() || horizontal.IsEmpty())) {
       
   312                 gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
       
   313                 gc.SetBrushColor(KGray);
       
   314                 gc.SetPenStyle(CGraphicsContext::ESolidPen);
       
   315                 gc.SetPenSize(TSize(1, 1));
       
   316                 gc.SetPenColor(KBlack);
       
   317                 gc.DrawRect(vertical);
       
   318                 gc.DrawRect(horizontal);
       
   319                 gc.SetBrushColor(KDarkGray);
       
   320                 gc.DrawRect(verticalThumb);
       
   321                 gc.DrawRect(horizontalThumb);
       
   322                 gc.SetBrushColor(KWhite);
       
   323                 gc.SetPenColor(KWhite);
       
   324                 gc.DrawRect(corner);
       
   325             }
       
   326         }
       
   327         else {
       
   328             TRect vertical(0, 0, KMainScrollbarWidth, rect.Height());
       
   329             TRect verticalThumb(0, (m_displayPosY * m_displayHeight) / documentHeight,
       
   330                 KMainScrollbarWidth, (m_displayPosY * m_displayHeight + m_displayHeight * m_displayHeight) / documentHeight);
       
   331             vertical.Intersection(aRect);
       
   332             if (!vertical.IsEmpty()) {
       
   333                 gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
       
   334                 gc.SetBrushColor(KGray);
       
   335                 gc.SetPenStyle(CGraphicsContext::ESolidPen);
       
   336                 gc.SetPenSize(TSize(1, 1));
       
   337                 gc.SetPenColor(KBlack);
       
   338                 gc.DrawRect(vertical);
       
   339                 gc.SetBrushColor(KDarkGray);
       
   340                 gc.DrawRect(verticalThumb);
       
   341             }
       
   342         }
       
   343     }
       
   344     else {
       
   345         // ltr
       
   346         if (m_hasHorizontalScrollbar) {
       
   347             TRect vertical(rect.Width() - KMainScrollbarWidth, 0, rect.Width(), rect.Height() - KMainScrollbarWidth);
       
   348             TRect horizontal(0, rect.Height() - KMainScrollbarWidth, rect.Width() - KMainScrollbarWidth, rect.Height());
       
   349             TRect verticalThumb(rect.Width() - KMainScrollbarWidth, (m_displayPosY * m_displayHeight) / documentHeight,
       
   350                 rect.Width(), (m_displayPosY * m_displayHeight + m_displayHeight * m_displayHeight) / documentHeight);
       
   351             TRect horizontalThumb((m_displayPosX * m_displayWidth) / documentWidth, rect.Height() - KMainScrollbarWidth,
       
   352                 (m_displayPosX * m_displayWidth + m_displayWidth * m_displayWidth) / documentWidth, rect.Height());
       
   353             TRect corner(rect.Width() - KMainScrollbarWidth, rect.Height() - KMainScrollbarWidth, rect.Width(), rect.Height());
       
   354             vertical.Intersection(aRect);
       
   355             horizontal.Intersection(aRect);
       
   356             if (!(vertical.IsEmpty() || horizontal.IsEmpty())) {
       
   357                 gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
       
   358                 gc.SetBrushColor(KGray);
       
   359                 gc.SetPenStyle(CGraphicsContext::ESolidPen);
       
   360                 gc.SetPenSize(TSize(1, 1));
       
   361                 gc.SetPenColor(KBlack);
       
   362                 gc.DrawRect(vertical);
       
   363                 gc.DrawRect(horizontal);
       
   364                 gc.SetBrushColor(KDarkGray);
       
   365                 gc.DrawRect(verticalThumb);
       
   366                 gc.DrawRect(horizontalThumb);
       
   367                 gc.SetBrushColor(KWhite);
       
   368                 gc.SetPenColor(KWhite);
       
   369                 gc.DrawRect(corner);
       
   370             }
       
   371         }
       
   372         else
       
   373         {
       
   374             TRect vertical(rect.Width() - KMainScrollbarWidth, 0, rect.Width(), rect.Height());
       
   375             TRect verticalThumb(rect.Width() - KMainScrollbarWidth, (m_displayPosY * m_displayHeight) / documentHeight,
       
   376                 rect.Width(), (m_displayPosY * m_displayHeight + m_displayHeight * m_displayHeight) / documentHeight);
       
   377             vertical.Intersection(aRect);
       
   378             if (!vertical.IsEmpty()) {
       
   379                 gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
       
   380                 gc.SetBrushColor(KGray);
       
   381                 gc.SetPenStyle(CGraphicsContext::ESolidPen);
       
   382                 gc.SetPenSize(TSize(1, 1));
       
   383                 gc.SetPenColor(KBlack);
       
   384                 gc.DrawRect(vertical);
       
   385                 gc.SetBrushColor(KDarkGray);
       
   386                 gc.DrawRect(verticalThumb);
       
   387             }
       
   388         }
       
   389     }
       
   390 
       
   391 }
   287 }
   392 
   288 
   393 
   289 
   394 WebSurface* HistoryHandler::surface()
   290 WebSurface* HistoryHandler::surface()
   395 {
   291 {
   546     SetContainerWindowL( *aParent );
   442     SetContainerWindowL( *aParent );
   547     m_rect = aRect;
   443     m_rect = aRect;
   548     m_webView = WebView::NewL(*aParent, this);
   444     m_webView = WebView::NewL(*aParent, this);
   549     m_historyHandler = HistoryHandler::initWithHandle(this);
   445     m_historyHandler = HistoryHandler::initWithHandle(this);
   550     m_settingsContainer = new (ELeave) SettingsContainer(m_webView, m_historyHandler->historyController());
   446     m_settingsContainer = new (ELeave) SettingsContainer(m_webView, m_historyHandler->historyController());
   551     m_settingsContainer->setTabbedNavigation(!(capabilities()&TBrCtlDefs::ECapabilityCursorNavigation));
   447     m_settingsContainer->setNavigationType((capabilities()&TBrCtlDefs::ECapabilityCursorNavigation) ? SettingsContainer::NavigationTypeCursor : SettingsContainer::NavigationTypeTabbed);
   552 
   448 
   553   m_usrAgnt = CUserAgent::NewL();
   449     m_usrAgnt = CUserAgent::NewL();
   554 
   450 
   555     if (m_brCtlLayoutObserver == NULL)
   451     if (m_brCtlLayoutObserver == NULL)
   556         {
   452         {
   557         m_brCtlLayoutObserver = new (ELeave) CBrCtlLayoutObserver();
   453         m_brCtlLayoutObserver = new (ELeave) CBrCtlLayoutObserver();
   558         m_ownsLayoutObserver = true;
   454         m_ownsLayoutObserver = true;
  1076 EXPORT_C void CBrCtl::LoadDataL(const TDesC& aUrl, const TDesC8& aData,
   972 EXPORT_C void CBrCtl::LoadDataL(const TDesC& aUrl, const TDesC8& aData,
  1077                                 const TDataType& aDataType,
   973                                 const TDataType& aDataType,
  1078                                 TUid aCharsetUid)
   974                                 TUid aCharsetUid)
  1079 {
   975 {
  1080     const TText* charset = charsetForUid(aCharsetUid.iUid);
   976     const TText* charset = charsetForUid(aCharsetUid.iUid);
  1081     if (charset == NULL) {
       
  1082         charset = _S("iso-8859-1");
       
  1083     }
       
  1084 
   977 
  1085     HBufC8* url = HBufC8::NewLC(aUrl.Length());
   978     HBufC8* url = HBufC8::NewLC(aUrl.Length());
  1086     url->Des().Copy(aUrl);
   979     url->Des().Copy(aUrl);
  1087     PassRefPtr<SharedBuffer> data = new SharedBuffer((const char*)aData.Ptr(), aData.Length());
   980     PassRefPtr<SharedBuffer> data = new SharedBuffer((const char*)aData.Ptr(), aData.Length());
  1088     String mimeTypeStr(aDataType.Des());
   981     String mimeTypeStr(aDataType.Des());
  1850 // BrowserControl.
  1743 // BrowserControl.
  1851 // -----------------------------------------------------------------------------
  1744 // -----------------------------------------------------------------------------
  1852 //
  1745 //
  1853 void CBrCtl::SizeChanged()
  1746 void CBrCtl::SizeChanged()
  1854 {
  1747 {
  1855     if (m_webView->isPluginFullscreen()) return;
  1748     if (StaticObjectsContainer::instance()->isPluginFullscreen()) return;
  1856     TRect adjustedRect( Rect() );
  1749     TRect adjustedRect( Rect() );
  1857     TBool callDoLayout = EFalse;
  1750     TBool callDoLayout = EFalse;
  1858     TInt  scrollBarWidth = getMainScrollbarWidth();
  1751     TInt  scrollBarWidth = getMainScrollbarWidth();
  1859 
  1752 
  1860     if ( (m_capabilities & TBrCtlDefs::ECapabilityDisplayScrollBar)) {
  1753     if ( (m_capabilities & TBrCtlDefs::ECapabilityDisplayScrollBar)) {
  2120     CBrCtlInterface* newBrctl = NULL;
  2013     CBrCtlInterface* newBrctl = NULL;
  2121     TPtrC emptyUrl = KNullDesC();
  2014     TPtrC emptyUrl = KNullDesC();
  2122     if (m_brCtlWindowObserver) {
  2015     if (m_brCtlWindowObserver) {
  2123         newBrctl = m_brCtlWindowObserver->FindWindowL(windowName);
  2016         newBrctl = m_brCtlWindowObserver->FindWindowL(windowName);
  2124         if (!newBrctl)
  2017         if (!newBrctl)
  2125             newBrctl = m_brCtlWindowObserver->OpenWindowL(emptyUrl, &windowName, userGesture, 0);
  2018         {
       
  2019          if(StaticObjectsContainer::instance()->isPluginFullscreen())
       
  2020          {
       
  2021             PluginSkin* plugin=m_webView->mainFrame()->focusedPlugin();
       
  2022             plugin->deActivate();
       
  2023          }
       
  2024          newBrctl = m_brCtlWindowObserver->OpenWindowL(emptyUrl, &windowName, userGesture, 0);            
       
  2025         }
  2126     }
  2026     }
  2127     return static_cast<CBrCtl*>(newBrctl);
  2027     return static_cast<CBrCtl*>(newBrctl);
  2128 }
  2028 }
  2129 
  2029 
  2130 void CBrCtl::showWindow()
  2030 void CBrCtl::showWindow()
  2473 }
  2373 }
  2474 
  2374 
  2475 
  2375 
  2476 int CBrCtl::getMainScrollbarWidth() const
  2376 int CBrCtl::getMainScrollbarWidth() const
  2477 {
  2377 {
  2478   //return (AknLayoutUtils::PenEnabled() ?  0  :  KMainScrollbarWidth);
       
  2479   return 0;
  2378   return 0;
  2480 }
  2379 }
  2481 
  2380 
  2482 MBrCtlDownloadObserver* CBrCtl::brCtlDownloadObserver()
  2381 MBrCtlDownloadObserver* CBrCtl::brCtlDownloadObserver()
  2483 {
  2382 {
  2484     if (!m_brCtlDownloadObserver) {
  2383     if (!m_brCtlDownloadObserver) {
  2485         return WebCore::StaticObjectsContainer::instance()->resourceLoaderDelegate()->httpSessionManager()->uiCallback();
  2384         return WebCore::StaticObjectsContainer::instance()->resourceLoaderDelegate()->httpSessionManager()->uiCallback();
  2486     }
  2385     }
  2487     return m_brCtlDownloadObserver;
  2386     return m_brCtlDownloadObserver;
  2488 }
  2387 }
       
  2388 
       
  2389 
       
  2390 
  2489 void CBrCtl::HandlePointerBufferReadyL()
  2391 void CBrCtl::HandlePointerBufferReadyL()
  2490 {
  2392 {
  2491     m_webView->HandlePointerBufferReadyL();
  2393     m_webView->HandlePointerBufferReadyL();
  2492 }
  2394 }