QmlProfiler: Initial conversion from Quick 1 to Quick 2

Updated class names and functions. Fixed imports.

Change-Id: I5f12e3a108a0e60c091acc9c415ff77e52118029
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
This commit is contained in:
Thomas Hartmann
2013-09-16 14:33:07 +02:00
parent 8e281fe27b
commit 9e58ab2ac8
25 changed files with 143 additions and 136 deletions

View File

@@ -64,16 +64,18 @@ isEmpty(IDE_PACKAGE_MODE) {
contains(QT_CONFIG, declarative)|!isEmpty(QT.declarative.name) { contains(QT_CONFIG, declarative)|!isEmpty(QT.declarative.name) {
SUBDIRS += \ SUBDIRS += \
qmlprojectmanager \ qmlprojectmanager
qmlprofiler
greaterThan(QT_MAJOR_VERSION, 4):greaterThan(QT_MINOR_VERSION, 0) { greaterThan(QT_MAJOR_VERSION, 4):greaterThan(QT_MINOR_VERSION, 0) {
SUBDIRS += \ SUBDIRS += \
qmldesigner \ qmldesigner \
qmlprofiler \
welcome welcome
} else { } else {
warning("QmlDesigner plugin has been disabled.") warning("QmlDesigner plugin has been disabled.")
warning("The plugin needs at least Qt 5.1.") warning("QmlProfiler plugin has been disabled.")
warning("Welcome plugin has been disabled.")
warning("These plugins need at least Qt 5.1.")
} }
} else { } else {
warning("QmlProjectManager, QmlProfiler and QmlDesigner plugins have been disabled: The plugins require QtDeclarative") warning("QmlProjectManager, QmlProfiler and QmlDesigner plugins have been disabled: The plugins require QtDeclarative")

View File

@@ -35,16 +35,14 @@
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
Canvas::Canvas(QDeclarativeItem *parent) Canvas::Canvas(QQuickPaintedItem *parent)
: QDeclarativeItem(parent), : QQuickPaintedItem(parent),
m_context(new Context2D(this)), m_context(new Context2D(this)),
m_canvasWidth(0), m_canvasWidth(0),
m_canvasHeight(0), m_canvasHeight(0),
m_fillMode(Canvas::Stretch), m_fillMode(Canvas::Stretch),
m_color(Qt::white) m_color(Qt::white)
{ {
setFlag(QGraphicsItem::ItemHasNoContents, false);
setCacheMode(QGraphicsItem::DeviceCoordinateCache);
} }
@@ -57,10 +55,10 @@ void Canvas::componentComplete()
connect(m_context, SIGNAL(changed()), this, SLOT(requestPaint())); connect(m_context, SIGNAL(changed()), this, SLOT(requestPaint()));
emit init(); emit init();
QDeclarativeItem::componentComplete(); QQuickItem::componentComplete();
} }
void Canvas::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) void Canvas::paint(QPainter *painter)
{ {
m_context->setInPaint(true); m_context->setInPaint(true);
emit paint(); emit paint();
@@ -160,7 +158,7 @@ void Canvas::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometr
&& newGeometry.width() > 0 && newGeometry.height() > 0) { && newGeometry.width() > 0 && newGeometry.height() > 0) {
m_context->setSize(width(), height()); m_context->setSize(width(), height());
} }
QDeclarativeItem::geometryChanged(newGeometry, oldGeometry); QQuickItem::geometryChanged(newGeometry, oldGeometry);
} }
void Canvas::setCanvasWidth(int newWidth) void Canvas::setCanvasWidth(int newWidth)
@@ -219,24 +217,24 @@ CanvasImage *Canvas::toImage() const
return new CanvasImage(m_context->pixmap()); return new CanvasImage(m_context->pixmap());
} }
void Canvas::setTimeout(const QScriptValue &handler, long timeout) void Canvas::setTimeout(const QJSValue &handler, long timeout)
{ {
if (handler.isFunction()) if (handler.isCallable())
CanvasTimer::createTimer(this, handler, timeout, true); CanvasTimer::createTimer(this, handler, timeout, true);
} }
void Canvas::setInterval(const QScriptValue &handler, long interval) void Canvas::setInterval(const QJSValue &handler, long interval)
{ {
if (handler.isFunction()) if (handler.isCallable())
CanvasTimer::createTimer(this, handler, interval, false); CanvasTimer::createTimer(this, handler, interval, false);
} }
void Canvas::clearTimeout(const QScriptValue &handler) void Canvas::clearTimeout(const QJSValue &handler)
{ {
CanvasTimer::removeTimer(handler); CanvasTimer::removeTimer(handler);
} }
void Canvas::clearInterval(const QScriptValue &handler) void Canvas::clearInterval(const QJSValue &handler)
{ {
CanvasTimer::removeTimer(handler); CanvasTimer::removeTimer(handler);
} }

View File

