diff options
Diffstat (limited to 'src/libs/tracing/timelinemodelaggregator.cpp')
-rw-r--r-- | src/libs/tracing/timelinemodelaggregator.cpp | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/src/libs/tracing/timelinemodelaggregator.cpp b/src/libs/tracing/timelinemodelaggregator.cpp index 30636356ae..5b8c34855b 100644 --- a/src/libs/tracing/timelinemodelaggregator.cpp +++ b/src/libs/tracing/timelinemodelaggregator.cpp @@ -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); |