forked from qt-creator/qt-creator
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:
@@ -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 ¤t = d->ranges[range];
|
TimelineModelPrivate::Range ¤t = 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);
|
||||||
|
@@ -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
|
||||||
|
Reference in New Issue
Block a user