Merge lp:~nik90/ubuntu-clock-app/differentiate-clock-faces into lp:ubuntu-clock-app/saucy

Proposed by Nekhelesh Ramananthan
Status: Merged
Approved by: Riccardo Padovani
Approved revision: 346
Merged at revision: 336
Proposed branch: lp:~nik90/ubuntu-clock-app/differentiate-clock-faces
Merge into: lp:ubuntu-clock-app/saucy
Diff against target: 413 lines (+86/-161)
9 files modified
alarm/AddAlarmPage.qml (+9/-0)
alarm/AlarmFace.qml (+10/-0)
alarm/AlarmPage.qml (+32/-13)
common/AnalogGlowEffect.qml (+0/-34)
images/search_item@8.svg (+0/-105)
stopwatch/StopwatchFace.qml (+20/-0)
stopwatch/StopwatchPage.qml (+3/-0)
timer/TimerFace.qml (+11/-7)
timer/TimerPage.qml (+1/-2)
To merge this branch: bzr merge lp:~nik90/ubuntu-clock-app/differentiate-clock-faces
Reviewer Review Type Date Requested Status
Ubuntu Phone Apps Jenkins Bot continuous-integration Approve
Riccardo Padovani Needs Fixing
Review via email: mp+205507@code.launchpad.net

Commit message

Added visual hints to the different clocks to help differentiate between them. Removed unnecessary image assets and rectangular timer glow.

Description of the change

Added visual hints to the different clocks to help differentiate between them. Removed unnecessary image assets and rectangular timer glow.

To post a comment you must log in.
Revision history for this message
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote :

FAILED: Continuous integration, rev:341
No commit message was specified in the merge proposal. Click on the following link and set the commit message (if you want a jenkins rebuild you need to trigger it yourself):
https://code.launchpad.net/~nik90/ubuntu-clock-app/differentiate-clock-faces/+merge/205507/+edit-commit-message

http://91.189.93.70:8080/job/ubuntu-clock-app-ci/219/
Executed test runs:
    SUCCESS: http://91.189.93.70:8080/job/generic-mediumtests-trusty/1206
    SUCCESS: http://91.189.93.70:8080/job/ubuntu-clock-app-raring-amd64-ci/219
    SUCCESS: http://91.189.93.70:8080/job/ubuntu-clock-app-saucy-amd64-ci/219
    SUCCESS: http://91.189.93.70:8080/job/ubuntu-clock-app-trusty-amd64-ci/137

Click here to trigger a rebuild:
http://91.189.93.70:8080/job/ubuntu-clock-app-ci/219/rebuild

review: Needs Fixing (continuous-integration)
342. By Nekhelesh Ramananthan

Added timer hint animation

Revision history for this message
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote :
review: Approve (continuous-integration)
343. By Nekhelesh Ramananthan

Removed unnecessary trash icon asset

344. By Nekhelesh Ramananthan

Increased speed of timer animation

Revision history for this message
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote :
review: Approve (continuous-integration)
345. By Nekhelesh Ramananthan

removed timer animation as it was too distracting

Revision history for this message
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote :
review: Approve (continuous-integration)
Revision history for this message
Riccardo Padovani (rpadovani) wrote :