@@ -30,15 +30,14 @@
#ifndef QDECLARATIVECANVAS_P_H #ifndef QDECLARATIVECANVAS_P_H
#define QDECLARATIVECANVAS_P_H #define QDECLARATIVECANVAS_P_H
#include <qdeclarativeitem.h> #include <QQuickPaintedItem>
#include "qdeclarativecontext2d_p.h" #include "qdeclarativecontext2d_p.h"
#include "qdeclarativecanvastimer_p.h" #include "qdeclarativecanvastimer_p.h"
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
QT_MODULE(Declarative) class Canvas : public QQuickPaintedItem
class Canvas : public QDeclarativeItem
{ {
Q_OBJECT Q_OBJECT
@@ -49,11 +48,11 @@ class Canvas : public QDeclarativeItem
Q_PROPERTY(FillMode fillMode READ fillMode WRITE setFillMode NOTIFY fillModeChanged) Q_PROPERTY(FillMode fillMode READ fillMode WRITE setFillMode NOTIFY fillModeChanged)
public: public:
Canvas(QDeclarativeItem *parent = 0); Canvas(QQuickPaintedItem *parent = 0);
enum FillMode { Stretch, PreserveAspectFit, PreserveAspectCrop, Tile, TileVertically, TileHorizontally }; enum FillMode { Stretch, PreserveAspectFit, PreserveAspectCrop, Tile, TileVertically, TileHorizontally };
void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *); void paint(QPainter *);
void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry); void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry);
void setCanvasWidth(int newWidth); void setCanvasWidth(int newWidth);
int canvasWidth() {return m_canvasWidth;} int canvasWidth() {return m_canvasWidth;}
@@ -78,10 +77,10 @@ public Q_SLOTS:
bool save(const QString& filename) const; bool save(const QString& filename) const;
// Timers // Timers
void setInterval(const QScriptValue &handler, long timeout); void setInterval(const QJSValue &handler, long timeout);
void setTimeout(const QScriptValue &handler, long timeout); void setTimeout(const QJSValue &handler, long timeout);
void clearInterval(const QScriptValue &handler); void clearInterval(const QJSValue &handler);
void clearTimeout(const QScriptValue &handler); void clearTimeout(const QJSValue &handler);
Q_SIGNALS: Q_SIGNALS:
void fillModeChanged(); void fillModeChanged();

View File

