forked from qt-creator/qt-creator
QmlDesigner: Track usage of graphical views
Change-Id: I0631816980178100dcd61b65d792fc38504199d5 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
This commit is contained in:
@@ -29,6 +29,9 @@
|
|||||||
#include "graphicsview.h"
|
#include "graphicsview.h"
|
||||||
#include "handleitem.h"
|
#include "handleitem.h"
|
||||||
|
|
||||||
|
#include <qmldesignerconstants.h>
|
||||||
|
#include <qmldesignerplugin.h>
|
||||||
|
|
||||||
#include <QGraphicsSceneMouseEvent>
|
#include <QGraphicsSceneMouseEvent>
|
||||||
|
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
@@ -425,6 +428,19 @@ void GraphicsScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent)
|
|||||||
graphicsView()->setZoomY(0.0);
|
graphicsView()->setZoomY(0.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GraphicsScene::focusOutEvent(QFocusEvent *focusEvent)
|
||||||
|
{
|
||||||
|
QmlDesignerPlugin::emitUsageStatisticsTime(Constants::EVENT_CURVEDITOR_TIME,
|
||||||
|
m_usageTimer.elapsed());
|
||||||
|
QGraphicsScene::focusOutEvent(focusEvent);
|
||||||
|
}
|
||||||
|
|
||||||
|
void GraphicsScene::focusInEvent(QFocusEvent *focusEvent)
|
||||||
|
{
|
||||||
|
m_usageTimer.restart();
|
||||||
|
QGraphicsScene::focusInEvent(focusEvent);
|
||||||
|
}
|
||||||
|
|
||||||
GraphicsView *GraphicsScene::graphicsView() const
|
GraphicsView *GraphicsScene::graphicsView() const
|
||||||
{
|
{
|
||||||
const QList<QGraphicsView *> viewList = views();
|
const QList<QGraphicsView *> viewList = views();
|
||||||
|
@@ -27,6 +27,7 @@
|
|||||||
|
|
||||||
#include "keyframeitem.h"
|
#include "keyframeitem.h"
|
||||||
|
|
||||||
|
#include <QElapsedTimer>
|
||||||
#include <QGraphicsScene>
|
#include <QGraphicsScene>
|
||||||
|
|
||||||
namespace QmlDesigner {
|
namespace QmlDesigner {
|
||||||
@@ -120,6 +121,10 @@ protected:
|
|||||||
|
|
||||||
void mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent) override;
|
void mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent) override;
|
||||||
|
|
||||||
|
void focusOutEvent(QFocusEvent *focusEvent) override;
|
||||||
|
|
||||||
|
void focusInEvent(QFocusEvent *focusEvent) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
using QGraphicsScene::addItem;
|
using QGraphicsScene::addItem;
|
||||||
|
|
||||||
@@ -140,6 +145,8 @@ private:
|
|||||||
mutable QRectF m_limits;
|
mutable QRectF m_limits;
|
||||||
|
|
||||||
bool m_doNotMoveItems;
|
bool m_doNotMoveItems;
|
||||||
|
|
||||||
|
QElapsedTimer m_usageTimer;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // End namespace QmlDesigner.
|
} // End namespace QmlDesigner.
|
||||||
|
@@ -30,6 +30,9 @@
|
|||||||
#include "nodehints.h"
|
#include "nodehints.h"
|
||||||
#include "qmlvisualnode.h"
|
#include "qmlvisualnode.h"
|
||||||
|
|
||||||
|
#include <qmldesignerplugin.h>
|
||||||
|
#include <qmldesignerconstants.h>
|
||||||
|
|
||||||
#include <QtCore/qmimedata.h>
|
#include <QtCore/qmimedata.h>
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
|
|
||||||
@@ -132,4 +135,17 @@ void Edit3DCanvas::dropEvent(QDropEvent *e)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Edit3DCanvas::focusOutEvent(QFocusEvent *focusEvent)
|
||||||
|
{
|
||||||
|
QmlDesignerPlugin::emitUsageStatisticsTime(Constants::EVENT_3DEDITOR_TIME,
|
||||||
|
m_usageTimer.elapsed());
|
||||||
|
QWidget::focusOutEvent(focusEvent);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Edit3DCanvas::focusInEvent(QFocusEvent *focusEvent)
|
||||||
|
{
|
||||||
|
m_usageTimer.restart();
|
||||||
|
QWidget::focusInEvent(focusEvent);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -29,6 +29,7 @@
|
|||||||
#include <QtWidgets/qwidget.h>
|
#include <QtWidgets/qwidget.h>
|
||||||
#include <QtGui/qimage.h>
|
#include <QtGui/qimage.h>
|
||||||
#include <QtGui/qevent.h>
|
#include <QtGui/qevent.h>
|
||||||
|
#include <QTCore/qelapsedtimer.h>
|
||||||
#include <QtCore/qpointer.h>
|
#include <QtCore/qpointer.h>
|
||||||
|
|
||||||
namespace QmlDesigner {
|
namespace QmlDesigner {
|
||||||
@@ -57,12 +58,15 @@ protected:
|
|||||||
void resizeEvent(QResizeEvent *e) override;
|
void resizeEvent(QResizeEvent *e) override;
|
||||||
void dragEnterEvent(QDragEnterEvent *e) override;
|
void dragEnterEvent(QDragEnterEvent *e) override;
|
||||||
void dropEvent(QDropEvent *e) override;
|
void dropEvent(QDropEvent *e) override;
|
||||||
|
void focusOutEvent(QFocusEvent *focusEvent) override;
|
||||||
|
void focusInEvent(QFocusEvent *focusEvent) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QPointer<Edit3DWidget> m_parent;
|
QPointer<Edit3DWidget> m_parent;
|
||||||
QImage m_image;
|
QImage m_image;
|
||||||
qint32 m_activeScene = -1;
|
qint32 m_activeScene = -1;
|
||||||
ItemLibraryEntry m_itemLibraryEntry;
|
ItemLibraryEntry m_itemLibraryEntry;
|
||||||
|
QElapsedTimer m_usageTimer;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace QmlDesigner
|
} // namespace QmlDesigner
|
||||||
|
@@ -28,6 +28,7 @@
|
|||||||
#include "formeditorwidget.h"
|
#include "formeditorwidget.h"
|
||||||
#include "formeditoritem.h"
|
#include "formeditoritem.h"
|
||||||
#include <nodehints.h>
|
#include <nodehints.h>
|
||||||
|
#include <qmldesignerconstants.h>
|
||||||
#include <qmldesignerplugin.h>
|
#include <qmldesignerplugin.h>
|
||||||
#include <designersettings.h>
|
#include <designersettings.h>
|
||||||
|
|
||||||
@@ -321,10 +322,21 @@ void FormEditorScene::keyReleaseEvent(QKeyEvent *keyEvent)
|
|||||||
currentTool()->keyReleaseEvent(keyEvent);
|
currentTool()->keyReleaseEvent(keyEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FormEditorScene::focusOutEvent(QFocusEvent *)
|
void FormEditorScene::focusOutEvent(QFocusEvent *focusEvent)
|
||||||
{
|
{
|
||||||
if (currentTool())
|
if (currentTool())
|
||||||
currentTool()->focusLost();
|
currentTool()->focusLost();
|
||||||
|
|
||||||
|
QmlDesignerPlugin::emitUsageStatisticsTime(Constants::EVENT_FORMEDITOR_TIME,
|
||||||
|
m_usageTimer.elapsed());
|
||||||
|
|
||||||
|
QGraphicsScene::focusOutEvent(focusEvent);
|
||||||
|
}
|
||||||
|
|
||||||
|
void FormEditorScene::focusInEvent(QFocusEvent *focusEvent)
|
||||||
|
{
|
||||||
|
m_usageTimer.restart();
|
||||||
|
QGraphicsScene::focusInEvent(focusEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
FormEditorView *FormEditorScene::editorView() const
|
FormEditorView *FormEditorScene::editorView() const
|
||||||
|
@@ -30,6 +30,7 @@
|
|||||||
#include <QGraphicsScene>
|
#include <QGraphicsScene>
|
||||||
#include <QPointer>
|
#include <QPointer>
|
||||||
#include <QHash>
|
#include <QHash>
|
||||||
|
#include <QElapsedTimer>
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
class QGraphicsSceneMouseEvent;
|
class QGraphicsSceneMouseEvent;
|
||||||
@@ -119,6 +120,7 @@ protected:
|
|||||||
void keyReleaseEvent(QKeyEvent *keyEvent) override;
|
void keyReleaseEvent(QKeyEvent *keyEvent) override;
|
||||||
|
|
||||||
void focusOutEvent(QFocusEvent *focusEvent) override;
|
void focusOutEvent(QFocusEvent *focusEvent) override;
|
||||||
|
void focusInEvent(QFocusEvent *focusEvent) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QList<QGraphicsItem *> removeLayerItems(const QList<QGraphicsItem *> &itemList);
|
QList<QGraphicsItem *> removeLayerItems(const QList<QGraphicsItem *> &itemList);
|
||||||
@@ -135,6 +137,7 @@ private:
|
|||||||
ModelNode m_dragNode;
|
ModelNode m_dragNode;
|
||||||
bool m_showBoundingRects;
|
bool m_showBoundingRects;
|
||||||
bool m_annotationVisibility;
|
bool m_annotationVisibility;
|
||||||
|
QElapsedTimer m_usageTimer;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace QmlDesigner
|
} // namespace QmlDesigner
|
||||||
|
@@ -42,6 +42,7 @@
|
|||||||
#include <rewritertransaction.h>
|
#include <rewritertransaction.h>
|
||||||
#include <rewriterview.h>
|
#include <rewriterview.h>
|
||||||
#include <viewmanager.h>
|
#include <viewmanager.h>
|
||||||
|
#include <qmldesignerconstants.h>
|
||||||
#include <qmldesignerplugin.h>
|
#include <qmldesignerplugin.h>
|
||||||
#include <qmlobjectnode.h>
|
#include <qmlobjectnode.h>
|
||||||
#include <qmltimelinekeyframegroup.h>
|
#include <qmltimelinekeyframegroup.h>
|
||||||
@@ -668,6 +669,19 @@ void TimelineGraphicsScene::keyReleaseEvent(QKeyEvent *keyEvent)
|
|||||||
QGraphicsScene::keyReleaseEvent(keyEvent);
|
QGraphicsScene::keyReleaseEvent(keyEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TimelineGraphicsScene::focusOutEvent(QFocusEvent *focusEvent)
|
||||||
|
{
|
||||||
|
QmlDesignerPlugin::emitUsageStatisticsTime(Constants::EVENT_TIMELINE_TIME,
|
||||||
|
m_usageTimer.elapsed());
|
||||||
|
QGraphicsScene::focusOutEvent(focusEvent);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TimelineGraphicsScene::focusInEvent(QFocusEvent *focusEvent)
|
||||||
|
{
|
||||||
|
m_usageTimer.restart();
|
||||||
|
QGraphicsScene::focusInEvent(focusEvent);
|
||||||
|
}
|
||||||
|
|
||||||
void TimelineGraphicsScene::invalidateSections()
|
void TimelineGraphicsScene::invalidateSections()
|
||||||
{
|
{
|
||||||
for (auto child : m_layout->childItems())
|
for (auto child : m_layout->childItems())
|
||||||
|
@@ -30,6 +30,7 @@
|
|||||||
|
|
||||||
#include <qmltimeline.h>
|
#include <qmltimeline.h>
|
||||||
|
|
||||||
|
#include <QElapsedTimer>
|
||||||
#include <QGraphicsScene>
|
#include <QGraphicsScene>
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
@@ -193,6 +194,9 @@ protected:
|
|||||||
void keyPressEvent(QKeyEvent *keyEvent) override;
|
void keyPressEvent(QKeyEvent *keyEvent) override;
|
||||||
void keyReleaseEvent(QKeyEvent *keyEvent) override;
|
void keyReleaseEvent(QKeyEvent *keyEvent) override;
|
||||||
|
|
||||||
|
void focusOutEvent(QFocusEvent *focusEvent) override;
|
||||||
|
void focusInEvent(QFocusEvent *focusEvent) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void copySelectedKeyframes();
|
void copySelectedKeyframes();
|
||||||
void pasteSelectedKeyframes();
|
void pasteSelectedKeyframes();
|
||||||
@@ -215,6 +219,7 @@ private:
|
|||||||
|
|
||||||
// sorted, unique cache of keyframes positions, used for snapping
|
// sorted, unique cache of keyframes positions, used for snapping
|
||||||
QVector<qreal> m_keyframePositionsCache;
|
QVector<qreal> m_keyframePositionsCache;
|
||||||
|
QElapsedTimer m_usageTimer;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace QmlDesigner
|
} // namespace QmlDesigner
|
||||||
|
@@ -45,6 +45,7 @@
|
|||||||
#include <rewritertransaction.h>
|
#include <rewritertransaction.h>
|
||||||
#include <rewriterview.h>
|
#include <rewriterview.h>
|
||||||
#include <viewmanager.h>
|
#include <viewmanager.h>
|
||||||
|
#include <qmldesignerconstants.h>
|
||||||
#include <qmldesignerplugin.h>
|
#include <qmldesignerplugin.h>
|
||||||
#include <qmlobjectnode.h>
|
#include <qmlobjectnode.h>
|
||||||
#include <qmltimelinekeyframegroup.h>
|
#include <qmltimelinekeyframegroup.h>
|
||||||
@@ -401,6 +402,19 @@ void TransitionEditorGraphicsScene::keyReleaseEvent(QKeyEvent *keyEvent)
|
|||||||
QGraphicsScene::keyReleaseEvent(keyEvent);
|
QGraphicsScene::keyReleaseEvent(keyEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TransitionEditorGraphicsScene::focusOutEvent(QFocusEvent *focusEvent)
|
||||||
|
{
|
||||||
|
QmlDesignerPlugin::emitUsageStatisticsTime(Constants::EVENT_TRANSITIONEDITOR_TIME,
|
||||||
|
m_usageTimer.elapsed());
|
||||||
|
QGraphicsScene::focusOutEvent(focusEvent);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TransitionEditorGraphicsScene::focusInEvent(QFocusEvent *focusEvent)
|
||||||
|
{
|
||||||
|
m_usageTimer.restart();
|
||||||
|
QGraphicsScene::focusInEvent(focusEvent);
|
||||||
|
}
|
||||||
|
|
||||||
void TransitionEditorGraphicsScene::invalidateSections()
|
void TransitionEditorGraphicsScene::invalidateSections()
|
||||||
{
|
{
|
||||||
const QList<QGraphicsItem *> children = m_layout->childItems();
|
const QList<QGraphicsItem *> children = m_layout->childItems();
|
||||||
|
@@ -30,6 +30,7 @@
|
|||||||
|
|
||||||
#include <qmltimeline.h>
|
#include <qmltimeline.h>
|
||||||
|
|
||||||
|
#include <QElapsedTimer>
|
||||||
#include <QGraphicsScene>
|
#include <QGraphicsScene>
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
@@ -123,6 +124,9 @@ protected:
|
|||||||
void keyPressEvent(QKeyEvent *keyEvent) override;
|
void keyPressEvent(QKeyEvent *keyEvent) override;
|
||||||
void keyReleaseEvent(QKeyEvent *keyEvent) override;
|
void keyReleaseEvent(QKeyEvent *keyEvent) override;
|
||||||
|
|
||||||
|
void focusOutEvent(QFocusEvent *focusEvent) override;
|
||||||
|
void focusInEvent(QFocusEvent *focusEvent) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void invalidateSections();
|
void invalidateSections();
|
||||||
QList<QGraphicsItem *> itemsAt(const QPointF &pos);
|
QList<QGraphicsItem *> itemsAt(const QPointF &pos);
|
||||||
@@ -135,6 +139,7 @@ private:
|
|||||||
int m_scrollOffset = 0;
|
int m_scrollOffset = 0;
|
||||||
TimelineToolDelegate m_tools;
|
TimelineToolDelegate m_tools;
|
||||||
TransitionEditorPropertyItem *m_selectedProperty = nullptr;
|
TransitionEditorPropertyItem *m_selectedProperty = nullptr;
|
||||||
|
QElapsedTimer m_usageTimer;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace QmlDesigner
|
} // namespace QmlDesigner
|
||||||
|
@@ -88,6 +88,11 @@ const char EVENT_ACTION_EXECUTED[] = "Action Executed ";
|
|||||||
const char EVENT_IMPORT_ADDED[] = "Import Added ";
|
const char EVENT_IMPORT_ADDED[] = "Import Added ";
|
||||||
const char EVENT_BINDINGEDITOR_OPENED[] = "Binding Editor Opened";
|
const char EVENT_BINDINGEDITOR_OPENED[] = "Binding Editor Opened";
|
||||||
const char EVENT_RICHTEXT_OPENED[] = "Richtext Editor Opened";
|
const char EVENT_RICHTEXT_OPENED[] = "Richtext Editor Opened";
|
||||||
|
const char EVENT_FORMEDITOR_TIME[] = "Form Editor";
|
||||||
|
const char EVENT_3DEDITOR_TIME[] = "3D Editor";
|
||||||
|
const char EVENT_TIMELINE_TIME[] = "Timeline";
|
||||||
|
const char EVENT_TRANSITIONEDITOR_TIME[] = "Transition Editor";
|
||||||
|
const char EVENT_CURVEDITOR_TIME[] = "Curve Editor";
|
||||||
|
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
enum { debug = 0 };
|
enum { debug = 0 };
|
||||||
|
@@ -566,6 +566,11 @@ ImageCache &QmlDesignerPlugin::imageCache()
|
|||||||
return m_instance->d->viewManager.imageCache();
|
return m_instance->d->viewManager.imageCache();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QmlDesignerPlugin::emitUsageStatisticsTime(const QString &identifier, int elapsed)
|
||||||
|
{
|
||||||
|
emit instance()->usageStatisticsUsageTimer(identifier, elapsed);
|
||||||
|
}
|
||||||
|
|
||||||
QmlDesignerPlugin *QmlDesignerPlugin::instance()
|
QmlDesignerPlugin *QmlDesignerPlugin::instance()
|
||||||
{
|
{
|
||||||
return m_instance;
|
return m_instance;
|
||||||
|
@@ -85,11 +85,13 @@ public:
|
|||||||
|
|
||||||
static void emitUsageStatistics(const QString &identifier);
|
static void emitUsageStatistics(const QString &identifier);
|
||||||
static void emitUsageStatisticsContextAction(const QString &identifier);
|
static void emitUsageStatisticsContextAction(const QString &identifier);
|
||||||
|
static void emitUsageStatisticsTime(const QString &identifier, int elapsed);
|
||||||
|
|
||||||
static ImageCache &imageCache();
|
static ImageCache &imageCache();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void usageStatisticsNotifier(const QString &identifier);
|
void usageStatisticsNotifier(const QString &identifier);
|
||||||
|
void usageStatisticsUsageTimer(const QString &identifier, int elapsed);
|
||||||
|
|
||||||
|
|
||||||
private: // functions
|
private: // functions
|
||||||
|
Reference in New Issue
Block a user