64 + Label {
65 + id: nextAlarmText
66 + text: i18n.tr("Next Alarm")
67 + fontSize: "small"
68 + parent: alarmFace.centerItem
69 + visible: modelCount === 0 ? false : true

Mhh, when an alarm is saved but is not active the label is visible, so you have "Next alarm: 00:00" that is a bit confusing imo

 when: (totalTime == -1 && timerOn == false)
360 + PropertyChanges { target: analogTimer; timerHintImage: Qt.resolvedUrl("../images/timer_green.png") }

The target becomes green a second after timer reaches 00:00, I think is better if it becomes green when timer reaches 00:00

review: Needs Fixing
Revision history for this message
Nekhelesh Ramananthan (nik90) wrote :

>
> when: (totalTime == -1 && timerOn == false)
> 360 + PropertyChanges { target: analogTimer; timerHintImage:
> Qt.resolvedUrl("../images/timer_green.png") }
>
> The target becomes green a second after timer reaches 00:00, I think is better
> if it becomes green when timer reaches 00:00
>

I agree however I am not sure how to implement that. Currently the "DONE" state is automatically triggered when totalTime is -1. If I change that to 0, then the "DONE" state will be triggered all the time when the timer is not running since the condition is true.

If you have a solution for this, let me know. But this bug has been present since the implementation of the timer itself.

346. By Nekhelesh Ramananthan

Fix alarm message when there are no active alarms

Revision history for this message
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote :
review: Approve (continuous-integration)
Revision history for this message
Riccardo Padovani (rpadovani) wrote :

Tested both on PC and mako, works as expected!

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'alarm/AddAlarmPage.qml'
2--- alarm/AddAlarmPage.qml 2014-02-10 10:40:25 +0000
3+++ alarm/AddAlarmPage.qml 2014-02-11 15:38:53 +0000
4@@ -288,6 +288,15 @@
5 }
6 ]
7
8+ Image {
9+ id: alarmHintImage
10+ smooth: true
11+ width: units.gu(40)
12+ anchors.centerIn: parent
13+ fillMode: Image.PreserveAspectFit
14+ source: Qt.resolvedUrl("../images/alarm_black.png")
15+ }
16+
17 centerContent: [
18 Column {
19 id: alarmLabelColumn
20
21=== modified file 'alarm/AlarmFace.qml'
22--- alarm/AlarmFace.qml 2014-02-01 15:30:26 +0000
23+++ alarm/AlarmFace.qml 2014-02-11 15:38:53 +0000
24@@ -28,10 +28,20 @@
25 property string timeFormat: appSetting.contents.timeFormat
26
27 showSecondHand: false
28+ enableMouseArea: setupMessage.visible
29
30 innerLabel.visible: !setupMessage.visible
31 innerLabel.font.pixelSize: timeFormat === "12-hour" ? units.dp(31): units.dp(41)
32
33+ Image {
34+ id: alarmHintImage
35+ smooth: true
36+ width: units.gu(40)
37+ fillMode: Image.PreserveAspectFit
38+ source: Qt.resolvedUrl("../images/alarm_black.png")
39+ anchors.centerIn: parent
40+ }
41+
42 Label {
43 id: setupMessage
44 objectName: "labelAlarmSetup"
45
46=== modified file 'alarm/AlarmPage.qml'
47--- alarm/AlarmPage.qml 2014-02-03 13:25:27 +0000
48+++ alarm/AlarmPage.qml 2014-02-11 15:38:53 +0000
49@@ -27,6 +27,7 @@
50 objectName: "alarmPage"
51
52 property alias modelCount: listSavedAlarm.count
53+ property int enabledAlarmCount: 0
54 property var nextAlarm
55 property real tempPosition
56
57@@ -51,17 +52,19 @@
58
59 function get_next_active_alarm()
60 {
61+ enabledAlarmCount = 0
62 var tempAlarm;
63
64 for(var i=0; i<alarmModel.count; i++) {
65 tempAlarm = alarmModel.get(i)
66 if (tempAlarm.enabled) {
67+ enabledAlarmCount += 1
68 nextAlarm = alarmModel.get(i)
69 break;
70 }
71 }
72
73- if (nextAlarm != undefined) {
74+ if (enabledAlarmCount !== 0) {
75 for (var i=0; i<alarmModel.count; i++) {
76 tempAlarm = alarmModel.get(i)
77 if (tempAlarm.enabled)
78@@ -113,24 +116,40 @@
79 clip: true
80 anchors.fill: parent
81 contentWidth: parent.width
82+ interactive: modelCount == 0 ? false : true
83 contentHeight: alarmFace.height + alarmFace.anchors.topMargin + nameAlarm.height + nameAlarm.anchors.topMargin + listAlarm.height + listAlarm.anchors.topMargin + units.gu(2)
84- interactive: modelCount == 0 ? false : true
85-
86- Label {
87- fontSize: "x-large"
88- text: i18n.tr("Next Alarm")
89- color: Theme.palette.normal.baseText
90- horizontalAlignment: Text.AlignHCenter
91- visible: modelCount === 0 ? false : true
92- anchors { bottom: alarmFace.top; bottomMargin: units.gu(3); horizontalCenter: parent.horizontalCenter }
93- }
94
95 AlarmFace {
96 id: alarmFace
97
98+ states: [
99+ State {
100+ name: "NOACTIVEALARMS"
101+ when: enabledAlarmCount === 0 && modelCount !== 0
102+ PropertyChanges { target: nextAlarmText; text: i18n.tr("No Active Alarms"); fontSize: "large"; anchors.verticalCenterOffset: 0 }
103+ PropertyChanges { target: alarmFace.innerLabel; visible: false }
104+ }
105+ ]
106+
107+ Label {
108+ id: nextAlarmText
109+ fontSize: "small"
110+ visible: modelCount !== 0
111+ text: i18n.tr("Next Alarm")
112+ parent: alarmFace.centerItem
113+ width: parent.width; height: width;
114+ horizontalAlignment: Text.AlignHCenter
115+ verticalAlignment: Text.AlignVCenter
116+ wrapMode: Text.WordWrap
117+ anchors {
118+ horizontalCenter: parent.horizontalCenter
119+ verticalCenter: parent.verticalCenter
120+ verticalCenterOffset: units.gu(-3.5)
121+ }
122+ }
123+
124 anchors { top: parent.top; topMargin: units.gu(10); horizontalCenter: parent.horizontalCenter }
125- showSetupMessage: modelCount == 0 ? true : false
126- enableMouseArea: showSetupMessage
127+ showSetupMessage: modelCount === 0
128 onTimeFormatChanged: get_next_active_alarm()
129 onPressAndHold: pagestack.push(Qt.resolvedUrl("AddAlarmPage.qml"), {"isNewAlarm": true})
130
131
132=== removed file 'common/AnalogGlowEffect.qml'
133--- common/AnalogGlowEffect.qml 2014-02-01 15:43:50 +0000
134+++ common/AnalogGlowEffect.qml 1970-01-01 00:00:00 +0000
135@@ -1,34 +0,0 @@
136-/*
137- * Copyright (C) 2013 Canonical Ltd
138- *
139- * This program is free software: you can redistribute it and/or modify
140- * it under the terms of the GNU General Public License version 3 as
141- * published by the Free Software Foundation.
142- *
143- * This program is distributed in the hope that it will be useful,
144- * but WITHOUT ANY WARRANTY; without even the implied warranty of
145- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
146- * GNU General Public License for more details.
147- *
148- * You should have received a copy of the GNU General Public License
149- * along with this program. If not, see <http://www.gnu.org/licenses/>.
150- *
151- * Authored by: Juha Ristolainen <juha.ristolainen@codemancers.fi>
152- * Nick Leppänen Larsson <frals@frals.se>
153- */
154-
155-import QtQuick 2.0
156-import QtGraphicalEffects 1.0
157-
158-RectangularGlow {
159- id: glowEffect
160-
161- property QtObject fillRectangle: null
162-
163- anchors.fill: fillRectangle
164- glowRadius: 10
165- spread: 0.8
166- color: "orange"
167- cornerRadius: fillRectangle.size
168- z: fillRectangle - 1
169-}
170
171=== removed file 'images/ListItemProgressionArrow@8.png'
172Binary files images/ListItemProgressionArrow@8.png 2013-04-29 19:54:31 +0000 and images/ListItemProgressionArrow@8.png 1970-01-01 00:00:00 +0000 differ
173=== added file 'images/alarm_black.png'
174Binary files images/alarm_black.png 1970-01-01 00:00:00 +0000 and images/alarm_black.png 2014-02-11 15:38:53 +0000 differ
175=== removed file 'images/search_item@8.svg'
176--- images/search_item@8.svg 2013-09-06 17:57:43 +0000
177+++ images/search_item@8.svg 1970-01-01 00:00:00 +0000
178@@ -1,105 +0,0 @@
179-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
180-<!-- Created with Inkscape (http://www.inkscape.org/) -->
181-
182-<svg
183- xmlns:dc="http://purl.org/dc/elements/1.1/"
184- xmlns:cc="http://creativecommons.org/ns#"
185- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
186- xmlns:svg="http://www.w3.org/2000/svg"
187- xmlns="http://www.w3.org/2000/svg"
188- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
189- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
190- id="svg2"
191- version="1.1"
192- inkscape:version="0.48.4 r9939"
193- width="40"
194- height="32"
195- sodipodi:docname="search_item@8.svg">
196- <metadata
197- id="metadata8">
198- <rdf:RDF>
199- <cc:Work
200- rdf:about="">
201- <dc:format>image/svg+xml</dc:format>
202- <dc:type
203- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
204- <dc:title />
205- </cc:Work>
206- </rdf:RDF>
207- </metadata>
208- <defs
209- id="defs6">
210- <linearGradient
211- id="linearGradient4265">
212- <stop
213- style="stop-color:#333333;stop-opacity:1;"
214- offset="0"
215- id="stop4267" />
216- <stop
217- id="stop4273"
218- offset="0.5"
219- style="stop-color:#333333;stop-opacity:0.24855492;" />
220- <stop
221- style="stop-color:#333333;stop-opacity:0;"
222- offset="1"
223- id="stop4269" />
224- </linearGradient>
225- </defs>
226- <sodipodi:namedview
227- pagecolor="#ffffff"
228- bordercolor="#666666"
229- borderopacity="1"
230- objecttolerance="10"
231- gridtolerance="10"
232- guidetolerance="10"
233- inkscape:pageopacity="0"
234- inkscape:pageshadow="2"
235- inkscape:window-width="1855"
236- inkscape:window-height="1056"
237- id="namedview4"
238- showgrid="false"
239- showguides="true"
240- inkscape:guide-bbox="true"
241- inkscape:zoom="45.254834"
242- inkscape:cx="12.76993"
243- inkscape:cy="14.390292"
244- inkscape:window-x="65"
245- inkscape:window-y="24"
246- inkscape:window-maximized="1"
247- inkscape:current-layer="svg2"
248- inkscape:snap-bbox="false">
249- <sodipodi:guide
250- orientation="0,1"
251- position="53.5,37.5"
252- id="guide3007" />
253- </sodipodi:namedview>
254- <rect
255- style="fill:#d05164;fill-opacity:1;stroke:none"
256- id="rect2982-5"
257- width="8.0715103"
258- height="31.993458"
259- x="1.6336422"
260- y="0.0012737503"
261- ry="0" />
262- <rect
263- style="fill:#d05164;fill-opacity:1;stroke:none"
264- id="rect2982"
265- width="36.046421"
266- height="31.998526"
267- x="1.6873904"
268- y="0.0084995022"
269- ry="8.0643663" />
270- <path
271- id="path2987-23-0-9-7-5"
272- style="fill:#ffffff;fill-opacity:1;stroke-width:1.5406878;stroke-miterlimit:4;stroke-dasharray:1.5406878, 6.1627512;stroke-dashoffset:0.7703439"
273- d="m 20.969828,18.441773 c 0,0.888623 -0.720412,1.608978 -1.609035,1.608978 -0.888622,0 -1.608979,-0.720355 -1.608979,-1.608978 0,-0.888624 0.720357,-1.609036 1.608979,-1.609036 0.888623,0 1.609035,0.720412 1.609035,1.609036 z m 2.380792,-3.519786 c 0,0.888623 -0.720356,1.609033 -1.608978,1.609033 -0.888624,0 -1.609036,-0.72041 -1.609036,-1.609033 0,-0.888623 0.720412,-1.60898 1.609036,-1.60898 0.888622,0 1.608978,0.720357 1.608978,1.60898 z m -4.715156,-9.78e-4 c 0,0.888623 -0.720355,1.608978 -1.608978,1.608978 -0.888624,0 -1.608979,-0.720355 -1.608979,-1.608978 0,-0.888623 0.720355,-1.609035 1.608979,-1.609035 0.888623,0 1.608978,0.720412 1.608978,1.609035 z m 7.24089,-3.684795 c 0,0.979475 -0.794056,1.773531 -1.773588,1.773531 -0.979531,0 -1.773586,-0.794056 -1.773586,-1.773531 0,-0.979531 0.794055,-1.7735855 1.773586,-1.7735855 0.979532,0 1.773588,0.7940545 1.773588,1.7735855 z m -4.708009,0.01713 c 0,0.979531 -0.794056,1.773586 -1.773532,1.773586 -0.979531,0 -1.773586,-0.794055 -1.773586,-1.773586 0,-0.979531 0.794055,-1.7735296 1.773586,-1.7735296 0.979476,0 1.773532,0.7939986 1.773532,1.7735296 z m -4.760671,-0.01713 c 0,0.979531 -0.794056,1.773586 -1.773587,1.773586 -0.979531,-1.5e-5 -1.773586,-0.794069 -1.773586,-1.7736 0,-0.979476 0.794055,-1.7735311 1.773586,-1.7735311 0.979531,0 1.773587,0.7940551 1.773587,1.7735311 z"
274- inkscape:connector-curvature="0" />
275- <rect
276- style="fill:#323232;fill-opacity:1;stroke:none"
277- id="rect4263"
278- width="1.6118982"
279- height="32.040779"
280- x="1.6351844"
281- y="0.0034180922"
282- ry="0" />
283-</svg>
284
285=== added file 'images/stopwatch_black.png'
286Binary files images/stopwatch_black.png 1970-01-01 00:00:00 +0000 and images/stopwatch_black.png 2014-02-11 15:38:53 +0000 differ
287=== added file 'images/timer_black.png'
288Binary files images/timer_black.png 1970-01-01 00:00:00 +0000 and images/timer_black.png 2014-02-11 15:38:53 +0000 differ
289=== added file 'images/timer_green.png'
290Binary files images/timer_green.png 1970-01-01 00:00:00 +0000 and images/timer_green.png 2014-02-11 15:38:53 +0000 differ
291=== removed file 'images/trash_icon@16.png'
292Binary files images/trash_icon@16.png 2013-07-20 09:09:51 +0000 and images/trash_icon@16.png 1970-01-01 00:00:00 +0000 differ
293=== modified file 'stopwatch/StopwatchFace.qml'
294--- stopwatch/StopwatchFace.qml 2014-02-01 15:30:26 +0000
295+++ stopwatch/StopwatchFace.qml 2014-02-11 15:38:53 +0000
296@@ -40,6 +40,9 @@
297 // Retrieves the status of the stopwatch timer
298 property bool timerStatus: stopwatchUIUpdate.running
299
300+ // Property to start the stopwatch hint animation
301+ property alias stopwatchAnimationHint: _stopwatchAnimationHint
302+
303 innerLabel.font.pixelSize: hours > 0 ? units.dp(28) : units.dp(41)
304
305 function reset() {
306@@ -78,6 +81,23 @@
307 id: blipFist
308 }
309
310+ // Image to display a bar over the stopwatch to differentiate it from other tabs
311+ Image {
312+ id: _stopwatchHintImage
313+
314+ smooth: true
315+ width: units.gu(40)
316+ anchors.centerIn: parent
317+ fillMode: Image.PreserveAspectFit
318+ source: Qt.resolvedUrl("../images/stopwatch_black.png")
319+
320+ SequentialAnimation on anchors.verticalCenterOffset {
321+ id: _stopwatchAnimationHint
322+ UbuntuNumberAnimation { from: units.gu(0); to: units.gu(2) }
323+ UbuntuNumberAnimation { from: units.gu(2); to: units.gu(0) }
324+ }
325+ }
326+
327 Repeater {
328 id:stopwatchMarkers
329
330
331=== modified file 'stopwatch/StopwatchPage.qml'
332--- stopwatch/StopwatchPage.qml 2014-02-01 15:30:26 +0000
333+++ stopwatch/StopwatchPage.qml 2014-02-11 15:38:53 +0000
334@@ -43,6 +43,7 @@
335
336 // Function to start/stop a stopwatch
337 function start_stop_stopwatch() {
338+ analogStopwatch.stopwatchAnimationHint.start()
339 if(analogStopwatch.timerStatus == false) {
340 analogStopwatch.start()
341 stopWatchLabelUpdate.start()
342@@ -63,6 +64,7 @@
343
344 // Function to reset stopwatch
345 function reset_stopwatch() {
346+ analogStopwatch.stopwatchAnimationHint.start()
347 analogStopwatch.stop()
348 analogStopwatch.reset();
349 analogStopwatch.innerLabel.text = SScript.timeToString(0, 0, 0, 0);
350@@ -104,6 +106,7 @@
351 StopwatchFace {
352 id: analogStopwatch
353 objectName: "stopwatchFace"
354+ visible: true
355
356 anchors {
357 top: parent.top
358
359=== modified file 'timer/TimerFace.qml'
360--- timer/TimerFace.qml 2014-02-01 15:30:26 +0000
361+++ timer/TimerFace.qml 2014-02-11 15:38:53 +0000
362@@ -18,6 +18,7 @@
363
364 import QtQuick 2.0
365 import Ubuntu.Components 0.1
366+import QtGraphicalEffects 1.0
367 import "../common"
368
369 ClockBase {
370@@ -33,8 +34,8 @@
371 property bool timerOn: false;
372 property bool inProgressFlag
373
374- // Property to expose the timer outer glow effect to outside objects
375- property alias glowEffect: _glowEffect
376+ // Property to expose the timer visual hint
377+ property alias timerHintImage: _timerHintImage.source
378
379 showHourHand: false
380 draggable: !inProgressFlag
381@@ -81,11 +82,14 @@
382 minutes = seconds = totalTime = 0;
383 }
384
385- AnalogGlowEffect {
386- id: _glowEffect
387- z: parent.z - 1
388- visible: false;
389- fillRectangle: parent
390+ // Image to display the side bars to differentiate it from other tabs
391+ Image {
392+ id: _timerHintImage
393+ smooth: true
394+ width: units.gu(40)
395+ anchors.centerIn: parent
396+ fillMode: Image.PreserveAspectFit
397+ source: Qt.resolvedUrl("../images/timer_black.png")
398 }
399
400 Repeater {
401
402=== modified file 'timer/TimerPage.qml'
403--- timer/TimerPage.qml 2014-02-04 23:54:48 +0000
404+++ timer/TimerPage.qml 2014-02-11 15:38:53 +0000
405@@ -215,8 +215,7 @@
406 State {
407 name: "DONE"
408 when: (totalTime == -1 && timerOn == false)
409- PropertyChanges { target: analogTimer.glowEffect; visible: true }
410- PropertyChanges { target: analogTimer.glowEffect; color: "#03CB4A" }
411+ PropertyChanges { target: analogTimer; timerHintImage: Qt.resolvedUrl("../images/timer_green.png") }
412 }
413 ]
414

Subscribers

People subscribed via source and target branches