From 41361047b44282033ae13842e6f6d425b45b3d3a Mon Sep 17 00:00:00 2001 From: Tim Henning Date: Thu, 29 Aug 2019 11:37:14 +0200 Subject: [PATCH] Tracing: Add hasMixedTypesInExpandedState property to TimelineModel If the property is true, it disables the functionality to select the type of row by clicking on the row label. This is required by the CtfVisualizer plugin that shows more than one type of events per row in the expanded state which would make the above mentioned functionality meaningless. This change doesn't change the current default behavior. Change-Id: I20d42404a4cd3c9142bf0b59b57f4de083be07f3 Reviewed-by: Ulf Hermann --- src/libs/tracing/qml/CategoryLabel.qml | 2 ++ src/libs/tracing/timelinemodel.cpp | 15 +++++++++++++-- src/libs/tracing/timelinemodel.h | 6 ++++++ src/libs/tracing/timelinemodel_p.h | 1 + 4 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/libs/tracing/qml/CategoryLabel.qml b/src/libs/tracing/qml/CategoryLabel.qml index bbb4e2735ad..171c92400e4 100644 --- a/src/libs/tracing/qml/CategoryLabel.qml +++ b/src/libs/tracing/qml/CategoryLabel.qml @@ -121,6 +121,8 @@ Item { sourceComponent: RowLabel { label: labels[index]; onSelectBySelectionId: { + if (labelContainer.model.hasMixedTypesInExpandedState) + return; if (labelContainer.reverseSelect) { labelContainer.selectPrevBySelectionId(label.id); } else { diff --git a/src/libs/tracing/timelinemodel.cpp b/src/libs/tracing/timelinemodel.cpp index 528d8abc256..b045c15817d 100644 --- a/src/libs/tracing/timelinemodel.cpp +++ b/src/libs/tracing/timelinemodel.cpp @@ -135,8 +135,8 @@ int TimelineModel::row(int index) const } TimelineModel::TimelineModelPrivate::TimelineModelPrivate(int modelId) : - modelId(modelId), categoryColor(Qt::transparent), expanded(false), - hidden(false), expandedRowCount(1), collapsedRowCount(1) + modelId(modelId), categoryColor(Qt::transparent), hasMixedTypesInExpandedState(false), + expanded(false), hidden(false), expandedRowCount(1), collapsedRowCount(1) { } @@ -536,6 +536,17 @@ void TimelineModel::setCategoryColor(const QColor &color) emit categoryColorChanged(); } +bool TimelineModel::hasMixedTypesInExpandedState() const +{ + return d->hasMixedTypesInExpandedState; +} + +void TimelineModel::setHasMixedTypesInExpandedState(bool value) +{ + d->hasMixedTypesInExpandedState = value; + emit hasMixedTypesInExpandedStateChanged(); +} + QRgb TimelineModel::color(int index) const { Q_UNUSED(index) diff --git a/src/libs/tracing/timelinemodel.h b/src/libs/tracing/timelinemodel.h index 1068e7c08e5..53b8835017d 100644 --- a/src/libs/tracing/timelinemodel.h +++ b/src/libs/tracing/timelinemodel.h @@ -42,6 +42,7 @@ class TRACING_EXPORT TimelineModel : public QObject Q_PROPERTY(QString displayName READ displayName WRITE setDisplayName NOTIFY displayNameChanged) Q_PROPERTY(QString tooltip READ tooltip NOTIFY tooltipChanged) Q_PROPERTY(QColor categoryColor READ categoryColor NOTIFY categoryColorChanged) + Q_PROPERTY(bool hasMixedTypesInExpandedState READ hasMixedTypesInExpandedState NOTIFY hasMixedTypesInExpandedStateChanged) Q_PROPERTY(bool empty READ isEmpty NOTIFY contentChanged) Q_PROPERTY(bool hidden READ hidden WRITE setHidden NOTIFY hiddenChanged) Q_PROPERTY(bool expanded READ expanded WRITE setExpanded NOTIFY expandedChanged) @@ -100,6 +101,10 @@ public: QColor categoryColor() const; void setCategoryColor(const QColor &color); + // if this is disabled, a click on the row label will select the single type it contains + bool hasMixedTypesInExpandedState() const; + void setHasMixedTypesInExpandedState(bool value); + // Methods which can optionally be implemented by child models. Q_INVOKABLE virtual QRgb color(int index) const; virtual QVariantList labels() const; @@ -135,6 +140,7 @@ signals: void displayNameChanged(); void tooltipChanged(); void categoryColorChanged(); + void hasMixedTypesInExpandedStateChanged(); void labelsChanged(); void detailsChanged(); diff --git a/src/libs/tracing/timelinemodel_p.h b/src/libs/tracing/timelinemodel_p.h index 306464a1197..98e7af20fef 100644 --- a/src/libs/tracing/timelinemodel_p.h +++ b/src/libs/tracing/timelinemodel_p.h @@ -140,6 +140,7 @@ public: QString displayName; QString tooltip; QColor categoryColor; + bool hasMixedTypesInExpandedState; bool expanded; bool hidden;