forked from qt-creator/qt-creator
Tracing: Make notes in TimelineModelAggregator mutable
When the notes model is deleted, it becomes null. The notes model belongs to TimelineTraceManager, not to TimelineModelAggregator. Change-Id: I0ef9312620e08c06d31bc65976a887af0ca90c33 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
@@ -30,6 +30,7 @@
|
||||
|
||||
#include <utils/algorithm.h>
|
||||
|
||||
#include <QPointer>
|
||||
#include <QStringList>
|
||||
#include <QVariant>
|
||||
|
||||
@@ -38,15 +39,13 @@ namespace Timeline {
|
||||
class TimelineModelAggregator::TimelineModelAggregatorPrivate {
|
||||
public:
|
||||
QList <TimelineModel *> modelList;
|
||||
TimelineNotesModel *notesModel;
|
||||
QPointer<TimelineNotesModel> notesModel;
|
||||
int currentModelId = 0;
|
||||
};
|
||||
|
||||
TimelineModelAggregator::TimelineModelAggregator(TimelineNotesModel *notes, QObject *parent)
|
||||
TimelineModelAggregator::TimelineModelAggregator(QObject *parent)
|
||||
: QObject(parent), d_ptr(new TimelineModelAggregatorPrivate)
|
||||
{
|
||||
Q_D(TimelineModelAggregator);
|
||||
d->notesModel = notes;
|
||||
}
|
||||
|
||||
TimelineModelAggregator::~TimelineModelAggregator()
|
||||
@@ -129,6 +128,25 @@ TimelineNotesModel *TimelineModelAggregator::notes() const
|
||||
return d->notesModel;
|
||||
}
|
||||
|
||||
void TimelineModelAggregator::setNotes(TimelineNotesModel *notes)
|
||||
{
|
||||
Q_D(TimelineModelAggregator);
|
||||
if (d->notesModel == notes)
|
||||
return;
|
||||
|
||||
if (d->notesModel) {
|
||||
disconnect(d->notesModel, &QObject::destroyed,
|
||||
this, &TimelineModelAggregator::notesChanged);
|
||||
}
|
||||
|
||||
d->notesModel = notes;
|
||||
|
||||
if (d->notesModel)
|
||||
connect(d->notesModel, &QObject::destroyed, this, &TimelineModelAggregator::notesChanged);
|
||||
|
||||
emit notesChanged();
|
||||
}
|
||||
|
||||
void TimelineModelAggregator::clear()
|
||||
{
|
||||
Q_D(TimelineModelAggregator);
|
||||
|
@@ -35,9 +35,9 @@ class TRACING_EXPORT TimelineModelAggregator : public QObject
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(int height READ height NOTIFY heightChanged)
|
||||
Q_PROPERTY(QVariantList models READ models WRITE setModels NOTIFY modelsChanged)
|
||||
Q_PROPERTY(Timeline::TimelineNotesModel *notes READ notes CONSTANT)
|
||||
Q_PROPERTY(Timeline::TimelineNotesModel *notes READ notes WRITE setNotes NOTIFY notesChanged)
|
||||
public:
|
||||
TimelineModelAggregator(TimelineNotesModel *notes = nullptr, QObject *parent = nullptr);
|
||||
TimelineModelAggregator(QObject *parent = nullptr);
|
||||
~TimelineModelAggregator() override;
|
||||
|
||||
int height() const;
|
||||
@@ -50,6 +50,8 @@ public:
|
||||
void setModels(const QVariantList &models);
|
||||
|
||||
TimelineNotesModel *notes() const;
|
||||
void setNotes(TimelineNotesModel *notes);
|
||||
|
||||
void clear();
|
||||
int modelCount() const;
|
||||
int modelIndexById(int modelId) const;
|
||||
@@ -62,6 +64,7 @@ public:
|
||||
signals:
|
||||
void modelsChanged();
|
||||
void heightChanged();
|
||||
void notesChanged();
|
||||
void updateCursorPosition();
|
||||
|
||||
private:
|
||||
|
@@ -145,7 +145,8 @@ QmlProfilerTraceView::QmlProfilerTraceView(QWidget *parent, QmlProfilerViewManag
|
||||
setLayout(groupLayout);
|
||||
|
||||
d->m_viewContainer = container;
|
||||
d->m_modelProxy = new Timeline::TimelineModelAggregator(modelManager->notesModel(), this);
|
||||
d->m_modelProxy = new Timeline::TimelineModelAggregator(this);
|
||||
d->m_modelProxy->setNotes(modelManager->notesModel());
|
||||
d->m_modelManager = modelManager;
|
||||
|
||||
QVariantList models;
|
||||
|
Reference in New Issue
Block a user