forked from qt-creator/qt-creator
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:
@@ -64,16 +64,18 @@ isEmpty(IDE_PACKAGE_MODE) {
|
||||
|
||||
contains(QT_CONFIG, declarative)|!isEmpty(QT.declarative.name) {
|
||||
SUBDIRS += \
|
||||
qmlprojectmanager \
|
||||
qmlprofiler
|
||||
qmlprojectmanager
|
||||
|
||||
greaterThan(QT_MAJOR_VERSION, 4):greaterThan(QT_MINOR_VERSION, 0) {
|
||||
SUBDIRS += \
|
||||
qmldesigner \
|
||||
qmlprofiler \
|
||||
welcome
|
||||
} else {
|
||||
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 {
|
||||
warning("QmlProjectManager, QmlProfiler and QmlDesigner plugins have been disabled: The plugins require QtDeclarative")
|
||||
|
||||
@@ -35,16 +35,14 @@
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
Canvas::Canvas(QDeclarativeItem *parent)
|
||||
: QDeclarativeItem(parent),
|
||||
Canvas::Canvas(QQuickPaintedItem *parent)
|
||||
: QQuickPaintedItem(parent),
|
||||
m_context(new Context2D(this)),
|
||||
m_canvasWidth(0),
|
||||
m_canvasHeight(0),
|
||||
m_fillMode(Canvas::Stretch),
|
||||
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()));
|
||||
emit init();
|
||||
QDeclarativeItem::componentComplete();
|
||||
QQuickItem::componentComplete();
|
||||
}
|
||||
|
||||
void Canvas::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *)
|
||||
void Canvas::paint(QPainter *painter)
|
||||
{
|
||||
m_context->setInPaint(true);
|
||||
emit paint();
|
||||
@@ -160,7 +158,7 @@ void Canvas::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometr
|
||||
&& newGeometry.width() > 0 && newGeometry.height() > 0) {
|
||||
m_context->setSize(width(), height());
|
||||
}
|
||||
QDeclarativeItem::geometryChanged(newGeometry, oldGeometry);
|
||||
QQuickItem::geometryChanged(newGeometry, oldGeometry);
|
||||
}
|
||||
|
||||
void Canvas::setCanvasWidth(int newWidth)
|
||||
@@ -219,24 +217,24 @@ CanvasImage *Canvas::toImage() const
|
||||
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);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
void Canvas::clearTimeout(const QScriptValue &handler)
|
||||
void Canvas::clearTimeout(const QJSValue &handler)
|
||||
{
|
||||
CanvasTimer::removeTimer(handler);
|
||||
}
|
||||
|
||||
void Canvas::clearInterval(const QScriptValue &handler)
|
||||
void Canvas::clearInterval(const QJSValue &handler)
|
||||
{
|
||||
CanvasTimer::removeTimer(handler);
|
||||
}
|
||||
|
||||
@@ -30,15 +30,14 @@
|
||||
#ifndef QDECLARATIVECANVAS_P_H
|
||||
#define QDECLARATIVECANVAS_P_H
|
||||
|
||||
#include <qdeclarativeitem.h>
|
||||
#include <QQuickPaintedItem>
|
||||
|
||||
#include "qdeclarativecontext2d_p.h"
|
||||
#include "qdeclarativecanvastimer_p.h"
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
QT_MODULE(Declarative)
|
||||
class Canvas : public QDeclarativeItem
|
||||
class Canvas : public QQuickPaintedItem
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
@@ -49,11 +48,11 @@ class Canvas : public QDeclarativeItem
|
||||
Q_PROPERTY(FillMode fillMode READ fillMode WRITE setFillMode NOTIFY fillModeChanged)
|
||||
|
||||
public:
|
||||
Canvas(QDeclarativeItem *parent = 0);
|
||||
Canvas(QQuickPaintedItem *parent = 0);
|
||||
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 setCanvasWidth(int newWidth);
|
||||
int canvasWidth() {return m_canvasWidth;}
|
||||
@@ -78,10 +77,10 @@ public Q_SLOTS:
|
||||
bool save(const QString& filename) const;
|
||||
|
||||
// Timers
|
||||
void setInterval(const QScriptValue &handler, long timeout);
|
||||
void setTimeout(const QScriptValue &handler, long timeout);
|
||||
void clearInterval(const QScriptValue &handler);
|
||||
void clearTimeout(const QScriptValue &handler);
|
||||
void setInterval(const QJSValue &handler, long timeout);
|
||||
void setTimeout(const QJSValue &handler, long timeout);
|
||||
void clearInterval(const QJSValue &handler);
|
||||
void clearTimeout(const QJSValue &handler);
|
||||
|
||||
Q_SIGNALS:
|
||||
void fillModeChanged();
|
||||
|
||||
@@ -29,28 +29,28 @@
|
||||
|
||||
#include "qdeclarativecanvastimer_p.h"
|
||||
|
||||
#include <qscriptengine.h>
|
||||
#include <qscriptvalue.h>
|
||||
#include <QJSEngine>
|
||||
#include <QJSValue>
|
||||
#include <qtimer.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
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)
|
||||
{
|
||||
}
|
||||
|
||||
void CanvasTimer::handleTimeout()
|
||||
{
|
||||
Q_ASSERT(m_value.isFunction());
|
||||
Q_ASSERT(m_value.isCallable());
|
||||
m_value.call();
|
||||
if (isSingleShot())
|
||||
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);
|
||||
@@ -67,9 +67,9 @@ void CanvasTimer::removeTimer(CanvasTimer *timer)
|
||||
timer->deleteLater();
|
||||
}
|
||||
|
||||
void CanvasTimer::removeTimer(const QScriptValue &val)
|
||||
void CanvasTimer::removeTimer(const QJSValue &val)
|
||||
{
|
||||
if (!val.isFunction())
|
||||
if (!val.isCallable())
|
||||
return;
|
||||
|
||||
for (int i = 0 ; i < activeTimers()->count() ; ++i) {
|
||||
|
||||
@@ -30,32 +30,30 @@
|
||||
#ifndef QDECLARATIVECANVASTIMER_P_H
|
||||
#define QDECLARATIVECANVASTIMER_P_H
|
||||
|
||||
#include <qscriptvalue.h>
|
||||
#include <QJSValue>
|
||||
#include <qtimer.h>
|
||||
#include <qlist.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
QT_MODULE(Declarative)
|
||||
|
||||
class CanvasTimer : public QTimer
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
CanvasTimer(QObject *parent, const QScriptValue &data);
|
||||
CanvasTimer(QObject *parent, const QJSValue &data);
|
||||
|
||||
public Q_SLOTS:
|
||||
void handleTimeout();
|
||||
bool equals(const QScriptValue &value){return m_value.equals(value);}
|
||||
bool equals(const QJSValue &value){return m_value.equals(value);}
|
||||
|
||||
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(const QScriptValue &);
|
||||
static void removeTimer(const QJSValue &);
|
||||
|
||||
private:
|
||||
QScriptValue m_value;
|
||||
QJSValue m_value;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
#include <qgraphicseffect.h>
|
||||
|
||||
#include <QImage>
|
||||
#include <QWidget>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
@@ -737,8 +738,8 @@ void Context2D::strokeRect(qreal x, qreal y, qreal w, qreal h)
|
||||
scheduleChange();
|
||||
}
|
||||
|
||||
void Context2D::mouseArea(qreal x, qreal y, qreal w, qreal h, const QScriptValue &callback,
|
||||
const QScriptValue &data)
|
||||
void Context2D::mouseArea(qreal x, qreal y, qreal w, qreal h, const QJSValue &callback,
|
||||
const QJSValue &data)
|
||||
{
|
||||
MouseArea a = { callback, data, QRectF(x, y, w, h), m_state.matrix };
|
||||
m_mouseAreas << a;
|
||||
@@ -1103,9 +1104,14 @@ void Context2D::setPainterTranslate(const QPoint &translate)
|
||||
}
|
||||
|
||||
void Context2D::scheduleChange()
|
||||
{
|
||||
QMetaObject::invokeMethod(this, "onScheduleChange", Qt::QueuedConnection, Q_ARG(int, 0));
|
||||
}
|
||||
|
||||
void Context2D::onScheduleChange(int interval)
|
||||
{
|
||||
if (m_changeTimerId == -1 && !m_inPaint)
|
||||
m_changeTimerId = startTimer(0);
|
||||
m_changeTimerId = startTimer(interval);
|
||||
}
|
||||
|
||||
void Context2D::timerEvent(QTimerEvent *e)
|
||||
|
||||
@@ -38,12 +38,11 @@
|
||||
#include <qmetatype.h>
|
||||
#include <qcoreevent.h>
|
||||
#include <qvariant.h>
|
||||
#include <qscriptvalue.h>
|
||||
|
||||
#include <QJSValue>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
QT_MODULE(Declarative)
|
||||
|
||||
QColor colorFromString(const QString &name);
|
||||
|
||||
class CanvasGradient : public QObject
|
||||
@@ -174,8 +173,8 @@ public:
|
||||
void setShadowColor(const QString &str);
|
||||
|
||||
struct MouseArea {
|
||||
QScriptValue callback;
|
||||
QScriptValue data;
|
||||
QJSValue callback;
|
||||
QJSValue data;
|
||||
QRectF rect;
|
||||
QMatrix matrix;
|
||||
};
|
||||
@@ -209,7 +208,7 @@ public slots:
|
||||
void strokeRect(qreal x, qreal y, qreal w, qreal h);
|
||||
|
||||
// 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
|
||||
void beginPath();
|
||||
@@ -239,6 +238,9 @@ public slots:
|
||||
void putImageData(ImageData image, qreal dx, qreal dy);
|
||||
void endPainting();
|
||||
|
||||
private slots:
|
||||
void onScheduleChange(int interval);
|
||||
|
||||
signals:
|
||||
void changed();
|
||||
|
||||
|
||||
@@ -41,9 +41,7 @@ QmlProfilerCanvas::QmlProfilerCanvas()
|
||||
: m_context2d(new Context2D(this))
|
||||
, m_dirty(true)
|
||||
{
|
||||
setFlag(QGraphicsItem::ItemHasNoContents, false);
|
||||
setAcceptedMouseButtons(Qt::LeftButton);
|
||||
setCacheMode(QGraphicsItem::DeviceCoordinateCache);
|
||||
}
|
||||
|
||||
void QmlProfilerCanvas::requestPaint()
|
||||
@@ -57,7 +55,7 @@ void QmlProfilerCanvas::requestRedraw()
|
||||
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()) {
|
||||
m_dirty = true;
|
||||
@@ -84,7 +82,7 @@ void QmlProfilerCanvas::componentComplete()
|
||||
if (p.hasNotifySignal())
|
||||
QMetaObject::connect(this, p.notifySignalIndex(), this, requestPaintMethod, 0, 0);
|
||||
}
|
||||
QDeclarativeItem::componentComplete();
|
||||
QQuickItem::componentComplete();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
#ifndef QMLPROFILERCANVAS_H
|
||||
#define QMLPROFILERCANVAS_H
|
||||
|
||||
#include <QDeclarativeItem>
|
||||
#include <QQuickPaintedItem>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
class Context2D;
|
||||
@@ -39,7 +39,7 @@ QT_END_NAMESPACE
|
||||
namespace QmlProfiler {
|
||||
namespace Internal {
|
||||
|
||||
class QmlProfilerCanvas : public QDeclarativeItem
|
||||
class QmlProfilerCanvas : public QQuickPaintedItem
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
@@ -67,7 +67,7 @@ public slots:
|
||||
void requestRedraw();
|
||||
|
||||
protected:
|
||||
virtual void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *);
|
||||
virtual void paint(QPainter *);
|
||||
virtual void componentComplete();
|
||||
|
||||
private:
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 1.0
|
||||
import QtQuick 2.0
|
||||
import Monitor 1.0
|
||||
|
||||
Item {
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 1.0
|
||||
import QtQuick 2.0
|
||||
|
||||
Item {
|
||||
id: labelContainer
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 1.0
|
||||
import QtQuick 2.0
|
||||
import Monitor 1.0
|
||||
|
||||
Rectangle {
|
||||
@@ -502,7 +502,7 @@ Rectangle {
|
||||
onPressed: {
|
||||
selectionRange.pressedOnCreation();
|
||||
}
|
||||
onMousePositionChanged: {
|
||||
onPositionChanged: {
|
||||
selectionRange.movedOnCreation();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 1.0
|
||||
import QtQuick 2.0
|
||||
import Monitor 1.0
|
||||
import "Overview.js" as Plotter
|
||||
|
||||
@@ -108,7 +108,7 @@ Canvas2D {
|
||||
onPressed: {
|
||||
jumpTo(mouse.x);
|
||||
}
|
||||
onMousePositionChanged: {
|
||||
onPositionChanged: {
|
||||
jumpTo(mouse.x);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 1.0
|
||||
import QtQuick 2.0
|
||||
import Monitor 1.0
|
||||
|
||||
Item {
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 1.0
|
||||
import QtQuick 2.0
|
||||
|
||||
Rectangle {
|
||||
id: rangeMover
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 1.0
|
||||
import QtQuick 2.0
|
||||
|
||||
Rectangle {
|
||||
id: selectionRange
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 1.0
|
||||
import QtQuick 2.0
|
||||
import Monitor 1.0
|
||||
|
||||
Item {
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 1.0
|
||||
import QtQuick 2.0
|
||||
import Monitor 1.0
|
||||
|
||||
Canvas2D {
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 1.0
|
||||
import QtQuick 2.0
|
||||
import Monitor 1.0
|
||||
|
||||
Canvas2D {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
DEFINES += QMLPROFILER_LIBRARY
|
||||
|
||||
QT += network script declarative
|
||||
QT += network qml quick
|
||||
|
||||
include(../../qtcreatorplugin.pri)
|
||||
include(canvas/canvas.pri)
|
||||
|
||||
@@ -5,7 +5,7 @@ import "../QtcPlugin.qbs" as QtcPlugin
|
||||
QtcPlugin {
|
||||
name: "QmlProfiler"
|
||||
|
||||
Depends { name: "Qt"; submodules: ["widgets", "network", "script", "declarative"] }
|
||||
Depends { name: "Qt"; submodules: ["widgets", "network", "qml", "quick"] }
|
||||
Depends { name: "Core" }
|
||||
Depends { name: "AnalyzerBase" }
|
||||
Depends { name: "QmlProjectManager" }
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
|
||||
#include <utils/styledbar.h>
|
||||
|
||||
#include <QDeclarativeContext>
|
||||
#include <QQmlContext>
|
||||
#include <QToolButton>
|
||||
#include <QEvent>
|
||||
#include <QVBoxLayout>
|
||||
@@ -50,6 +50,7 @@
|
||||
#include <QScrollBar>
|
||||
#include <QSlider>
|
||||
#include <QMenu>
|
||||
#include <QQuickItem>
|
||||
|
||||
#include <math.h>
|
||||
|
||||
@@ -86,23 +87,22 @@ void ZoomControl::setRange(qint64 startTime, qint64 endTime)
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////
|
||||
ScrollableDeclarativeView::ScrollableDeclarativeView(QWidget *parent)
|
||||
: QDeclarativeView(parent)
|
||||
ScrollableQuickView::ScrollableQuickView(QQuickView *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
|
||||
if (rootObject()) {
|
||||
int scrollY = rootObject()->property("scrollY").toInt();
|
||||
rootObject()->setProperty("scrollY", QVariant(scrollY - dy));
|
||||
}
|
||||
QDeclarativeView::scrollContentsBy(dx,dy);
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////
|
||||
@@ -110,6 +110,13 @@ class QmlProfilerTraceView::QmlProfilerTraceViewPrivate
|
||||
{
|
||||
public:
|
||||
QmlProfilerTraceViewPrivate(QmlProfilerTraceView *qq) : q(qq) {}
|
||||
~QmlProfilerTraceViewPrivate()
|
||||
{
|
||||
delete m_mainView;
|
||||
delete m_timebar;
|
||||
delete m_overview;
|
||||
}
|
||||
|
||||
QmlProfilerTraceView *q;
|
||||
|
||||
QmlProfilerStateManager *m_profilerState;
|
||||
@@ -118,9 +125,9 @@ public:
|
||||
|
||||
QSize m_sizeHint;
|
||||
|
||||
ScrollableDeclarativeView *m_mainView;
|
||||
QDeclarativeView *m_timebar;
|
||||
QDeclarativeView *m_overview;
|
||||
ScrollableQuickView *m_mainView;
|
||||
QQuickView *m_timebar;
|
||||
QQuickView *m_overview;
|
||||
QmlProfilerModelManager *m_modelManager;
|
||||
TimelineModelAggregator *m_modelProxy;
|
||||
|
||||
@@ -145,40 +152,38 @@ QmlProfilerTraceView::QmlProfilerTraceView(QWidget *parent, Analyzer::IAnalyzerT
|
||||
groupLayout->setContentsMargins(0, 0, 0, 0);
|
||||
groupLayout->setSpacing(0);
|
||||
|
||||
d->m_mainView = new ScrollableDeclarativeView(this);
|
||||
d->m_mainView->setResizeMode(QDeclarativeView::SizeViewToRootObject);
|
||||
d->m_mainView->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
|
||||
d->m_mainView->setBackgroundBrush(QBrush(Qt::white));
|
||||
d->m_mainView->setAlignment(Qt::AlignLeft | Qt::AlignTop);
|
||||
d->m_mainView->setFocus();
|
||||
d->m_mainView = new ScrollableQuickView();
|
||||
d->m_mainView->setResizeMode(QQuickView::SizeViewToRootObject);
|
||||
QWidget *mainViewContainer = QWidget::createWindowContainer(d->m_mainView);
|
||||
|
||||
MouseWheelResizer *resizer = new MouseWheelResizer(this);
|
||||
connect(resizer,SIGNAL(mouseWheelMoved(int,int,int)), this, SLOT(mouseWheelMoved(int,int,int)));
|
||||
d->m_mainView->viewport()->installEventFilter(resizer);
|
||||
|
||||
QHBoxLayout *toolsLayout = new QHBoxLayout;
|
||||
|
||||
d->m_timebar = new QDeclarativeView(this);
|
||||
d->m_timebar->setResizeMode(QDeclarativeView::SizeRootObjectToView);
|
||||
d->m_timebar->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
|
||||
d->m_timebar->setFixedHeight(24);
|
||||
d->m_timebar = new QQuickView();
|
||||
d->m_timebar->setResizeMode(QQuickView::SizeRootObjectToView);
|
||||
QWidget *timeBarContainer = QWidget::createWindowContainer(d->m_timebar);
|
||||
timeBarContainer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
|
||||
timeBarContainer->setFixedHeight(24);
|
||||
|
||||
d->m_overview = new QDeclarativeView(this);
|
||||
d->m_overview->setResizeMode(QDeclarativeView::SizeRootObjectToView);
|
||||
d->m_overview->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
|
||||
d->m_overview->setMaximumHeight(50);
|
||||
d->m_overview = new QQuickView();
|
||||
d->m_overview->setResizeMode(QQuickView::SizeRootObjectToView);
|
||||
QWidget *overviewContainer = QWidget::createWindowContainer(d->m_overview);
|
||||
overviewContainer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
|
||||
overviewContainer->setMaximumHeight(50);
|
||||
|
||||
d->m_zoomToolbar = createZoomToolbar();
|
||||
d->m_zoomToolbar->move(0, d->m_timebar->height());
|
||||
d->m_zoomToolbar->setVisible(false);
|
||||
|
||||
toolsLayout->addWidget(createToolbar());
|
||||
toolsLayout->addWidget(d->m_timebar);
|
||||
toolsLayout->addWidget(timeBarContainer);
|
||||
emit enableToolbar(false);
|
||||
|
||||
groupLayout->addLayout(toolsLayout);
|
||||
groupLayout->addWidget(d->m_mainView);
|
||||
groupLayout->addWidget(d->m_overview);
|
||||
groupLayout->addWidget(mainViewContainer);
|
||||
groupLayout->addWidget(overviewContainer);
|
||||
|
||||
setLayout(groupLayout);
|
||||
|
||||
@@ -224,7 +229,7 @@ void QmlProfilerTraceView::reset()
|
||||
d->m_overview->setSource(QUrl(QLatin1String("qrc:/qmlprofiler/Overview.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("candidateHeight", QVariant(height() - d->m_timebar->height() - d->m_overview->height()));
|
||||
|
||||
@@ -345,7 +350,7 @@ QWidget *QmlProfilerTraceView::createZoomToolbar()
|
||||
/////////////////////////////////////////////////////////
|
||||
bool QmlProfilerTraceView::hasValidSelection() const
|
||||
{
|
||||
QGraphicsObject *rootObject = d->m_mainView->rootObject();
|
||||
QQuickItem *rootObject = d->m_mainView->rootObject();
|
||||
if (rootObject)
|
||||
return rootObject->property("selectionRangeReady").toBool();
|
||||
return false;
|
||||
@@ -353,7 +358,7 @@ bool QmlProfilerTraceView::hasValidSelection() const
|
||||
|
||||
qint64 QmlProfilerTraceView::selectionStart() const
|
||||
{
|
||||
QGraphicsObject *rootObject = d->m_mainView->rootObject();
|
||||
QQuickItem *rootObject = d->m_mainView->rootObject();
|
||||
if (rootObject)
|
||||
return rootObject->property("selectionRangeStart").toLongLong();
|
||||
return 0;
|
||||
@@ -361,7 +366,7 @@ qint64 QmlProfilerTraceView::selectionStart() const
|
||||
|
||||
qint64 QmlProfilerTraceView::selectionEnd() const
|
||||
{
|
||||
QGraphicsObject *rootObject = d->m_mainView->rootObject();
|
||||
QQuickItem *rootObject = d->m_mainView->rootObject();
|
||||
if (rootObject)
|
||||
return rootObject->property("selectionRangeEnd").toLongLong();
|
||||
return 0;
|
||||
@@ -380,7 +385,7 @@ void QmlProfilerTraceView::clearDisplay()
|
||||
|
||||
void QmlProfilerTraceView::selectNextEventByHash(const QString &hash)
|
||||
{
|
||||
QGraphicsObject *rootObject = d->m_mainView->rootObject();
|
||||
QQuickItem *rootObject = d->m_mainView->rootObject();
|
||||
|
||||
if (rootObject)
|
||||
QMetaObject::invokeMethod(rootObject, "selectNextByHash",
|
||||
@@ -392,7 +397,7 @@ void QmlProfilerTraceView::selectNextEventByLocation(const QString &filename, co
|
||||
int eventId = d->m_modelProxy->getEventIdForLocation(filename, line, column);
|
||||
|
||||
if (eventId != -1) {
|
||||
QGraphicsObject *rootObject = d->m_mainView->rootObject();
|
||||
QQuickItem *rootObject = d->m_mainView->rootObject();
|
||||
if (rootObject)
|
||||
QMetaObject::invokeMethod(rootObject, "selectNextById",
|
||||
Q_ARG(QVariant,QVariant(eventId)));
|
||||
@@ -403,7 +408,7 @@ void QmlProfilerTraceView::selectNextEventByLocation(const QString &filename, co
|
||||
// Goto source location
|
||||
void QmlProfilerTraceView::updateCursorPosition()
|
||||
{
|
||||
QGraphicsObject *rootObject = d->m_mainView->rootObject();
|
||||
QQuickItem *rootObject = d->m_mainView->rootObject();
|
||||
emit gotoSourceLocation(rootObject->property("fileName").toString(),
|
||||
rootObject->property("lineNumber").toInt(),
|
||||
rootObject->property("columnNumber").toInt());
|
||||
@@ -413,7 +418,7 @@ void QmlProfilerTraceView::updateCursorPosition()
|
||||
// Toolbar buttons
|
||||
void QmlProfilerTraceView::toggleRangeMode(bool active)
|
||||
{
|
||||
QGraphicsObject *rootObject = d->m_mainView->rootObject();
|
||||
QQuickItem *rootObject = d->m_mainView->rootObject();
|
||||
bool rangeMode = rootObject->property("selectionRangeMode").toBool();
|
||||
if (active != rangeMode) {
|
||||
if (active)
|
||||
@@ -436,7 +441,7 @@ void QmlProfilerTraceView::updateRangeButton()
|
||||
|
||||
void QmlProfilerTraceView::toggleLockMode(bool active)
|
||||
{
|
||||
QGraphicsObject *rootObject = d->m_mainView->rootObject();
|
||||
QQuickItem *rootObject = d->m_mainView->rootObject();
|
||||
bool lockMode = !rootObject->property("selectionLocked").toBool();
|
||||
if (active != lockMode) {
|
||||
rootObject->setProperty("selectionLocked", QVariant(!active));
|
||||
@@ -480,7 +485,7 @@ void QmlProfilerTraceView::updateRange()
|
||||
void QmlProfilerTraceView::mouseWheelMoved(int mouseX, int mouseY, int wheelDelta)
|
||||
{
|
||||
Q_UNUSED(mouseY);
|
||||
QGraphicsObject *rootObject = d->m_mainView->rootObject();
|
||||
QQuickItem *rootObject = d->m_mainView->rootObject();
|
||||
if (rootObject) {
|
||||
QMetaObject::invokeMethod(rootObject, "wheelZoom",
|
||||
Q_ARG(QVariant, QVariant(mouseX)),
|
||||
@@ -493,15 +498,14 @@ void QmlProfilerTraceView::updateToolTip(const QString &text)
|
||||
setToolTip(text);
|
||||
}
|
||||
|
||||
void QmlProfilerTraceView::updateVerticalScroll(int newPosition)
|
||||
void QmlProfilerTraceView::updateVerticalScroll(int /*newPosition*/)
|
||||
{
|
||||
d->m_mainView->verticalScrollBar()->setValue(newPosition);
|
||||
}
|
||||
|
||||
void QmlProfilerTraceView::resizeEvent(QResizeEvent *event)
|
||||
{
|
||||
QWidget::resizeEvent(event);
|
||||
QGraphicsObject *rootObject = d->m_mainView->rootObject();
|
||||
QQuickItem *rootObject = d->m_mainView->rootObject();
|
||||
if (rootObject) {
|
||||
rootObject->setProperty("width", QVariant(event->size().width()));
|
||||
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
|
||||
void QmlProfilerTraceView::setRecording(bool recording)
|
||||
{
|
||||
QGraphicsObject *rootObject = d->m_mainView->rootObject();
|
||||
QQuickItem *rootObject = d->m_mainView->rootObject();
|
||||
if (rootObject)
|
||||
rootObject->setProperty("recordingEnabled", QVariant(recording));
|
||||
}
|
||||
|
||||
void QmlProfilerTraceView::setAppKilled()
|
||||
{
|
||||
QGraphicsObject *rootObject = d->m_mainView->rootObject();
|
||||
QQuickItem *rootObject = d->m_mainView->rootObject();
|
||||
if (rootObject)
|
||||
rootObject->setProperty("appKilled",QVariant(true));
|
||||
}
|
||||
|
||||
@@ -30,7 +30,8 @@
|
||||
#ifndef QMLPROFILERTRACEVIEW_H
|
||||
#define QMLPROFILERTRACEVIEW_H
|
||||
|
||||
#include <QDeclarativeView>
|
||||
#include <QQuickView>
|
||||
#include <QWidget>
|
||||
|
||||
namespace Analyzer {
|
||||
class IAnalyzerTool;
|
||||
@@ -74,12 +75,12 @@ private:
|
||||
qint64 m_endTime;
|
||||
};
|
||||
|
||||
class ScrollableDeclarativeView : public QDeclarativeView
|
||||
class ScrollableQuickView : public QQuickView
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit ScrollableDeclarativeView(QWidget *parent = 0);
|
||||
~ScrollableDeclarativeView();
|
||||
explicit ScrollableQuickView(QQuickView *parent = 0);
|
||||
~ScrollableQuickView();
|
||||
protected:
|
||||
void scrollContentsBy(int dx, int dy);
|
||||
};
|
||||
|
||||
@@ -29,8 +29,8 @@
|
||||
|
||||
#include "timelinerenderer.h"
|
||||
|
||||
#include <qdeclarativecontext.h>
|
||||
#include <qdeclarativeproperty.h>
|
||||
#include <QQmlContext>
|
||||
#include <QQmlProperty>
|
||||
#include <QTimer>
|
||||
#include <QPixmap>
|
||||
#include <QPainter>
|
||||
@@ -43,13 +43,12 @@ using namespace QmlProfiler::Internal;
|
||||
|
||||
const int DefaultRowHeight = 30;
|
||||
|
||||
TimelineRenderer::TimelineRenderer(QDeclarativeItem *parent) :
|
||||
QDeclarativeItem(parent), m_startTime(0), m_endTime(0), m_spacing(0),
|
||||
TimelineRenderer::TimelineRenderer(QQuickPaintedItem *parent) :
|
||||
QQuickPaintedItem(parent), m_startTime(0), m_endTime(0), m_spacing(0),
|
||||
m_lastStartTime(0), m_lastEndTime(0)
|
||||
, m_profilerModelProxy(0)
|
||||
{
|
||||
clearData();
|
||||
setFlag(QGraphicsItem::ItemHasNoContents, false);
|
||||
setAcceptedMouseButtons(Qt::LeftButton);
|
||||
setAcceptHoverEvents(true);
|
||||
}
|
||||
@@ -77,7 +76,7 @@ void TimelineRenderer::componentComplete()
|
||||
if (p.hasNotifySignal())
|
||||
QMetaObject::connect(this, p.notifySignalIndex(), this, requestPaintMethod, 0, 0);
|
||||
}
|
||||
QDeclarativeItem::componentComplete();
|
||||
QQuickItem::componentComplete();
|
||||
}
|
||||
|
||||
void TimelineRenderer::requestPaint()
|
||||
@@ -85,7 +84,7 @@ void TimelineRenderer::requestPaint()
|
||||
update();
|
||||
}
|
||||
|
||||
void TimelineRenderer::paint(QPainter *p, const QStyleOptionGraphicsItem *, QWidget *)
|
||||
void TimelineRenderer::paint(QPainter *p)
|
||||
{
|
||||
qint64 windowDuration = m_endTime - m_startTime;
|
||||
if (windowDuration <= 0)
|
||||
@@ -260,7 +259,7 @@ int TimelineRenderer::modelFromPosition(int y)
|
||||
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
|
||||
// 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);
|
||||
manageClicked();
|
||||
}
|
||||
|
||||
void TimelineRenderer::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
|
||||
void TimelineRenderer::mouseMoveEvent(QMouseEvent *event)
|
||||
{
|
||||
event->setAccepted(false);
|
||||
}
|
||||
|
||||
|
||||
void TimelineRenderer::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
|
||||
void TimelineRenderer::hoverMoveEvent(QHoverEvent *event)
|
||||
{
|
||||
Q_UNUSED(event);
|
||||
manageHovered(event->pos().x(), event->pos().y());
|
||||
|
||||
@@ -30,15 +30,15 @@
|
||||
#ifndef TIMELINERENDERER_H
|
||||
#define TIMELINERENDERER_H
|
||||
|
||||
#include <QDeclarativeItem>
|
||||
#include <QScriptValue>
|
||||
#include <QQuickPaintedItem>
|
||||
#include <QJSValue>
|
||||
#include "qmlprofilertimelinemodelproxy.h"
|
||||
#include "timelinemodelaggregator.h"
|
||||
|
||||
namespace QmlProfiler {
|
||||
namespace Internal {
|
||||
|
||||
class TimelineRenderer : public QDeclarativeItem
|
||||
class TimelineRenderer : public QQuickPaintedItem
|
||||
{
|
||||
Q_OBJECT
|
||||
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)
|
||||
|
||||
public:
|
||||
explicit TimelineRenderer(QDeclarativeItem *parent = 0);
|
||||
explicit TimelineRenderer(QQuickPaintedItem *parent = 0);
|
||||
|
||||
qint64 startTime() const
|
||||
{
|
||||
@@ -176,12 +176,12 @@ public slots:
|
||||
}
|
||||
|
||||
protected:
|
||||
virtual void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *);
|
||||
virtual void paint(QPainter *);
|
||||
virtual void componentComplete();
|
||||
virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);
|
||||
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
|
||||
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
|
||||
virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *event);
|
||||
virtual void mousePressEvent(QMouseEvent *event);
|
||||
virtual void mouseReleaseEvent(QMouseEvent *event);
|
||||
virtual void mouseMoveEvent(QMouseEvent *event);
|
||||
virtual void hoverMoveEvent(QHoverEvent *event);
|
||||
|
||||
private:
|
||||
void drawItemsToPainter(QPainter *p, int modelIndex, int fromIndex, int toIndex);
|
||||
|
||||
Reference in New Issue
Block a user