Tracing: Use std::unique_ptr instead of d_ptr for TimelineModel

The d_ptr mechanism has no benefits here and just adds overhead.

Change-Id: I5327bf6fab3b531b892dd85da35f1d07c7ac4c5d
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
This commit is contained in:
Ulf Hermann
2018-05-14 09:27:04 +02:00
parent 8d19333075
commit 96982d6177
2 changed files with 6 additions and 42 deletions

View File

@@ -59,7 +59,6 @@ namespace Timeline {
*/ */
void TimelineModel::computeNesting() void TimelineModel::computeNesting()
{ {
Q_D(TimelineModel);
QLinkedList<int> parents; QLinkedList<int> parents;
for (int range = 0; range != count(); ++range) { for (int range = 0; range != count(); ++range) {
TimelineModelPrivate::Range &current = d->ranges[range]; TimelineModelPrivate::Range &current = d->ranges[range];
@@ -107,13 +106,11 @@ void TimelineModel::computeNesting()
int TimelineModel::collapsedRowCount() const int TimelineModel::collapsedRowCount() const
{ {
Q_D(const TimelineModel);
return d->collapsedRowCount; return d->collapsedRowCount;
} }
void TimelineModel::setCollapsedRowCount(int rows) void TimelineModel::setCollapsedRowCount(int rows)
{ {
Q_D(TimelineModel);
if (d->collapsedRowCount != rows) { if (d->collapsedRowCount != rows) {
d->collapsedRowCount = rows; d->collapsedRowCount = rows;
emit collapsedRowCountChanged(); emit collapsedRowCountChanged();
@@ -126,13 +123,11 @@ void TimelineModel::setCollapsedRowCount(int rows)
int TimelineModel::expandedRowCount() const int TimelineModel::expandedRowCount() const
{ {
Q_D(const TimelineModel);
return d->expandedRowCount; return d->expandedRowCount;
} }
void TimelineModel::setExpandedRowCount(int rows) void TimelineModel::setExpandedRowCount(int rows)
{ {
Q_D(TimelineModel);
if (d->expandedRowCount != rows) { if (d->expandedRowCount != rows) {
int prevHeight = height(); int prevHeight = height();
if (d->rowOffsets.length() > rows) if (d->rowOffsets.length() > rows)
@@ -159,7 +154,7 @@ TimelineModel::TimelineModelPrivate::TimelineModelPrivate(int modelId) :
} }
TimelineModel::TimelineModel(TimelineModelAggregator *parent) : TimelineModel::TimelineModel(TimelineModelAggregator *parent) :
QObject(parent), d_ptr(new TimelineModelPrivate(parent->generateModelId())) QObject(parent), d(std::make_unique<TimelineModelPrivate>(parent->generateModelId()))
{ {
connect(this, &TimelineModel::contentChanged, this, &TimelineModel::labelsChanged); connect(this, &TimelineModel::contentChanged, this, &TimelineModel::labelsChanged);
connect(this, &TimelineModel::contentChanged, this, &TimelineModel::detailsChanged); connect(this, &TimelineModel::contentChanged, this, &TimelineModel::detailsChanged);
@@ -167,8 +162,6 @@ TimelineModel::TimelineModel(TimelineModelAggregator *parent) :
TimelineModel::~TimelineModel() TimelineModel::~TimelineModel()
{ {
Q_D(TimelineModel);
delete d;
} }
bool TimelineModel::isEmpty() const bool TimelineModel::isEmpty() const
@@ -178,7 +171,6 @@ bool TimelineModel::isEmpty() const
int TimelineModel::modelId() const int TimelineModel::modelId() const
{ {
Q_D(const TimelineModel);
return d->modelId; return d->modelId;
} }
@@ -195,7 +187,6 @@ int TimelineModel::collapsedRowOffset(int rowNumber) const
int TimelineModel::expandedRowHeight(int rowNumber) const int TimelineModel::expandedRowHeight(int rowNumber) const
{ {
Q_D(const TimelineModel);
if (d->rowOffsets.size() > rowNumber) if (d->rowOffsets.size() > rowNumber)
return d->rowOffsets[rowNumber] - (rowNumber > 0 ? d->rowOffsets[rowNumber - 1] : 0); return d->rowOffsets[rowNumber] - (rowNumber > 0 ? d->rowOffsets[rowNumber - 1] : 0);
return TimelineModelPrivate::DefaultRowHeight; return TimelineModelPrivate::DefaultRowHeight;
@@ -203,7 +194,6 @@ int TimelineModel::expandedRowHeight(int rowNumber) const
int TimelineModel::expandedRowOffset(int rowNumber) const int TimelineModel::expandedRowOffset(int rowNumber) const
{ {
Q_D(const TimelineModel);
if (rowNumber == 0) if (rowNumber == 0)
return 0; return 0;
@@ -217,7 +207,6 @@ int TimelineModel::expandedRowOffset(int rowNumber) const
void TimelineModel::setExpandedRowHeight(int rowNumber, int height) void TimelineModel::setExpandedRowHeight(int rowNumber, int height)
{ {
Q_D(TimelineModel);
if (height < TimelineModelPrivate::DefaultRowHeight) if (height < TimelineModelPrivate::DefaultRowHeight)
height = TimelineModelPrivate::DefaultRowHeight; height = TimelineModelPrivate::DefaultRowHeight;
@@ -248,7 +237,6 @@ int TimelineModel::rowHeight(int rowNumber) const
int TimelineModel::height() const int TimelineModel::height() const
{ {
Q_D(const TimelineModel);
if (d->hidden || isEmpty()) if (d->hidden || isEmpty())
return 0; return 0;
@@ -266,25 +254,21 @@ int TimelineModel::height() const
*/ */
int TimelineModel::count() const int TimelineModel::count() const
{ {
Q_D(const TimelineModel);
return d->ranges.count(); return d->ranges.count();
} }
qint64 TimelineModel::duration(int index) const qint64 TimelineModel::duration(int index) const
{ {
Q_D(const TimelineModel);
return d->ranges[index].duration; return d->ranges[index].duration;
} }
qint64 TimelineModel::startTime(int index) const qint64 TimelineModel::startTime(int index) const
{ {
Q_D(const TimelineModel);
return d->ranges[index].start; return d->ranges[index].start;
} }
qint64 TimelineModel::endTime(int index) const qint64 TimelineModel::endTime(int index) const
{ {
Q_D(const TimelineModel);
return d->ranges[index].start + d->ranges[index].duration; return d->ranges[index].start + d->ranges[index].duration;
} }
@@ -309,7 +293,6 @@ int TimelineModel::typeId(int index) const
*/ */
int TimelineModel::firstIndex(qint64 startTime) const int TimelineModel::firstIndex(qint64 startTime) const
{ {
Q_D(const TimelineModel);
int index = d->firstIndexNoParents(startTime); int index = d->firstIndexNoParents(startTime);
if (index == -1) if (index == -1)
return -1; return -1;
@@ -343,7 +326,6 @@ int TimelineModel::TimelineModelPrivate::firstIndexNoParents(qint64 startTime) c
*/ */
int TimelineModel::lastIndex(qint64 endTime) const int TimelineModel::lastIndex(qint64 endTime) const
{ {
Q_D(const TimelineModel);
// in the "starttime" list, find the last event that starts before endtime // in the "starttime" list, find the last event that starts before endtime
// lowerBound() never returns "invalid", so handle this manually. // lowerBound() never returns "invalid", so handle this manually.
@@ -364,8 +346,6 @@ int TimelineModel::lastIndex(qint64 endTime) const
*/ */
int TimelineModel::bestIndex(qint64 timestamp) const int TimelineModel::bestIndex(qint64 timestamp) const
{ {
Q_D(const TimelineModel);
if (d->ranges.isEmpty()) if (d->ranges.isEmpty())
return -1; return -1;
@@ -390,7 +370,6 @@ int TimelineModel::bestIndex(qint64 timestamp) const
int TimelineModel::parentIndex(int index) const int TimelineModel::parentIndex(int index) const
{ {
Q_D(const TimelineModel);
return d->ranges[index].parent; return d->ranges[index].parent;
} }
@@ -467,7 +446,6 @@ QRgb TimelineModel::colorByHue(int hue) const
*/ */
int TimelineModel::insert(qint64 startTime, qint64 duration, int selectionId) int TimelineModel::insert(qint64 startTime, qint64 duration, int selectionId)
{ {
Q_D(TimelineModel);
/* Doing insert-sort here is preferable as most of the time the times will actually be /* Doing insert-sort here is preferable as most of the time the times will actually be
* presorted in the right way. So usually this will just result in appending. */ * presorted in the right way. So usually this will just result in appending. */
int index = d->insertStart(TimelineModelPrivate::Range(startTime, duration, selectionId)); int index = d->insertStart(TimelineModelPrivate::Range(startTime, duration, selectionId));
@@ -485,7 +463,6 @@ int TimelineModel::insert(qint64 startTime, qint64 duration, int selectionId)
*/ */
int TimelineModel::insertStart(qint64 startTime, int selectionId) int TimelineModel::insertStart(qint64 startTime, int selectionId)
{ {
Q_D(TimelineModel);
int index = d->insertStart(TimelineModelPrivate::Range(startTime, 0, selectionId)); int index = d->insertStart(TimelineModelPrivate::Range(startTime, 0, selectionId));
if (index < d->ranges.size() - 1) if (index < d->ranges.size() - 1)
d->incrementStartIndices(index); d->incrementStartIndices(index);
@@ -497,20 +474,17 @@ int TimelineModel::insertStart(qint64 startTime, int selectionId)
*/ */
void TimelineModel::insertEnd(int index, qint64 duration) void TimelineModel::insertEnd(int index, qint64 duration)
{ {
Q_D(TimelineModel);
d->ranges[index].duration = duration; d->ranges[index].duration = duration;
d->insertEnd(TimelineModelPrivate::RangeEnd(index, d->ranges[index].start + duration)); d->insertEnd(TimelineModelPrivate::RangeEnd(index, d->ranges[index].start + duration));
} }
bool TimelineModel::expanded() const bool TimelineModel::expanded() const
{ {
Q_D(const TimelineModel);
return d->expanded; return d->expanded;
} }
void TimelineModel::setExpanded(bool expanded) void TimelineModel::setExpanded(bool expanded)
{ {
Q_D(TimelineModel);
if (expanded != d->expanded) { if (expanded != d->expanded) {
int prevHeight = height(); int prevHeight = height();
d->expanded = expanded; d->expanded = expanded;
@@ -524,13 +498,11 @@ void TimelineModel::setExpanded(bool expanded)
bool TimelineModel::hidden() const bool TimelineModel::hidden() const
{ {
Q_D(const TimelineModel);
return d->hidden; return d->hidden;
} }
void TimelineModel::setHidden(bool hidden) void TimelineModel::setHidden(bool hidden)
{ {
Q_D(TimelineModel);
if (hidden != d->hidden) { if (hidden != d->hidden) {
int prevHeight = height(); int prevHeight = height();
d->hidden = hidden; d->hidden = hidden;
@@ -542,7 +514,6 @@ void TimelineModel::setHidden(bool hidden)
void TimelineModel::setDisplayName(const QString &displayName) void TimelineModel::setDisplayName(const QString &displayName)
{ {
Q_D(TimelineModel);
if (d->displayName != displayName) { if (d->displayName != displayName) {
d->displayName = displayName; d->displayName = displayName;
emit displayNameChanged(); emit displayNameChanged();
@@ -551,13 +522,11 @@ void TimelineModel::setDisplayName(const QString &displayName)
QString TimelineModel::displayName() const QString TimelineModel::displayName() const
{ {
Q_D(const TimelineModel);
return d->displayName; return d->displayName;
} }
int TimelineModel::rowCount() const int TimelineModel::rowCount() const
{ {
Q_D(const TimelineModel);
return d->expanded ? d->expandedRowCount : d->collapsedRowCount; return d->expanded ? d->expandedRowCount : d->collapsedRowCount;
} }
@@ -600,13 +569,11 @@ int TimelineModel::collapsedRow(int index) const
*/ */
int TimelineModel::selectionId(int index) const int TimelineModel::selectionId(int index) const
{ {
Q_D(const TimelineModel);
return d->ranges[index].selectionId; return d->ranges[index].selectionId;
} }
void TimelineModel::clear() void TimelineModel::clear()
{ {
Q_D(TimelineModel);
bool hadRowHeights = !d->rowOffsets.empty(); bool hadRowHeights = !d->rowOffsets.empty();
bool wasEmpty = isEmpty(); bool wasEmpty = isEmpty();
setExpandedRowCount(1); setExpandedRowCount(1);
@@ -628,15 +595,13 @@ void TimelineModel::clear()
int TimelineModel::nextItemBySelectionId(int selectionId, qint64 time, int currentItem) const int TimelineModel::nextItemBySelectionId(int selectionId, qint64 time, int currentItem) const
{ {
Q_D(const TimelineModel); return d->nextItemById([this, selectionId](int index) {
return d->nextItemById([d, selectionId](int index) {
return d->ranges[index].selectionId == selectionId; return d->ranges[index].selectionId == selectionId;
}, time, currentItem); }, time, currentItem);
} }
int TimelineModel::nextItemByTypeId(int requestedTypeId, qint64 time, int currentItem) const int TimelineModel::nextItemByTypeId(int requestedTypeId, qint64 time, int currentItem) const
{ {
Q_D(const TimelineModel);
return d->nextItemById([this, requestedTypeId](int index) { return d->nextItemById([this, requestedTypeId](int index) {
return typeId(index) == requestedTypeId; return typeId(index) == requestedTypeId;
}, time, currentItem); }, time, currentItem);
@@ -644,15 +609,13 @@ int TimelineModel::nextItemByTypeId(int requestedTypeId, qint64 time, int curren
int TimelineModel::prevItemBySelectionId(int selectionId, qint64 time, int currentItem) const int TimelineModel::prevItemBySelectionId(int selectionId, qint64 time, int currentItem) const
{ {
Q_D(const TimelineModel); return d->prevItemById([this, selectionId](int index) {
return d->prevItemById([d, selectionId](int index) {
return d->ranges[index].selectionId == selectionId; return d->ranges[index].selectionId == selectionId;
}, time, currentItem); }, time, currentItem);
} }
int TimelineModel::prevItemByTypeId(int requestedTypeId, qint64 time, int currentItem) const int TimelineModel::prevItemByTypeId(int requestedTypeId, qint64 time, int currentItem) const
{ {
Q_D(const TimelineModel);
return d->prevItemById([this, requestedTypeId](int index) { return d->prevItemById([this, requestedTypeId](int index) {
return typeId(index) == requestedTypeId; return typeId(index) == requestedTypeId;
}, time, currentItem); }, time, currentItem);

View File

@@ -30,6 +30,8 @@
#include <QVariant> #include <QVariant>
#include <QColor> #include <QColor>
#include <memory>
namespace Timeline { namespace Timeline {
class TimelineModelAggregator; class TimelineModelAggregator;
@@ -143,8 +145,7 @@ protected:
virtual void clear(); virtual void clear();
private: private:
TimelineModelPrivate *d_ptr; std::unique_ptr<TimelineModelPrivate> d;
Q_DECLARE_PRIVATE(TimelineModel)
}; };
} // namespace Timeline } // namespace Timeline