aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUlf Hermann <[email protected]>2015-05-18 13:13:39 +0200
committerUlf Hermann <[email protected]>2015-05-18 12:35:29 +0000
commit469ec258356fbc750165672b76820b171848df78 (patch)
treea02b1fc7bed2d2241ef8e96b56cee18328c965cc
parentef09282c2277865c67a52f8709c475d877b61712 (diff)
Timeline: Expose the "moving" state of the zoom control window
This is very handy for testing. Change-Id: If07efebdc3da027d6f6a3b6d3a421bdb71a51e11 Reviewed-by: Joerg Bornemann <[email protected]>
-rw-r--r--src/libs/timeline/timelinezoomcontrol.cpp19
-rw-r--r--src/libs/timeline/timelinezoomcontrol.h4
2 files changed, 21 insertions, 2 deletions
diff --git a/src/libs/timeline/timelinezoomcontrol.cpp b/src/libs/timeline/timelinezoomcontrol.cpp
index cd7f164375d..50e59a8c84e 100644
--- a/src/libs/timeline/timelinezoomcontrol.cpp
+++ b/src/libs/timeline/timelinezoomcontrol.cpp
@@ -47,6 +47,8 @@ void TimelineZoomControl::clear()
bool changeRange = (m_rangeStart != -1 || m_rangeEnd != -1);
setWindowLocked(false);
+ if (changeWindow && !m_timer.isActive())
+ emit windowMovingChanged(true);
m_traceStart = m_traceEnd = m_windowStart = m_windowEnd = m_rangeStart = m_rangeEnd = -1;
if (changeTrace)
@@ -55,6 +57,7 @@ void TimelineZoomControl::clear()
if (changeWindow) {
emit windowChanged(-1, -1);
m_timer.stop();
+ emit windowMovingChanged(false);
} else {
QTC_ASSERT(!m_timer.isActive(), m_timer.stop());
}
@@ -80,7 +83,10 @@ void TimelineZoomControl::setRange(qint64 start, qint64 end)
{
Q_ASSERT(start <= end);
if (m_rangeStart != start || m_rangeEnd != end) {
- m_timer.stop();
+ if (m_timer.isActive()) {
+ m_timer.stop();
+ emit windowMovingChanged(false);
+ }
m_rangeStart = start;
m_rangeEnd = end;
rebuildWindow();
@@ -136,8 +142,16 @@ void TimelineZoomControl::rebuildWindow()
m_timer.start(500);
}
if (oldWindowStart != m_windowStart || oldWindowEnd != m_windowEnd) {
- clampRangeToWindow();
+ bool runTimer = m_timer.isActive();
+ if (!runTimer)
+ m_timer.start(std::numeric_limits<int>::max());
+ emit windowMovingChanged(true);
+ clampRangeToWindow(); // can stop the timer
emit windowChanged(m_windowStart, m_windowEnd);
+ if (!runTimer && m_timer.isActive()) {
+ m_timer.stop();
+ emit windowMovingChanged(false);
+ }
}
}
@@ -150,6 +164,7 @@ void TimelineZoomControl::moveWindow()
qint64 offset = (m_rangeEnd - m_windowEnd + m_rangeStart - m_windowStart) / 2;
if (offset == 0 || (offset < 0 && m_windowStart == m_traceStart) ||
(offset > 0 && m_windowEnd == m_traceEnd)) {
+ emit windowMovingChanged(false);
return;
} else if (offset > rangeDuration()) {
offset = (offset + rangeDuration()) / 2;
diff --git a/src/libs/timeline/timelinezoomcontrol.h b/src/libs/timeline/timelinezoomcontrol.h
index a3ffe5d2128..6386f117c2d 100644
--- a/src/libs/timeline/timelinezoomcontrol.h
+++ b/src/libs/timeline/timelinezoomcontrol.h
@@ -56,6 +56,7 @@ class TIMELINE_EXPORT TimelineZoomControl : public QObject {
Q_PROPERTY(qint64 selectionDuration READ selectionDuration NOTIFY selectionChanged)
Q_PROPERTY(bool windowLocked READ windowLocked WRITE setWindowLocked NOTIFY windowLockedChanged)
+ Q_PROPERTY(bool windowMoving READ windowMoving NOTIFY windowMovingChanged)
public:
static const qint64 MAX_ZOOM_FACTOR = 1 << 10;
@@ -78,6 +79,8 @@ public:
qint64 selectionDuration() const { return m_selectionEnd - m_selectionStart; }
bool windowLocked() const { return m_windowLocked; }
+ bool windowMoving() const { return m_timer.isActive(); }
+
virtual void clear();
signals:
@@ -86,6 +89,7 @@ signals:
void rangeChanged(qint64 start, qint64 end);
void selectionChanged(qint64 start, qint64 end);
void windowLockedChanged(bool windowLocked);
+ void windowMovingChanged(bool windowMoving);
public slots:
void setTrace(qint64 start, qint64 end);