~bzoltan/kubuntu-packaging/decouple_cmake_plugin

« back to all changes in this revision

Viewing changes to src/plugins/qmlprofiler/qml/Overview.qml

  • Committer: Timo Jyrinki
  • Date: 2013-12-02 09:16:15 UTC
  • mfrom: (1.1.29)
  • Revision ID: timo.jyrinki@canonical.com-20131202091615-xbj1os1f604ber1m
New upstream release candidate.

Show diffs side-by-side

added added

removed removed

Lines of Context:
33
33
 
34
34
Canvas2D {
35
35
    id: canvas
 
36
    objectName: "Overview"
36
37
 
37
38
    // ***** properties
38
39
    height: 50
48
49
    }
49
50
 
50
51
    function updateRange() {
51
 
        var newStartTime = Math.round(rangeMover.x * qmlProfilerModelProxy.traceDuration() / width) + qmlProfilerModelProxy.traceStartTime();
52
 
        var newEndTime = Math.round((rangeMover.x + rangeMover.width) * qmlProfilerModelProxy.traceDuration() / width) + qmlProfilerModelProxy.traceStartTime();
53
 
        if (startTime !== newStartTime || endTime !== newEndTime) {
 
52
        var newStartTime = Math.round(rangeMover.getLeft() * qmlProfilerModelProxy.traceDuration() / width) + qmlProfilerModelProxy.traceStartTime();
 
53
        var newEndTime = Math.round(rangeMover.getRight() * qmlProfilerModelProxy.traceDuration() / width) + qmlProfilerModelProxy.traceStartTime();
 
54
        if ((startTime !== newStartTime || endTime !== newEndTime) && newEndTime - newStartTime > 500) {
54
55
            zoomControl.setRange(newStartTime, newEndTime);
55
56
        }
 
57
    }
56
58
 
 
59
    function clamp(val, min, max) {
 
60
        return Math.min(Math.max(val, min), max);
57
61
    }
58
62
 
59
63
    // ***** connections to external objects
61
65
        target: zoomControl
62
66
        onRangeChanged: {
63
67
            if (qmlProfilerModelProxy) {
64
 
                startTime = zoomControl.startTime();
65
 
                endTime = zoomControl.endTime();
 
68
                startTime = clamp(zoomControl.startTime(), qmlProfilerModelProxy.traceStartTime(), qmlProfilerModelProxy.traceEndTime());
 
69
                endTime = clamp(zoomControl.endTime(), startTime, qmlProfilerModelProxy.traceEndTime());
66
70
                var newRangeX = (startTime - qmlProfilerModelProxy.traceStartTime()) * width / qmlProfilerModelProxy.traceDuration();
67
 
                if (rangeMover.x !== newRangeX)
68
 
                    rangeMover.x = newRangeX;
69
 
                var newWidth = (endTime-startTime) * width / qmlProfilerModelProxy.traceDuration();
70
 
                if (rangeMover.width !== newWidth)
71
 
                    rangeMover.width = newWidth;
 
71
                var newWidth = (endTime - startTime) * width / qmlProfilerModelProxy.traceDuration();
 
72
                var widthChanged = Math.abs(newWidth - rangeMover.getWidth()) > 1;
 
73
                var leftChanged = Math.abs(newRangeX - rangeMover.getLeft()) > 1;
 
74
                if (leftChanged)
 
75
                    rangeMover.setLeft(newRangeX);
 
76
 
 
77
                if (leftChanged || widthChanged)
 
78
                    rangeMover.setRight(newRangeX + newWidth);
72
79
            }
73
80
        }
74
81
    }
96
103
    MouseArea {
97
104
        anchors.fill: canvas
98
105
        function jumpTo(posX) {
99
 
            var newX = posX - rangeMover.width/2;
 
106
            var rangeWidth = rangeMover.getWidth();
 
107
            var newX = posX - rangeWidth / 2;
100
108
            if (newX < 0)
101
109
                newX = 0;
102
 
            if (newX + rangeMover.width > canvas.width)
103
 
                newX = canvas.width - rangeMover.width;
104
 
            rangeMover.x = newX;
105
 
            updateRange();
 
110
            if (newX + rangeWidth > canvas.width)
 
111
                newX = canvas.width - rangeWidth;
 
112
 
 
113
            if (newX < rangeMover.getLeft()) {
 
114
                rangeMover.setLeft(newX);
 
115
                rangeMover.setRight(newX + rangeWidth);
 
116
            } else if (newX > rangeMover.getLeft()) {
 
117
                rangeMover.setRight(newX + rangeWidth);
 
118
                rangeMover.setLeft(newX);
 
119
            }
106
120
        }
107
121
 
108
122
        onPressed: {
116
130
    RangeMover {
117
131
        id: rangeMover
118
132
        visible: dataReady
 
133
        onRangeChanged: canvas.updateRange()
119
134
    }
120
135
 
121
136
    Rectangle {