@@ -29,28 +29,28 @@
#include "qdeclarativecanvastimer_p.h" #include "qdeclarativecanvastimer_p.h"
#include <qscriptengine.h> #include <QJSEngine>
#include <qscriptvalue.h> #include <QJSValue>
#include <qtimer.h> #include <qtimer.h>
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
Q_GLOBAL_STATIC(QList<CanvasTimer*> , activeTimers); Q_GLOBAL_STATIC(QList<CanvasTimer*> , activeTimers);
CanvasTimer::CanvasTimer(QObject *parent, const QScriptValue &data) CanvasTimer::CanvasTimer(QObject *parent, const QJSValue &data)
: QTimer(parent), m_value(data) : QTimer(parent), m_value(data)
{ {
} }
void CanvasTimer::handleTimeout() void CanvasTimer::handleTimeout()
{ {
Q_ASSERT(m_value.isFunction()); Q_ASSERT(m_value.isCallable());
m_value.call(); m_value.call();
if (isSingleShot()) if (isSingleShot())
removeTimer(this); removeTimer(this);
} }
void CanvasTimer::createTimer(QObject *parent, const QScriptValue &val, long timeout, bool singleshot) void CanvasTimer::createTimer(QObject *parent, const QJSValue &val, long timeout, bool singleshot)
{ {
CanvasTimer *timer = new CanvasTimer(parent, val); CanvasTimer *timer = new CanvasTimer(parent, val);
@@ -67,9 +67,9 @@ void CanvasTimer::removeTimer(CanvasTimer *timer)
timer->deleteLater(); timer->deleteLater();
} }
void CanvasTimer::removeTimer(const QScriptValue &val) void CanvasTimer::removeTimer(const QJSValue &val)
{ {
if (!val.isFunction()) if (!val.isCallable())
return; return;
for (int i = 0 ; i < activeTimers()->count() ; ++i) { for (int i = 0 ; i < activeTimers()->count() ; ++i) {

View File

@@ -30,32 +30,30 @@
#ifndef QDECLARATIVECANVASTIMER_P_H #ifndef QDECLARATIVECANVASTIMER_P_H
#define QDECLARATIVECANVASTIMER_P_H #define QDECLARATIVECANVASTIMER_P_H
#include <qscriptvalue.h> #include <QJSValue>
#include <qtimer.h> #include <qtimer.h>
#include <qlist.h> #include <qlist.h>
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
QT_MODULE(Declarative)
class CanvasTimer : public QTimer class CanvasTimer : public QTimer
{ {
Q_OBJECT Q_OBJECT
public: public:
CanvasTimer(QObject *parent, const QScriptValue &data); CanvasTimer(QObject *parent, const QJSValue &data);
public Q_SLOTS: public Q_SLOTS:
void handleTimeout(); void handleTimeout();
bool equals(const QScriptValue &value){return m_value.equals(value);} bool equals(const QJSValue &value){return m_value.equals(value);}
public: public:
static void createTimer(QObject *parent, const QScriptValue &val, long timeout, bool singleshot); static void createTimer(QObject *parent, const QJSValue &val, long timeout, bool singleshot);
static void removeTimer(CanvasTimer *timer); static void removeTimer(CanvasTimer *timer);
static void removeTimer(const QScriptValue &); static void removeTimer(const QJSValue &);
private: private:
QScriptValue m_value; QJSValue m_value;
}; };

View File

@@ -39,6 +39,7 @@
#include <qgraphicseffect.h> #include <qgraphicseffect.h>
#include <QImage> #include <QImage>
#include <QWidget>
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
@@ -737,8 +738,8 @@ void Context2D::strokeRect(qreal x, qreal y, qreal w, qreal h)
scheduleChange(); scheduleChange();
} }
void Context2D::mouseArea(qreal x, qreal y, qreal w, qreal h, const QScriptValue &callback, void Context2D::mouseArea(qreal x, qreal y, qreal w, qreal h, const QJSValue &callback,
const QScriptValue &data) const QJSValue &data)
{ {
MouseArea a = { callback, data, QRectF(x, y, w, h), m_state.matrix }; MouseArea a = { callback, data, QRectF(x, y, w, h), m_state.matrix };
m_mouseAreas << a; m_mouseAreas << a;
@@ -1103,9 +1104,14 @@ void Context2D::setPainterTranslate(const QPoint &translate)
} }
void Context2D::scheduleChange() void Context2D::scheduleChange()
{
QMetaObject::invokeMethod(this, "onScheduleChange", Qt::QueuedConnection, Q_ARG(int, 0));
}
void Context2D::onScheduleChange(int interval)
{ {
if (m_changeTimerId == -1 && !m_inPaint) if (m_changeTimerId == -1 && !m_inPaint)
m_changeTimerId = startTimer(0); m_changeTimerId = startTimer(interval);
} }
void Context2D::timerEvent(QTimerEvent *e) void Context2D::timerEvent(QTimerEvent *e)

View File

@@ -38,12 +38,11 @@
#include <qmetatype.h> #include <qmetatype.h>
#include <qcoreevent.h> #include <qcoreevent.h>
#include <qvariant.h> #include <qvariant.h>
#include <qscriptvalue.h>
#include <QJSValue>
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
QT_MODULE(Declarative)
QColor colorFromString(const QString &name); QColor colorFromString(const QString &name);
class CanvasGradient : public QObject class CanvasGradient : public QObject
@@ -174,8 +173,8 @@ public:
void setShadowColor(const QString &str); void setShadowColor(const QString &str);
struct MouseArea { struct MouseArea {
QScriptValue callback; QJSValue callback;
QScriptValue data; QJSValue data;
QRectF rect; QRectF rect;
QMatrix matrix; QMatrix matrix;
}; };
@@ -209,7 +208,7 @@ public slots:
void strokeRect(qreal x, qreal y, qreal w, qreal h); void strokeRect(qreal x, qreal y, qreal w, qreal h);
// mouse // mouse
void mouseArea(qreal x, qreal y, qreal w, qreal h, const QScriptValue &, const QScriptValue & = QScriptValue()); void mouseArea(qreal x, qreal y, qreal w, qreal h, const QJSValue &, const QJSValue & = QJSValue());
// path API // path API
void beginPath(); void beginPath();
@@ -239,6 +238,9 @@ public slots:
void putImageData(ImageData image, qreal dx, qreal dy); void putImageData(ImageData image, qreal dx, qreal dy);
void endPainting(); void endPainting();
private slots:
void onScheduleChange(int interval);
signals: signals:
void changed(); void changed();

View File

@@ -41,9 +41,7 @@ QmlProfilerCanvas::QmlProfilerCanvas()
: m_context2d(new Context2D(this)) : m_context2d(new Context2D(this))
, m_dirty(true) , m_dirty(true)
{ {
setFlag(QGraphicsItem::ItemHasNoContents, false);
setAcceptedMouseButtons(Qt::LeftButton); setAcceptedMouseButtons(Qt::LeftButton);
setCacheMode(QGraphicsItem::DeviceCoordinateCache);
} }
void QmlProfilerCanvas::requestPaint() void QmlProfilerCanvas::requestPaint()
@@ -57,7 +55,7 @@ void QmlProfilerCanvas::requestRedraw()
update(); update();
} }
void QmlProfilerCanvas::paint(QPainter *p, const QStyleOptionGraphicsItem *, QWidget *) void QmlProfilerCanvas::paint(QPainter *p)
{ {
if (m_context2d->size().width() != width() || m_context2d->size().height() != height()) { if (m_context2d->size().width() != width() || m_context2d->size().height() != height()) {
m_dirty = true; m_dirty = true;
@@ -84,7 +82,7 @@ void QmlProfilerCanvas::componentComplete()
if (p.hasNotifySignal()) if (p.hasNotifySignal())
QMetaObject::connect(this, p.notifySignalIndex(), this, requestPaintMethod, 0, 0); QMetaObject::connect(this, p.notifySignalIndex(), this, requestPaintMethod, 0, 0);
} }
QDeclarativeItem::componentComplete(); QQuickItem::componentComplete();
} }
} }

View File

