From b0a3b2950acc92a612d04449da5545a88921c531 Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Tue, 8 Jul 2014 14:46:17 +0200 Subject: [PATCH] QmlProfiler: Use bindings instead of JS methods for RangeMover It's more intuitive to use and more QML-like. Change-Id: Ifbd05df59d8afaeb62acc9a6f1f3d4786f822169 Reviewed-by: Kai Koehne --- src/plugins/qmlprofiler/qml/MainView.qml | 6 ++-- src/plugins/qmlprofiler/qml/Overview.qml | 34 +++++++++---------- src/plugins/qmlprofiler/qml/RangeMover.qml | 14 ++------ .../qmlprofiler/qml/SelectionRange.qml | 24 ++++++------- 4 files changed, 35 insertions(+), 43 deletions(-) diff --git a/src/plugins/qmlprofiler/qml/MainView.qml b/src/plugins/qmlprofiler/qml/MainView.qml index b9e9a80096c..f43c1ebb57e 100644 --- a/src/plugins/qmlprofiler/qml/MainView.qml +++ b/src/plugins/qmlprofiler/qml/MainView.qml @@ -376,8 +376,8 @@ Rectangle { } // hack to pass mouse events to the other mousearea if enabled - startDragArea: selectionRange.ready ? selectionRange.getLeft() : -x - endDragArea: selectionRange.ready ? selectionRange.getRight() : -x - 1 + startDragArea: selectionRange.ready ? selectionRange.rangeLeft : -x + endDragArea: selectionRange.ready ? selectionRange.rangeRight : -x - 1 } MouseArea { id: selectionRangeControl @@ -419,7 +419,7 @@ Rectangle { startTime: selectionRange.startTimeString duration: selectionRange.durationString endTime: selectionRange.endTimeString - showDuration: selectionRange.getWidth() > 1 + showDuration: selectionRange.rangeWidth > 1 } RangeDetails { diff --git a/src/plugins/qmlprofiler/qml/Overview.qml b/src/plugins/qmlprofiler/qml/Overview.qml index b1c4e0c8ed7..50c5986f76f 100644 --- a/src/plugins/qmlprofiler/qml/Overview.qml +++ b/src/plugins/qmlprofiler/qml/Overview.qml @@ -61,8 +61,8 @@ Canvas { function updateRange() { if (recursionGuard) return; - var newStartTime = Math.round(rangeMover.getLeft() * qmlProfilerModelProxy.traceDuration() / width) + qmlProfilerModelProxy.traceStartTime(); - var newEndTime = Math.round(rangeMover.getRight() * qmlProfilerModelProxy.traceDuration() / width) + qmlProfilerModelProxy.traceStartTime(); + var newStartTime = Math.round(rangeMover.rangeLeft * qmlProfilerModelProxy.traceDuration() / width) + qmlProfilerModelProxy.traceStartTime(); + var newEndTime = Math.round(rangeMover.rangeRight * qmlProfilerModelProxy.traceDuration() / width) + qmlProfilerModelProxy.traceStartTime(); if (startTime !== newStartTime || endTime !== newEndTime) zoomControl.setRange(newStartTime, Math.max(newEndTime, newStartTime + 500)); } @@ -81,13 +81,13 @@ Canvas { endTime = clamp(zoomControl.endTime(), startTime, qmlProfilerModelProxy.traceEndTime()); var newRangeX = (startTime - qmlProfilerModelProxy.traceStartTime()) * width / qmlProfilerModelProxy.traceDuration(); var newWidth = (endTime - startTime) * width / qmlProfilerModelProxy.traceDuration(); - var widthChanged = Math.abs(newWidth - rangeMover.getWidth()) > 1; - var leftChanged = Math.abs(newRangeX - rangeMover.getLeft()) > 1; + var widthChanged = Math.abs(newWidth - rangeMover.rangeWidth) > 1; + var leftChanged = Math.abs(newRangeX - rangeMover.rangeLeft) > 1; if (leftChanged) - rangeMover.setLeft(newRangeX); + rangeMover.rangeLeft = newRangeX; if (leftChanged || widthChanged) - rangeMover.setRight(newRangeX + newWidth); + rangeMover.rangeRight = newRangeX + newWidth; recursionGuard = false; } } @@ -137,19 +137,18 @@ Canvas { MouseArea { anchors.fill: canvas function jumpTo(posX) { - var rangeWidth = rangeMover.getWidth(); - var newX = posX - rangeWidth / 2; + var newX = posX - rangeMover.rangeWidth / 2; if (newX < 0) newX = 0; - if (newX + rangeWidth > canvas.width) - newX = canvas.width - rangeWidth; + if (newX + rangeMover.rangeWidth > canvas.width) + newX = canvas.width - rangeMover.rangeWidth; - if (newX < rangeMover.getLeft()) { - rangeMover.setLeft(newX); - rangeMover.setRight(newX + rangeWidth); - } else if (newX > rangeMover.getLeft()) { - rangeMover.setRight(newX + rangeWidth); - rangeMover.setLeft(newX); + if (newX < rangeMover.rangeLeft) { + rangeMover.rangeLeft = newX; + rangeMover.rangeRight = newX + rangeMover.rangeWidth; + } else if (newX > rangeMover.rangeLeft) { + rangeMover.rangeRight = newX + rangeMover.rangeWidth; + rangeMover.rangeLeft = newX; } } @@ -164,7 +163,8 @@ Canvas { RangeMover { id: rangeMover visible: dataReady - onRangeChanged: canvas.updateRange() + onRangeLeftChanged: canvas.updateRange() + onRangeRightChanged: canvas.updateRange() } Rectangle { diff --git a/src/plugins/qmlprofiler/qml/RangeMover.qml b/src/plugins/qmlprofiler/qml/RangeMover.qml index e928dcf6b04..2e5a86174ff 100644 --- a/src/plugins/qmlprofiler/qml/RangeMover.qml +++ b/src/plugins/qmlprofiler/qml/RangeMover.qml @@ -33,7 +33,6 @@ Rectangle { id: rangeMover anchors.fill: parent color: "transparent" - signal rangeChanged() signal rangeDoubleClicked() property color handleColor: "#869cd1" @@ -43,13 +42,9 @@ Rectangle { property color dragMarkerColor: "#4a64b8" property color singleLineColor: "#4a64b8" - function setLeft(left) { leftRange.x = left } - function getLeft() { return leftRange.x } - - function setRight(right) { rightRange.x = right } - function getRight() { return rightRange.x } - - function getWidth() { return rightRange.x - leftRange.x } + property alias rangeLeft: leftRange.x + property alias rangeRight: rightRange.x + readonly property alias rangeWidth: selectedRange.width Rectangle { id: selectedRange @@ -59,9 +54,6 @@ Rectangle { height: parent.height color: width > 1 ? (dragArea.pressed ? dragColor : rangeColor) : singleLineColor - - onXChanged: parent.rangeChanged() - onWidthChanged: parent.rangeChanged() } Rectangle { diff --git a/src/plugins/qmlprofiler/qml/SelectionRange.qml b/src/plugins/qmlprofiler/qml/SelectionRange.qml index c1bab1f6739..177aac02f49 100644 --- a/src/plugins/qmlprofiler/qml/SelectionRange.qml +++ b/src/plugins/qmlprofiler/qml/SelectionRange.qml @@ -38,8 +38,8 @@ RangeMover { property string endTimeString: detailedPrintTime(startTime+duration) property string durationString: detailedPrintTime(duration) - property double startTime: getLeft() * viewTimePerPixel + zoomControl.windowStart() - property double duration: Math.max(getWidth() * viewTimePerPixel, 500) + property double startTime: rangeLeft * viewTimePerPixel + zoomControl.windowStart() + property double duration: Math.max(rangeWidth * viewTimePerPixel, 500) property double viewTimePerPixel: 1 property double creationReference : 0 property int creationState : 0 @@ -50,9 +50,9 @@ RangeMover { var oldTimePerPixel = selectionRange.viewTimePerPixel; selectionRange.viewTimePerPixel = Math.abs(zoomControl.endTime() - zoomControl.startTime()) / view.intWidth; if (creationState === 3 && oldTimePerPixel != selectionRange.viewTimePerPixel) { - var newWidth = getWidth() * oldTimePerPixel / viewTimePerPixel; - setLeft(getLeft() * oldTimePerPixel / viewTimePerPixel); - setRight(getLeft() + newWidth); + var newWidth = rangeWidth * oldTimePerPixel / viewTimePerPixel; + rangeLeft = rangeLeft * oldTimePerPixel / viewTimePerPixel; + rangeRight = rangeLeft + newWidth; } } } @@ -63,7 +63,7 @@ RangeMover { } function reset() { - setRight(getLeft() + 1); + rangeRight = rangeLeft + 1; creationState = 0; creationReference = 0; } @@ -77,16 +77,16 @@ RangeMover { switch (creationState) { case 1: creationReference = pos; - setLeft(pos); - setRight(pos + 1); + rangeLeft = pos; + rangeRight = pos + 1; break; case 2: if (pos > creationReference) { - setLeft(creationReference); - setRight(pos); + rangeLeft = creationReference; + rangeRight = pos; } else if (pos < creationReference) { - setLeft(pos); - setRight(creationReference); + rangeLeft = pos; + rangeRight = creationReference; } break; }