QmlProfiler: Don't access QmlProfilerTool from QmlProfilerTextMark

Only QmlProfilerViewManager is needed, so use that, as a step to
reduce the interface of the QmlProfilerTool singleton.

Change-Id: I19e55e3b22b3c64ff98b8ea29cbc5164a60ee15d
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
This commit is contained in:
hjk
2017-08-15 18:44:18 +02:00
parent 7458880298
commit 4342eeab33
4 changed files with 22 additions and 33 deletions

View File

@@ -22,8 +22,12 @@
** be met: https://www.gnu.org/licenses/gpl-3.0.html. ** be met: https://www.gnu.org/licenses/gpl-3.0.html.
** **
****************************************************************************/ ****************************************************************************/
#include "qmlprofilertextmark.h" #include "qmlprofilertextmark.h"
#include "qmlprofilerconstants.h" #include "qmlprofilerconstants.h"
#include "qmlprofilerviewmanager.h"
#include "qmlprofilerstatisticsview.h"
#include <QLabel> #include <QLabel>
#include <QLayout> #include <QLayout>
@@ -32,9 +36,9 @@
namespace QmlProfiler { namespace QmlProfiler {
namespace Internal { namespace Internal {
QmlProfilerTextMark::QmlProfilerTextMark(QmlProfilerTool *tool, int typeId, const QString &fileName, QmlProfilerTextMark::QmlProfilerTextMark(QmlProfilerViewManager *viewManager, int typeId,
int lineNumber) : const QString &fileName, int lineNumber) :
TextMark(fileName, lineNumber, Constants::TEXT_MARK_CATEGORY, 3.5), m_tool(tool), TextMark(fileName, lineNumber, Constants::TEXT_MARK_CATEGORY, 3.5), m_viewManager(viewManager),
m_typeIds(1, typeId) m_typeIds(1, typeId)
{ {
} }
@@ -50,7 +54,8 @@ void QmlProfilerTextMark::paintIcon(QPainter *painter, const QRect &paintRect) c
painter->setPen(Qt::black); painter->setPen(Qt::black);
painter->fillRect(paintRect, Qt::white); painter->fillRect(paintRect, Qt::white);
painter->drawRect(paintRect); painter->drawRect(paintRect);
painter->drawText(paintRect, m_tool->summary(m_typeIds), Qt::AlignRight | Qt::AlignVCenter); painter->drawText(paintRect, m_viewManager->statisticsView()->summary(m_typeIds),
Qt::AlignRight | Qt::AlignVCenter);
painter->restore(); painter->restore();
} }
@@ -58,7 +63,7 @@ void QmlProfilerTextMark::clicked()
{ {
int typeId = m_typeIds.takeFirst(); int typeId = m_typeIds.takeFirst();
m_typeIds.append(typeId); m_typeIds.append(typeId);
m_tool->selectType(typeId); m_viewManager->typeSelected(typeId);
} }
QmlProfilerTextMarkModel::QmlProfilerTextMarkModel(QObject *parent) : QObject(parent) QmlProfilerTextMarkModel::QmlProfilerTextMarkModel(QObject *parent) : QObject(parent)
@@ -82,7 +87,8 @@ void QmlProfilerTextMarkModel::addTextMarkId(int typeId, const QmlEventLocation
m_ids.insert(location.filename(), {typeId, location.line(), location.column()}); m_ids.insert(location.filename(), {typeId, location.line(), location.column()});
} }
void QmlProfilerTextMarkModel::createMarks(QmlProfilerTool *tool, const QString &fileName) void QmlProfilerTextMarkModel::createMarks(QmlProfilerViewManager *viewManager,
const QString &fileName)
{ {
auto first = m_ids.find(fileName); auto first = m_ids.find(fileName);
QVarLengthArray<TextMarkId> ids; QVarLengthArray<TextMarkId> ids;
@@ -103,7 +109,7 @@ void QmlProfilerTextMarkModel::createMarks(QmlProfilerTool *tool, const QString
m_marks.last()->addTypeId(it->typeId); m_marks.last()->addTypeId(it->typeId);
} else { } else {
lineNumber = it->lineNumber; lineNumber = it->lineNumber;
m_marks.append(new QmlProfilerTextMark(tool, it->typeId, fileName, it->lineNumber)); m_marks << new QmlProfilerTextMark(viewManager, it->typeId, fileName, it->lineNumber);
} }
} }
} }
@@ -113,7 +119,7 @@ bool QmlProfilerTextMark::addToolTipContent(QLayout *target) const
QGridLayout *layout = new QGridLayout; QGridLayout *layout = new QGridLayout;
layout->setHorizontalSpacing(10); layout->setHorizontalSpacing(10);
for (int row = 0, rowEnd = m_typeIds.length(); row != rowEnd; ++row) { for (int row = 0, rowEnd = m_typeIds.length(); row != rowEnd; ++row) {
const QStringList typeDetails = m_tool->details(m_typeIds[row]); const QStringList typeDetails = m_viewManager->statisticsView()->details(m_typeIds[row]);
for (int column = 0, columnEnd = typeDetails.length(); column != columnEnd; ++column) { for (int column = 0, columnEnd = typeDetails.length(); column != columnEnd; ++column) {
QLabel *label = new QLabel; QLabel *label = new QLabel;
label->setAlignment(column == columnEnd - 1 ? Qt::AlignRight : Qt::AlignLeft); label->setAlignment(column == columnEnd - 1 ? Qt::AlignRight : Qt::AlignLeft);

View File

@@ -25,16 +25,18 @@
#pragma once #pragma once
#include "qmleventlocation.h" #include "qmleventlocation.h"
#include "qmlprofilertool.h"
#include <texteditor/textmark.h> #include <texteditor/textmark.h>
namespace QmlProfiler { namespace QmlProfiler {
namespace Internal { namespace Internal {
class QmlProfilerViewManager;
class QmlProfilerTextMark : public TextEditor::TextMark class QmlProfilerTextMark : public TextEditor::TextMark
{ {
public: public:
QmlProfilerTextMark(QmlProfilerTool *tool, int typeId, const QString &fileName, int lineNumber); QmlProfilerTextMark(QmlProfilerViewManager *viewManager, int typeId,
const QString &fileName, int lineNumber);
void addTypeId(int typeId); void addTypeId(int typeId);
void paintIcon(QPainter *painter, const QRect &rect) const override; void paintIcon(QPainter *painter, const QRect &rect) const override;
@@ -43,7 +45,7 @@ public:
bool addToolTipContent(QLayout *target) const override; bool addToolTipContent(QLayout *target) const override;
private: private:
QmlProfilerTool *m_tool; QmlProfilerViewManager *m_viewManager;
QVector<int> m_typeIds; QVector<int> m_typeIds;
}; };
@@ -55,7 +57,7 @@ public:
void clear(); void clear();
void addTextMarkId(int typeId, const QmlEventLocation &location); void addTextMarkId(int typeId, const QmlEventLocation &location);
void createMarks(QmlProfilerTool *tool, const QString &fileName); void createMarks(QmlProfilerViewManager *viewManager, const QString &fileName);
private: private:
struct TextMarkId { struct TextMarkId {

View File

@@ -290,7 +290,7 @@ QmlProfilerTool::QmlProfilerTool(QObject *parent)
connect(editorManager, &EditorManager::editorCreated, connect(editorManager, &EditorManager::editorCreated,
model, [this, model](Core::IEditor *editor, const QString &fileName) { model, [this, model](Core::IEditor *editor, const QString &fileName) {
Q_UNUSED(editor); Q_UNUSED(editor);
model->createMarks(this, fileName); model->createMarks(d->m_viewContainer, fileName);
}); });
} }
@@ -437,11 +437,6 @@ void QmlProfilerTool::gotoSourceLocation(const QString &fileUrl, int lineNumber,
EditorManager::DoNotSwitchToDesignMode | EditorManager::DoNotSwitchToEditMode); EditorManager::DoNotSwitchToDesignMode | EditorManager::DoNotSwitchToEditMode);
} }
void QmlProfilerTool::selectType(int typeId)
{
d->m_viewContainer->typeSelected(typeId);
}
void QmlProfilerTool::updateTimeDisplay() void QmlProfilerTool::updateTimeDisplay()
{ {
double seconds = 0; double seconds = 0;
@@ -500,7 +495,7 @@ void QmlProfilerTool::createTextMarks()
{ {
QmlProfilerTextMarkModel *model = d->m_profilerModelManager->textMarkModel(); QmlProfilerTextMarkModel *model = d->m_profilerModelManager->textMarkModel();
foreach (IDocument *document, DocumentModel::openedDocuments()) foreach (IDocument *document, DocumentModel::openedDocuments())
model->createMarks(this, document->filePath().toString()); model->createMarks(d->m_viewContainer, document->filePath().toString());
} }
void QmlProfilerTool::clearTextMarks() void QmlProfilerTool::clearTextMarks()
@@ -569,16 +564,6 @@ void QmlProfilerTool::attachToWaitingApplication()
ProjectExplorerPlugin::startRunControl(runControl); ProjectExplorerPlugin::startRunControl(runControl);
} }
QString QmlProfilerTool::summary(const QVector<int> &typeIds) const
{
return d->m_viewContainer->statisticsView()->summary(typeIds);
}
QStringList QmlProfilerTool::details(int typeId) const
{
return d->m_viewContainer->statisticsView()->details(typeId);
}
void QmlProfilerTool::logState(const QString &msg) void QmlProfilerTool::logState(const QString &msg)
{ {
MessageManager::write(msg, MessageManager::Flash); MessageManager::write(msg, MessageManager::Flash);

View File

@@ -55,9 +55,6 @@ public:
bool prepareTool(); bool prepareTool();
void attachToWaitingApplication(); void attachToWaitingApplication();
QString summary(const QVector<int> &typeIds) const;
QStringList details(int typeId) const;
static QList <QAction *> profilerContextMenuActions(); static QList <QAction *> profilerContextMenuActions();
// display dialogs / log output // display dialogs / log output
@@ -76,7 +73,6 @@ public slots:
void recordingButtonChanged(bool recording); void recordingButtonChanged(bool recording);
void gotoSourceLocation(const QString &fileUrl, int lineNumber, int columnNumber); void gotoSourceLocation(const QString &fileUrl, int lineNumber, int columnNumber);
void selectType(int typeId);
private slots: private slots:
void clearData(); void clearData();