@@ -30,7 +30,7 @@
#ifndef QMLPROFILERCANVAS_H #ifndef QMLPROFILERCANVAS_H
#define QMLPROFILERCANVAS_H #define QMLPROFILERCANVAS_H
#include <QDeclarativeItem> #include <QQuickPaintedItem>
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
class Context2D; class Context2D;
@@ -39,7 +39,7 @@ QT_END_NAMESPACE
namespace QmlProfiler { namespace QmlProfiler {
namespace Internal { namespace Internal {
class QmlProfilerCanvas : public QDeclarativeItem class QmlProfilerCanvas : public QQuickPaintedItem
{ {
Q_OBJECT Q_OBJECT
@@ -67,7 +67,7 @@ public slots:
void requestRedraw(); void requestRedraw();
protected: protected:
virtual void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *); virtual void paint(QPainter *);
virtual void componentComplete(); virtual void componentComplete();
private: private:

View File

@@ -27,7 +27,7 @@
** **
****************************************************************************/ ****************************************************************************/
import QtQuick 1.0 import QtQuick 2.0
import Monitor 1.0 import Monitor 1.0
Item { Item {

View File

@@ -27,7 +27,7 @@
** **
****************************************************************************/ ****************************************************************************/
import QtQuick 1.0 import QtQuick 2.0
Item { Item {
id: labelContainer id: labelContainer

View File

@@ -27,7 +27,7 @@
** **
****************************************************************************/ ****************************************************************************/
import QtQuick 1.0 import QtQuick 2.0
import Monitor 1.0 import Monitor 1.0
Rectangle { Rectangle {
@@ -502,7 +502,7 @@ Rectangle {
onPressed: { onPressed: {
selectionRange.pressedOnCreation(); selectionRange.pressedOnCreation();
} }
onMousePositionChanged: { onPositionChanged: {
selectionRange.movedOnCreation(); selectionRange.movedOnCreation();
} }
} }

View File

@@ -27,7 +27,7 @@
** **
****************************************************************************/ ****************************************************************************/
import QtQuick 1.0 import QtQuick 2.0
import Monitor 1.0 import Monitor 1.0
import "Overview.js" as Plotter import "Overview.js" as Plotter
@@ -108,7 +108,7 @@ Canvas2D {
onPressed: { onPressed: {
jumpTo(mouse.x); jumpTo(mouse.x);
} }
onMousePositionChanged: { onPositionChanged: {
jumpTo(mouse.x); jumpTo(mouse.x);
} }
} }

View File

@@ -27,7 +27,7 @@
** **
****************************************************************************/ ****************************************************************************/
import QtQuick 1.0 import QtQuick 2.0
import Monitor 1.0 import Monitor 1.0
Item { Item {

View File

@@ -27,7 +27,7 @@
** **
****************************************************************************/ ****************************************************************************/
import QtQuick 1.0 import QtQuick 2.0
Rectangle { Rectangle {
id: rangeMover id: rangeMover

View File

@@ -27,7 +27,7 @@
** **
****************************************************************************/ ****************************************************************************/
import QtQuick 1.0 import QtQuick 2.0
Rectangle { Rectangle {
id: selectionRange id: selectionRange

View File

@@ -27,7 +27,7 @@
** **
****************************************************************************/ ****************************************************************************/
import QtQuick 1.0 import QtQuick 2.0
import Monitor 1.0 import Monitor 1.0
Item { Item {

View File

@@ -27,7 +27,7 @@
** **
****************************************************************************/ ****************************************************************************/
import QtQuick 1.0 import QtQuick 2.0
import Monitor 1.0 import Monitor 1.0
Canvas2D { Canvas2D {

View File

@@ -27,7 +27,7 @@
** **
****************************************************************************/ ****************************************************************************/
import QtQuick 1.0 import QtQuick 2.0
import Monitor 1.0 import Monitor 1.0
Canvas2D { Canvas2D {

View File

@@ -1,6 +1,6 @@
DEFINES += QMLPROFILER_LIBRARY DEFINES += QMLPROFILER_LIBRARY
QT += network script declarative QT += network qml quick
include(../../qtcreatorplugin.pri) include(../../qtcreatorplugin.pri)
include(canvas/canvas.pri) include(canvas/canvas.pri)

View File

@@ -5,7 +5,7 @@ import "../QtcPlugin.qbs" as QtcPlugin
QtcPlugin { QtcPlugin {
name: "QmlProfiler" name: "QmlProfiler"
Depends { name: "Qt"; submodules: ["widgets", "network", "script", "declarative"] } Depends { name: "Qt"; submodules: ["widgets", "network", "qml", "quick"] }
Depends { name: "Core" } Depends { name: "Core" }
Depends { name: "AnalyzerBase" } Depends { name: "AnalyzerBase" }
Depends { name: "QmlProjectManager" } Depends { name: "QmlProjectManager" }

View File

@@ -42,7 +42,7 @@
#include <utils/styledbar.h> #include <utils/styledbar.h>
#include <QDeclarativeContext> #include <QQmlContext>
#include <QToolButton> #include <QToolButton>
#include <QEvent> #include <QEvent>
#include <QVBoxLayout> #include <QVBoxLayout>
@@ -50,6 +50,7 @@
#include <QScrollBar> #include <QScrollBar>
#include <QSlider> #include <QSlider>
#include <QMenu> #include <QMenu>
#include <QQuickItem>
#include <math.h> #include <math.h>
@@ -86,23 +87,22 @@ void ZoomControl::setRange(qint64 startTime, qint64 endTime)
} }
///////////////////////////////////////////////////////// /////////////////////////////////////////////////////////
ScrollableDeclarativeView::ScrollableDeclarativeView(QWidget *parent) ScrollableQuickView::ScrollableQuickView(QQuickView *parent)
: QDeclarativeView(parent) : QQuickView(parent)
{ {
} }
ScrollableDeclarativeView::~ScrollableDeclarativeView() ScrollableQuickView::~ScrollableQuickView()
{ {
} }
void ScrollableDeclarativeView::scrollContentsBy(int dx, int dy) void ScrollableQuickView::scrollContentsBy(int /*dx*/, int dy)
{ {
// special workaround to track the scrollbar // special workaround to track the scrollbar
if (rootObject()) { if (rootObject()) {
int scrollY = rootObject()->property("scrollY").toInt(); int scrollY = rootObject()->property("scrollY").toInt();
rootObject()->setProperty("scrollY", QVariant(scrollY - dy)); rootObject()->setProperty("scrollY", QVariant(scrollY - dy));
} }
QDeclarativeView::scrollContentsBy(dx,dy);
} }
///////////////////////////////////////////////////////// /////////////////////////////////////////////////////////
@@ -110,6 +110,13 @@ class QmlProfilerTraceView::QmlProfilerTraceViewPrivate
{ {
public: public:
QmlProfilerTraceViewPrivate(QmlProfilerTraceView *qq) : q(qq) {} QmlProfilerTraceViewPrivate(QmlProfilerTraceView *qq) : q(qq) {}
~QmlProfilerTraceViewPrivate()
{
delete m_mainView;
delete m_timebar;
delete m_overview;
}
QmlProfilerTraceView *q; QmlProfilerTraceView *q;
QmlProfilerStateManager *m_profilerState; QmlProfilerStateManager *m_profilerState;
@@ -118,9 +125,9 @@ public:
QSize m_sizeHint; QSize m_sizeHint;
ScrollableDeclarativeView *m_mainView; ScrollableQuickView *m_mainView;
QDeclarativeView *m_timebar; QQuickView *m_timebar;
QDeclarativeView *m_overview; QQuickView *m_overview;
QmlProfilerModelManager *m_modelManager; QmlProfilerModelManager *m_modelManager;
TimelineModelAggregator *m_modelProxy; TimelineModelAggregator *m_modelProxy;
@@ -145,40 +152,38 @@ QmlProfilerTraceView::QmlProfilerTraceView(QWidget *parent, Analyzer::IAnalyzerT
groupLayout->setContentsMargins(0, 0, 0, 0); groupLayout->setContentsMargins(0, 0, 0, 0);
groupLayout->setSpacing(0); groupLayout->setSpacing(0);
d->m_mainView = new ScrollableDeclarativeView(this); d->m_mainView = new ScrollableQuickView();
d->m_mainView->setResizeMode(QDeclarativeView::SizeViewToRootObject); d->m_mainView->setResizeMode(QQuickView::SizeViewToRootObject);
d->m_mainView->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); QWidget *mainViewContainer = QWidget::createWindowContainer(d->m_mainView);
d->m_mainView->setBackgroundBrush(QBrush(Qt::white));
d->m_mainView->setAlignment(Qt::AlignLeft | Qt::AlignTop);
d->m_mainView->setFocus();
MouseWheelResizer *resizer = new MouseWheelResizer(this); MouseWheelResizer *resizer = new MouseWheelResizer(this);
connect(resizer,SIGNAL(mouseWheelMoved(int,int,int)), this, SLOT(mouseWheelMoved(int,int,int))); connect(resizer,SIGNAL(mouseWheelMoved(int,int,int)), this, SLOT(mouseWheelMoved(int,int,int)));
d->m_mainView->viewport()->installEventFilter(resizer);
QHBoxLayout *toolsLayout = new QHBoxLayout; QHBoxLayout *toolsLayout = new QHBoxLayout;
d->m_timebar = new QDeclarativeView(this); d->m_timebar = new QQuickView();
d->m_timebar->setResizeMode(QDeclarativeView::SizeRootObjectToView); d->m_timebar->setResizeMode(QQuickView::SizeRootObjectToView);
d->m_timebar->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); QWidget *timeBarContainer = QWidget::createWindowContainer(d->m_timebar);
d->m_timebar->setFixedHeight(24); timeBarContainer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
timeBarContainer->setFixedHeight(24);
d->m_overview = new QDeclarativeView(this); d->m_overview = new QQuickView();
d->m_overview->setResizeMode(QDeclarativeView::SizeRootObjectToView); d->m_overview->setResizeMode(QQuickView::SizeRootObjectToView);
d->m_overview->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); QWidget *overviewContainer = QWidget::createWindowContainer(d->m_overview);
d->m_overview->setMaximumHeight(50); overviewContainer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
overviewContainer->setMaximumHeight(50);
d->m_zoomToolbar = createZoomToolbar(); d->m_zoomToolbar = createZoomToolbar();
d->m_zoomToolbar->move(0, d->m_timebar->height()); d->m_zoomToolbar->move(0, d->m_timebar->height());
d->m_zoomToolbar->setVisible(false); d->m_zoomToolbar->setVisible(false);
toolsLayout->addWidget(createToolbar()); toolsLayout->addWidget(createToolbar());
toolsLayout->addWidget(d->m_timebar); toolsLayout->addWidget(timeBarContainer);
emit enableToolbar(false); emit enableToolbar(false);
groupLayout->addLayout(toolsLayout); groupLayout->addLayout(toolsLayout);
groupLayout->addWidget(d->m_mainView); groupLayout->addWidget(mainViewContainer);
groupLayout->addWidget(d->m_overview); groupLayout->addWidget(overviewContainer);
setLayout(groupLayout); setLayout(groupLayout);
@@ -224,7 +229,7 @@ void QmlProfilerTraceView::reset()
d->m_overview->setSource(QUrl(QLatin1String("qrc:/qmlprofiler/Overview.qml"))); d->m_overview->setSource(QUrl(QLatin1String("qrc:/qmlprofiler/Overview.qml")));
d->m_mainView->setSource(QUrl(QLatin1String("qrc:/qmlprofiler/MainView.qml"))); d->m_mainView->setSource(QUrl(QLatin1String("qrc:/qmlprofiler/MainView.qml")));
QGraphicsObject *rootObject = d->m_mainView->rootObject(); QQuickItem *rootObject = d->m_mainView->rootObject();
rootObject->setProperty("width", QVariant(width())); rootObject->setProperty("width", QVariant(width()));
rootObject->setProperty("candidateHeight", QVariant(height() - d->m_timebar->height() - d->m_overview->height())); rootObject->setProperty("candidateHeight", QVariant(height() - d->m_timebar->height() - d->m_overview->height()));
@@ -345,7 +350,7 @@ QWidget *QmlProfilerTraceView::createZoomToolbar()
///////////////////////////////////////////////////////// /////////////////////////////////////////////////////////
bool QmlProfilerTraceView::hasValidSelection() const bool QmlProfilerTraceView::hasValidSelection() const
{ {
QGraphicsObject *rootObject = d->m_mainView->rootObject(); QQuickItem *rootObject = d->m_mainView->rootObject();
if (rootObject) if (rootObject)
return rootObject->property("selectionRangeReady").toBool(); return rootObject->property("selectionRangeReady").toBool();
return false; return false;
@@ -353,7 +358,7 @@ bool QmlProfilerTraceView::hasValidSelection() const
qint64 QmlProfilerTraceView::selectionStart() const qint64 QmlProfilerTraceView::selectionStart() const
{ {
QGraphicsObject *rootObject = d->m_mainView->rootObject(); QQuickItem *rootObject = d->m_mainView->rootObject();
if (rootObject) if (rootObject)
return rootObject->property("selectionRangeStart").toLongLong(); return rootObject->property("selectionRangeStart").toLongLong();
return 0; return 0;
@@ -361,7 +366,7 @@ qint64 QmlProfilerTraceView::selectionStart() const
qint64 QmlProfilerTraceView::selectionEnd() const qint64 QmlProfilerTraceView::selectionEnd() const
{ {
QGraphicsObject *rootObject = d->m_mainView->rootObject(); QQuickItem *rootObject = d->m_mainView->rootObject();
if (rootObject) if (rootObject)
return rootObject->property("selectionRangeEnd").toLongLong(); return rootObject->property("selectionRangeEnd").toLongLong();
return 0; return 0;
@@ -380,7 +385,7 @@ void QmlProfilerTraceView::clearDisplay()
void QmlProfilerTraceView::selectNextEventByHash(const QString &hash) void QmlProfilerTraceView::selectNextEventByHash(const QString &hash)
{ {
QGraphicsObject *rootObject = d->m_mainView->rootObject(); QQuickItem *rootObject = d->m_mainView->rootObject();
if (rootObject) if (rootObject)
QMetaObject::invokeMethod(rootObject, "selectNextByHash", QMetaObject::invokeMethod(rootObject, "selectNextByHash",
@@ -392,7 +397,7 @@ void QmlProfilerTraceView::selectNextEventByLocation(const QString &filename, co
int eventId = d->m_modelProxy->getEventIdForLocation(filename, line, column); int eventId = d->m_modelProxy->getEventIdForLocation(filename, line, column);
if (eventId != -1) { if (eventId != -1) {
QGraphicsObject *rootObject = d->m_mainView->rootObject(); QQuickItem *rootObject = d->m_mainView->rootObject();
if (rootObject) if (rootObject)
QMetaObject::invokeMethod(rootObject, "selectNextById", QMetaObject::invokeMethod(rootObject, "selectNextById",
Q_ARG(QVariant,QVariant(eventId))); Q_ARG(QVariant,QVariant(eventId)));
@@ -403,7 +408,7 @@ void QmlProfilerTraceView::selectNextEventByLocation(const QString &filename, co
// Goto source location // Goto source location
void QmlProfilerTraceView::updateCursorPosition() void QmlProfilerTraceView::updateCursorPosition()
{ {
QGraphicsObject *rootObject = d->m_mainView->rootObject(); QQuickItem *rootObject = d->m_mainView->rootObject();
emit gotoSourceLocation(rootObject->property("fileName").toString(), emit gotoSourceLocation(rootObject->property("fileName").toString(),
rootObject->property("lineNumber").toInt(), rootObject->property("lineNumber").toInt(),
rootObject->property("columnNumber").toInt()); rootObject->property("columnNumber").toInt());
@@ -413,7 +418,7 @@ void QmlProfilerTraceView::updateCursorPosition()
// Toolbar buttons // Toolbar buttons
void QmlProfilerTraceView::toggleRangeMode(bool active) void QmlProfilerTraceView::toggleRangeMode(bool active)
{ {
QGraphicsObject *rootObject = d->m_mainView->rootObject(); QQuickItem *rootObject = d->m_mainView->rootObject();
bool rangeMode = rootObject->property("selectionRangeMode").toBool(); bool rangeMode = rootObject->property("selectionRangeMode").toBool();
if (active != rangeMode) { if (active != rangeMode) {
if (active) if (active)
@@ -436,7 +441,7 @@ void QmlProfilerTraceView::updateRangeButton()
void QmlProfilerTraceView::toggleLockMode(bool active) void QmlProfilerTraceView::toggleLockMode(bool active)
{ {
QGraphicsObject *rootObject = d->m_mainView->rootObject(); QQuickItem *rootObject = d->m_mainView->rootObject();
bool lockMode = !rootObject->property("selectionLocked").toBool(); bool lockMode = !rootObject->property("selectionLocked").toBool();
if (active != lockMode) { if (active != lockMode) {
rootObject->setProperty("selectionLocked", QVariant(!active)); rootObject->setProperty("selectionLocked", QVariant(!active));
@@ -480,7 +485,7 @@ void QmlProfilerTraceView::updateRange()
void QmlProfilerTraceView::mouseWheelMoved(int mouseX, int mouseY, int wheelDelta) void QmlProfilerTraceView::mouseWheelMoved(int mouseX, int mouseY, int wheelDelta)
{ {
Q_UNUSED(mouseY); Q_UNUSED(mouseY);
QGraphicsObject *rootObject = d->m_mainView->rootObject(); QQuickItem *rootObject = d->m_mainView->rootObject();
if (rootObject) { if (rootObject) {
QMetaObject::invokeMethod(rootObject, "wheelZoom", QMetaObject::invokeMethod(rootObject, "wheelZoom",
Q_ARG(QVariant, QVariant(mouseX)), Q_ARG(QVariant, QVariant(mouseX)),
@@ -493,15 +498,14 @@ void QmlProfilerTraceView::updateToolTip(const QString &text)
setToolTip(text); setToolTip(text);
} }
void QmlProfilerTraceView::updateVerticalScroll(int newPosition) void QmlProfilerTraceView::updateVerticalScroll(int /*newPosition*/)
{ {
d->m_mainView->verticalScrollBar()->setValue(newPosition);
} }
void QmlProfilerTraceView::resizeEvent(QResizeEvent *event) void QmlProfilerTraceView::resizeEvent(QResizeEvent *event)
{ {
QWidget::resizeEvent(event); QWidget::resizeEvent(event);
QGraphicsObject *rootObject = d->m_mainView->rootObject(); QQuickItem *rootObject = d->m_mainView->rootObject();
if (rootObject) { if (rootObject) {
rootObject->setProperty("width", QVariant(event->size().width())); rootObject->setProperty("width", QVariant(event->size().width()));
int newHeight = event->size().height() - d->m_timebar->height() - d->m_overview->height(); int newHeight = event->size().height() - d->m_timebar->height() - d->m_overview->height();
@@ -560,14 +564,14 @@ void QmlProfilerTraceView::contextMenuEvent(QContextMenuEvent *ev)
// Tell QML the state of the profiler // Tell QML the state of the profiler
void QmlProfilerTraceView::setRecording(bool recording) void QmlProfilerTraceView::setRecording(bool recording)
{ {
QGraphicsObject *rootObject = d->m_mainView->rootObject(); QQuickItem *rootObject = d->m_mainView->rootObject();
if (rootObject) if (rootObject)
rootObject->setProperty("recordingEnabled", QVariant(recording)); rootObject->setProperty("recordingEnabled", QVariant(recording));
} }
void QmlProfilerTraceView::setAppKilled() void QmlProfilerTraceView::setAppKilled()
{ {
QGraphicsObject *rootObject = d->m_mainView->rootObject(); QQuickItem *rootObject = d->m_mainView->rootObject();
if (rootObject) if (rootObject)
rootObject->setProperty("appKilled",QVariant(true)); rootObject->setProperty("appKilled",QVariant(true));
} }

View File

@@ -30,7 +30,8 @@
#ifndef QMLPROFILERTRACEVIEW_H #ifndef QMLPROFILERTRACEVIEW_H
#define QMLPROFILERTRACEVIEW_H #define QMLPROFILERTRACEVIEW_H
#include <QDeclarativeView> #include <QQuickView>
#include <QWidget>
namespace Analyzer { namespace Analyzer {
class IAnalyzerTool; class IAnalyzerTool;
@@ -74,12 +75,12 @@ private:
qint64 m_endTime; qint64 m_endTime;
}; };
class ScrollableDeclarativeView : public QDeclarativeView class ScrollableQuickView : public QQuickView
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit ScrollableDeclarativeView(QWidget *parent = 0); explicit ScrollableQuickView(QQuickView *parent = 0);
~ScrollableDeclarativeView(); ~ScrollableQuickView();
protected: protected:
void scrollContentsBy(int dx, int dy); void scrollContentsBy(int dx, int dy);
}; };

View File

@@ -29,8 +29,8 @@
#include "timelinerenderer.h" #include "timelinerenderer.h"
#include <qdeclarativecontext.h> #include <QQmlContext>
#include <qdeclarativeproperty.h> #include <QQmlProperty>
#include <QTimer> #include <QTimer>
#include <QPixmap> #include <QPixmap>
#include <QPainter> #include <QPainter>
@@ -43,13 +43,12 @@ using namespace QmlProfiler::Internal;
const int DefaultRowHeight = 30; const int DefaultRowHeight = 30;
TimelineRenderer::TimelineRenderer(QDeclarativeItem *parent) : TimelineRenderer::TimelineRenderer(QQuickPaintedItem *parent) :
QDeclarativeItem(parent), m_startTime(0), m_endTime(0), m_spacing(0), QQuickPaintedItem(parent), m_startTime(0), m_endTime(0), m_spacing(0),
m_lastStartTime(0), m_lastEndTime(0) m_lastStartTime(0), m_lastEndTime(0)
, m_profilerModelProxy(0) , m_profilerModelProxy(0)
{ {
clearData(); clearData();
setFlag(QGraphicsItem::ItemHasNoContents, false);
setAcceptedMouseButtons(Qt::LeftButton); setAcceptedMouseButtons(Qt::LeftButton);
setAcceptHoverEvents(true); setAcceptHoverEvents(true);
} }
@@ -77,7 +76,7 @@ void TimelineRenderer::componentComplete()
if (p.hasNotifySignal()) if (p.hasNotifySignal())
QMetaObject::connect(this, p.notifySignalIndex(), this, requestPaintMethod, 0, 0); QMetaObject::connect(this, p.notifySignalIndex(), this, requestPaintMethod, 0, 0);
} }
QDeclarativeItem::componentComplete(); QQuickItem::componentComplete();
} }
void TimelineRenderer::requestPaint() void TimelineRenderer::requestPaint()
@@ -85,7 +84,7 @@ void TimelineRenderer::requestPaint()
update(); update();
} }
void TimelineRenderer::paint(QPainter *p, const QStyleOptionGraphicsItem *, QWidget *) void TimelineRenderer::paint(QPainter *p)
{ {
qint64 windowDuration = m_endTime - m_startTime; qint64 windowDuration = m_endTime - m_startTime;
if (windowDuration <= 0) if (windowDuration <= 0)
@@ -260,7 +259,7 @@ int TimelineRenderer::modelFromPosition(int y)
return 0; return 0;
} }
void TimelineRenderer::mousePressEvent(QGraphicsSceneMouseEvent *event) void TimelineRenderer::mousePressEvent(QMouseEvent *event)
{ {
// special case: if there is a drag area below me, don't accept the // special case: if there is a drag area below me, don't accept the
// events unless I'm actually clicking inside an item // events unless I'm actually clicking inside an item
@@ -271,19 +270,19 @@ void TimelineRenderer::mousePressEvent(QGraphicsSceneMouseEvent *event)
} }
void TimelineRenderer::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) void TimelineRenderer::mouseReleaseEvent(QMouseEvent *event)
{ {
Q_UNUSED(event); Q_UNUSED(event);
manageClicked(); manageClicked();
} }
void TimelineRenderer::mouseMoveEvent(QGraphicsSceneMouseEvent *event) void TimelineRenderer::mouseMoveEvent(QMouseEvent *event)
{ {
event->setAccepted(false); event->setAccepted(false);
} }
void TimelineRenderer::hoverMoveEvent(QGraphicsSceneHoverEvent *event) void TimelineRenderer::hoverMoveEvent(QHoverEvent *event)
{ {
Q_UNUSED(event); Q_UNUSED(event);
manageHovered(event->pos().x(), event->pos().y()); manageHovered(event->pos().x(), event->pos().y());

View File

@@ -30,15 +30,15 @@
#ifndef TIMELINERENDERER_H #ifndef TIMELINERENDERER_H
#define TIMELINERENDERER_H #define TIMELINERENDERER_H
#include <QDeclarativeItem> #include <QQuickPaintedItem>
#include <QScriptValue> #include <QJSValue>
#include "qmlprofilertimelinemodelproxy.h" #include "qmlprofilertimelinemodelproxy.h"
#include "timelinemodelaggregator.h" #include "timelinemodelaggregator.h"
namespace QmlProfiler { namespace QmlProfiler {
namespace Internal { namespace Internal {
class TimelineRenderer : public QDeclarativeItem class TimelineRenderer : public QQuickPaintedItem
{ {
Q_OBJECT Q_OBJECT
Q_PROPERTY(qint64 startTime READ startTime WRITE setStartTime NOTIFY startTimeChanged) Q_PROPERTY(qint64 startTime READ startTime WRITE setStartTime NOTIFY startTimeChanged)
@@ -51,7 +51,7 @@ class TimelineRenderer : public QDeclarativeItem
Q_PROPERTY(int endDragArea READ endDragArea WRITE setEndDragArea NOTIFY endDragAreaChanged) Q_PROPERTY(int endDragArea READ endDragArea WRITE setEndDragArea NOTIFY endDragAreaChanged)
public: public:
explicit TimelineRenderer(QDeclarativeItem *parent = 0); explicit TimelineRenderer(QQuickPaintedItem *parent = 0);
qint64 startTime() const qint64 startTime() const
{ {
@@ -176,12 +176,12 @@ public slots:
} }
protected: protected:
virtual void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *); virtual void paint(QPainter *);
virtual void componentComplete(); virtual void componentComplete();
virtual void mousePressEvent(QGraphicsSceneMouseEvent *event); virtual void mousePressEvent(QMouseEvent *event);
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); virtual void mouseReleaseEvent(QMouseEvent *event);
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event); virtual void mouseMoveEvent(QMouseEvent *event);
virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *event); virtual void hoverMoveEvent(QHoverEvent *event);
private: private:
void drawItemsToPainter(QPainter *p, int modelIndex, int fromIndex, int toIndex); void drawItemsToPainter(QPainter *p, int modelIndex, int fromIndex, int toIndex);