ginebra2/ChromeView.cpp
changeset 0 1450b09d0cfd
child 3 0954f5dd2cd0
child 5 0f2326c2a325
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ginebra2/ChromeView.cpp	Tue May 04 12:39:35 2010 +0300
@@ -0,0 +1,138 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#include <QtGui>
+#include <QWebPage>
+
+#include "ChromeView.h"
+#include "ChromeWidget.h"
+#ifndef NO_QSTM_GESTURE
+#include "qstmgestureevent.h"
+#endif
+
+#ifdef Q_OS_SYMBIAN
+#ifdef SET_DEFAULT_IAP
+#include "sym_iap_util.h"
+#endif //SET_DEFAULT_IAP
+#endif //Q_OS_SYMBIAN
+
+namespace GVA {
+
+ChromeView::ChromeView(ChromeWidget * chrome, QWidget * parent)
+  : QGraphicsView(chrome->scene(), parent),
+    m_topWidget(chrome)
+{
+  //setGeometry(chrome->geometry().toRect());
+  setObjectName("ChromeView");
+  //When content view is external widget, make the background transparent
+  //setStyleSheet("QGraphicsView#ChromeView {margin:0; border: 0; padding:0; background:transparent}");
+  setStyleSheet("QGraphicsView#ChromeView {margin:0; border: 0; padding:0; background:#fff}");
+  setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+  setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+  //NB: maybe not needed?
+  setViewportUpdateMode(QGraphicsView::MinimalViewportUpdate);
+  //installEventFilter(this);
+  //chrome->page()->setView(this);
+#ifndef NO_QSTM_GESTURE
+  ungrabGesture(Qt::PanGesture);
+  ungrabGesture(Qt::TapGesture);
+  ungrabGesture(Qt::TapAndHoldGesture);
+  ungrabGesture(Qt::PinchGesture);
+  ungrabGesture(Qt::SwipeGesture);
+#endif
+
+#ifdef Q_OS_SYMBIAN
+#ifdef SET_DEFAULT_IAP
+    QTimer::singleShot(0, this, SLOT(setDefaultIap()));
+  //setDefaultIap();
+#endif //SET_DEFAULT_IAP
+#endif //Q_OS_SYMBIAN
+}
+  
+ChromeView::~ChromeView()
+{
+
+}
+
+void ChromeView::resizeEvent(QResizeEvent * ev)
+{
+  //Resize the chrome to match the view and scene rectangle size
+
+  if(m_topWidget)
+     m_topWidget->setGeometry(0,0, ev->size().width(), ev->size().height());
+  QGraphicsView::resizeEvent(ev);
+}
+
+//Never scroll the chrome
+//NB: this shouldn't be needed, but some events from
+//the chrome are causing scrolling. Need to track this
+//down further.
+
+void ChromeView::scrollContentsBy(int dx, int dy)
+{
+  // qDebug() << "View scroll";
+  //  QGraphicsView::scrollContentsBy(dx, dy);
+}
+
+  //Eat key events not otherwise consumed.
+  /*  bool ChromeView::eventFilter(QObject * obj, QEvent * ev)
+  {
+   if(ev->type() == QEvent::KeyPress){
+   		int key = static_cast<QKeyEvent*>(ev)->key();
+   		if(key == Qt::Key_Down || key == Qt::Key_Up || key ==Qt::Key_Left){
+         return true;
+       }
+    }
+    return QObject::eventFilter(obj,ev);
+ 
+    }*/
+  
+bool ChromeView::event(QEvent* event)
+{
+#ifndef NO_QSTM_GESTURE
+	  if (event->type() == QEvent::Gesture) {
+	      QStm_Gesture* gesture = getQStmGesture(event);
+	      if (gesture) {
+			  QPoint pos = mapFromGlobal(gesture->position());
+	    	  QGraphicsScene* gs = scene();
+			  QGraphicsItem* gi = gs->itemAt(QPointF(pos));
+
+			  if (gi) {
+			      gs->sendEvent(gi, event);
+			  }
+			  return true;
+	      }
+	  }	  
+#endif
+	return QGraphicsView::event(event);
+}
+
+#ifdef Q_OS_SYMBIAN
+#ifdef SET_DEFAULT_IAP
+void ChromeView::setDefaultIap()
+{
+#ifdef ENABLE_PERF_TRACE
+    PERF_DEBUG() << "Setting up default IAP.\n";
+#endif
+
+    qt_SetDefaultIap();
+}
+#endif // SET_DEFAULT_IAP
+#endif // Q_OS_SYMBIAN
+
+} // namespace GVA
\ No newline at end of file