Merge lp:~ken-vandine/ubuntu-system-settings/update_progress into lp:ubuntu-system-settings
- update_progress
- Merge into trunk
Status: | Merged | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Approved by: | Ken VanDine | ||||||||||||||||
Approved revision: | 1078 | ||||||||||||||||
Merged at revision: | 1096 | ||||||||||||||||
Proposed branch: | lp:~ken-vandine/ubuntu-system-settings/update_progress | ||||||||||||||||
Merge into: | lp:ubuntu-system-settings | ||||||||||||||||
Diff against target: |
531 lines (+213/-122) 5 files modified
plugins/system-update/PageComponent.qml (+166/-120) plugins/system-update/system_update.cpp (+2/-0) plugins/system-update/system_update.h (+1/-0) plugins/system-update/update_manager.cpp (+40/-2) plugins/system-update/update_manager.h (+4/-0) |
||||||||||||||||
To merge this branch: | bzr merge lp:~ken-vandine/ubuntu-system-settings/update_progress | ||||||||||||||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Diego Sarmentero (community) | Approve | ||
PS Jenkins bot | continuous-integration | Approve | |
Matthew Paul Thomas (community) | design | Abstain | |
Ubuntu Touch System Settings | Pending | ||
Review via email: mp+235199@code.launchpad.net |
Commit message
* Fixed handling of the Downloading/
* Forward updateProgress signals for system updates
* Layout fixes
Description of the change
* Fixed handling of the Downloading/
* Forward updateProgress signals for system updates
* Layout fixes
- 1062. By Ken VanDine
-
Forward rebooting signals for system updates
- 1063. By Ken VanDine
-
Display the "Restarting" string when we get the Rebooting signal from
system-image-dbus.Added the spinning animation to the logo per the design.
- 1064. By Ken VanDine
-
Make the installingImage
Update overlay fill the screen - 1065. By Ken VanDine
-
installingImage
Update shouldn't start out visible
PS Jenkins bot (ps-jenkins) wrote : | # |
- 1066. By Ken VanDine
-
Show downloaded sizes in while downloading
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:1061
http://
Executed test runs:
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
- 1067. By Ken VanDine
-
Display the downloaded size
- 1068. By Ken VanDine
-
Change the progress bar to indeterment for installing
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:1066
http://
Executed test runs:
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
- 1069. By Ken VanDine
-
removed debug output
PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:1068
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:1069
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
- 1070. By Ken VanDine
-
merged trunk
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:1070
http://
Executed test runs:
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
- 1071. By Ken VanDine
-
Some layout fixes for updates
PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:1071
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
Ken VanDine (ken-vandine) wrote : | # |
@mpt, here are some instructions for trying this branch:
Add silo 1, and install ubuntu-
You can also unregister the latest version of a click package so you can see a click update. Run:
$ click list --all --user=@all
This will list all versions of all click packages installed, find a package that has multiple versions installed, unregister the latest and then register the previous version. For example, I have two versions of com.canonical.
$ click list --all --user=@all
com.
com.
$ sudo click unregister --user=$USER com.canonical.payui
$ sudo click register --user=$USER com.canonical.payui 0.3.17
Now you should be able to launch ubuntu-
Bill Filler (bfiller) wrote : | # |
just tried this, seemed to work but noticed a couple of things:
- After the system update finished downloading, the main button at the top changed to "Pause All" which seemed wrong as there was nothing to pause. If I pressed "Pause All" it toggles to "Install 1 update.." and pressing it again changes to "Pause All". Is this intended?
- the buttons on the right of each item that says "Install..." seem a bit narrow. Was hard to actually press them. Perhaps make them a taller so they look more like buttons?
Ken VanDine (ken-vandine) wrote : | # |
> just tried this, seemed to work but noticed a couple of things:
>
> - After the system update finished downloading, the main button at the top
> changed to "Pause All" which seemed wrong as there was nothing to pause. If I
> pressed "Pause All" it toggles to "Install 1 update.." and pressing it again
> changes to "Pause All". Is this intended?
That's a bug, but not a new bug from this branch. It's just more noticeable now that the download and install states are more defined. I'll fix that.
>
> - the buttons on the right of each item that says "Install..." seem a bit
> narrow. Was hard to actually press them. Perhaps make them a taller so they
> look more like buttons?
Yeah, I'll make them larger.
- 1072. By Ken VanDine
-
Make the download/
update/ install button larger
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:1072
http://
Executed test runs:
FAILURE: http://
SUCCESS: http://
SUCCESS: http://
FAILURE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
- 1073. By Ken VanDine
-
merged trunk
Matthew Paul Thomas (mpt) wrote : | # |
I'm sorry, I tried for several hours to test this, with lots of help from #ubuntu-touch. Eventually I got stuck trying to save the edited version of /etc/system-
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:1073
http://
Executed test runs:
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
- 1074. By Ken VanDine
-
merged trunk
- 1075. By Ken VanDine
-
Ensure the pause/install all button shows the correct state after update is downloaded
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:1074
http://
Executed test runs:
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:1075
http://
Executed test runs:
SUCCESS: http://
FAILURE: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
FAILURE: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
- 1076. By Ken VanDine
-
merged trunk
- 1077. By Ken VanDine
-
Control visibility of the installAllButton, not the ListItem
- 1078. By Ken VanDine
-
merged trunk
PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:1077
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:1078
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
- 1079. By Ken VanDine
-
merged trunk
- 1080. By Ken VanDine
-
Don't highlight the installAllButton on press
- 1081. By Ken VanDine
-
merged trunk
Preview Diff
1 | === modified file 'plugins/system-update/PageComponent.qml' |
2 | --- plugins/system-update/PageComponent.qml 2014-09-17 13:19:24 +0000 |
3 | +++ plugins/system-update/PageComponent.qml 2014-09-29 16:29:38 +0000 |
4 | @@ -34,8 +34,8 @@ |
5 | id: root |
6 | objectName: "systemUpdatesPage" |
7 | |
8 | - title: i18n.tr("Updates") |
9 | - flickable: scrollWidget |
10 | + title: installingImageUpdate.visible ? "" : i18n.tr("Updates") |
11 | + flickable: installingImageUpdate.visible ? null : scrollWidget |
12 | |
13 | property bool installAll: false |
14 | property bool includeSystemUpdate: false |
15 | @@ -147,7 +147,7 @@ |
16 | State { |
17 | name: "UPDATE" |
18 | PropertyChanges { target: updateList; visible: true} |
19 | - PropertyChanges { target: installAllButton; visible: true && root.updatesAvailable > 1} |
20 | + PropertyChanges { target: installAllButton; visible: root.updatesAvailable > 1} |
21 | PropertyChanges { target: updateNotification; visible: false} |
22 | } |
23 | ] |
24 | @@ -186,10 +186,7 @@ |
25 | } |
26 | |
27 | onSystemUpdateDownloaded: { |
28 | - if (!root.systemUpdateInProgress && !installingImageUpdate.visible) { |
29 | - root.systemUpdateInProgress = true; |
30 | - PopupUtils.open(dialogInstallComponent); |
31 | - } |
32 | + root.installAll = false; |
33 | } |
34 | |
35 | onSystemUpdateFailed: { |
36 | @@ -199,6 +196,10 @@ |
37 | onUpdateProcessFailed: { |
38 | root.state = "SYSTEMUPDATEFAILED"; |
39 | } |
40 | + |
41 | + onRebooting: { |
42 | + installingImageUpdate.message = i18n.tr("Restarting…"); |
43 | + } |
44 | } |
45 | Flickable { |
46 | id: scrollWidget |
47 | @@ -217,10 +218,12 @@ |
48 | |
49 | Column { |
50 | id: columnId |
51 | - |
52 | - anchors.left: parent.left |
53 | - anchors.right: parent.right |
54 | - |
55 | + anchors { |
56 | + left: parent.left |
57 | + right: parent.right |
58 | + } |
59 | + height: childrenRect.height |
60 | + |
61 | ListItem.Base { |
62 | id: checkForUpdatesArea |
63 | objectName: "checkForUpdatesArea" |
64 | @@ -253,10 +256,11 @@ |
65 | } |
66 | |
67 | ListItem.SingleControl { |
68 | - id: installAllButton |
69 | - objectName: "installAllButton" |
70 | - |
71 | + height: installAllButton.visible ? units.gu(8) : units.gu(2) |
72 | + highlightWhenPressed: false |
73 | control: Button { |
74 | + id: installAllButton |
75 | + objectName: "installAllButton" |
76 | property string primaryText: includeSystemUpdate ? |
77 | i18n.tr("Install %1 update…", "Install %1 updates…", root.updatesAvailable).arg(root.updatesAvailable) : |
78 | i18n.tr("Install %1 update", "Install %1 updates", root.updatesAvailable).arg(root.updatesAvailable) |
79 | @@ -277,6 +281,7 @@ |
80 | } |
81 | } |
82 | } |
83 | + showDivider: false |
84 | } |
85 | |
86 | ListView { |
87 | @@ -289,126 +294,155 @@ |
88 | model: UpdateManager.model |
89 | height: childrenRect.height |
90 | interactive: false |
91 | + spacing: units.gu(2) |
92 | |
93 | delegate: ListItem.Subtitled { |
94 | id: listItem |
95 | + anchors { |
96 | + left: parent.left |
97 | + right: parent.right |
98 | + } |
99 | iconSource: Qt.resolvedUrl(modelData.iconUrl) |
100 | iconFrame: modelData.systemUpdate ? false : true |
101 | - height: modelData.selected ? units.gu(14) : units.gu(8) |
102 | + height: textArea.height |
103 | highlightWhenPressed: false |
104 | showDivider: false |
105 | |
106 | property alias actionButton: buttonAppUpdate |
107 | property alias progressBar: progress |
108 | + property bool installing: modelData.updateReady || (progressBar.value === progressBar.maximumValue) |
109 | |
110 | - Rectangle { |
111 | + Column { |
112 | id: textArea |
113 | objectName: "textArea" |
114 | - color: "transparent" |
115 | - anchors.fill: parent |
116 | - anchors.topMargin: units.gu(1) |
117 | - |
118 | + anchors { |
119 | + left: parent.left |
120 | + right: parent.right |
121 | + } |
122 | + spacing: units.gu(0.5) |
123 | property string message: modelData.error |
124 | property bool retry: false |
125 | |
126 | onMessageChanged: { |
127 | if(message.length > 0) { |
128 | labelVersion.text = message; |
129 | - buttonAppUpdate.text = i18n.tr("Retry"); |
130 | modelData.updateState = false; |
131 | modelData.selected = false; |
132 | textArea.retry = true; |
133 | } |
134 | } |
135 | |
136 | - Button { |
137 | - id: buttonAppUpdate |
138 | - objectName: "buttonAppUpdate" |
139 | - anchors.top: parent.top |
140 | - anchors.right: parent.right |
141 | - anchors.topMargin: units.gu(1) |
142 | - anchors.rightMargin: units.gu(1) |
143 | - height: labelTitle.height |
144 | - |
145 | - property string actionText: modelData.systemUpdate ? i18n.tr("Download") : i18n.tr("Update") |
146 | - property string primaryText: modelData.selected ? i18n.tr("Resume") : actionText |
147 | - property string secondaryText: i18n.tr("Pause") |
148 | - |
149 | - text: modelData.updateState ? secondaryText : primaryText |
150 | - |
151 | - onClicked: { |
152 | - if (textArea.retry) { |
153 | - textArea.retry = false; |
154 | - UpdateManager.retryDownload(modelData.packageName); |
155 | - } else if (modelData.updateReady) { |
156 | - PopupUtils.open(dialogInstallComponent); |
157 | - } else if (modelData.updateState) { |
158 | + Item { |
159 | + anchors { |
160 | + left: parent.left |
161 | + right: parent.right |
162 | + } |
163 | + height: buttonAppUpdate.height |
164 | + |
165 | + Label { |
166 | + id: labelTitle |
167 | + objectName: "labelTitle" |
168 | + anchors { |
169 | + left: parent.left |
170 | + verticalCenter: parent.verticalCenter |
171 | + } |
172 | + text: modelData.title |
173 | + font.bold: true |
174 | + elide: buttonAppUpdate.visible ? Text.ElideRight : Text.ElideNone |
175 | + } |
176 | + |
177 | + Button { |
178 | + id: buttonAppUpdate |
179 | + objectName: "buttonAppUpdate" |
180 | + anchors.right: parent.right |
181 | + height: labelTitle.height + units.gu(1) |
182 | + text: { |
183 | + if (textArea.retry) { |
184 | + return i18n.tr("Retry"); |
185 | + } |
186 | if (modelData.systemUpdate) { |
187 | - UpdateManager.pauseDownload(modelData.packageName); |
188 | - } else { |
189 | - modelData.updateState = false; |
190 | - tracker.pause(); |
191 | - } |
192 | - } else { |
193 | - if (!modelData.selected || modelData.systemUpdate) { |
194 | - modelData.selected = true; |
195 | - UpdateManager.startDownload(modelData.packageName); |
196 | - } else { |
197 | - modelData.updateState = true; |
198 | - tracker.resume(); |
199 | - } |
200 | - } |
201 | - } |
202 | - } |
203 | - |
204 | - Label { |
205 | - id: labelSize |
206 | - objectName: "labelSize" |
207 | - text: convert_bytes_to_size(modelData.binaryFilesize) |
208 | - anchors.bottom: labelVersion.bottom |
209 | - anchors.right: parent.right |
210 | - anchors.rightMargin: units.gu(1) |
211 | - visible: !modelData.selected |
212 | - } |
213 | - |
214 | - Label { |
215 | - id: labelTitle |
216 | - objectName: "labelTitle" |
217 | - anchors { |
218 | - top: parent.top |
219 | - left: parent.left |
220 | - right: buttonAppUpdate.left |
221 | - topMargin: units.gu(1) |
222 | - rightMargin: units.gu(1) |
223 | - } |
224 | - height: units.gu(3) |
225 | - text: modelData.title |
226 | - font.bold: true |
227 | - elide: buttonAppUpdate.visible ? Text.ElideRight : Text.ElideNone |
228 | - } |
229 | - |
230 | - Label { |
231 | + if (modelData.updateReady) { |
232 | + return i18n.tr("Install…"); |
233 | + } else if (!modelData.updateState && !modelData.selected) { |
234 | + return i18n.tr("Download"); |
235 | + } |
236 | + } |
237 | + if (modelData.updateState) { |
238 | + return i18n.tr("Pause"); |
239 | + } else if (modelData.selected) { |
240 | + return i18n.tr("Resume"); |
241 | + } |
242 | + return i18n.tr("Update"); |
243 | + } |
244 | + |
245 | + onClicked: { |
246 | + if (textArea.retry) { |
247 | + textArea.retry = false; |
248 | + UpdateManager.retryDownload(modelData.packageName); |
249 | + } else if (modelData.updateReady) { |
250 | + PopupUtils.open(dialogInstallComponent); |
251 | + } else if (modelData.updateState) { |
252 | + if (modelData.systemUpdate) { |
253 | + UpdateManager.pauseDownload(modelData.packageName); |
254 | + } else { |
255 | + modelData.updateState = false; |
256 | + tracker.pause(); |
257 | + } |
258 | + } else { |
259 | + if (!modelData.selected || modelData.systemUpdate) { |
260 | + modelData.selected = true; |
261 | + UpdateManager.startDownload(modelData.packageName); |
262 | + } else { |
263 | + modelData.updateState = true; |
264 | + tracker.resume(); |
265 | + } |
266 | + } |
267 | + } |
268 | + } |
269 | + } |
270 | + |
271 | + Item { |
272 | id: labelUpdateStatus |
273 | - objectName: "labelUpdateStatus" |
274 | - text: i18n.tr("Installing") |
275 | - anchors.top: labelTitle.bottom |
276 | - anchors.left: parent.left |
277 | - anchors.right: parent.right |
278 | - opacity: modelData.selected ? 1 : 0 |
279 | - anchors.bottomMargin: units.gu(1) |
280 | - |
281 | + anchors { |
282 | + left: parent.left |
283 | + right: parent.right |
284 | + } |
285 | + height: childrenRect.height |
286 | + visible: opacity > 0 |
287 | + opacity: modelData.selected && !modelData.updateReady ? 1 : 0 |
288 | Behavior on opacity { PropertyAnimation { duration: UbuntuAnimation.SleepyDuration } } |
289 | + Label { |
290 | + objectName: "labelUpdateStatus" |
291 | + anchors.left: parent.left |
292 | + fontSize: "small" |
293 | + text: installing ? i18n.tr("Installing") : i18n.tr("Downloading") |
294 | + } |
295 | + Label { |
296 | + anchors.right: parent.right |
297 | + visible: !labelSize.visible && !installing |
298 | + fontSize: "small" |
299 | + text: { |
300 | + if (!labelUpdateStatus.visible) |
301 | + return convert_bytes_to_size(modelData.binaryFilesize); |
302 | + |
303 | + return i18n.tr("%1 of %2").arg( |
304 | + convert_bytes_to_size(modelData.binaryFilesize * (progress.value * 0.01))).arg( |
305 | + convert_bytes_to_size(modelData.binaryFilesize) |
306 | + ); |
307 | + } |
308 | + } |
309 | } |
310 | |
311 | ProgressBar { |
312 | id: progress |
313 | objectName: "progress" |
314 | height: units.gu(2) |
315 | - anchors.left: parent.left |
316 | - anchors.top: labelUpdateStatus.bottom |
317 | - anchors.topMargin: units.gu(1) |
318 | - anchors.right: parent.right |
319 | - opacity: modelData.selected ? 1 : 0 |
320 | + anchors { |
321 | + left: parent.left |
322 | + right: parent.right |
323 | + } |
324 | + visible: opacity > 0 |
325 | + opacity: modelData.selected && !modelData.updateReady && !installing ? 1 : 0 |
326 | value: modelData.systemUpdate ? modelData.downloadProgress : tracker.progress |
327 | minimumValue: 0 |
328 | maximumValue: 100 |
329 | @@ -438,20 +472,29 @@ |
330 | Behavior on opacity { PropertyAnimation { duration: UbuntuAnimation.SleepyDuration } } |
331 | } |
332 | |
333 | - Label { |
334 | - id: labelVersion |
335 | - objectName: "labelVersion" |
336 | + Item { |
337 | anchors { |
338 | left: parent.left |
339 | - right: buttonAppUpdate.right |
340 | - top: (!progress.visible || progress.opacity == 0) ? labelTitle.bottom : progress.bottom |
341 | - topMargin: (!progress.visible || progress.opacity == 0) ? 0 : units.gu(1) |
342 | - bottom: parent.bottom |
343 | - bottomMargin: units.gu(1) |
344 | - } |
345 | - text: modelData.remoteVersion ? i18n.tr("Version: ") + modelData.remoteVersion : "" |
346 | - color: "black" |
347 | - elide: Text.ElideRight |
348 | + right: parent.right |
349 | + } |
350 | + height: childrenRect.height |
351 | + Label { |
352 | + id: labelVersion |
353 | + objectName: "labelVersion" |
354 | + anchors.left: parent.left |
355 | + text: modelData.remoteVersion ? i18n.tr("Version: ") + modelData.remoteVersion : "" |
356 | + elide: Text.ElideRight |
357 | + fontSize: "small" |
358 | + } |
359 | + |
360 | + Label { |
361 | + id: labelSize |
362 | + objectName: "labelSize" |
363 | + anchors.right: parent.right |
364 | + text: convert_bytes_to_size(modelData.binaryFilesize) |
365 | + fontSize: "small" |
366 | + visible: !labelUpdateStatus.visible && !installing |
367 | + } |
368 | } |
369 | } |
370 | } |
371 | @@ -522,15 +565,11 @@ |
372 | Rectangle { |
373 | id: installingImageUpdate |
374 | objectName: "installingImageUpdate" |
375 | - anchors { |
376 | - bottom: configuration.top |
377 | - left: parent.left |
378 | - right: parent.right |
379 | - top: parent.top |
380 | - } |
381 | + anchors.fill: root |
382 | visible: false |
383 | - |
384 | + z: 10 |
385 | color: "#221e1c" |
386 | + property string message: i18n.tr("Installing update…") |
387 | |
388 | Column { |
389 | anchors.centerIn: parent |
390 | @@ -539,6 +578,13 @@ |
391 | Image { |
392 | source: Qt.resolvedUrl("file:///usr/share/ubuntu/settings/system/icons/distributor-logo.png") |
393 | anchors.horizontalCenter: parent.horizontalCenter |
394 | + NumberAnimation on rotation { |
395 | + from: 0 |
396 | + to: 360 |
397 | + running: installingImageUpdate.visible == true |
398 | + loops: Animation.Infinite |
399 | + duration: 2000 |
400 | + } |
401 | } |
402 | |
403 | ProgressBar { |
404 | @@ -547,7 +593,7 @@ |
405 | } |
406 | |
407 | Label { |
408 | - text: i18n.tr("Installing update…") |
409 | + text: installingImageUpdate.message |
410 | anchors.horizontalCenter: parent.horizontalCenter |
411 | } |
412 | } |
413 | |
414 | === modified file 'plugins/system-update/system_update.cpp' |
415 | --- plugins/system-update/system_update.cpp 2014-09-22 18:40:18 +0000 |
416 | +++ plugins/system-update/system_update.cpp 2014-09-29 16:29:38 +0000 |
417 | @@ -67,6 +67,8 @@ |
418 | this, SIGNAL(updateFailed(int, QString))); |
419 | connect(&m_SystemServiceIface, SIGNAL(SettingChanged(QString, QString)), |
420 | this, SLOT(ProcessSettingChanged(QString, QString))); |
421 | + connect(&m_SystemServiceIface, SIGNAL(Rebooting(bool)), |
422 | + this, SIGNAL(rebooting(bool))); |
423 | |
424 | setCurrentDetailedVersion(); |
425 | } |
426 | |
427 | === modified file 'plugins/system-update/system_update.h' |
428 | --- plugins/system-update/system_update.h 2014-07-17 09:51:33 +0000 |
429 | +++ plugins/system-update/system_update.h 2014-09-29 16:29:38 +0000 |
430 | @@ -69,6 +69,7 @@ |
431 | void downloadModeChanged(); |
432 | void versionChanged(); |
433 | void updateProcessFailed(const QString& reason); |
434 | + void rebooting(bool status); |
435 | |
436 | private Q_SLOTS: |
437 | void updateDownloadProgress(int percentage, double eta); |
438 | |
439 | === modified file 'plugins/system-update/update_manager.cpp' |
440 | --- plugins/system-update/update_manager.cpp 2014-09-12 15:25:50 +0000 |
441 | +++ plugins/system-update/update_manager.cpp 2014-09-29 16:29:38 +0000 |
442 | @@ -77,13 +77,17 @@ |
443 | QObject::connect(&m_systemUpdate, SIGNAL(downloadModeChanged()), |
444 | SIGNAL(downloadModeChanged())); |
445 | QObject::connect(&m_systemUpdate, SIGNAL(updateDownloaded()), |
446 | - SIGNAL(systemUpdateDownloaded())); |
447 | + SLOT(updateDownloaded())); |
448 | QObject::connect(&m_systemUpdate, SIGNAL(updateProcessFailed(const QString&)), |
449 | SIGNAL(updateProcessFailed(QString))); |
450 | QObject::connect(&m_systemUpdate, SIGNAL(updateFailed(int, QString)), |
451 | - SIGNAL(systemUpdateFailed(int, QString))); |
452 | + SLOT(updateFailed(int, QString))); |
453 | QObject::connect(&m_systemUpdate, SIGNAL(updatePaused(int)), |
454 | SLOT(systemUpdatePaused(int))); |
455 | + QObject::connect(&m_systemUpdate, SIGNAL(updateProgress(int, double)), |
456 | + SLOT(systemUpdateProgress(int, double))); |
457 | + QObject::connect(&m_systemUpdate, SIGNAL(rebooting(bool)), |
458 | + SIGNAL(rebooting(bool))); |
459 | } |
460 | |
461 | UpdateManager::~UpdateManager() |
462 | @@ -227,12 +231,46 @@ |
463 | reportCheckState(); |
464 | } |
465 | |
466 | +void UpdateManager::updateDownloaded() |
467 | +{ |
468 | + QString packagename(UBUNTU_PACKAGE_NAME); |
469 | + if (m_apps.contains(packagename)) { |
470 | + Update *update = m_apps[packagename]; |
471 | + update->setSelected(false); |
472 | + update->setUpdateState(false); |
473 | + update->setUpdateReady(true); |
474 | + Q_EMIT systemUpdateDownloaded(); |
475 | + } |
476 | +} |
477 | +void UpdateManager::updateFailed(int consecutiveFailureCount, QString lastReason) |
478 | +{ |
479 | + QString packagename(UBUNTU_PACKAGE_NAME); |
480 | + if (m_apps.contains(packagename)) { |
481 | + Update *update = m_apps[packagename]; |
482 | + update->setSelected(false); |
483 | + update->setUpdateState(false); |
484 | + update->setDownloadProgress(0); |
485 | + Q_EMIT systemUpdateFailed(consecutiveFailureCount, lastReason); |
486 | + } |
487 | +} |
488 | + |
489 | void UpdateManager::systemUpdatePaused(int value) |
490 | { |
491 | QString packagename(UBUNTU_PACKAGE_NAME); |
492 | if (m_apps.contains(packagename)) { |
493 | Update *update = m_apps[packagename]; |
494 | update->setSelected(true); |
495 | + update->setUpdateState(false); |
496 | + update->setDownloadProgress(value); |
497 | + } |
498 | +} |
499 | + |
500 | +void UpdateManager::systemUpdateProgress(int value, double eta) |
501 | +{ |
502 | + Q_UNUSED(eta); |
503 | + QString packagename(UBUNTU_PACKAGE_NAME); |
504 | + if (m_apps.contains(packagename)) { |
505 | + Update *update = m_apps[packagename]; |
506 | update->setDownloadProgress(value); |
507 | } |
508 | } |
509 | |
510 | === modified file 'plugins/system-update/update_manager.h' |
511 | --- plugins/system-update/update_manager.h 2014-09-08 16:42:27 +0000 |
512 | +++ plugins/system-update/update_manager.h 2014-09-29 16:29:38 +0000 |
513 | @@ -75,6 +75,7 @@ |
514 | void updateProcessFailed(QString message); |
515 | void systemUpdateFailed(int consecutiveFailureCount, QString lastReason); |
516 | void versionChanged(); |
517 | + void rebooting(bool status); |
518 | |
519 | public: |
520 | explicit UpdateManager(QObject *parent = 0); |
521 | @@ -114,7 +115,10 @@ |
522 | |
523 | private Q_SLOTS: |
524 | void clickUpdateNotAvailable(); |
525 | + void updateFailed(int consecutiveFailureCount, QString lastReason); |
526 | + void updateDownloaded(); |
527 | void systemUpdatePaused(int value); |
528 | + void systemUpdateProgress(int value, double eta); |
529 | void processOutput(); |
530 | void processUpdates(); |
531 | void downloadUrlObtained(const QString &packagename, const QString &url); |
FAILED: Continuous integration, rev:1061 jenkins. qa.ubuntu. com/job/ ubuntu- system- settings- ci/1505/ jenkins. qa.ubuntu. com/job/ generic- deb-autopilot- utopic- touch/4972 jenkins. qa.ubuntu. com/job/ generic- mediumtests- utopic/ 3625 jenkins. qa.ubuntu. com/job/ ubuntu- system- settings- utopic- i386-ci/ 697 jenkins. qa.ubuntu. com/job/ generic- deb-autopilot- runner- mako/4725 jenkins. qa.ubuntu. com/job/ generic- mediumtests- builder- utopic- armhf/6224 jenkins. qa.ubuntu. com/job/ generic- mediumtests- builder- utopic- armhf/6224/ artifact/ work/output/ *zip*/output. zip s-jenkins. ubuntu- ci:8080/ job/touch- flash-device/ 13418 jenkins. qa.ubuntu. com/job/ autopilot- testrunner- otto-utopic/ 3012 jenkins. qa.ubuntu. com/job/ generic- mediumtests- builder- utopic- amd64/3934 jenkins. qa.ubuntu. com/job/ generic- mediumtests- builder- utopic- amd64/3934/ artifact/ work/output/ *zip*/output. zip
http://
Executed test runs:
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild: s-jenkins. ubuntu- ci:8080/ job/ubuntu- system- settings- ci/1505/ rebuild
http://