forked from qt-creator/qt-creator
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 <kai.koehne@digia.com>
This commit is contained in:
@@ -376,8 +376,8 @@ Rectangle {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// hack to pass mouse events to the other mousearea if enabled
|
// hack to pass mouse events to the other mousearea if enabled
|
||||||
startDragArea: selectionRange.ready ? selectionRange.getLeft() : -x
|
startDragArea: selectionRange.ready ? selectionRange.rangeLeft : -x
|
||||||
endDragArea: selectionRange.ready ? selectionRange.getRight() : -x - 1
|
endDragArea: selectionRange.ready ? selectionRange.rangeRight : -x - 1
|
||||||
}
|
}
|
||||||
MouseArea {
|
MouseArea {
|
||||||
id: selectionRangeControl
|
id: selectionRangeControl
|
||||||
@@ -419,7 +419,7 @@ Rectangle {
|
|||||||
startTime: selectionRange.startTimeString
|
startTime: selectionRange.startTimeString
|
||||||
duration: selectionRange.durationString
|
duration: selectionRange.durationString
|
||||||
endTime: selectionRange.endTimeString
|
endTime: selectionRange.endTimeString
|
||||||
showDuration: selectionRange.getWidth() > 1
|
showDuration: selectionRange.rangeWidth > 1
|
||||||
}
|
}
|
||||||
|
|
||||||
RangeDetails {
|
RangeDetails {
|
||||||
|
|||||||
@@ -61,8 +61,8 @@ Canvas {
|
|||||||
function updateRange() {
|
function updateRange() {
|
||||||
if (recursionGuard)
|
if (recursionGuard)
|
||||||
return;
|
return;
|
||||||
var newStartTime = Math.round(rangeMover.getLeft() * qmlProfilerModelProxy.traceDuration() / width) + qmlProfilerModelProxy.traceStartTime();
|
var newStartTime = Math.round(rangeMover.rangeLeft * qmlProfilerModelProxy.traceDuration() / width) + qmlProfilerModelProxy.traceStartTime();
|
||||||
var newEndTime = Math.round(rangeMover.getRight() * qmlProfilerModelProxy.traceDuration() / width) + qmlProfilerModelProxy.traceStartTime();
|
var newEndTime = Math.round(rangeMover.rangeRight * qmlProfilerModelProxy.traceDuration() / width) + qmlProfilerModelProxy.traceStartTime();
|
||||||
if (startTime !== newStartTime || endTime !== newEndTime)
|
if (startTime !== newStartTime || endTime !== newEndTime)
|
||||||
zoomControl.setRange(newStartTime, Math.max(newEndTime, newStartTime + 500));
|
zoomControl.setRange(newStartTime, Math.max(newEndTime, newStartTime + 500));
|
||||||
}
|
}
|
||||||
@@ -81,13 +81,13 @@ Canvas {
|
|||||||
endTime = clamp(zoomControl.endTime(), startTime, qmlProfilerModelProxy.traceEndTime());
|
endTime = clamp(zoomControl.endTime(), startTime, qmlProfilerModelProxy.traceEndTime());
|
||||||
var newRangeX = (startTime - qmlProfilerModelProxy.traceStartTime()) * width / qmlProfilerModelProxy.traceDuration();
|
var newRangeX = (startTime - qmlProfilerModelProxy.traceStartTime()) * width / qmlProfilerModelProxy.traceDuration();
|
||||||
var newWidth = (endTime - startTime) * width / qmlProfilerModelProxy.traceDuration();
|
var newWidth = (endTime - startTime) * width / qmlProfilerModelProxy.traceDuration();
|
||||||
var widthChanged = Math.abs(newWidth - rangeMover.getWidth()) > 1;
|
var widthChanged = Math.abs(newWidth - rangeMover.rangeWidth) > 1;
|
||||||
var leftChanged = Math.abs(newRangeX - rangeMover.getLeft()) > 1;
|
var leftChanged = Math.abs(newRangeX - rangeMover.rangeLeft) > 1;
|
||||||
if (leftChanged)
|
if (leftChanged)
|
||||||
rangeMover.setLeft(newRangeX);
|
rangeMover.rangeLeft = newRangeX;
|
||||||
|
|
||||||
if (leftChanged || widthChanged)
|
if (leftChanged || widthChanged)
|
||||||
rangeMover.setRight(newRangeX + newWidth);
|
rangeMover.rangeRight = newRangeX + newWidth;
|
||||||
recursionGuard = false;
|
recursionGuard = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -137,19 +137,18 @@ Canvas {
|
|||||||
MouseArea {
|
MouseArea {
|
||||||
anchors.fill: canvas
|
anchors.fill: canvas
|
||||||
function jumpTo(posX) {
|
function jumpTo(posX) {
|
||||||
var rangeWidth = rangeMover.getWidth();
|
var newX = posX - rangeMover.rangeWidth / 2;
|
||||||
var newX = posX - rangeWidth / 2;
|
|
||||||
if (newX < 0)
|
if (newX < 0)
|
||||||
newX = 0;
|
newX = 0;
|
||||||
if (newX + rangeWidth > canvas.width)
|
if (newX + rangeMover.rangeWidth > canvas.width)
|
||||||
newX = canvas.width - rangeWidth;
|
newX = canvas.width - rangeMover.rangeWidth;
|
||||||
|
|
||||||
if (newX < rangeMover.getLeft()) {
|
if (newX < rangeMover.rangeLeft) {
|
||||||
rangeMover.setLeft(newX);
|
rangeMover.rangeLeft = newX;
|
||||||
rangeMover.setRight(newX + rangeWidth);
|
rangeMover.rangeRight = newX + rangeMover.rangeWidth;
|
||||||
} else if (newX > rangeMover.getLeft()) {
|
} else if (newX > rangeMover.rangeLeft) {
|
||||||
rangeMover.setRight(newX + rangeWidth);
|
rangeMover.rangeRight = newX + rangeMover.rangeWidth;
|
||||||
rangeMover.setLeft(newX);
|
rangeMover.rangeLeft = newX;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -164,7 +163,8 @@ Canvas {
|
|||||||
RangeMover {
|
RangeMover {
|
||||||
id: rangeMover
|
id: rangeMover
|
||||||
visible: dataReady
|
visible: dataReady
|
||||||
onRangeChanged: canvas.updateRange()
|
onRangeLeftChanged: canvas.updateRange()
|
||||||
|
onRangeRightChanged: canvas.updateRange()
|
||||||
}
|
}
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
|
|||||||
@@ -33,7 +33,6 @@ Rectangle {
|
|||||||
id: rangeMover
|
id: rangeMover
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
color: "transparent"
|
color: "transparent"
|
||||||
signal rangeChanged()
|
|
||||||
signal rangeDoubleClicked()
|
signal rangeDoubleClicked()
|
||||||
|
|
||||||
property color handleColor: "#869cd1"
|
property color handleColor: "#869cd1"
|
||||||
@@ -43,13 +42,9 @@ Rectangle {
|
|||||||
property color dragMarkerColor: "#4a64b8"
|
property color dragMarkerColor: "#4a64b8"
|
||||||
property color singleLineColor: "#4a64b8"
|
property color singleLineColor: "#4a64b8"
|
||||||
|
|
||||||
function setLeft(left) { leftRange.x = left }
|
property alias rangeLeft: leftRange.x
|
||||||
function getLeft() { return leftRange.x }
|
property alias rangeRight: rightRange.x
|
||||||
|
readonly property alias rangeWidth: selectedRange.width
|
||||||
function setRight(right) { rightRange.x = right }
|
|
||||||
function getRight() { return rightRange.x }
|
|
||||||
|
|
||||||
function getWidth() { return rightRange.x - leftRange.x }
|
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
id: selectedRange
|
id: selectedRange
|
||||||
@@ -59,9 +54,6 @@ Rectangle {
|
|||||||
height: parent.height
|
height: parent.height
|
||||||
|
|
||||||
color: width > 1 ? (dragArea.pressed ? dragColor : rangeColor) : singleLineColor
|
color: width > 1 ? (dragArea.pressed ? dragColor : rangeColor) : singleLineColor
|
||||||
|
|
||||||
onXChanged: parent.rangeChanged()
|
|
||||||
onWidthChanged: parent.rangeChanged()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
|
|||||||
@@ -38,8 +38,8 @@ RangeMover {
|
|||||||
property string endTimeString: detailedPrintTime(startTime+duration)
|
property string endTimeString: detailedPrintTime(startTime+duration)
|
||||||
property string durationString: detailedPrintTime(duration)
|
property string durationString: detailedPrintTime(duration)
|
||||||
|
|
||||||
property double startTime: getLeft() * viewTimePerPixel + zoomControl.windowStart()
|
property double startTime: rangeLeft * viewTimePerPixel + zoomControl.windowStart()
|
||||||
property double duration: Math.max(getWidth() * viewTimePerPixel, 500)
|
property double duration: Math.max(rangeWidth * viewTimePerPixel, 500)
|
||||||
property double viewTimePerPixel: 1
|
property double viewTimePerPixel: 1
|
||||||
property double creationReference : 0
|
property double creationReference : 0
|
||||||
property int creationState : 0
|
property int creationState : 0
|
||||||
@@ -50,9 +50,9 @@ RangeMover {
|
|||||||
var oldTimePerPixel = selectionRange.viewTimePerPixel;
|
var oldTimePerPixel = selectionRange.viewTimePerPixel;
|
||||||
selectionRange.viewTimePerPixel = Math.abs(zoomControl.endTime() - zoomControl.startTime()) / view.intWidth;
|
selectionRange.viewTimePerPixel = Math.abs(zoomControl.endTime() - zoomControl.startTime()) / view.intWidth;
|
||||||
if (creationState === 3 && oldTimePerPixel != selectionRange.viewTimePerPixel) {
|
if (creationState === 3 && oldTimePerPixel != selectionRange.viewTimePerPixel) {
|
||||||
var newWidth = getWidth() * oldTimePerPixel / viewTimePerPixel;
|
var newWidth = rangeWidth * oldTimePerPixel / viewTimePerPixel;
|
||||||
setLeft(getLeft() * oldTimePerPixel / viewTimePerPixel);
|
rangeLeft = rangeLeft * oldTimePerPixel / viewTimePerPixel;
|
||||||
setRight(getLeft() + newWidth);
|
rangeRight = rangeLeft + newWidth;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -63,7 +63,7 @@ RangeMover {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function reset() {
|
function reset() {
|
||||||
setRight(getLeft() + 1);
|
rangeRight = rangeLeft + 1;
|
||||||
creationState = 0;
|
creationState = 0;
|
||||||
creationReference = 0;
|
creationReference = 0;
|
||||||
}
|
}
|
||||||
@@ -77,16 +77,16 @@ RangeMover {
|
|||||||
switch (creationState) {
|
switch (creationState) {
|
||||||
case 1:
|
case 1:
|
||||||
creationReference = pos;
|
creationReference = pos;
|
||||||
setLeft(pos);
|
rangeLeft = pos;
|
||||||
setRight(pos + 1);
|
rangeRight = pos + 1;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if (pos > creationReference) {
|
if (pos > creationReference) {
|
||||||
setLeft(creationReference);
|
rangeLeft = creationReference;
|
||||||
setRight(pos);
|
rangeRight = pos;
|
||||||
} else if (pos < creationReference) {
|
} else if (pos < creationReference) {
|
||||||
setLeft(pos);
|
rangeLeft = pos;
|
||||||
setRight(creationReference);
|
rangeRight = creationReference;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user