on xenial help sign in
Fix lp:1367894 by correcting how the minute value is calculated in the panel. Fixes: 1367894

Approved by: Nick Dedekind

commit446beeea67758971212c652257a51fe0a238621c authorjosharenson <joshua.arenson@canonical.com> dateTue 30 Sep 2014, 16:55 (12 years ago) parent8580e14288c9ab
4 files changed+55−9
qml/Panel/ActiveCallHint.qml+1−1 tests/mocks/Ubuntu/Telephony/MockCallEntry.cpp+26−1 tests/mocks/Ubuntu/Telephony/MockCallEntry.h+9−1 tests/qmltests/Panel/tst_ActiveCallHint.qml+19−6
qml/Panel/ActiveCallHint.qml+1−1
@@ -117,7 +117,7 @@ Item {
117117 verticalAlignment: Text.AlignVCenter
118118 horizontalAlignment: Text.AlignRight
119119 text: {
120− var m = Math.round(d.callTime/60);
120+ var m = Math.floor(d.callTime/60);
121121 var ss = d.callTime % 60;
122122 if (ss >= 10) {
123123 return m + ":" + ss;
tests/mocks/Ubuntu/Telephony/MockCallEntry.cpp+26−1
@@ -22,8 +22,8 @@ MockCallEntry::MockCallEntry(QObject *parent)
2222 : QObject(parent)
2323 , m_conference(false)
2424 , m_elapsed(0)
25+ , m_timer(0)
2526{
26− startTimer(1000);
2727}
2828
2929QString MockCallEntry::phoneNumber() const
@@ -52,11 +52,36 @@ void MockCallEntry::setIsConference(bool isConference)
5252 }
5353}
5454
55+void MockCallEntry::setElapsedTime(int elapsedTime)
56+{
57+ if (m_elapsed != elapsedTime) {
58+ m_elapsed = elapsedTime;
59+ Q_EMIT elapsedTimeChanged();
60+ }
61+}
62+
5563int MockCallEntry::elapsedTime() const
5664{
5765 return m_elapsed;
5866}
5967
68+bool MockCallEntry::elapsedTimerRunning() const
69+{
70+ return m_timer != 0;
71+}
72+
73+void MockCallEntry::setSlapsedTimerRunning(bool elapsedTimerRunning)
74+{
75+ if (elapsedTimerRunning && m_timer == 0) {
76+ m_timer = startTimer(1000);
77+ Q_EMIT elapsedTimerRunningChanged();
78+ } else if (!elapsedTimerRunning && m_timer != 0) {
79+ killTimer(m_timer);
80+ m_timer = 0;
81+ Q_EMIT elapsedTimerRunningChanged();
82+ }
83+}
84+
6085void MockCallEntry::timerEvent(QTimerEvent * event)
6186{
6287 Q_UNUSED(event);
tests/mocks/Ubuntu/Telephony/MockCallEntry.h+9−1
@@ -28,7 +28,10 @@ class MockCallEntry : public QObject
2828
2929 Q_PROPERTY(QString phoneNumber READ phoneNumber WRITE setPhoneNumber NOTIFY phoneNumberChanged)
3030 Q_PROPERTY(bool isConference READ isConference WRITE setIsConference NOTIFY isConferenceChanged)
31− Q_PROPERTY(int elapsedTime READ elapsedTime NOTIFY elapsedTimeChanged)
31+ Q_PROPERTY(int elapsedTime READ elapsedTime WRITE setElapsedTime NOTIFY elapsedTimeChanged)
32+
33+ // For mock use only
34+ Q_PROPERTY(bool elapsedTimerRunning READ elapsedTimerRunning WRITE setSlapsedTimerRunning NOTIFY elapsedTimerRunningChanged)
3235
3336public:
3437 MockCallEntry(QObject *parent = 0);
@@ -36,14 +39,18 @@ public:
3639 QString phoneNumber() const;
3740 bool isConference() const;
3841 int elapsedTime() const;
42+ bool elapsedTimerRunning() const;
3943
4044 void setPhoneNumber(const QString& phoneNumber);
4145 void setIsConference(bool isConference);
46+ void setElapsedTime(int elapsedTime);
47+ void setSlapsedTimerRunning(bool elapsedTimerRunning);
4248
4349Q_SIGNALS:
4450 void phoneNumberChanged();
4551 void isConferenceChanged();
4652 void elapsedTimeChanged();
53+ void elapsedTimerRunningChanged();
4754
4855protected:
4956 void timerEvent(QTimerEvent * event);
@@ -52,6 +59,7 @@ private:
5259 QString m_phoneNumber;
5360 bool m_conference;
5461 int m_elapsed;
62+ int m_timer;
5563};
5664
5765#endif // MOCKCALLENTRY_H
tests/qmltests/Panel/tst_ActiveCallHint.qml+19−6
@@ -39,6 +39,7 @@ Item {
3939 Telephony.CallEntry {
4040 id: call3
4141 phoneNumber: "+447812221113"
42+ elapsedTimerRunning: true
4243 }
4344
4445 ActiveCallHint {
@@ -69,6 +70,7 @@ Item {
6970 callManager.foregroundCall = null;
7071 callManager.backgroundCall = null;
7172 callHint.labelSwitchInterval = 300;
73+ call1.elapsedTime = 0;
7274
7375 ApplicationManager.stopApplication("dialer-app");
7476 }
@@ -139,16 +141,27 @@ Item {
139141 compare(contactLabel.text, "Freddy", "Contact label does not match call");
140142 }
141143
142− function test_timeLapse() {
143− callManager.backgroundCall = call3;
144+ function test_timeElapsed_data() {
145+ return [
146+ { tag: "0:00->0:01", elpasedTime: 0, initial: "0:00", expected: "0:01" },
147+ { tag: "0:29->0:30", elpasedTime: 29, initial: "0:29", expected: "0:30" },
148+ { tag: "0:59->1:00", elpasedTime: 59, initial: "0:59", expected: "1:00" },
149+
150+ { tag: "01:59->02:00", elpasedTime: 119, initial: "1:59", expected: "2:00" },
151+ { tag: "59:59->60:00", elpasedTime: 3599, initial: "59:59", expected: "60:00" }
152+ ];
153+ }
154+
155+ function test_timeElapsed(data) {
156+ callManager.backgroundCall = call1;
157+ call1.elapsedTime = data.elpasedTime;
144158
145159 var timeLabel = findChild(callHint, "timeLabel");
146160 verify(timeLabel !== null);
147161
148− var currentLabel = timeLabel.text;
149− tryCompareFunction(function() { return timeLabel.text !== currentLabel }, true);
150− currentLabel = timeLabel.text;
151− tryCompareFunction(function() { return timeLabel.text !== currentLabel }, true);
162+ compare(timeLabel.text, data.initial);
163+ call1.elapsedTime = call1.elapsedTime + 1;
164+ compare(timeLabel.text, data.expected);
152165 }
153166
154167 function test_displayedLabelChangesOverTime() {