Status: | Merged |
---|---|
Merged at revision: | 2237 |
Proposed branch: | lp:~julia-segal/cdts/ui_work |
Merge into: | lp:cdts |
Diff against target: |
3583 lines (+2360/-385) 39 files modified
plainbox-gui/gui-ihv/commandtool.cpp (+15/-0) plainbox-gui/gui-ihv/commandtool.h (+40/-0) plainbox-gui/gui-ihv/gui-ihv.pro (+9/-4) plainbox-gui/gui-ihv/main.cpp (+39/-8) plainbox-gui/gui-ihv/qml/FileDialog.qml (+6/-0) plainbox-gui/gui-ihv/qml/outline/FIleDialog.qml (+6/-0) plainbox-gui/gui-ihv/qml/outline/LogViewer.qml (+129/-0) plainbox-gui/gui-ihv/qml/outline/ManualInteractionDialog.qml (+169/-0) plainbox-gui/gui-ihv/qml/outline/OldMainButtons.qml (+0/-87) plainbox-gui/gui-ihv/qml/outline/Progress.qml (+3/-3) plainbox-gui/gui-ihv/qml/outline/RunManagerButtons.qml (+30/-6) plainbox-gui/gui-ihv/qml/outline/RunManagerListView.qml (+91/-90) plainbox-gui/gui-ihv/qml/outline/RunManagerSuiteDelegate.qml (+165/-0) plainbox-gui/gui-ihv/qml/outline/RunManagerTestDelegate.qml (+219/-58) plainbox-gui/gui-ihv/qml/outline/RunManagerView.qml (+279/-13) plainbox-gui/gui-ihv/qml/outline/SubmissionDialog.qml (+90/-0) plainbox-gui/gui-ihv/qml/outline/SuiteSelectionDelegate.qml (+1/-5) plainbox-gui/gui-ihv/qml/outline/SuiteSelectionView.qml (+3/-19) plainbox-gui/gui-ihv/qml/outline/TestSelectionDetails.qml (+3/-7) plainbox-gui/gui-ihv/qml/outline/TestSelectionListView.qml (+124/-30) plainbox-gui/gui-ihv/qml/outline/TestSelectionSuiteDelegate.qml (+25/-18) plainbox-gui/gui-ihv/qml/outline/TestSelectionSummary.qml (+16/-2) plainbox-gui/gui-ihv/qml/outline/TestSelectionTestDelegate.qml (+29/-9) plainbox-gui/gui-ihv/qml/outline/TestSelectionView.qml (+24/-11) plainbox-gui/gui-ihv/qml/outline/WelcomeView.qml (+88/-11) plainbox-gui/gui-ihv/qml/outline/artwork/details.svg (+68/-0) plainbox-gui/gui-ihv/qml/outline/artwork/error.svg (+37/-0) plainbox-gui/gui-ihv/qml/outline/artwork/failed.svg (+33/-0) plainbox-gui/gui-ihv/qml/outline/artwork/passed.svg (+23/-0) plainbox-gui/gui-ihv/qml/outline/artwork/rerun.svg (+201/-0) plainbox-gui/gui-ihv/qml/outline/artwork/rerunq.svg (+158/-0) plainbox-gui/gui-ihv/qml/outline/artwork/skipped.svg (+45/-0) plainbox-gui/gui-ihv/qml/outline/artwork/test.txt (+6/-0) plainbox-gui/gui-ihv/qml/outline/artwork/userreq.svg (+31/-0) plainbox-gui/gui-ihv/qml/outline/gui-ihv.qml (+1/-1) plainbox-gui/gui-ihv/savefiledlg.cpp (+37/-0) plainbox-gui/gui-ihv/savefiledlg.h (+45/-0) plainbox-gui/gui-ihv/testsuiteitem.cpp (+48/-1) plainbox-gui/gui-ihv/testsuiteitem.h (+24/-2) |
To merge this branch: | bzr merge lp:~julia-segal/cdts/ui_work |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Daniel Manrique (community) | Approve | ||
Review via email: mp+176712@code.launchpad.net |
Commit message
Description of the change
Added
- Welcome Screen
- Log Viewer
- Warnings
- Manual Interaction (invoke it on the details icon on the RunManager)
Clean up on test selection
Andrew Haigh (andrew-haigh-b) wrote : | # |
Daniel Manrique (roadmr) wrote : | # |
Looks good! I have two comments:
- When I first start the GUI, I get a "ghost" window (seems to be a copy of the qtcreator window, but once I move it around it redraws its content correctly). This happened only the first time I did it. Then, every time I also get an error:
file://
- When I click on Results, then View Results, I get:
file://
/media/
I don't know enough QML to know what this means (maybe a component that's not defined?).
None of these are showstoppers at this stage, so I'll approve this to unblock Andrew, but we should get these fixed at some point.
Thanks!
Preview Diff
1 | === added file 'plainbox-gui/gui-ihv/commandtool.cpp' |
2 | --- plainbox-gui/gui-ihv/commandtool.cpp 1970-01-01 00:00:00 +0000 |
3 | +++ plainbox-gui/gui-ihv/commandtool.cpp 2013-07-24 15:37:30 +0000 |
4 | @@ -0,0 +1,15 @@ |
5 | +#include "commandtool.h" |
6 | + |
7 | +CommandTool::CommandTool(QObject *parent) : |
8 | + QObject(parent), |
9 | + m_process(new QProcess(this)) |
10 | +{ |
11 | +} |
12 | + |
13 | + |
14 | +void CommandTool::exec(const QString& cmd, const QString& args) |
15 | +{ |
16 | + QStringList arguments; |
17 | + arguments << args; |
18 | + m_process->start(cmd, arguments); |
19 | +} |
20 | |
21 | === added file 'plainbox-gui/gui-ihv/commandtool.h' |
22 | --- plainbox-gui/gui-ihv/commandtool.h 1970-01-01 00:00:00 +0000 |
23 | +++ plainbox-gui/gui-ihv/commandtool.h 2013-07-24 15:37:30 +0000 |
24 | @@ -0,0 +1,40 @@ |
25 | +/* |
26 | + * This file is part of plainbox-gui |
27 | + * |
28 | + * Copyright 2013 Canonical Ltd. |
29 | + * |
30 | + * Authors: |
31 | + * - Julia Segal <julia.segal@cellsoftware.co.uk> |
32 | + * |
33 | + * This program is free software; you can redistribute it and/or modify |
34 | + * it under the terms of the GNU General Public License as published by |
35 | + * the Free Software Foundation; version 3. |
36 | + * |
37 | + * This program is distributed in the hope that it will be useful, |
38 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
39 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
40 | + * GNU General Public License for more details. |
41 | + * |
42 | + * You should have received a copy of the GNU General Public License |
43 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
44 | + */ |
45 | + |
46 | +#ifndef COMMANDTOOL_H |
47 | +#define COMMANDTOOL_H |
48 | + |
49 | +#include <QObject> |
50 | +#include <QProcess> |
51 | +#include <qdebug.h> |
52 | + |
53 | +class CommandTool : public QObject |
54 | +{ |
55 | + Q_OBJECT |
56 | +public: |
57 | + explicit CommandTool(QObject *parent = 0); |
58 | + Q_INVOKABLE void exec(const QString& cmd, const QString &args); |
59 | + |
60 | +private: |
61 | + QProcess *m_process; |
62 | +}; |
63 | + |
64 | +#endif // COMMAND_H |
65 | |
66 | === modified file 'plainbox-gui/gui-ihv/gui-ihv.pro' |
67 | --- plainbox-gui/gui-ihv/gui-ihv.pro 2013-07-17 14:23:54 +0000 |
68 | +++ plainbox-gui/gui-ihv/gui-ihv.pro 2013-07-24 15:37:30 +0000 |
69 | @@ -28,7 +28,9 @@ |
70 | |
71 | SOURCES += main.cpp \ |
72 | testsuiteitem.cpp \ |
73 | - listmodel.cpp |
74 | + listmodel.cpp \ |
75 | + savefiledlg.cpp \ |
76 | + commandtool.cpp |
77 | |
78 | # Please do not modify the following two lines. Required for deployment. |
79 | include(qtquick2applicationviewer/qtquick2applicationviewer.pri) |
80 | @@ -36,17 +38,20 @@ |
81 | |
82 | HEADERS += \ |
83 | testsuiteitem.h \ |
84 | - listmodel.h |
85 | + listmodel.h \ |
86 | + savefiledlg.h \ |
87 | + commandtool.h |
88 | |
89 | OTHER_FILES += \ |
90 | qml/outline/DummyListModel.qml \ |
91 | qml/outline/TestSelectionButtons.qml \ |
92 | qml/outline/TestSelectionView.qml \ |
93 | - qml/outline/OldMainButtons.qml \ |
94 | qml/outline/TestSelectionListView.qml \ |
95 | qml/outline/TestSelectionSuiteDelegate.qml \ |
96 | qml/outline/TestSelectionTestDelegate.qml \ |
97 | qml/outline/SuiteSelectionDelegate.qml \ |
98 | qml/outline/SuiteSelectionView.qml \ |
99 | - qml/outline/RunManagerView.qml |
100 | + qml/outline/RunManagerView.qml \ |
101 | + qml/outline/RunManagerSuiteDelegate.qml \ |
102 | + qml/outline/SubmissionDialog.qml |
103 | |
104 | |
105 | === modified file 'plainbox-gui/gui-ihv/main.cpp' |
106 | --- plainbox-gui/gui-ihv/main.cpp 2013-07-16 15:49:19 +0000 |
107 | +++ plainbox-gui/gui-ihv/main.cpp 2013-07-24 15:37:30 +0000 |
108 | @@ -25,6 +25,7 @@ |
109 | #include <QDir> |
110 | #include <QtQml> |
111 | #include "qtquick2applicationviewer.h" |
112 | +#include "commandtool.h" |
113 | #include "listmodel.h" |
114 | #include "testsuiteitem.h" |
115 | |
116 | @@ -33,14 +34,40 @@ |
117 | ListModel* CreateTestSuiteModel(){ |
118 | //QList<QObject*> list; |
119 | ListModel *model = new ListModel(new TestSuiteItem, qApp); |
120 | - model->appendRow(new TestSuiteItem("Informational tests", "SATA/IDE devive information.", 60, "Automatic", model)); |
121 | - model->appendRow(new TestSuiteItem("Hibernation tests", "power-management/hibernate_advanced", 22, "Manual", model)); |
122 | - model->appendRow(new TestSuiteItem("Wireless networking tests", "wireless/wireless_scanning", 360, "Automatic", model)); |
123 | - model->appendRow(new TestSuiteItem("Wireless networking tests", "wireless/wireless_connection", 600, "Automatic", model)); |
124 | - model->appendRow(new TestSuiteItem("LED tests", "led/wireless", 200, "Manual",model)); |
125 | - model->appendRow(new TestSuiteItem("Benchmarks tests", "benchmarks/network/network-loopback", 100, "Manual",model)); |
126 | - model->appendRow(new TestSuiteItem("Suspend tests", "suspend/led_after_suspend/wireless", 1, "Manual",model)); |
127 | - model->appendRow(new TestSuiteItem("Suspend tests", "suspend/wireless_after_suspenspeded", 2, "Manual",model)); |
128 | + for (int i = 0; i < 5; i++){ |
129 | + QString s; |
130 | + QTextStream(&s) << i << " SATA/IDE devive information."; |
131 | + model->appendRow(new TestSuiteItem("Informational tests", s, 60, "Automatic", model)); |
132 | + } |
133 | + for (int i = 0; i < 5; i++){ |
134 | + QString s; |
135 | + QTextStream(&s) << i << " power-management/hibernate_advanced"; |
136 | + model->appendRow(new TestSuiteItem("Hibernation tests", s, 60, "Automatic", model)); |
137 | + } |
138 | + |
139 | + for (int i = 0; i < 3; i++){ |
140 | + QString s; |
141 | + QTextStream(&s) << i << " wireless/wireless_scanning"; |
142 | + model->appendRow(new TestSuiteItem("Wireless networking tests", s, 360, "Automatic", model)); |
143 | + } |
144 | + |
145 | + for (int i = 0; i < 3; i++){ |
146 | + QString s; |
147 | + QTextStream(&s) << i << " led/wireless"; |
148 | + model->appendRow(new TestSuiteItem("LED tests", s, 360, "Automatic", model)); |
149 | + } |
150 | + |
151 | + for (int i = 0; i < 5; i++){ |
152 | + QString s; |
153 | + QTextStream(&s) << i << " benchmarks/network/network-loopback"; |
154 | + model->appendRow(new TestSuiteItem("Benchmarks tests", s, 360, "Automatic", model)); |
155 | + } |
156 | + |
157 | + for (int i = 0; i < 3; i++){ |
158 | + QString s; |
159 | + QTextStream(&s) << i << " suspend/led_after_suspend/wireless"; |
160 | + model->appendRow(new TestSuiteItem("Suspend tests", s, 1, "Manual",model)); |
161 | + } |
162 | |
163 | return model; |
164 | } |
165 | @@ -48,6 +75,7 @@ |
166 | |
167 | |
168 | |
169 | + |
170 | int main(int argc, char *argv[]) |
171 | { |
172 | QGuiApplication app(argc, argv); |
173 | @@ -66,6 +94,9 @@ |
174 | QtQuick2ApplicationViewer viewer; |
175 | viewer.rootContext()->setContextProperty("testSuiteModel", CreateTestSuiteModel()); |
176 | |
177 | + CommandTool cmdTool; |
178 | + viewer.rootContext()->setContextProperty("cmdTool", &cmdTool); |
179 | + |
180 | viewer.setMainQmlFile(QStringLiteral("qml/outline/gui-ihv.qml")); |
181 | viewer.showExpanded(); |
182 | |
183 | |
184 | === added file 'plainbox-gui/gui-ihv/qml/FileDialog.qml' |
185 | --- plainbox-gui/gui-ihv/qml/FileDialog.qml 1970-01-01 00:00:00 +0000 |
186 | +++ plainbox-gui/gui-ihv/qml/FileDialog.qml 2013-07-24 15:37:30 +0000 |
187 | @@ -0,0 +1,6 @@ |
188 | +import QtQuick 2.0 |
189 | + |
190 | +Rectangle { |
191 | + width: 100 |
192 | + height: 62 |
193 | +} |
194 | |
195 | === added file 'plainbox-gui/gui-ihv/qml/outline/FIleDialog.qml' |
196 | --- plainbox-gui/gui-ihv/qml/outline/FIleDialog.qml 1970-01-01 00:00:00 +0000 |
197 | +++ plainbox-gui/gui-ihv/qml/outline/FIleDialog.qml 2013-07-24 15:37:30 +0000 |
198 | @@ -0,0 +1,6 @@ |
199 | +import QtQuick 2.0 |
200 | + |
201 | +Rectangle { |
202 | + width: 100 |
203 | + height: 62 |
204 | +} |
205 | |
206 | === added file 'plainbox-gui/gui-ihv/qml/outline/LogViewer.qml' |
207 | --- plainbox-gui/gui-ihv/qml/outline/LogViewer.qml 1970-01-01 00:00:00 +0000 |
208 | +++ plainbox-gui/gui-ihv/qml/outline/LogViewer.qml 2013-07-24 15:37:30 +0000 |
209 | @@ -0,0 +1,129 @@ |
210 | +/* |
211 | + * This file is part of plainbox-gui |
212 | + * |
213 | + * Copyright 2013 Canonical Ltd. |
214 | + * |
215 | + * Authors: |
216 | + * - Julia Segal <julia.segal@cellsoftware.co.uk> |
217 | + * |
218 | + * This program is free software; you can redistribute it and/or modify |
219 | + * it under the terms of the GNU General Public License as published by |
220 | + * the Free Software Foundation; version 3. |
221 | + * |
222 | + * This program is distributed in the hope that it will be useful, |
223 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
224 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
225 | + * GNU General Public License for more details. |
226 | + * |
227 | + * You should have received a copy of the GNU General Public License |
228 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
229 | + */ |
230 | + |
231 | + |
232 | +import QtQuick 2.0 |
233 | +import Ubuntu.Components 0.1 |
234 | +import Ubuntu.Components.Popups 0.1 |
235 | + |
236 | + |
237 | +Dialog { |
238 | + id: dialog |
239 | + |
240 | + title: i18n.tr("Log Viewer") |
241 | + text: i18n.tr("") |
242 | + |
243 | + property alias logText: logtext.text |
244 | + property alias showTroubleShootingLink: troubleButton.visible |
245 | + |
246 | + Button { |
247 | + id: troubleButton |
248 | + text: i18n.tr("Trouble Shooting") |
249 | + color: UbuntuColors.orange |
250 | + onClicked: { |
251 | + // TODO put in real url!! |
252 | + cmdTool.exec("xdg-open", "https://wiki.ubuntu.com/Testing/Automation/Checkbox/"); |
253 | + } |
254 | + } |
255 | + |
256 | + Rectangle{ |
257 | + height: units.gu(60) |
258 | + color: Theme.palette.normal.base |
259 | + |
260 | + Flickable { |
261 | + id: flick |
262 | + |
263 | + width: logtext.width; |
264 | + height: parent.height; |
265 | + contentWidth: logtext.paintedWidth |
266 | + contentHeight: logtext.paintedHeight |
267 | + clip: true |
268 | + |
269 | + function ensureVisible(r) |
270 | + { |
271 | + if (contentX >= r.x) |
272 | + contentX = r.x; |
273 | + else if (contentX+width <= r.x+r.width) |
274 | + contentX = r.x+r.width-width; |
275 | + if (contentY >= r.y) |
276 | + contentY = r.y; |
277 | + else if (contentY+height <= r.y+r.height) |
278 | + contentY = r.y+r.height-height; |
279 | + } |
280 | + |
281 | + TextEdit{ |
282 | + id: logtext |
283 | + text: "Load this up with text\nhere's a url: <a href=\"http://www.ubuntu.com\">Visit Ubuntu</a> |
284 | + even more even more \n even more even more \n even more even more \n |
285 | + even more even more \n even more even more \n even more even more \n" |
286 | + |
287 | + height: units.gu(60) |
288 | + width: units.gu(30) |
289 | + cursorVisible : true |
290 | + readOnly: true |
291 | + selectByMouse : true |
292 | + textFormat: TextEdit.RichText |
293 | + wrapMode: TextEdit.Wrap |
294 | + focus: true |
295 | + color: Theme.palette.normal.foregroundText |
296 | + selectedTextColor: Theme.palette.selected.foregroundText |
297 | + selectionColor: Theme.palette.selected.foreground |
298 | + font.pixelSize: FontUtils.sizeToPixels("medium") |
299 | + |
300 | + onCursorRectangleChanged: flick.ensureVisible(cursorRectangle) |
301 | + |
302 | + onLinkActivated: { |
303 | + cmdTool.exec("xdg-open", link) |
304 | + } |
305 | + |
306 | + } |
307 | + } |
308 | + |
309 | + } |
310 | + |
311 | + Button { |
312 | + id: copyButton |
313 | + text: i18n.tr("Copy") |
314 | + color: UbuntuColors.lightAubergine |
315 | + onClicked: { |
316 | + logtext.selectAll(); |
317 | + logtext.copy(); |
318 | + } |
319 | + } |
320 | + |
321 | + Button { |
322 | + id: doneButton |
323 | + text: i18n.tr("Done") |
324 | + color: UbuntuColors.warmGrey |
325 | + onClicked: { |
326 | + PopupUtils.close(dialog) |
327 | + } |
328 | + } |
329 | + |
330 | +} |
331 | + |
332 | + |
333 | + |
334 | + |
335 | + |
336 | + |
337 | + |
338 | + |
339 | |
340 | === added file 'plainbox-gui/gui-ihv/qml/outline/ManualInteractionDialog.qml' |
341 | --- plainbox-gui/gui-ihv/qml/outline/ManualInteractionDialog.qml 1970-01-01 00:00:00 +0000 |
342 | +++ plainbox-gui/gui-ihv/qml/outline/ManualInteractionDialog.qml 2013-07-24 15:37:30 +0000 |
343 | @@ -0,0 +1,169 @@ |
344 | +/* |
345 | + * This file is part of plainbox-gui |
346 | + * |
347 | + * Copyright 2013 Canonical Ltd. |
348 | + * |
349 | + * Authors: |
350 | + * - Julia Segal <julia.segal@cellsoftware.co.uk> |
351 | + * |
352 | + * This program is free software; you can redistribute it and/or modify |
353 | + * it under the terms of the GNU General Public License as published by |
354 | + * the Free Software Foundation; version 3. |
355 | + * |
356 | + * This program is distributed in the hope that it will be useful, |
357 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
358 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
359 | + * GNU General Public License for more details. |
360 | + * |
361 | + * You should have received a copy of the GNU General Public License |
362 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
363 | + */ |
364 | + |
365 | + |
366 | +import QtQuick 2.0 |
367 | +import Ubuntu.Components 0.1 |
368 | +import Ubuntu.Components.Popups 0.1 |
369 | + |
370 | + |
371 | +Dialog { |
372 | + id: dialog |
373 | + |
374 | + title: i18n.tr("Manual Test") |
375 | + text: i18n.tr("Name of the Test.") |
376 | + |
377 | + |
378 | + TextArea{ |
379 | + id: instructions |
380 | + text: "This is where we put our instructions\n2- This is 1\n3 -This is where we put our instructions\n4- This is where we put our instructions\n5 -where we put our instructions\n" |
381 | + Text { font.family: "Helvetica"; font.pointSize: 13; font.bold: true } |
382 | + color: "green" |
383 | + height: units.gu(24) |
384 | + } |
385 | + |
386 | + Button { |
387 | + text: i18n.tr("Test") |
388 | + color: UbuntuColors.orange |
389 | + onClicked: { |
390 | + console.log("Test") |
391 | + } |
392 | + } |
393 | + |
394 | + Row { |
395 | + spacing: units.gu(8) |
396 | + CheckBox { |
397 | + id: yescheck |
398 | + text: i18n.tr("Yes") |
399 | + checked: true |
400 | + onClicked: { |
401 | + if (checked){ |
402 | + nocheck.checked = !checked |
403 | + skipcheck.checked = !checked |
404 | + } |
405 | + else |
406 | + checked = true; |
407 | + } |
408 | + Label{ |
409 | + anchors.left: yescheck.right |
410 | + anchors.verticalCenter: parent.verticalCenter |
411 | + anchors.leftMargin: units.gu(1) |
412 | + text: i18n.tr("Yes") |
413 | + } |
414 | + } |
415 | + |
416 | + CheckBox { |
417 | + id: nocheck |
418 | + text: i18n.tr("No") |
419 | + checked: false |
420 | + onClicked: { |
421 | + if (checked){ |
422 | + yescheck.checked = !checked |
423 | + skipcheck.checked = !checked |
424 | + } |
425 | + else |
426 | + checked = true; |
427 | + } |
428 | + Label{ |
429 | + anchors.left: nocheck.right |
430 | + anchors.verticalCenter: parent.verticalCenter |
431 | + anchors.leftMargin: units.gu(1) |
432 | + text: i18n.tr("No") |
433 | + } |
434 | + } |
435 | + |
436 | + CheckBox { |
437 | + id: skipcheck |
438 | + text: i18n.tr("Skip") |
439 | + checked: false |
440 | + onClicked: { |
441 | + if (checked){ |
442 | + nocheck.checked = !checked |
443 | + yescheck.checked = !checked |
444 | + } |
445 | + else |
446 | + checked = true; |
447 | + } |
448 | + Label{ |
449 | + anchors.left: skipcheck.right |
450 | + anchors.verticalCenter: parent.verticalCenter |
451 | + anchors.leftMargin: units.gu(1) |
452 | + text: i18n.tr("Skip") |
453 | + } |
454 | + } |
455 | + } |
456 | + |
457 | + |
458 | + Column { |
459 | + Label{ |
460 | + text: i18n.tr("Comments") |
461 | + } |
462 | + |
463 | + TextArea { |
464 | + id: comments |
465 | + text: "" |
466 | + } |
467 | + } |
468 | + |
469 | + |
470 | + |
471 | + |
472 | + Button { |
473 | + id: continuebutton |
474 | + text: i18n.tr("Continue") |
475 | + color: UbuntuColors.warmGrey |
476 | + onClicked: { |
477 | + console.log("Continue") |
478 | + if (skipcheck.checked && comments.text === "") |
479 | + { |
480 | + PopupUtils.open(skip_warning_dialog, continuebutton); |
481 | + } |
482 | + |
483 | + else |
484 | + PopupUtils.close(dialog) |
485 | + } |
486 | + } |
487 | + |
488 | + |
489 | + |
490 | + Component { |
491 | + id: skip_warning_dialog |
492 | + WarningDialog{ |
493 | + text: i18n.tr("Skipping a test requires a reason to be entered in the Comments field. Please update that field and click 'Continue' again."); |
494 | + |
495 | + showCancel: false |
496 | + showContinue: false |
497 | + showCheckbox: false |
498 | + |
499 | + onOk: { |
500 | + console.log("ok clicked"); |
501 | + } |
502 | + } |
503 | + } |
504 | +} |
505 | + |
506 | + |
507 | + |
508 | + |
509 | + |
510 | + |
511 | + |
512 | + |
513 | |
514 | === removed file 'plainbox-gui/gui-ihv/qml/outline/OldMainButtons.qml' |
515 | --- plainbox-gui/gui-ihv/qml/outline/OldMainButtons.qml 2013-07-12 14:18:25 +0000 |
516 | +++ plainbox-gui/gui-ihv/qml/outline/OldMainButtons.qml 1970-01-01 00:00:00 +0000 |
517 | @@ -1,87 +0,0 @@ |
518 | -/* |
519 | - * This file is part of plainbox-gui |
520 | - * |
521 | - * Copyright 2013 Canonical Ltd. |
522 | - * |
523 | - * Authors: |
524 | - * - Julia Segal <julia.segal@cellsoftware.co.uk> |
525 | - * |
526 | - * This program is free software; you can redistribute it and/or modify |
527 | - * it under the terms of the GNU General Public License as published by |
528 | - * the Free Software Foundation; version 3. |
529 | - * |
530 | - * This program is distributed in the hope that it will be useful, |
531 | - * but WITHOUT ANY WARRANTY; without even the implied warranty of |
532 | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
533 | - * GNU General Public License for more details. |
534 | - * |
535 | - * You should have received a copy of the GNU General Public License |
536 | - * along with this program. If not, see <http://www.gnu.org/licenses/>. |
537 | - */ |
538 | - |
539 | -import QtQuick 2.0 |
540 | -import Ubuntu.Components 0.1 |
541 | - |
542 | - |
543 | - |
544 | -Row { |
545 | - id: buttons |
546 | - state: "SELECTION" |
547 | - |
548 | - signal actionChanged(string actionState) |
549 | - |
550 | - width: parent.width - units.gu(20) |
551 | - spacing: (parent.width - (units.gu(16)*3))/4 |
552 | - Button { |
553 | - id:selectionButton |
554 | - text: i18n.tr("selection") |
555 | - width: units.gu(16) |
556 | - onClicked: { |
557 | - buttons.state = "SELECTION"; |
558 | - buttons.actionChanged(buttons.state); |
559 | - } |
560 | - } |
561 | - Button { |
562 | - id: runButton |
563 | - text: i18n.tr("run") |
564 | - width: units.gu(16) |
565 | - onClicked:{ |
566 | - buttons.state = "RUN"; |
567 | - buttons.actionChanged(buttons.state); |
568 | - } |
569 | - |
570 | - } |
571 | - Button { |
572 | - id: resultsButton |
573 | - text: i18n.tr("results") |
574 | - width: units.gu(16) |
575 | - onClicked:{ |
576 | - buttons.state = "RESULTS" |
577 | - buttons.actionChanged(buttons.state); |
578 | - } |
579 | - } |
580 | - |
581 | - states: [ |
582 | - State { |
583 | - name: "SELECTION" |
584 | - PropertyChanges { target: selectionButton; color: UbuntuColors.orange} |
585 | - PropertyChanges { target: runButton; color: UbuntuColors.warmGrey} |
586 | - PropertyChanges { target: resultsButton; color: UbuntuColors.warmGrey} |
587 | - }, |
588 | - State { |
589 | - name: "RUN" |
590 | - PropertyChanges { target: selectionButton; color: UbuntuColors.warmGrey} |
591 | - PropertyChanges { target: runButton; color: UbuntuColors.orange} |
592 | - PropertyChanges { target: resultsButton; color: UbuntuColors.warmGrey} |
593 | - |
594 | - }, |
595 | - State { |
596 | - name: "RESULTS" |
597 | - PropertyChanges { target: selectionButton; color: UbuntuColors.warmGrey} |
598 | - PropertyChanges { target: runButton; color: UbuntuColors.warmGrey} |
599 | - PropertyChanges { target: resultsButton; color: UbuntuColors.orange} |
600 | - } |
601 | - |
602 | - ] |
603 | - |
604 | -} |
605 | |
606 | === modified file 'plainbox-gui/gui-ihv/qml/outline/Progress.qml' |
607 | --- plainbox-gui/gui-ihv/qml/outline/Progress.qml 2013-07-08 10:12:50 +0000 |
608 | +++ plainbox-gui/gui-ihv/qml/outline/Progress.qml 2013-07-24 15:37:30 +0000 |
609 | @@ -25,12 +25,12 @@ |
610 | |
611 | Item { |
612 | property alias title: progresslabel.text |
613 | - property alias indeterminate: progressbar.indeterminate |
614 | property alias value: progressbar.value |
615 | + property alias maxValue: progressbar.maximumValue |
616 | |
617 | Label { |
618 | id: progresslabel |
619 | - text: i18n.tr("System Testing"); |
620 | + text: "" |
621 | anchors.left: parent.left |
622 | } |
623 | |
624 | @@ -42,7 +42,7 @@ |
625 | indeterminate: false |
626 | minimumValue: 0 |
627 | maximumValue: 100 |
628 | - value: 50 |
629 | + value: 0 |
630 | anchors.left: parent.left |
631 | } |
632 | } |
633 | |
634 | === modified file 'plainbox-gui/gui-ihv/qml/outline/RunManagerButtons.qml' |
635 | --- plainbox-gui/gui-ihv/qml/outline/RunManagerButtons.qml 2013-07-17 14:23:54 +0000 |
636 | +++ plainbox-gui/gui-ihv/qml/outline/RunManagerButtons.qml 2013-07-24 15:37:30 +0000 |
637 | @@ -28,28 +28,52 @@ |
638 | id: bottombuttons |
639 | spacing: units.gu(12) |
640 | |
641 | - signal cancel |
642 | + property alias pauseButtonEnabled: pauseButton.enabled |
643 | + property alias resultsButtonEnabled: resultsButton.enabled |
644 | + |
645 | + |
646 | + signal exit |
647 | signal pauseTest |
648 | + signal resumeTest |
649 | + signal results |
650 | |
651 | |
652 | Button { |
653 | id:cancelButton |
654 | - text: i18n.tr("Cancel") |
655 | + text: i18n.tr("Exit") |
656 | color: UbuntuColors.warmGrey |
657 | width: units.gu(18) |
658 | onClicked: { |
659 | - bottombuttons.cancel(); |
660 | + bottombuttons.exit(); |
661 | } |
662 | } |
663 | |
664 | Button { |
665 | id: pauseButton |
666 | - text: i18n.tr("Pause") |
667 | + property bool showPause: true // either Pause or Resume |
668 | + enabled: true |
669 | + text: showPause ? i18n.tr("Pause") : i18n.tr("Resume") |
670 | color: UbuntuColors.lightAubergine |
671 | width: units.gu(18) |
672 | + |
673 | onClicked:{ |
674 | - bottombuttons.pauseTest(); |
675 | - } |
676 | + showPause?pauseTest():resumeTest() |
677 | + showPause = !showPause |
678 | + |
679 | + } |
680 | + |
681 | + } |
682 | + |
683 | + Button { |
684 | + id: resultsButton |
685 | + enabled: false |
686 | + text: i18n.tr("Results") |
687 | + color: UbuntuColors.orange |
688 | + width: units.gu(18) |
689 | + onClicked: { |
690 | + bottombuttons.results() |
691 | + } |
692 | + |
693 | } |
694 | |
695 | |
696 | |
697 | === modified file 'plainbox-gui/gui-ihv/qml/outline/RunManagerListView.qml' |
698 | --- plainbox-gui/gui-ihv/qml/outline/RunManagerListView.qml 2013-07-18 10:41:06 +0000 |
699 | +++ plainbox-gui/gui-ihv/qml/outline/RunManagerListView.qml 2013-07-24 15:37:30 +0000 |
700 | @@ -29,19 +29,25 @@ |
701 | |
702 | Rectangle { |
703 | id: runmanagerrect |
704 | + |
705 | + property alias itemindex: groupedList.currentIndex // use this to change the current selection |
706 | + property alias curSectionTested: groupedList.curSectionTested // used by suite delegate to display 1 of 4 when tests are executed |
707 | + property alias curTest: groupedList.curTest // used by suite delegate to display first number of 1 of 4 |
708 | + |
709 | color: "white" |
710 | height: parent.height |
711 | width: parent.width |
712 | |
713 | |
714 | + |
715 | Flickable { |
716 | id: listflick |
717 | anchors.fill: parent |
718 | height: parent.height |
719 | - |
720 | - clip: true |
721 | contentHeight: groupedList.height |
722 | boundsBehavior : Flickable.StopAtBounds |
723 | + clip: true |
724 | + interactive: true |
725 | |
726 | Component { |
727 | id: highlight |
728 | @@ -52,96 +58,57 @@ |
729 | radius: 5 |
730 | } |
731 | } |
732 | - |
733 | - |
734 | - |
735 | ListView { |
736 | id: groupedList |
737 | + |
738 | + property int sectionCount: 0 // contain the number of sections for calculating height |
739 | + property int closedCount: 0 // contains number of closed items for calculating height |
740 | + property bool userChangingIndex: false // indicates if user is changing index so 1 of 4 heading doesn't get messed up |
741 | + property string curSectionTested: currentSection // which section is currently under test |
742 | + property int curTest: 0 // test index of test in relation to section |
743 | + |
744 | + interactive: false |
745 | width: parent.width |
746 | - height: units.gu(12) * groupedList.count + units.gu(1) |
747 | - interactive: false |
748 | + height:units.gu(7) * (groupedList.count + groupedList.sectionCount - groupedList.closedCount) |
749 | + |
750 | model: testSuiteModel |
751 | + highlight: highlight |
752 | + highlightFollowsCurrentItem: true |
753 | |
754 | delegate: RunManagerTestDelegate {} |
755 | |
756 | section { |
757 | property: "group" |
758 | criteria: ViewSection.FullString |
759 | - delegate: TestSelectionSuiteDelegate{} |
760 | - } |
761 | - |
762 | - highlight: highlight |
763 | - highlightFollowsCurrentItem: true |
764 | - |
765 | - |
766 | - |
767 | - |
768 | - // when a group item is checked/unchecked the subitems are checked/unchecked |
769 | - function selectGroup(groupName, sel){ |
770 | - for (var i = testSuiteModel.count - 1; i >=0; i--){ |
771 | - var item = testSuiteModel.get(i); |
772 | - if (item.group === groupName) |
773 | - testSuiteModel.setProperty(i, "check", sel); |
774 | - } |
775 | - |
776 | - // this is to select the group items and to make sure data is updated |
777 | - var oldCurrent = currentIndex |
778 | - currentIndex = -1 |
779 | - for (var i = 0; i < groupedList.contentItem.children.length; i++) |
780 | - { |
781 | - var curItem = groupedList.contentItem.children[i]; |
782 | - //console.log(i,": ", curItem, "=", curItem.groupname); |
783 | - |
784 | - if (curItem.groupname === groupName) |
785 | - curItem.checked = sel; |
786 | - } |
787 | - currentIndex = oldCurrent |
788 | - } |
789 | - |
790 | - // determines if one or more subitems are checked |
791 | - // if at least one subitem is checked, the group is checked |
792 | - function setGroupCheck(groupName){ |
793 | - var oldCurrent = currentIndex |
794 | - currentIndex = -1 |
795 | - var setCheck = false |
796 | - var i = groupedList.contentItem.children.length - 1 |
797 | - |
798 | - for (;i >= 0 && setCheck === false; i--) |
799 | - { |
800 | - var curItem = groupedList.contentItem.children[i]; |
801 | - |
802 | - // determine if subitem is checked |
803 | - if (curItem.groupname === groupName && curItem.labelname !== groupName) |
804 | - if (curItem.checked === true) |
805 | - setCheck = true; |
806 | - |
807 | - } |
808 | - |
809 | - for (i = groupedList.contentItem.children.length - 1; i >= 0; i--) |
810 | - { |
811 | - curItem = groupedList.contentItem.children[i]; |
812 | - if (curItem.labelname === groupName) |
813 | - curItem.checked = setCheck |
814 | - } |
815 | - |
816 | - currentIndex = oldCurrent; |
817 | - } |
818 | - |
819 | - // If any subitems are selected, group should be selected. |
820 | - function isGroupSelected(section){ |
821 | - var isSel = false; |
822 | - for (var i = testSuiteModel.count - 1; i >=0 && isSel === false; i--) |
823 | - { |
824 | - var curItem = testSuiteModel.get(i); |
825 | - //console.log("Section: ", section, " ", i,": ", curItem, "=", curItem.group, " check:", curItem.check); |
826 | - |
827 | - if (curItem.group === section && curItem.check === "true"){ |
828 | - isSel = true; |
829 | + delegate: RunManagerSuiteDelegate{} |
830 | + } |
831 | + |
832 | + |
833 | + Component.onCompleted:{ |
834 | + sectionCount = getSectionCount() |
835 | + } |
836 | + |
837 | + onCurrentIndexChanged: { |
838 | + // This code is used for counting up tests in the section for 1 of 5 header |
839 | + // when incrementing through test. If index is being changed |
840 | + // by the user, don't mess up the group summary |
841 | + if (!userChangingIndex){ |
842 | + if (currentIndex != -1){ |
843 | + var item = testSuiteModel.get(currentIndex); |
844 | + if (item.group === groupedList.curSectionTested){ |
845 | + groupedList.curTest++; |
846 | + } |
847 | + else { |
848 | + groupedList.curSectionTested = item.group |
849 | + groupedList.curTest = 1 |
850 | + } |
851 | } |
852 | } |
853 | - return isSel; |
854 | } |
855 | |
856 | + |
857 | + |
858 | + |
859 | // Open/Close gruops |
860 | function openShutSubgroup(groupName, sel){ |
861 | var oldCurrent = currentIndex; |
862 | @@ -149,29 +116,63 @@ |
863 | for (var i = 0; i < groupedList.contentItem.children.length; i++) |
864 | { |
865 | var curItem = groupedList.contentItem.children[i]; |
866 | - //console.log(i,": ", curItem, "=", curItem.groupname); |
867 | - //console.log(i,": ", sel, "=", sel, " height = ", curItem.height); |
868 | |
869 | if (curItem.groupname === groupName && curItem.labelname !== groupName){ |
870 | curItem.height = sel? units.gu(7):units.gu(0); |
871 | curItem.visible = sel; |
872 | - groupedList.height += sel?units.gu(7):-units.gu(7) |
873 | + if (sel) |
874 | + closedCount--; |
875 | + else |
876 | + closedCount++; |
877 | } |
878 | } |
879 | currentIndex = oldCurrent; |
880 | } |
881 | |
882 | - // functions to do something across the whole list |
883 | - function getEstimatedTime(section){ |
884 | - return ""; |
885 | - } |
886 | + // counts the total test in the group |
887 | + function getTotalTests(groupName){ |
888 | + var testcnt = 0 |
889 | + for (var i = testSuiteModel.count - 1; i >= 0; i--){ |
890 | + var item = testSuiteModel.get(i); |
891 | + if (item.group === groupName) |
892 | + testcnt++; |
893 | + } |
894 | + return testcnt; |
895 | + } |
896 | + |
897 | + function groupStatus(section){ |
898 | + var grpstatus = 0 |
899 | + for (var i = testSuiteModel.count - 1; i >= 0; i--){ |
900 | + var item = testSuiteModel.get(i); |
901 | + if (item.group === section){ |
902 | + grpstatus = item.groupstatus; |
903 | + i = -1; |
904 | + } |
905 | + } |
906 | + return grpstatus |
907 | + } |
908 | + |
909 | + |
910 | + function getSectionCount(){ |
911 | + // if this is the first time called, count the number of sections |
912 | + var secCnt = sectionCount |
913 | + if (secCnt === 0){ |
914 | + var curItem = testSuiteModel.get(0); |
915 | + var curSec = curItem.group; |
916 | + secCnt = 1; |
917 | + for (var i = 1; i < testSuiteModel.count; i++){ |
918 | + curItem = testSuiteModel.get(i); |
919 | + if (curItem.group !== curSec){ |
920 | + curSec = curItem.group |
921 | + secCnt++; |
922 | + } |
923 | + } |
924 | + } |
925 | + return secCnt; |
926 | + } |
927 | + |
928 | } |
929 | - |
930 | - |
931 | - |
932 | - |
933 | } |
934 | - |
935 | Scrollbar { |
936 | flickableItem: listflick |
937 | align: Qt.AlignTrailing |
938 | |
939 | === added file 'plainbox-gui/gui-ihv/qml/outline/RunManagerSuiteDelegate.qml' |
940 | --- plainbox-gui/gui-ihv/qml/outline/RunManagerSuiteDelegate.qml 1970-01-01 00:00:00 +0000 |
941 | +++ plainbox-gui/gui-ihv/qml/outline/RunManagerSuiteDelegate.qml 2013-07-24 15:37:30 +0000 |
942 | @@ -0,0 +1,165 @@ |
943 | +/* |
944 | + * This file is part of plainbox-gui |
945 | + * |
946 | + * Copyright 2013 Canonical Ltd. |
947 | + * |
948 | + * Authors: |
949 | + * - Julia Segal <julia.segal@cellsoftware.co.uk> |
950 | + * |
951 | + * This program is free software; you can redistribute it and/or modify |
952 | + * it under the terms of the GNU General Public License as published by |
953 | + * the Free Software Foundation; version 3. |
954 | + * |
955 | + * This program is distributed in the hope that it will be useful, |
956 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
957 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
958 | + * GNU General Public License for more details. |
959 | + * |
960 | + * You should have received a copy of the GNU General Public License |
961 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
962 | + */ |
963 | + |
964 | + |
965 | +import QtQuick 2.0 |
966 | +import Ubuntu.Components 0.1 |
967 | +import Ubuntu.Components.ListItems 0.1 as ListItem |
968 | +import "." |
969 | + |
970 | +Component { |
971 | + id: groupDelegate |
972 | + |
973 | + Item { |
974 | + id: itemdelegate |
975 | + width: parent.width |
976 | + height: units.gu(7) |
977 | + |
978 | + // properties for opening/closing sections |
979 | + property string groupname: section |
980 | + property string labelname: section |
981 | + property bool open: true |
982 | + |
983 | + onOpenChanged: { |
984 | + open?progressIcon.source = "artwork/DownArrow.png":progressIcon.source = "artwork/RightArrow.png" |
985 | + } |
986 | + |
987 | + MouseArea { |
988 | + width: parent.width |
989 | + height: parent.height |
990 | + anchors.fill: parent |
991 | + |
992 | + onClicked: { |
993 | + groupedList.userChangingIndex = true; |
994 | + itemdelegate.open = !itemdelegate.open |
995 | + groupedList.openShutSubgroup(section, itemdelegate.open) |
996 | + //console.log("Open/Shut items below") |
997 | + groupedList.userChangingIndex = false; |
998 | + } |
999 | + } |
1000 | + |
1001 | + Item { |
1002 | + id: groupfiller |
1003 | + width: units.gu(2) |
1004 | + } |
1005 | + |
1006 | + Image { |
1007 | + id: progressIcon |
1008 | + source: "artwork/DownArrow.png" |
1009 | + width: units.gu(2) |
1010 | + height: units.gu(2) |
1011 | + anchors { |
1012 | + verticalCenter: parent.verticalCenter |
1013 | + left: groupfiller.left |
1014 | + |
1015 | + } |
1016 | + opacity: enabled ? 1.0 : 0.5 |
1017 | + } |
1018 | + |
1019 | + |
1020 | + Text { |
1021 | + id: grouptext |
1022 | + text: section |
1023 | + width: units.gu(20) |
1024 | + anchors{ |
1025 | + verticalCenter: parent.verticalCenter |
1026 | + left: progressIcon.right |
1027 | + leftMargin: units.gu(1) |
1028 | + } |
1029 | + font.bold: true |
1030 | + color: UbuntuColors.coolGrey |
1031 | + } |
1032 | + |
1033 | + Item { |
1034 | + id: progressfiller |
1035 | + width: units.gu(22) |
1036 | + anchors.left: grouptext.right |
1037 | + } |
1038 | + |
1039 | + Text { |
1040 | + id: progresstext |
1041 | + |
1042 | + property int totalTests: groupedList.getTotalTests(section) |
1043 | + property int testCnt: groupedList.curTest |
1044 | + property bool inTest: (section === groupedList.curSectionTested) |
1045 | + |
1046 | + |
1047 | + text: {inTest && !groupedList.testsComplete ? testCnt + " of " + totalTests: ""} |
1048 | + width: units.gu(10) |
1049 | + anchors.left: progressfiller.right |
1050 | + anchors.verticalCenter: parent.verticalCenter |
1051 | + horizontalAlignment: Text.AlignHCenter |
1052 | + color: "green" |
1053 | + font.bold : true |
1054 | + } |
1055 | + |
1056 | + Image { |
1057 | + id: statusicon |
1058 | + property int testStatus: { |
1059 | + if (!progresstext.inTest) |
1060 | + return groupedList.groupStatus(section); |
1061 | + return 0; |
1062 | + } |
1063 | + |
1064 | + |
1065 | + width: units.gu(3) |
1066 | + height: units.gu(3) |
1067 | + anchors{ |
1068 | + left: progressfiller.right |
1069 | + verticalCenter: parent.verticalCenter |
1070 | + leftMargin: units.gu(3) |
1071 | + } |
1072 | + source: "" |
1073 | + |
1074 | + onTestStatusChanged: { |
1075 | + // TODO these number are made up, change to what comes out of plainbox |
1076 | + switch (testStatus){ |
1077 | + case 0: |
1078 | + // not executed |
1079 | + source = "" |
1080 | + break; |
1081 | + case 1: |
1082 | + source = "./artwork/skipped.svg" |
1083 | + break; |
1084 | + case 2: // pass |
1085 | + source = "./artwork/passed.svg" |
1086 | + break; |
1087 | + case 3: // fail |
1088 | + source = "./artwork/failed.svg" |
1089 | + break; |
1090 | + case 4: // error |
1091 | + source = "./artwork/error.svg" |
1092 | + break; |
1093 | + case 5: // user info required |
1094 | + source = "./artwork/userreq.svg" |
1095 | + break; |
1096 | + default: |
1097 | + source = "" |
1098 | + break; |
1099 | + } |
1100 | + |
1101 | + } |
1102 | + |
1103 | + } |
1104 | + ListItem.ThinDivider {} |
1105 | + } |
1106 | +} |
1107 | + |
1108 | |
1109 | === modified file 'plainbox-gui/gui-ihv/qml/outline/RunManagerTestDelegate.qml' |
1110 | --- plainbox-gui/gui-ihv/qml/outline/RunManagerTestDelegate.qml 2013-07-17 14:23:54 +0000 |
1111 | +++ plainbox-gui/gui-ihv/qml/outline/RunManagerTestDelegate.qml 2013-07-24 15:37:30 +0000 |
1112 | @@ -23,6 +23,7 @@ |
1113 | import QtQuick 2.0 |
1114 | import Ubuntu.Components 0.1 |
1115 | import Ubuntu.Components.ListItems 0.1 as ListItem |
1116 | +import Ubuntu.Components.Popups 0.1 |
1117 | import "./artwork" |
1118 | |
1119 | Component { |
1120 | @@ -32,86 +33,246 @@ |
1121 | id: testitem |
1122 | width: parent.width |
1123 | height: units.gu(7) |
1124 | + |
1125 | property string groupname: group |
1126 | - property alias checked: itemcheckbox.checked |
1127 | property string labelname: testname |
1128 | |
1129 | |
1130 | MouseArea { |
1131 | - width: parent.width - itemcheckbox.width |
1132 | + width: parent.width; |
1133 | height: parent.height |
1134 | - anchors.right: parent.right |
1135 | + anchors.fill: parent |
1136 | |
1137 | onClicked: { |
1138 | - testdetails.testItem = testSuiteModel.get(index); |
1139 | + groupedList.userChangingIndex = true; |
1140 | groupedList.currentIndex = index; |
1141 | + groupedList.userChangingIndex = false; |
1142 | } |
1143 | } |
1144 | |
1145 | Item { |
1146 | + id: testitemview |
1147 | anchors.fill: parent |
1148 | |
1149 | Item { |
1150 | id: filler |
1151 | - width: itemcheckbox.width |
1152 | + width: units.gu(6) |
1153 | } |
1154 | |
1155 | - CheckBox { |
1156 | - id: itemcheckbox |
1157 | + Text { |
1158 | + id: namelabel |
1159 | + text: testname |
1160 | + width: units.gu(42) |
1161 | anchors.verticalCenter: parent.verticalCenter |
1162 | anchors.left: filler.right |
1163 | - anchors.leftMargin: units.gu(2) |
1164 | - checked: check |
1165 | - onClicked: { |
1166 | - testSuiteModel.setProperty(index, "check", checked); |
1167 | - groupedList.setGroupCheck(group) |
1168 | - } |
1169 | - } |
1170 | - |
1171 | - |
1172 | - Text { |
1173 | - id: nameLabel |
1174 | - text: testname |
1175 | - width: units.gu(40) |
1176 | - anchors.verticalCenter: parent.verticalCenter |
1177 | - anchors.left: itemcheckbox.right |
1178 | - anchors.leftMargin: units.gu(1) |
1179 | - } |
1180 | - |
1181 | - Item { |
1182 | - id: typefiller |
1183 | - width: units.gu(2) |
1184 | - anchors.left: nameLabel.right |
1185 | - } |
1186 | - |
1187 | - Text { |
1188 | - id: typelabel |
1189 | - text: ""//type |
1190 | - width: units.gu(10) |
1191 | - anchors.left: typefiller.right |
1192 | - anchors.verticalCenter: parent.verticalCenter |
1193 | - horizontalAlignment: Text.AlignHCenter |
1194 | - |
1195 | - } |
1196 | - |
1197 | - Item { |
1198 | - id: descfiller |
1199 | - width: units.gu(20) |
1200 | - anchors.left: typelabel.right |
1201 | - } |
1202 | - |
1203 | - Text { |
1204 | - id: descLabel |
1205 | - text: "" |
1206 | - width: units.gu(10) |
1207 | - anchors.left: descfiller.right |
1208 | - anchors.verticalCenter: parent.verticalCenter |
1209 | - horizontalAlignment: Text.AlignHCenter |
1210 | - |
1211 | - } |
1212 | - |
1213 | - |
1214 | + } |
1215 | + |
1216 | + Item { |
1217 | + id: statusFiller |
1218 | + width: units.gu(12) |
1219 | + anchors.left: namelabel.right |
1220 | + } |
1221 | + |
1222 | + Image { |
1223 | + id: statusicon |
1224 | + property int testStatus: runstatus// TODO this should be coming from the testitem status |
1225 | + |
1226 | + width: units.gu(3) |
1227 | + height: units.gu(3) |
1228 | + anchors.left: namelabel.right |
1229 | + anchors.verticalCenter: parent.verticalCenter |
1230 | + source: "" |
1231 | + |
1232 | + |
1233 | + |
1234 | + MouseArea { |
1235 | + anchors.fill: parent |
1236 | + |
1237 | + onClicked:{ |
1238 | + // set user so the iterating tests continue |
1239 | + // change currentindex to cause selection to move |
1240 | + groupedList.userChangingIndex = true; |
1241 | + groupedList.currentIndex = index |
1242 | + |
1243 | + switch (statusicon.testStatus){ |
1244 | + |
1245 | + case 2: // passed |
1246 | + PopupUtils.open(log_viewer, statusicon); |
1247 | + break; |
1248 | + case 3: // failed |
1249 | + case 4: // error |
1250 | + PopupUtils.open(log_viewer_with_trouble, statusicon); |
1251 | + break; |
1252 | + case 5: // user interaction req. |
1253 | + PopupUtils.open(manual_dialog, statusicon); |
1254 | + break; |
1255 | + case 1: |
1256 | + default://skipped |
1257 | + break; |
1258 | + } |
1259 | + |
1260 | + // TODO remove this --- this is just to try out the different icons behaviour |
1261 | + // THIS should NOT really happen!!!! |
1262 | + //if (statusicon.testStatus < 6) |
1263 | + // statusicon.testStatus++ |
1264 | + //else |
1265 | + // statusicon.testStatus = 1 |
1266 | + // TODO remove items above to the TODO!!! |
1267 | + |
1268 | + groupedList.userChangingIndex = false; } |
1269 | + } |
1270 | + |
1271 | + onTestStatusChanged: { |
1272 | + // TODO these number are made up, change to what comes out of plainbox |
1273 | + switch (testStatus){ |
1274 | + case 0: |
1275 | + // not executed |
1276 | + source = "" |
1277 | + break; |
1278 | + case 1: |
1279 | + source = "./artwork/skipped.svg" |
1280 | + break; |
1281 | + case 2: // pass |
1282 | + source = "./artwork/passed.svg" |
1283 | + break; |
1284 | + case 3: // fail |
1285 | + source = "./artwork/failed.svg" |
1286 | + break; |
1287 | + case 4: // error |
1288 | + source = "./artwork/error.svg" |
1289 | + break; |
1290 | + case 5: // user info required |
1291 | + source = "./artwork/userreq.svg" |
1292 | + break; |
1293 | + default: |
1294 | + source = "" |
1295 | + break; |
1296 | + } |
1297 | + |
1298 | + } |
1299 | + |
1300 | + } |
1301 | + |
1302 | + Item { |
1303 | + id: timefiller |
1304 | + width: units.gu(10) |
1305 | + anchors.left: statusicon.right |
1306 | + } |
1307 | + |
1308 | + Text { |
1309 | + id: timelabel |
1310 | + text: {!elapsedtime ? "" : utils.formatElapsedTime(elapsedtime)} |
1311 | + width: units.gu(10) |
1312 | + anchors.left: timefiller.right |
1313 | + anchors.verticalCenter: parent.verticalCenter |
1314 | + horizontalAlignment: Text.AlignRight |
1315 | + |
1316 | + } |
1317 | + |
1318 | + Item { |
1319 | + id: actionsfiller |
1320 | + width: units.gu(12) |
1321 | + anchors.left: timelabel.right |
1322 | + } |
1323 | + |
1324 | + Image { |
1325 | + id: rerunicon |
1326 | + property int rerunStatus: !runstatus?0:1 // TODO this should be coming if the test has run or not |
1327 | + // currently assumes 0 = not run yet, 1 == completed 2 == queued for rerun |
1328 | + |
1329 | + width: units.gu(3) |
1330 | + height: units.gu(3) |
1331 | + anchors.left: actionsfiller.right |
1332 | + anchors.verticalCenter: parent.verticalCenter |
1333 | + source: "" |
1334 | + |
1335 | + MouseArea { |
1336 | + anchors.fill: parent |
1337 | + onClicked:{ |
1338 | + groupedList.userChangingIndex = true; |
1339 | + groupedList.currentIndex = index |
1340 | + |
1341 | + if (rerunicon.rerunStatus == 1) |
1342 | + rerunicon.rerunStatus = 2; |
1343 | + |
1344 | + groupedList.userChangingIndex = false; |
1345 | + } |
1346 | + } |
1347 | + |
1348 | + onRerunStatusChanged:{ |
1349 | + if (rerunStatus == 0) // not run |
1350 | + source = "" |
1351 | + if (rerunStatus == 1) // completed |
1352 | + source = "./artwork/rerun.svg" |
1353 | + else if (rerunStatus == 2){ // queued for rerun |
1354 | + source = "./artwork/rerunq.svg" |
1355 | + // reset other icons to blank |
1356 | + statusicon.testStatus = 0 |
1357 | + detailsicon.detailsStatus = false |
1358 | + timelabel.text = "" |
1359 | + testSuiteModel.setProperty(index, "groupstatus", 0); // group |
1360 | + } |
1361 | + } |
1362 | + } |
1363 | + |
1364 | + Item { |
1365 | + id: detailsfiller |
1366 | + width: units.gu(13) |
1367 | + anchors.left: rerunicon.right |
1368 | + } |
1369 | + |
1370 | + Image { |
1371 | + id: detailsicon |
1372 | + property bool detailsStatus: {!runstatus?false:true} // TODO this should be coming if the test has run or not |
1373 | + // currently assumes 0 = not run yet, 1 == completed |
1374 | + |
1375 | + width: units.gu(3) |
1376 | + height: units.gu(3) |
1377 | + anchors.left: detailsfiller.right |
1378 | + anchors.verticalCenter: parent.verticalCenter |
1379 | + source: "" |
1380 | + |
1381 | + MouseArea { |
1382 | + anchors.fill: parent |
1383 | + |
1384 | + onClicked:{ |
1385 | + groupedList.userChangingIndex = true; |
1386 | + groupedList.currentIndex = index; |
1387 | + //cmdTool.exec("gedit", logfileName) |
1388 | + |
1389 | + // TODO change this back to the log_viewer, this opens the manual_dialog for testing only! |
1390 | + //PopupUtils.open(log_viewer, detailsicon); |
1391 | + if (detailsicon.detailsStatus == true) |
1392 | + PopupUtils.open(manual_dialog, detailsicon); |
1393 | + groupedList.userChangingIndex = false; |
1394 | + } |
1395 | + } |
1396 | + |
1397 | + onDetailsStatusChanged:{ |
1398 | + if (detailsStatus) // completed |
1399 | + source = "./artwork/details.svg" |
1400 | + else // not run yet |
1401 | + source = "" |
1402 | + } |
1403 | + |
1404 | + } |
1405 | } |
1406 | ListItem.ThinDivider {} |
1407 | + |
1408 | + Component { |
1409 | + id: log_viewer |
1410 | + LogViewer{ |
1411 | + showTroubleShootingLink: false |
1412 | + } |
1413 | + } |
1414 | + |
1415 | + Component { |
1416 | + id: log_viewer_with_trouble |
1417 | + LogViewer{ |
1418 | + showTroubleShootingLink: true |
1419 | + } |
1420 | + } |
1421 | } |
1422 | + |
1423 | + |
1424 | } |
1425 | |
1426 | === modified file 'plainbox-gui/gui-ihv/qml/outline/RunManagerView.qml' |
1427 | --- plainbox-gui/gui-ihv/qml/outline/RunManagerView.qml 2013-07-17 14:23:54 +0000 |
1428 | +++ plainbox-gui/gui-ihv/qml/outline/RunManagerView.qml 2013-07-24 15:37:30 +0000 |
1429 | @@ -22,6 +22,7 @@ |
1430 | |
1431 | import QtQuick 2.0 |
1432 | import Ubuntu.Components 0.1 |
1433 | +import Ubuntu.Components.Popups 0.1 |
1434 | import "." |
1435 | |
1436 | |
1437 | @@ -29,29 +30,186 @@ |
1438 | |
1439 | |
1440 | Page { |
1441 | + id: runmanagerview |
1442 | title: i18n.tr("Run Manager") |
1443 | |
1444 | + property bool reportIsSaved: false; |
1445 | + property bool testingComplete: false |
1446 | + |
1447 | + // TODO - this timer keeps track of time passing |
1448 | + // When using plainbox, get tests and advance using it |
1449 | + // currently itemindex is advanced at each timer interval |
1450 | + // and the runstatus is updated... which is FAKE. |
1451 | + |
1452 | + // Need to do: |
1453 | + // set testsuitelist.itemindex to the index of the current item in the ModelSectionCounter |
1454 | + // testsuitelist.curSectionTested = "" when done completed |
1455 | + // and item is the current item in the view. |
1456 | + Timer { |
1457 | + id: timer |
1458 | + property int testIndex: 0 // which test we are running from the list |
1459 | + property int totalTests: testSuiteModel.count |
1460 | + property var startTime: new Date() |
1461 | + property var testStartTime: new Date() |
1462 | + |
1463 | + |
1464 | + |
1465 | + interval:1000; |
1466 | + running: true; |
1467 | + repeat: true |
1468 | + |
1469 | + |
1470 | + onTriggered: { |
1471 | + if (testIndex == totalTests ){ |
1472 | + // All tests are done |
1473 | + runmanagerview.testingComplete = true; |
1474 | + // update ui |
1475 | + runbuttons.pauseButtonEnabled = false; |
1476 | + runbuttons.resultsButtonEnabled = true; |
1477 | + progress.title = "Completed (" + utils.formatElapsedTime((new Date() - timer.startTime)) + ")"; |
1478 | + progress.enabled = false; |
1479 | + running = false; |
1480 | + |
1481 | + // set flags in list (for group details) |
1482 | + testsuitelist.curSectionTested = ""; // set this as there is no more tested |
1483 | + } |
1484 | + else { |
1485 | + // TODO - this is hardcoding the properties.... PB shuold be doing this |
1486 | + testSuiteModel.setProperty(testIndex, "runstatus", 2); // this will come from Plainbox |
1487 | + // set the group status to the worst runstatus outcome ... failure? userreq?, check runstatus |
1488 | + testSuiteModel.setProperty(testIndex, "groupstatus", 2); |
1489 | + |
1490 | + testsuitelist.itemindex = testIndex; // tell list which item to select |
1491 | + |
1492 | + // set elapsed time |
1493 | + var stopTime = new Date(); |
1494 | + testSuiteModel.setProperty(testIndex, "elapsedtime", stopTime - timer.testStartTime); |
1495 | + |
1496 | + testStartTime = stopTime; |
1497 | + progress.value = testIndex + 1; |
1498 | + var testname = testSuiteModel.get(testIndex).testname; |
1499 | + progress.title = "Running " + (testIndex + 1) |
1500 | + + " of "+ testSuiteModel.count |
1501 | + + " (" + utils.formatElapsedTime(stopTime - timer.startTime) + ")" |
1502 | + + " " + testname; |
1503 | + } |
1504 | + testIndex++; |
1505 | + } |
1506 | + } |
1507 | + |
1508 | Item { |
1509 | id: filler |
1510 | height: units.gu(0) |
1511 | - } |
1512 | - |
1513 | + anchors.top: parent.top |
1514 | + } |
1515 | + |
1516 | + |
1517 | + |
1518 | + Item { |
1519 | + id: runmanagerlistheaders |
1520 | + width: parent.width - units.gu(4) |
1521 | + height: units.gu(3) |
1522 | + |
1523 | + anchors { |
1524 | + horizontalCenter: parent.horizontalCenter |
1525 | + top: filler.bottom |
1526 | + margins: units.gu(2) |
1527 | + } |
1528 | + |
1529 | + Item { |
1530 | + id: testcasenamefiller |
1531 | + width: units.gu(8) |
1532 | + anchors.left: parent.left |
1533 | + } |
1534 | + Text { |
1535 | + id: testcasenamelabel |
1536 | + width: units.gu(12) |
1537 | + text: i18n.tr("Test Case Name") |
1538 | + anchors.left: testcasenamefiller.right |
1539 | + } |
1540 | + Item { |
1541 | + id: statusfiller |
1542 | + width: units.gu(15) |
1543 | + anchors.left: testcasenamelabel.right |
1544 | + } |
1545 | + |
1546 | + Text { |
1547 | + id: statuslabel |
1548 | + text: i18n.tr("Status") |
1549 | + anchors.left: statusfiller.right |
1550 | + anchors.leftMargin: units.gu(12) |
1551 | + horizontalAlignment: Text.AlignHCenter |
1552 | + } |
1553 | + |
1554 | + Item { |
1555 | + id: eslapsedtimefiller |
1556 | + width: units.gu(2) |
1557 | + anchors.left: statuslabel.right |
1558 | + } |
1559 | + |
1560 | + Text { |
1561 | + id: eslapsedtimelabel |
1562 | + text: i18n.tr("Elapsed Time") |
1563 | + anchors.left: eslapsedtimefiller.right |
1564 | + anchors.leftMargin: units.gu(10) |
1565 | + horizontalAlignment: Text.AlignHCenter |
1566 | + } |
1567 | + |
1568 | + Item { |
1569 | + id: actionsfiller |
1570 | + width: units.gu(6) |
1571 | + anchors.left: eslapsedtimelabel.right |
1572 | + } |
1573 | + Text { |
1574 | + id: actionslabel |
1575 | + width: units.gu(10) |
1576 | + text: i18n.tr("Actions") |
1577 | + horizontalAlignment: Text.AlignHCenter |
1578 | + anchors.left: actionsfiller.right |
1579 | + } |
1580 | + |
1581 | + Item { |
1582 | + id: detailsfiller |
1583 | + width: units.gu(6) |
1584 | + anchors.left: actionslabel.right |
1585 | + } |
1586 | + Text { |
1587 | + id: detailslabel |
1588 | + width: units.gu(10) |
1589 | + text: i18n.tr("Details") |
1590 | + horizontalAlignment: Text.AlignHCenter |
1591 | + anchors.left: detailsfiller.right |
1592 | + } |
1593 | + } |
1594 | |
1595 | |
1596 | RunManagerListView { |
1597 | id: testsuitelist |
1598 | - |
1599 | width: parent.width - units.gu(4) |
1600 | - |
1601 | anchors{ |
1602 | horizontalCenter: parent.horizontalCenter |
1603 | - top: filler.bottom |
1604 | + top: runmanagerlistheaders.bottom |
1605 | + bottom: progress.top |
1606 | + bottomMargin: units.gu(2) |
1607 | + } |
1608 | + } |
1609 | + |
1610 | + Progress { |
1611 | + id: progress |
1612 | + height: units.gu(4)-1 |
1613 | + width: parent.width - units.gu(20) |
1614 | + |
1615 | + anchors { |
1616 | bottom: runbuttons.top |
1617 | - margins: units.gu(2) |
1618 | + bottomMargin: units.gu(4) |
1619 | + horizontalCenter: parent.horizontalCenter |
1620 | } |
1621 | + title: i18n.tr("Running") |
1622 | + maxValue: testSuiteModel.count //TODO put the number of tests here |
1623 | + value: 0 |
1624 | + |
1625 | } |
1626 | |
1627 | - |
1628 | RunManagerButtons { |
1629 | id: runbuttons |
1630 | |
1631 | @@ -61,13 +219,121 @@ |
1632 | margins: units.gu(2) |
1633 | } |
1634 | |
1635 | - onCancel:{ |
1636 | - console.log("On Cancel") |
1637 | + onExit:{ |
1638 | + if (!runmanagerview.testingComplete){ |
1639 | + PopupUtils.open(incomplete_warning_dialog, runbuttons); |
1640 | + pause(); |
1641 | + } |
1642 | + else if (!reportIsSaved) |
1643 | + PopupUtils.open(submission_warning_dialog, runbuttons); |
1644 | + else |
1645 | + Qt.quit(); |
1646 | } |
1647 | |
1648 | onPauseTest: { |
1649 | - console.log("Pause") |
1650 | - } |
1651 | - } |
1652 | - |
1653 | + pause(); |
1654 | + } |
1655 | + onResumeTest: { |
1656 | + resume(); |
1657 | + } |
1658 | + onResults: { |
1659 | + PopupUtils.open(submission_dialog, runbuttons); |
1660 | + } |
1661 | + |
1662 | + function resume(){ |
1663 | + // TODO call into plainbox to resume |
1664 | + timer.testStartTime = new Date() |
1665 | + timer.running = true; |
1666 | + timer.repeat = true; |
1667 | + console.log("Resume...") |
1668 | + } |
1669 | + |
1670 | + function pause(){ |
1671 | + // TODO call into plainbox to pause |
1672 | + timer.running = false; |
1673 | + timer.repeat = false; |
1674 | + progress.title = progress.title.replace("Running", "Paused ") |
1675 | + console.log("Pause...") |
1676 | + } |
1677 | + |
1678 | + Component { |
1679 | + id: submission_dialog |
1680 | + SubmissionDialog{ |
1681 | + } |
1682 | + } |
1683 | + |
1684 | + Component { |
1685 | + id: manual_dialog |
1686 | + ManualInteractionDialog{ |
1687 | + } |
1688 | + } |
1689 | + |
1690 | + Component { |
1691 | + id: submission_warning_dialog |
1692 | + WarningDialog{ |
1693 | + text: i18n.tr("You are about to exit this test run without saving your results report. Do you want to save the report?"); |
1694 | + |
1695 | + showContinue: false |
1696 | + showCheckbox: false |
1697 | + |
1698 | + onOk:PopupUtils.open(submission_dialog, runbuttons); |
1699 | + |
1700 | + onCancel: Qt.quit(); |
1701 | + } |
1702 | + } |
1703 | + |
1704 | + Component { |
1705 | + id: incomplete_warning_dialog |
1706 | + WarningDialog{ |
1707 | + text: i18n.tr("You are about to cancel an active test run. Your system might be left in an unstable state. Are you sure you want to exit?"); |
1708 | + showOK: true |
1709 | + showCancel: true |
1710 | + showContinue: false |
1711 | + showCheckbox: false |
1712 | + |
1713 | + onOk: { |
1714 | + Qt.quit(); |
1715 | + } |
1716 | + |
1717 | + onCancel: { |
1718 | + // resume |
1719 | + runbuttons.resume() |
1720 | + } |
1721 | + } |
1722 | + } |
1723 | + |
1724 | + |
1725 | + |
1726 | + Item { |
1727 | + id: utils |
1728 | + function formatElapsedTime(elap){ |
1729 | + // strip the miliseconds |
1730 | + elap = parseInt(elap / 1000); |
1731 | + |
1732 | + // get seconds (Original had 'round' which incorrectly counts 0:28, 0:29, 1:30 ... 1:59, 1:0) |
1733 | + var seconds = parseInt(Math.round(elap % 60)); |
1734 | + |
1735 | + // remove seconds from the date |
1736 | + elap = parseInt(Math.floor(elap / 60)); |
1737 | + |
1738 | + // get minutes |
1739 | + var minutes = parseInt(Math.round(elap % 60)); |
1740 | + |
1741 | + // remove minutes from the date |
1742 | + elap = parseInt(Math.floor(elap / 60)); |
1743 | + |
1744 | + |
1745 | + // get hours |
1746 | + var hours = parseInt(Math.round(elap % 24)); |
1747 | + |
1748 | + var timeStr = "" |
1749 | + |
1750 | + if (hours) |
1751 | + timeStr = hours + ":"; |
1752 | + timeStr = timeStr + ("0" + minutes).slice(-2) + ":" + ("0" + seconds).slice(-2); |
1753 | + |
1754 | + return timeStr; |
1755 | + } |
1756 | + } |
1757 | + } |
1758 | } |
1759 | |
1760 | === added file 'plainbox-gui/gui-ihv/qml/outline/SubmissionDialog.qml' |
1761 | --- plainbox-gui/gui-ihv/qml/outline/SubmissionDialog.qml 1970-01-01 00:00:00 +0000 |
1762 | +++ plainbox-gui/gui-ihv/qml/outline/SubmissionDialog.qml 2013-07-24 15:37:30 +0000 |
1763 | @@ -0,0 +1,90 @@ |
1764 | +/* |
1765 | + * This file is part of plainbox-gui |
1766 | + * |
1767 | + * Copyright 2013 Canonical Ltd. |
1768 | + * |
1769 | + * Authors: |
1770 | + * - Julia Segal <julia.segal@cellsoftware.co.uk> |
1771 | + * |
1772 | + * This program is free software; you can redistribute it and/or modify |
1773 | + * it under the terms of the GNU General Public License as published by |
1774 | + * the Free Software Foundation; version 3. |
1775 | + * |
1776 | + * This program is distributed in the hope that it will be useful, |
1777 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
1778 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
1779 | + * GNU General Public License for more details. |
1780 | + * |
1781 | + * You should have received a copy of the GNU General Public License |
1782 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1783 | + */ |
1784 | + |
1785 | + |
1786 | +import QtQuick 2.0 |
1787 | +import Ubuntu.Components 0.1 |
1788 | +import Ubuntu.Components.Popups 0.1 |
1789 | + |
1790 | + |
1791 | + |
1792 | +Dialog { |
1793 | + id: dialog |
1794 | + |
1795 | + title: i18n.tr("Report") |
1796 | + text: i18n.tr("The following report has be generated for submission to the Launchpad hardware database.") |
1797 | + |
1798 | + |
1799 | + Button { |
1800 | + id: savebutton |
1801 | + text: i18n.tr("Save Results") |
1802 | + color: UbuntuColors.orange |
1803 | + onClicked: { |
1804 | + runmanagerview.reportIsSaved = true; |
1805 | + } |
1806 | + } |
1807 | + Button { |
1808 | + id: viewbutton |
1809 | + text: i18n.tr("View Results") |
1810 | + color: UbuntuColors.lightAubergine |
1811 | + onClicked: { |
1812 | + onClicked:{ |
1813 | + gedit.launch("./qml/outline/artwork/test.txt") |
1814 | + } |
1815 | + } |
1816 | + } |
1817 | + Button { |
1818 | + id: donebutton |
1819 | + text: i18n.tr("Done") |
1820 | + color: UbuntuColors.warmGrey |
1821 | + onClicked: { |
1822 | + if (!runmanagerview.reportIsSaved) |
1823 | + PopupUtils.open(submission_warning_dialog, donebutton); |
1824 | + else |
1825 | + PopupUtils.close(dialog) |
1826 | + } |
1827 | + } |
1828 | + |
1829 | + Component { |
1830 | + id: submission_warning_dialog |
1831 | + WarningDialog{ |
1832 | + text: i18n.tr("You are about to exit this test run without saving your results report. Do you want to save the report?"); |
1833 | + |
1834 | + showContinue: false |
1835 | + showCheckbox: false |
1836 | + |
1837 | + //onOk:// do nothing and return to submission dialog |
1838 | + |
1839 | + onCancel: PopupUtils.close(dialog) |
1840 | + } |
1841 | + } |
1842 | + |
1843 | + |
1844 | + |
1845 | +} |
1846 | + |
1847 | + |
1848 | + |
1849 | + |
1850 | + |
1851 | + |
1852 | + |
1853 | + |
1854 | |
1855 | === modified file 'plainbox-gui/gui-ihv/qml/outline/SuiteSelectionDelegate.qml' |
1856 | --- plainbox-gui/gui-ihv/qml/outline/SuiteSelectionDelegate.qml 2013-07-17 11:02:13 +0000 |
1857 | +++ plainbox-gui/gui-ihv/qml/outline/SuiteSelectionDelegate.qml 2013-07-24 15:37:30 +0000 |
1858 | @@ -31,7 +31,6 @@ |
1859 | width: parent.width |
1860 | height: units.gu(7) |
1861 | |
1862 | - signal selectSuite(string suite, bool sel) |
1863 | |
1864 | Item { |
1865 | id: suitefiller |
1866 | @@ -43,15 +42,12 @@ |
1867 | anchors.verticalCenter: parent.verticalCenter |
1868 | anchors.left: suitefiller.right |
1869 | checked: true |
1870 | - onClicked: { |
1871 | - itemdelegate.selectSuite(section, checked); |
1872 | - } |
1873 | } |
1874 | |
1875 | |
1876 | Text { |
1877 | id: suitetext |
1878 | - text: section |
1879 | + text: testname |
1880 | anchors.verticalCenter: parent.verticalCenter |
1881 | anchors.left: suitecheckbox.right |
1882 | anchors.leftMargin: units.gu(1) |
1883 | |
1884 | === modified file 'plainbox-gui/gui-ihv/qml/outline/SuiteSelectionView.qml' |
1885 | --- plainbox-gui/gui-ihv/qml/outline/SuiteSelectionView.qml 2013-07-18 10:41:06 +0000 |
1886 | +++ plainbox-gui/gui-ihv/qml/outline/SuiteSelectionView.qml 2013-07-24 15:37:30 +0000 |
1887 | @@ -57,25 +57,9 @@ |
1888 | boundsBehavior : Flickable.StopAtBounds |
1889 | model: testSuiteModel |
1890 | |
1891 | - delegate: Item {} |
1892 | - |
1893 | - section { |
1894 | - property: "group" |
1895 | - criteria: ViewSection.FullString |
1896 | - delegate: SuiteSelectionDelegate{ |
1897 | - |
1898 | - onSelectSuite: { |
1899 | - // This is using the prototype list, |
1900 | - // In the model, select all tests in the suite |
1901 | - for (var i = testSuiteModel.count - 1; i >= 0; i--){ |
1902 | - var item = testSuiteModel.get(i); |
1903 | - if (item.group === suite) |
1904 | - testSuiteModel.setProperty(i, "check", sel); |
1905 | - } |
1906 | - } |
1907 | - } |
1908 | - } |
1909 | + delegate: SuiteSelectionDelegate{} |
1910 | } |
1911 | + |
1912 | Scrollbar { |
1913 | flickableItem: testselection |
1914 | align: Qt.AlignTrailing |
1915 | @@ -85,7 +69,7 @@ |
1916 | |
1917 | Button { |
1918 | id: okbutton |
1919 | - width: units.gu(20) |
1920 | + width: parent.width - units.gu(4) |
1921 | anchors { |
1922 | horizontalCenter:parent.horizontalCenter |
1923 | bottom: parent.bottom |
1924 | |
1925 | === modified file 'plainbox-gui/gui-ihv/qml/outline/TestSelectionDetails.qml' |
1926 | --- plainbox-gui/gui-ihv/qml/outline/TestSelectionDetails.qml 2013-07-18 09:18:31 +0000 |
1927 | +++ plainbox-gui/gui-ihv/qml/outline/TestSelectionDetails.qml 2013-07-24 15:37:30 +0000 |
1928 | @@ -26,7 +26,7 @@ |
1929 | id: testseldetails |
1930 | property var testItem; |
1931 | property bool showDetails; |
1932 | - property int openHeight: units.gu(18) |
1933 | + property int openHeight: units.gu(15) |
1934 | |
1935 | |
1936 | onTestItemChanged: { |
1937 | @@ -38,12 +38,10 @@ |
1938 | if (showDetails){ |
1939 | progressIcon.source = "artwork/DownArrow.png"; |
1940 | detailsFlick.height = openHeight |
1941 | - testsuitelist.height -= openHeight |
1942 | } |
1943 | else{ |
1944 | progressIcon.source = "artwork/RightArrow.png"; |
1945 | detailsFlick.height = 0 |
1946 | - testsuitelist.height += openHeight |
1947 | } |
1948 | } |
1949 | |
1950 | @@ -71,10 +69,8 @@ |
1951 | top: parent.top |
1952 | margins: units.gu(1) |
1953 | } |
1954 | - |
1955 | - opacity: enabled ? 1.0 : 0.5 |
1956 | - |
1957 | } |
1958 | + |
1959 | MouseArea { |
1960 | anchors.fill: detailsItem |
1961 | onClicked: {showDetails = !showDetails} |
1962 | @@ -88,7 +84,7 @@ |
1963 | id: detailsFlick |
1964 | anchors.left: detailsItem.right |
1965 | anchors.top: parent.top |
1966 | - anchors.leftMargin: units.gu(2) |
1967 | + anchors.leftMargin: units.gu(1) |
1968 | width: parent.width - detailsItem.width - units.gu(2) |
1969 | height: 0 // initialize to closed |
1970 | contentHeight: detailsblock.height |
1971 | |
1972 | === modified file 'plainbox-gui/gui-ihv/qml/outline/TestSelectionListView.qml' |
1973 | --- plainbox-gui/gui-ihv/qml/outline/TestSelectionListView.qml 2013-07-18 10:41:06 +0000 |
1974 | +++ plainbox-gui/gui-ihv/qml/outline/TestSelectionListView.qml 2013-07-24 15:37:30 +0000 |
1975 | @@ -23,6 +23,7 @@ |
1976 | import QtQuick 2.0 |
1977 | import Ubuntu.Components 0.1 |
1978 | import Ubuntu.Components.ListItems 0.1 as ListItem |
1979 | +import Ubuntu.Components.Popups 0.1 |
1980 | import "." |
1981 | |
1982 | |
1983 | @@ -47,6 +48,7 @@ |
1984 | contentHeight: groupedList.height |
1985 | boundsBehavior : Flickable.StopAtBounds |
1986 | |
1987 | + |
1988 | Component { |
1989 | id: highlight |
1990 | Rectangle { |
1991 | @@ -55,6 +57,7 @@ |
1992 | color: "lightsteelblue"; |
1993 | radius: 5 |
1994 | } |
1995 | + |
1996 | } |
1997 | |
1998 | |
1999 | @@ -62,10 +65,14 @@ |
2000 | ListView { |
2001 | id: groupedList |
2002 | width: parent.width |
2003 | - height: units.gu(12) * groupedList.count + units.gu(1) |
2004 | + height: units.gu(7) * (groupedList.count + groupedList.sectionCount - groupedList.closedCount) |
2005 | interactive: false |
2006 | model: testSuiteModel |
2007 | |
2008 | + property int sectionCount: 0// this will contain the number of sections |
2009 | + property int closedCount: 0 // this contains nuber of closed items |
2010 | + property bool displayWarnings: true |
2011 | + |
2012 | delegate: TestSelectionTestDelegate {} |
2013 | |
2014 | section { |
2015 | @@ -77,7 +84,16 @@ |
2016 | highlight: highlight |
2017 | highlightFollowsCurrentItem: true |
2018 | |
2019 | - Component.onCompleted: testdetails.testItem = testSuiteModel.get(currentItem); |
2020 | + Component.onCompleted: { |
2021 | + testdetails.testItem = testSuiteModel.get(currentItem); |
2022 | + sectionCount = getSectionCount() |
2023 | + setListSummary(); |
2024 | + } |
2025 | + |
2026 | + function showWarning(caller_button){ |
2027 | + if (displayWarnings === true) |
2028 | + PopupUtils.open(warning_dialog, caller_button); |
2029 | + } |
2030 | |
2031 | // functions to do something across the whole list |
2032 | |
2033 | @@ -86,7 +102,7 @@ |
2034 | for (var i = testSuiteModel.count - 1; i >=0; i--) |
2035 | testSuiteModel.setProperty(i, "check", sel); |
2036 | |
2037 | - // this is to select the group items and to make sure data is updated |
2038 | + // make sure the UI is updated |
2039 | var oldCurrent = currentIndex |
2040 | currentIndex = -1 |
2041 | for (var j = 0; j < groupedList.contentItem.children.length; j++){ |
2042 | @@ -94,29 +110,32 @@ |
2043 | curItem.checked = sel; |
2044 | } |
2045 | currentIndex = oldCurrent |
2046 | + |
2047 | + // reset the summary |
2048 | + setListSummary() |
2049 | } |
2050 | |
2051 | |
2052 | // when a group item is checked/unchecked the subitems are checked/unchecked |
2053 | function selectGroup(groupName, sel){ |
2054 | + // select in the model |
2055 | for (var i = testSuiteModel.count - 1; i >=0; i--){ |
2056 | - var item = testSuiteModel.get(i); |
2057 | + var item = testSuiteModel.get(i); |
2058 | if (item.group === groupName) |
2059 | testSuiteModel.setProperty(i, "check", sel); |
2060 | } |
2061 | |
2062 | - // this is to select the group items and to make sure data is updated |
2063 | + // make sure data is updated on the UI |
2064 | var oldCurrent = currentIndex |
2065 | currentIndex = -1 |
2066 | - for (var i = 0; i < groupedList.contentItem.children.length; i++) |
2067 | + for (i = 0; i < groupedList.contentItem.children.length; i++) |
2068 | { |
2069 | var curItem = groupedList.contentItem.children[i]; |
2070 | - //console.log(i,": ", curItem, "=", curItem.groupname); |
2071 | - |
2072 | if (curItem.groupname === groupName) |
2073 | curItem.checked = sel; |
2074 | } |
2075 | currentIndex = oldCurrent |
2076 | + setListSummary() |
2077 | } |
2078 | |
2079 | // determines if one or more subitems are checked |
2080 | @@ -141,41 +160,34 @@ |
2081 | for (i = groupedList.contentItem.children.length - 1; i >= 0; i--) |
2082 | { |
2083 | curItem = groupedList.contentItem.children[i]; |
2084 | - if (curItem.labelname === groupName) |
2085 | + if (curItem.labelname === groupName){ |
2086 | curItem.checked = setCheck |
2087 | + i = -1; |
2088 | + } |
2089 | |
2090 | } |
2091 | - |
2092 | currentIndex = oldCurrent; |
2093 | - } |
2094 | - |
2095 | - // If any subitems are selected, group should be selected. |
2096 | - function isGroupSelected(section){ |
2097 | - var isSel = false; |
2098 | - for (var i = testSuiteModel.count - 1; i >=0 && isSel === false; i--) |
2099 | - { |
2100 | - var curItem = testSuiteModel.get(i); |
2101 | - //console.log("Section: ", section, " ", i,": ", curItem, "=", curItem.group, " check:", curItem.check); |
2102 | - |
2103 | - if (curItem.group === section && curItem.check === "true"){ |
2104 | - isSel = true; |
2105 | - } |
2106 | - } |
2107 | - return isSel; |
2108 | + |
2109 | } |
2110 | |
2111 | // Add up all the selected tests in a group |
2112 | function getEstimatedTime(section){ |
2113 | + var start = new Date(); |
2114 | var estTimeStr = ""; |
2115 | var estTimeInt=0; |
2116 | + var foundGroup = false; // list is ordered in groups, after whole group found return |
2117 | |
2118 | - for (var i = testSuiteModel.count - 1; i >=0; i--) |
2119 | + for (var i = 0; i <testSuiteModel.count; i++) |
2120 | { |
2121 | var curItem = testSuiteModel.get(i); |
2122 | |
2123 | //console.log("curItem.group:", curItem.group, "check", curItem.check) |
2124 | - if (curItem.group === section && curItem.check === "true") |
2125 | + if (curItem.group === section && curItem.check === "true"){ |
2126 | + foundGroup = true; |
2127 | estTimeInt = parseInt(curItem.duration) + parseInt(estTimeInt); |
2128 | + } |
2129 | + if (foundGroup && curItem.group != section) |
2130 | + i = testSuiteModel.count; |
2131 | |
2132 | } |
2133 | if (estTimeInt == 0) |
2134 | @@ -188,11 +200,14 @@ |
2135 | if (durMinutes > 1) |
2136 | estTimeStr += 's'; |
2137 | } |
2138 | + var end = new Date(); |
2139 | + console.log("Time for estimated groups:", section, end.getMilliseconds() - start.getMilliseconds()); |
2140 | return estTimeStr; |
2141 | } |
2142 | |
2143 | // Open/Close gruops |
2144 | function openShutSubgroup(groupName, sel){ |
2145 | + |
2146 | var oldCurrent = currentIndex; |
2147 | currentIndex = -1 |
2148 | for (var i = 0; i < groupedList.contentItem.children.length; i++) |
2149 | @@ -204,21 +219,100 @@ |
2150 | if (curItem.groupname === groupName && curItem.labelname !== groupName){ |
2151 | curItem.height = sel? units.gu(7):units.gu(0); |
2152 | curItem.visible = sel; |
2153 | - groupedList.height += sel?units.gu(7):-units.gu(7) |
2154 | + if (sel) |
2155 | + closedCount--; |
2156 | + else closedCount++; |
2157 | } |
2158 | } |
2159 | currentIndex = oldCurrent; |
2160 | } |
2161 | |
2162 | + function updateListSummary(testItem, sel){ |
2163 | + if (sel){ |
2164 | + summary.totalTests += 1; |
2165 | + summary.totalTimeEst = parseInt(summary.totalTimeEst ) + parseInt(testItem.duration); |
2166 | + if (testItem.type === "Manual") |
2167 | + summary.totalManualTests += 1; |
2168 | + } |
2169 | + else { |
2170 | + summary.totalTests -= 1; |
2171 | + summary.totalTimeEst = parseInt(summary.totalTimeEst ) - testItem.duration; |
2172 | + if (testItem.type === "Manual") |
2173 | + summary.totalManualTests -= 1 |
2174 | + } |
2175 | + } |
2176 | + |
2177 | + |
2178 | + function setListSummary(){ |
2179 | + var start = new Date(); |
2180 | + // TODO count how many manuals testSuiteModel |
2181 | + var testCnt = 0; |
2182 | + var manualCnt = 0; |
2183 | + |
2184 | + var estTimeInt=0; |
2185 | + |
2186 | + for (var i = testSuiteModel.count - 1; i >=0; i--) |
2187 | + { |
2188 | + var curItem = testSuiteModel.get(i); |
2189 | + if ( curItem.check === "true"){ |
2190 | + testCnt++; |
2191 | + if (curItem.type === "Manual") |
2192 | + manualCnt++; |
2193 | + estTimeInt = parseInt(curItem.duration) + parseInt(estTimeInt); |
2194 | + } |
2195 | + } |
2196 | + summary.totalTests = testCnt; |
2197 | + summary.totalManualTests = manualCnt; |
2198 | + summary.totalTimeEst = estTimeInt; |
2199 | + var end = new Date(); |
2200 | + console.log("Time for summary:", end.getMilliseconds() - start.getMilliseconds()); |
2201 | + |
2202 | + } |
2203 | + |
2204 | + function getSectionCount(){ |
2205 | + var start = new Date(); |
2206 | + // if this is the first time called, find all sections |
2207 | + var secCnt = sectionCount |
2208 | + if (secCnt === 0){ |
2209 | + var curItem = testSuiteModel.get(0); |
2210 | + var curSec = curItem.group; |
2211 | + secCnt = 1; |
2212 | + for (var i = 1; i < testSuiteModel.count; i++){ |
2213 | + curItem = testSuiteModel.get(i); |
2214 | + if (curItem.group !== curSec){ |
2215 | + curSec = curItem.group |
2216 | + secCnt++; |
2217 | + } |
2218 | + } |
2219 | + } |
2220 | + var end = new Date(); |
2221 | + console.log("Time for Section Count:", end.getMilliseconds() - start.getMilliseconds()); |
2222 | + return secCnt; |
2223 | + } |
2224 | } |
2225 | - |
2226 | - |
2227 | } |
2228 | |
2229 | Scrollbar { |
2230 | flickableItem: listflick |
2231 | align: Qt.AlignTrailing |
2232 | } |
2233 | + |
2234 | + Component { |
2235 | + id: warning_dialog |
2236 | + WarningDialog{ |
2237 | + text: i18n.tr("Deselecting tests may reduce your ability to detect potential problems with the device driver."); |
2238 | + showOK: true |
2239 | + showCancel: false |
2240 | + showContinue: false |
2241 | + showCheckbox: true |
2242 | + |
2243 | + onOk: { |
2244 | + if (isChecked) |
2245 | + groupedList.displayWarnings = false; |
2246 | + console.log("ok clicked"); |
2247 | + } |
2248 | + } |
2249 | + } |
2250 | } |
2251 | |
2252 | |
2253 | |
2254 | === modified file 'plainbox-gui/gui-ihv/qml/outline/TestSelectionSuiteDelegate.qml' |
2255 | --- plainbox-gui/gui-ihv/qml/outline/TestSelectionSuiteDelegate.qml 2013-07-18 10:41:06 +0000 |
2256 | +++ plainbox-gui/gui-ihv/qml/outline/TestSelectionSuiteDelegate.qml 2013-07-24 15:37:30 +0000 |
2257 | @@ -40,11 +40,11 @@ |
2258 | property bool open: true |
2259 | |
2260 | onOpenChanged: { |
2261 | - open?progressIcon.source = "artwork/DownArrow.png":progressIcon.source = "artwork/RightArrow.png" |
2262 | + open?openshutIcon.source = "artwork/DownArrow.png":openshutIcon.source = "artwork/RightArrow.png" |
2263 | } |
2264 | |
2265 | MouseArea { |
2266 | - width: parent.width - groupcheckbox.width |
2267 | + width: parent.width// - groupcheckbox.width |
2268 | height: parent.height |
2269 | anchors.right: parent.right |
2270 | |
2271 | @@ -57,16 +57,33 @@ |
2272 | |
2273 | Item { |
2274 | id: groupfiller |
2275 | - width: units.gu(1) |
2276 | + width: units.gu(2) |
2277 | + } |
2278 | + |
2279 | + Image { |
2280 | + id: openshutIcon |
2281 | + source: "artwork/DownArrow.png" |
2282 | + width: units.gu(2) |
2283 | + height: units.gu(2) |
2284 | + anchors { |
2285 | + verticalCenter: parent.verticalCenter |
2286 | + left: groupfiller.left |
2287 | + } |
2288 | + |
2289 | + opacity: enabled ? 1.0 : 0.5 |
2290 | } |
2291 | |
2292 | CheckBox { |
2293 | id: groupcheckbox |
2294 | anchors.verticalCenter: parent.verticalCenter |
2295 | - anchors.left: groupfiller.right |
2296 | + anchors.left: openshutIcon.right |
2297 | anchors.leftMargin: units.gu(1) |
2298 | - checked: groupedList.isGroupSelected(section) |
2299 | - onClicked: groupedList.selectGroup(section, checked) |
2300 | + checked: true |
2301 | + onClicked: { |
2302 | + groupedList.selectGroup(section, checked) |
2303 | + if (!checked) |
2304 | + groupedList.showWarning(groupcheckbox); |
2305 | + } |
2306 | } |
2307 | |
2308 | |
2309 | @@ -81,14 +98,14 @@ |
2310 | |
2311 | Item { |
2312 | id: estfiller |
2313 | - width: units.gu(55) |
2314 | + width: units.gu(38) |
2315 | anchors.left: grouptext.right |
2316 | } |
2317 | |
2318 | Text { |
2319 | id: estimatedTimeText |
2320 | text: groupedList.getEstimatedTime(section) |
2321 | - width: units.gu(12) |
2322 | + width: units.gu(10) |
2323 | anchors.left: estfiller.right |
2324 | anchors.verticalCenter: parent.verticalCenter |
2325 | horizontalAlignment: Text.AlignHCenter |
2326 | @@ -96,17 +113,7 @@ |
2327 | font.bold : true |
2328 | } |
2329 | |
2330 | - Image { |
2331 | - id: progressIcon |
2332 | - source: "artwork/DownArrow.png" |
2333 | - anchors { |
2334 | - verticalCenter: parent.verticalCenter |
2335 | - right: parent.right |
2336 | - rightMargin: units.gu(1) |
2337 | - } |
2338 | |
2339 | - opacity: enabled ? 1.0 : 0.5 |
2340 | - } |
2341 | |
2342 | ListItem.ThinDivider {} |
2343 | } |
2344 | |
2345 | === modified file 'plainbox-gui/gui-ihv/qml/outline/TestSelectionSummary.qml' |
2346 | --- plainbox-gui/gui-ihv/qml/outline/TestSelectionSummary.qml 2013-07-18 10:41:06 +0000 |
2347 | +++ plainbox-gui/gui-ihv/qml/outline/TestSelectionSummary.qml 2013-07-24 15:37:30 +0000 |
2348 | @@ -26,7 +26,7 @@ |
2349 | Rectangle { |
2350 | id: summary |
2351 | |
2352 | - property string totalTimeStr: "26 minutes" |
2353 | + property int totalTimeEst: 0 |
2354 | property int totalTests: 6 |
2355 | property int totalManualTests: 2 |
2356 | |
2357 | @@ -39,13 +39,27 @@ |
2358 | |
2359 | Text { |
2360 | id: estimatedTimeText |
2361 | - text: i18n.tr("Total time: [~" + summary.totalTimeStr + "]") |
2362 | + text: i18n.tr("Total time: [~" + formatTotalTime(summary.totalTimeStr) + "]") |
2363 | color: "darkslateblue" |
2364 | anchors{ |
2365 | verticalCenter: parent.verticalCenter |
2366 | left: parent.left |
2367 | leftMargin: units.gu(1) |
2368 | } |
2369 | + function formatTotalTime(){ |
2370 | + var estTimeStr = "" |
2371 | + if (totalTimeEst == 0) |
2372 | + estTimeStr = i18n.tr("0"); |
2373 | + else if (totalTimeEst/60 < 1) |
2374 | + estTimeStr = i18n.tr("< 1 minute"); |
2375 | + else { |
2376 | + var durMinutes = Math.round(totalTimeEst/60); |
2377 | + estTimeStr = durMinutes.toString() + i18n.tr(" minute"); |
2378 | + if (durMinutes > 1) |
2379 | + estTimeStr += 's'; |
2380 | + } |
2381 | + return estTimeStr; |
2382 | + } |
2383 | } |
2384 | |
2385 | Text { |
2386 | |
2387 | === modified file 'plainbox-gui/gui-ihv/qml/outline/TestSelectionTestDelegate.qml' |
2388 | --- plainbox-gui/gui-ihv/qml/outline/TestSelectionTestDelegate.qml 2013-07-18 10:41:06 +0000 |
2389 | +++ plainbox-gui/gui-ihv/qml/outline/TestSelectionTestDelegate.qml 2013-07-24 15:37:30 +0000 |
2390 | @@ -53,7 +53,7 @@ |
2391 | |
2392 | Item { |
2393 | id: filler |
2394 | - width: itemcheckbox.width |
2395 | + width: itemcheckbox.width + units.gu(2) |
2396 | } |
2397 | |
2398 | CheckBox { |
2399 | @@ -64,7 +64,10 @@ |
2400 | checked: check |
2401 | onClicked: { |
2402 | testSuiteModel.setProperty(index, "check", checked); |
2403 | - groupedList.setGroupCheck(group) |
2404 | + groupedList.setGroupCheck(group); |
2405 | + groupedList.updateListSummary(testSuiteModel.get(index), checked); |
2406 | + if (!checked) |
2407 | + groupedList.showWarning(itemcheckbox); |
2408 | } |
2409 | } |
2410 | |
2411 | @@ -72,7 +75,8 @@ |
2412 | Text { |
2413 | id: nameLabel |
2414 | text: testname |
2415 | - width: units.gu(40) |
2416 | + width: units.gu(28) |
2417 | + elide: Text.ElideRight |
2418 | anchors.verticalCenter: parent.verticalCenter |
2419 | anchors.left: itemcheckbox.right |
2420 | anchors.leftMargin: units.gu(1) |
2421 | @@ -80,7 +84,7 @@ |
2422 | |
2423 | Item { |
2424 | id: typefiller |
2425 | - width: units.gu(2) |
2426 | + width: units.gu(4) |
2427 | anchors.left: nameLabel.right |
2428 | } |
2429 | |
2430 | @@ -95,16 +99,16 @@ |
2431 | } |
2432 | |
2433 | Item { |
2434 | - id: descfiller |
2435 | - width: units.gu(20) |
2436 | + id: esttimefiller |
2437 | + width: units.gu(11) |
2438 | anchors.left: typelabel.right |
2439 | } |
2440 | |
2441 | Text { |
2442 | - id: descLabel |
2443 | + id: esttimelabel |
2444 | text: convertToText(duration) |
2445 | width: units.gu(10) |
2446 | - anchors.left: descfiller.right |
2447 | + anchors.left: esttimefiller.right |
2448 | anchors.verticalCenter: parent.verticalCenter |
2449 | horizontalAlignment: Text.AlignHCenter |
2450 | |
2451 | @@ -119,7 +123,23 @@ |
2452 | timeStr += 's'; |
2453 | } |
2454 | return timeStr; |
2455 | - } |
2456 | + } } |
2457 | + |
2458 | + Item { |
2459 | + id: descfiller |
2460 | + width: units.gu(12) |
2461 | + anchors.left: esttimelabel.right |
2462 | + } |
2463 | + |
2464 | + Text { |
2465 | + id: descLabel |
2466 | + text: "blahsdfgkjl abdefghijklmnopqrstuvwxyz asdf the flkjsdf t lwjerlkjaf boo\n\n" // TODO put descrition property here |
2467 | + width: units.gu(14) |
2468 | + elide: Text.ElideRight |
2469 | + maximumLineCount: 1 |
2470 | + anchors.left: descfiller.right |
2471 | + anchors.verticalCenter: parent.verticalCenter |
2472 | + horizontalAlignment: Text.AlignHCenter |
2473 | } |
2474 | |
2475 | |
2476 | |
2477 | === modified file 'plainbox-gui/gui-ihv/qml/outline/TestSelectionView.qml' |
2478 | --- plainbox-gui/gui-ihv/qml/outline/TestSelectionView.qml 2013-07-17 15:49:03 +0000 |
2479 | +++ plainbox-gui/gui-ihv/qml/outline/TestSelectionView.qml 2013-07-24 15:37:30 +0000 |
2480 | @@ -65,7 +65,7 @@ |
2481 | } |
2482 | Item { |
2483 | id: typefiller |
2484 | - width: units.gu(28) |
2485 | + width: units.gu(20) |
2486 | anchors.left: complabel.right |
2487 | } |
2488 | |
2489 | @@ -78,9 +78,23 @@ |
2490 | } |
2491 | |
2492 | Item { |
2493 | + id: esttimefiller |
2494 | + width: units.gu(4) |
2495 | + anchors.left: typelabel.right |
2496 | + } |
2497 | + |
2498 | + Text { |
2499 | + id: esttimelabel |
2500 | + text: i18n.tr("Estimated Time") |
2501 | + anchors.left: esttimefiller.right |
2502 | + anchors.leftMargin: units.gu(10) |
2503 | + horizontalAlignment: Text.AlignHCenter |
2504 | + } |
2505 | + |
2506 | + Item { |
2507 | id: descfiller |
2508 | - width: units.gu(24) |
2509 | - anchors.left: typelabel.right |
2510 | + width: units.gu(12) |
2511 | + anchors.left: esttimelabel.right |
2512 | } |
2513 | Text { |
2514 | id: descriptionlabel |
2515 | @@ -93,8 +107,8 @@ |
2516 | |
2517 | TestSelectionListView { |
2518 | id: testsuitelist |
2519 | - height: parent.height - filler.height - testlistheaders.height - summary.height - testbuttons.height - units.gu(12) |
2520 | - |
2521 | + height: parent.height - filler.height - testlistheaders.height - testdetails.height - testbuttons.height - summary.height - units.gu(8) |
2522 | + //height: units.gu(60) |
2523 | width: testlistheaders.width |
2524 | |
2525 | anchors{ |
2526 | @@ -104,16 +118,15 @@ |
2527 | } |
2528 | |
2529 | |
2530 | - |
2531 | TestSelectionDetails { |
2532 | id: testdetails |
2533 | - height: units.gu(4) |
2534 | + height: openHeight |
2535 | width: testlistheaders.width |
2536 | |
2537 | anchors{ |
2538 | horizontalCenter: parent.horizontalCenter |
2539 | top: testsuitelist.bottom |
2540 | - topMargin: units.gu(1) |
2541 | + topMargin: units.gu(2) |
2542 | } |
2543 | } |
2544 | |
2545 | @@ -122,8 +135,8 @@ |
2546 | id: testbuttons |
2547 | anchors{ |
2548 | horizontalCenter: parent.horizontalCenter |
2549 | - bottom: parent.bottom |
2550 | - bottomMargin: units.gu(4) |
2551 | + bottom: summary.top |
2552 | + bottomMargin: units.gu(2) |
2553 | } |
2554 | |
2555 | onSelectAll:{ |
2556 | @@ -135,7 +148,6 @@ |
2557 | } |
2558 | |
2559 | onStartTesting: { |
2560 | - // CHANGE THIS TO NEXT PAGE TO BRING UP |
2561 | mainView.state = "RUNMANAGER" |
2562 | console.log("Start Testing") |
2563 | } |
2564 | @@ -143,6 +155,7 @@ |
2565 | |
2566 | TestSelectionSummary{ |
2567 | id: summary |
2568 | + height: units.gu(2) |
2569 | width: parent.width |
2570 | anchors { |
2571 | horizontalCenter: parent.horizontalCenter |
2572 | |
2573 | === modified file 'plainbox-gui/gui-ihv/qml/outline/WelcomeView.qml' |
2574 | --- plainbox-gui/gui-ihv/qml/outline/WelcomeView.qml 2013-07-17 14:23:54 +0000 |
2575 | +++ plainbox-gui/gui-ihv/qml/outline/WelcomeView.qml 2013-07-24 15:37:30 +0000 |
2576 | @@ -27,15 +27,92 @@ |
2577 | Page { |
2578 | title: i18n.tr("Welcome!") |
2579 | |
2580 | - |
2581 | - |
2582 | - Button { |
2583 | - anchors.left: parent.left |
2584 | - anchors.right: parent.right |
2585 | - anchors.bottom: parent.bottom |
2586 | - anchors.margins: units.gu(2) |
2587 | - text: i18n.tr("OK") |
2588 | - color: UbuntuColors.lightAubergine |
2589 | - onClicked: {mainView.state = "SUITESELECTION"} |
2590 | - } |
2591 | + Image { |
2592 | + id: logo |
2593 | + anchors { |
2594 | + left: parent.left |
2595 | + right: parent.right |
2596 | + margins: units.gu(2) |
2597 | + } |
2598 | + source:"artwork/checkbox-qt-head.png" |
2599 | + } |
2600 | + |
2601 | + |
2602 | + |
2603 | + Rectangle{ |
2604 | + color: "white"//Theme.palette.normal.background |
2605 | + anchors { |
2606 | + left: parent.left |
2607 | + right: parent.right |
2608 | + top: logo.bottom |
2609 | + bottom: continueButton.top |
2610 | + margins: units.gu(2) |
2611 | + } |
2612 | + |
2613 | + TextEdit{ |
2614 | + id: welcometext |
2615 | + |
2616 | + anchors { |
2617 | + fill: parent |
2618 | + margins: units.gu(2) |
2619 | + } |
2620 | + |
2621 | + // TODO load text from Plainbox |
2622 | + text: "<p>Welcome to the Canonical Hardware Driver Testing.</p> |
2623 | + <p></p> |
2624 | + <p>This program contains automated and manual tests to help you discover issues that will arise when running your device drivers on Ubuntu.</p> |
2625 | + <p></p> |
2626 | + <p>This application will step the user through these tests in a predetermined order and automatically collect both system information as well as test results. It will also prompt the user for input when manual testing is required.</p> |
2627 | + <p></p> |
2628 | + <p>The run time for the tests is determined by which tests you decide to execute. The user will have the opportunity to customize the test run to accommodate the driver and the amount of time available for testing.</p> |
2629 | + <p></p> |
2630 | + <p>If you have any questions during or after completing your test run, please do not hesitate to contact your Canonical account representative.</p> |
2631 | + <p></p> |
2632 | + <p>To begin, simply click the Continue button below and follow the onscreen instructions.</p> |
2633 | + <p></p>" |
2634 | + |
2635 | + // links below are to test if the urls are working properly. |
2636 | + //<a href=\"mailto:me@here.there\">me@here.there</a> |
2637 | + //<p></p> |
2638 | + //<a href=\"http://www.canonical.com\">Canonical</a>" |
2639 | + |
2640 | + |
2641 | + |
2642 | + height: units.gu(60) |
2643 | + width: units.gu(30) |
2644 | + cursorVisible : true |
2645 | + readOnly: true |
2646 | + selectByMouse : true |
2647 | + textFormat: TextEdit.AutoText |
2648 | + wrapMode: TextEdit.Wrap |
2649 | + color: "black"//Theme.palette.normal.foregroundText |
2650 | + selectedTextColor: Theme.palette.selected.foregroundText |
2651 | + selectionColor: Theme.palette.selected.foreground |
2652 | + font.pixelSize: FontUtils.sizeToPixels("medium") |
2653 | + |
2654 | + onLinkActivated: { |
2655 | + console.log("onLinkActivated") |
2656 | + cmdTool.exec("xdg-open", link) |
2657 | + } |
2658 | + |
2659 | + |
2660 | + } |
2661 | + } |
2662 | + |
2663 | + |
2664 | + |
2665 | + |
2666 | +Button { |
2667 | + id: continueButton |
2668 | + anchors{ |
2669 | + left: parent.left |
2670 | + right: parent.right |
2671 | + bottom: parent.bottom |
2672 | + margins: units.gu(2) |
2673 | + } |
2674 | + // TODO load text from plainbox |
2675 | + text: i18n.tr("Continue") |
2676 | + color: UbuntuColors.lightAubergine |
2677 | + onClicked: {mainView.state = "SUITESELECTION"} |
2678 | +} |
2679 | } |
2680 | |
2681 | === added file 'plainbox-gui/gui-ihv/qml/outline/artwork/details.svg' |
2682 | --- plainbox-gui/gui-ihv/qml/outline/artwork/details.svg 1970-01-01 00:00:00 +0000 |
2683 | +++ plainbox-gui/gui-ihv/qml/outline/artwork/details.svg 2013-07-24 15:37:30 +0000 |
2684 | @@ -0,0 +1,68 @@ |
2685 | +<?xml version="1.0" encoding="UTF-8" standalone="no"?> |
2686 | +<!-- Created with Inkscape (http://www.inkscape.org/) --> |
2687 | +<svg id="svg2" xmlns="http://www.w3.org/2000/svg" height="24" width="24" version="1.0" xmlns:xlink="http://www.w3.org/1999/xlink"> |
2688 | + <defs id="defs4"> |
2689 | + <linearGradient id="linearGradient3779" y2="-.43754" gradientUnits="userSpaceOnUse" x2="20.484" gradientTransform="matrix(0 -.43118 .42426 0 8.8859 25.258)" y1="12.82" x1="20.484"> |
2690 | + <stop id="stop2189" style="stop-color:#fff;stop-opacity:.64341" offset="0"/> |
2691 | + <stop id="stop2191" style="stop-color:#fff;stop-opacity:0" offset="1"/> |
2692 | + </linearGradient> |
2693 | + <linearGradient id="linearGradient3773" y2="15.5" gradientUnits="userSpaceOnUse" x2="-.073089" gradientTransform="matrix(.36202 0 0 .36792 8.2405 6.3535)" y1="15.5" x1="23.997"> |
2694 | + <stop id="stop3700" style="stop-color:#ce7ecc" offset="0"/> |
2695 | + <stop id="stop3702" style="stop-color:#c056bc;stop-opacity:.81569" offset=".76279"/> |
2696 | + <stop id="stop3704" style="stop-color:#f8c9f7;stop-opacity:0" offset="1"/> |
2697 | + </linearGradient> |
2698 | + <linearGradient id="linearGradient3775" y2="36" gradientUnits="userSpaceOnUse" x2="-.097514" gradientTransform="matrix(.36202 0 0 .36792 8.2405 6.3535)" y1="36" x1="36.5"> |
2699 | + <stop id="stop3916" style="stop-color:#c02cbb" offset="0"/> |
2700 | + <stop id="stop3918" style="stop-color:#b329ae;stop-opacity:.49804" offset=".79722"/> |
2701 | + <stop id="stop3920" style="stop-color:#982394;stop-opacity:0" offset="1"/> |
2702 | + </linearGradient> |
2703 | + <linearGradient id="linearGradient4543" y2="5.4565" gradientUnits="userSpaceOnUse" x2="36.358" gradientTransform="matrix(.54163 0 0 .52030 -.94021 -.30186)" y1="8.059" x1="32.892"> |
2704 | + <stop id="stop8591" style="stop-color:#fefefe" offset="0"/> |
2705 | + <stop id="stop8593" style="stop-color:#cbcbcb" offset="1"/> |
2706 | + </linearGradient> |
2707 | + <linearGradient id="linearGradient4565" y2="5.8215" gradientUnits="userSpaceOnUse" x2="15.18" y1="2.1849" x1="17.289"> |
2708 | + <stop id="stop4561" style="stop-color:#cacaca" offset="0"/> |
2709 | + <stop id="stop4563" style="stop-color:#949492" offset="1"/> |
2710 | + </linearGradient> |
2711 | + <linearGradient id="linearGradient4545" y2="47.013" gradientUnits="userSpaceOnUse" x2="25.132" gradientTransform="matrix(.54288 0 0 .48891 -1.0291 -.23377)" y1="6.7287" x1="25.132"> |
2712 | + <stop id="stop3602" style="stop-color:#f4f4f4" offset="0"/> |
2713 | + <stop id="stop3604" style="stop-color:#dbdbdb" offset="1"/> |
2714 | + </linearGradient> |
2715 | + <linearGradient id="linearGradient4547" y2="2.9062" gradientUnits="userSpaceOnUse" x2="-51.786" gradientTransform="matrix(.43837 0 0 .45754 31.224 -.77865)" y1="50.786" x1="-51.786"> |
2716 | + <stop id="stop3933" style="stop-color:#8d8f8a" offset="0"/> |
2717 | + <stop id="stop3935" style="stop-color:#cbcbcb" offset="1"/> |
2718 | + </linearGradient> |
2719 | + <linearGradient id="linearGradient4532" y2="609.51" gradientUnits="userSpaceOnUse" x2="302.86" gradientTransform="matrix(2.7744 0 0 1.9697 -1892.2 -872.89)" y1="366.65" x1="302.86"> |
2720 | + <stop id="stop5050" style="stop-opacity:0" offset="0"/> |
2721 | + <stop id="stop5056" offset=".5"/> |
2722 | + <stop id="stop5052" style="stop-opacity:0" offset="1"/> |
2723 | + </linearGradient> |
2724 | + <radialGradient id="radialGradient4534" xlink:href="#linearGradient5060" gradientUnits="userSpaceOnUse" cy="486.65" cx="605.71" gradientTransform="matrix(2.7744 0 0 1.9697 -1891.6 -872.89)" r="117.14"/> |
2725 | + <linearGradient id="linearGradient5060"> |
2726 | + <stop id="stop5062" offset="0"/> |
2727 | + <stop id="stop5064" style="stop-opacity:0" offset="1"/> |
2728 | + </linearGradient> |
2729 | + <radialGradient id="radialGradient4536" xlink:href="#linearGradient5060" gradientUnits="userSpaceOnUse" cy="486.65" cx="605.71" gradientTransform="matrix(-2.7744 0 0 1.9697 112.76 -872.89)" r="117.14"/> |
2730 | + </defs> |
2731 | + <g id="layer1"> |
2732 | + <g id="g3490" style="stroke-width:1.8826" transform="matrix(.54593 0 0 .51685 -.96573 -.57818)"> |
2733 | + <g id="g5022" style="stroke-width:104.96" transform="matrix(.021652 0 0 .014857 43.008 42.685)"> |
2734 | + <rect id="rect4173" style="opacity:.40206;fill:url(#linearGradient4532)" height="478.36" width="1339.6" y="-150.7" x="-1559.3"/> |
2735 | + <path id="path5058" style="opacity:.40206;fill:url(#radialGradient4534)" d="m-219.62-150.68v478.33c142.87 0.90045 345.4-107.17 345.4-239.2s-159.44-239.13-345.4-239.13z"/> |
2736 | + <path id="path5018" style="opacity:.40206;fill:url(#radialGradient4536)" d="m-1559.3-150.68v478.33c-142.87 0.90045-345.4-107.17-345.4-239.2s159.44-239.13 345.4-239.13z"/> |
2737 | + </g> |
2738 | + </g> |
2739 | + <path id="rect2594" style="stroke-linejoin:round;stroke:url(#linearGradient4547);stroke-width:.99914;fill:url(#linearGradient4545)" d="m2.4996 0.49957h13.062c0.7638 0.23731 4.8672 2.9408 5.9387 4.8128v17.188h-19.001v-22.001z"/> |
2740 | + <path id="path12038" style="stroke-linejoin:round;fill-rule:evenodd;stroke:url(#linearGradient4565);fill:url(#linearGradient4543)" d="m15.5 0.5v5h6c0-0.83659-4.8205-4.9857-6-5z"/> |
2741 | + <rect id="rect2870" style="fill:#babdb6" rx=".25" ry=".5" height="1" width="4" y="3" x="10"/> |
2742 | + <rect id="rect2874" style="opacity:.8;fill:#babdb6" rx="0.25" ry=".5" height="1" width="14" y="7" x="5"/> |
2743 | + <rect id="rect2892" style="opacity:.8;fill:#babdb6" rx="0.25" ry=".5" height="1" width="14" y="9" x="5"/> |
2744 | + <rect id="rect2894" style="opacity:.8;fill:#babdb6" rx="0.25" ry=".5" height="1" width="14" y="13" x="5"/> |
2745 | + <rect id="rect1984" style="opacity:.8;fill:#babdb6" rx="0.25" ry=".5" height="1" width="14" y="11" x="5"/> |
2746 | + <rect id="rect1988" style="fill:#babdb6" rx=".25" ry=".5" height="1" width="4" y="5" x="10"/> |
2747 | + <rect id="rect2887" style="opacity:.8;fill:#babdb6" height="3.4" width="4.2667" y="2.4857" x="5"/> |
2748 | + <path id="rect1990" style="opacity:.3;fill:#cf8e72" d="m4 2v4.6394h10.656v-4.6394h-10.656z"/> |
2749 | + <path id="path1432" style="stroke-linejoin:round;stroke:url(#linearGradient3775);stroke-linecap:round;display:block;fill:url(#linearGradient3773)" d="m17.5 7.4997 6 5.3693-6 5.631v-3.0006h-9.9996v-4.999h9.9996v-3.0006z"/> |
2750 | + <path id="path3777" style="opacity:.4;stroke:url(#linearGradient3779);display:block;fill:none" d="m18.531 8.7812v1.2188a0.51754 0.51754 0 0 1 -0.531 0.531h-8.5625l0.03125 2.9375h8.5312a0.51754 0.51754 0 0 1 0.531 0.532v1.1562l3.469-3.281-3.469-3.0938z" transform="translate(0 .99987)"/> |
2751 | + </g> |
2752 | +</svg> |
2753 | |
2754 | === added file 'plainbox-gui/gui-ihv/qml/outline/artwork/error.svg' |
2755 | --- plainbox-gui/gui-ihv/qml/outline/artwork/error.svg 1970-01-01 00:00:00 +0000 |
2756 | +++ plainbox-gui/gui-ihv/qml/outline/artwork/error.svg 2013-07-24 15:37:30 +0000 |
2757 | @@ -0,0 +1,37 @@ |
2758 | +<?xml version="1.0" encoding="UTF-8" standalone="no"?> |
2759 | +<!-- Created with Inkscape (http://www.inkscape.org/) --> |
2760 | +<svg id="svg2" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="24" width="24" version="1.0" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/"> |
2761 | + <metadata id="metadata29"> |
2762 | + <rdf:RDF> |
2763 | + <cc:Work rdf:about=""> |
2764 | + <dc:format>image/svg+xml</dc:format> |
2765 | + <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> |
2766 | + </cc:Work> |
2767 | + </rdf:RDF> |
2768 | + </metadata> |
2769 | + <defs id="defs4"> |
2770 | + <linearGradient id="linearGradient2407" y2="5.4676" gradientUnits="userSpaceOnUse" x2="63.397" gradientTransform="matrix(1.0863 0 0 1.0862 -55.567 15.814)" y1="-12.489" x1="63.397"> |
2771 | + <stop id="stop4875" style="stop-color:#fff" offset="0"/> |
2772 | + <stop id="stop4877" style="stop-color:#fff;stop-opacity:0" offset="1"/> |
2773 | + </linearGradient> |
2774 | + <radialGradient id="radialGradient2410" gradientUnits="userSpaceOnUse" cy="3.99" cx="23.896" gradientTransform="matrix(0 1.2316 -1.6257 0 18.487 -28.721)" r="20.397"> |
2775 | + <stop id="stop3244" style="stop-color:#f8b17e" offset="0"/> |
2776 | + <stop id="stop3246" style="stop-color:#e35d4f" offset=".26238"/> |
2777 | + <stop id="stop3248" style="stop-color:#c6262e" offset=".66094"/> |
2778 | + <stop id="stop3250" style="stop-color:#690b54" offset="1"/> |
2779 | + </radialGradient> |
2780 | + <linearGradient id="linearGradient2412" y2="3.0816" gradientUnits="userSpaceOnUse" x2="18.379" gradientTransform="matrix(.51604 0 0 .51604 -.38499 -.38499)" y1="44.98" x1="18.379"> |
2781 | + <stop id="stop2492" style="stop-color:#791235" offset="0"/> |
2782 | + <stop id="stop2494" style="stop-color:#dd3b27" offset="1"/> |
2783 | + </linearGradient> |
2784 | + <radialGradient id="radialGradient2415" gradientUnits="userSpaceOnUse" cy="4.625" cx="62.625" gradientTransform="matrix(1.1294 0 0 .28235 -58.729 19.694)" r="10.625"> |
2785 | + <stop id="stop8840" offset="0"/> |
2786 | + <stop id="stop8842" style="stop-opacity:0" offset="1"/> |
2787 | + </radialGradient> |
2788 | + </defs> |
2789 | + <path id="path8836" style="opacity:.3;fill-rule:evenodd;fill:url(#radialGradient2415)" d="m24 21c0 1.657-5.373 3-12 3-6.6274 0-12-1.343-12-3-2.5e-7 -1.657 5.3726-3 12-3 6.627 0 12 1.343 12 3z"/> |
2790 | + <path id="path2555" style="stroke-linejoin:round;stroke:url(#linearGradient2412);stroke-linecap:round;stroke-width:1.0037;fill:url(#radialGradient2410)" d="m12 1.5018c-5.7926 0-10.498 4.7056-10.498 10.498-0.0002 5.793 4.7054 10.498 10.498 10.498 5.793 0 10.498-4.705 10.498-10.498 0-5.7926-4.705-10.498-10.498-10.498z"/> |
2791 | + <path id="path2463" style="opacity:.4;stroke:url(#linearGradient2407);fill:none" d="m21.5 12c0 5.247-4.254 9.5-9.5 9.5-5.2466 0-9.5-4.254-9.5-9.5 0-5.247 4.2534-9.5 9.5-9.5 5.246 0 9.5 4.253 9.5 9.5z"/> |
2792 | + <path id="path3295" style="opacity:.2" d="m10.599 5.2867c0.332 2.8104 0.712 5.6013 0.995 8.4233h0.902c0.234-2.71 0.612-5.4029 0.885-8.1091 0.139-0.6407-0.241-1.4015-1.021-1.5572-0.772-0.1955-1.634 0.2886-1.736 0.9801-0.017 0.0868-0.025 0.1749-0.025 0.2629zm-0.098 11.426c-0.035 0.837 1.027 1.493 1.933 1.227 0.879-0.194 1.341-1.151 0.891-1.831-0.403-0.703-1.584-0.935-2.264-0.396-0.343 0.244-0.571 0.609-0.56 1z"/> |
2793 | + <path id="text2315" style="fill:#fff" d="m10.599 6.2867c0.332 2.8104 0.712 5.6013 0.995 8.4233h0.902c0.234-2.71 0.612-5.4029 0.885-8.1091 0.139-0.6407-0.241-1.4015-1.021-1.5572-0.772-0.1955-1.634 0.2886-1.736 0.9801-0.017 0.0868-0.025 0.1749-0.025 0.2629zm-0.098 11.426c-0.035 0.837 1.027 1.493 1.933 1.227 0.879-0.194 1.341-1.151 0.891-1.831-0.403-0.703-1.584-0.935-2.264-0.396-0.343 0.244-0.571 0.609-0.56 1z"/> |
2794 | +</svg> |
2795 | |
2796 | === added file 'plainbox-gui/gui-ihv/qml/outline/artwork/failed.svg' |
2797 | --- plainbox-gui/gui-ihv/qml/outline/artwork/failed.svg 1970-01-01 00:00:00 +0000 |
2798 | +++ plainbox-gui/gui-ihv/qml/outline/artwork/failed.svg 2013-07-24 15:37:30 +0000 |
2799 | @@ -0,0 +1,33 @@ |
2800 | +<?xml version="1.0" encoding="UTF-8" standalone="no"?> |
2801 | +<!-- Created with Inkscape (http://www.inkscape.org/) --> |
2802 | +<svg id="svg2" xmlns="http://www.w3.org/2000/svg" height="24" width="24" version="1.0" xmlns:xlink="http://www.w3.org/1999/xlink"> |
2803 | + <defs id="defs4"> |
2804 | + <linearGradient id="linearGradient2411" y2="5.4676" gradientUnits="userSpaceOnUse" x2="63.397" gradientTransform="matrix(1.0863 0 0 1.0862 -55.567 15.814)" y1="-12.489" x1="63.397"> |
2805 | + <stop id="stop4875" style="stop-color:#fff" offset="0"/> |
2806 | + <stop id="stop4877" style="stop-color:#fff;stop-opacity:0" offset="1"/> |
2807 | + </linearGradient> |
2808 | + <linearGradient id="linearGradient2416" y2="3.0816" gradientUnits="userSpaceOnUse" x2="18.379" gradientTransform="matrix(.51604 0 0 .51604 -.38499 -.38499)" y1="44.98" x1="18.379"> |
2809 | + <stop id="stop2492" style="stop-color:#791235" offset="0"/> |
2810 | + <stop id="stop2494" style="stop-color:#dd3b27" offset="1"/> |
2811 | + </linearGradient> |
2812 | + <radialGradient id="radialGradient2414" gradientUnits="userSpaceOnUse" cy="3.99" cx="23.896" gradientTransform="matrix(0 1.2316 -1.6257 0 18.487 -28.721)" r="20.397"> |
2813 | + <stop id="stop3244" style="stop-color:#f8b17e" offset="0"/> |
2814 | + <stop id="stop3246" style="stop-color:#e35d4f" offset=".26238"/> |
2815 | + <stop id="stop3248" style="stop-color:#c6262e" offset=".66094"/> |
2816 | + <stop id="stop3250" style="stop-color:#690b54" offset="1"/> |
2817 | + </radialGradient> |
2818 | + <radialGradient id="radialGradient2419" gradientUnits="userSpaceOnUse" cy="4.625" cx="62.625" gradientTransform="matrix(1.1294 0 0 .28235 -58.729 19.694)" r="10.625"> |
2819 | + <stop id="stop8840" offset="0"/> |
2820 | + <stop id="stop8842" style="stop-opacity:0" offset="1"/> |
2821 | + </radialGradient> |
2822 | + </defs> |
2823 | + <g id="layer1"> |
2824 | + <g id="g2580"> |
2825 | + <path id="path8836" style="opacity:.3;fill-rule:evenodd;fill:url(#radialGradient2419)" d="m24 21c0 1.657-5.373 3-12 3-6.6274 0-12-1.343-12-3-2.5e-7 -1.657 5.3726-3 12-3 6.627 0 12 1.343 12 3z"/> |
2826 | + <path id="path2555" style="stroke-linejoin:round;stroke:url(#linearGradient2416);stroke-linecap:round;stroke-width:1.0037;fill:url(#radialGradient2414)" d="m12 1.5018c-5.7926 0-10.498 4.7056-10.498 10.498-0.0002 5.793 4.7054 10.498 10.498 10.498 5.793 0 10.498-4.705 10.498-10.498 0-5.7926-4.705-10.498-10.498-10.498z"/> |
2827 | + <path id="path2463" style="opacity:.4;stroke:url(#linearGradient2411);fill:none" d="m21.5 12c0 5.247-4.254 9.5-9.5 9.5-5.2466 0-9.5-4.254-9.5-9.5 0-5.247 4.2534-9.5 9.5-9.5 5.246 0 9.5 4.253 9.5 9.5z"/> |
2828 | + </g> |
2829 | + <path id="path3243" style="opacity:.2;fill-rule:evenodd" d="m8.5781 6l-1.5781 1.5781 3.256 3.2389c0.1 0.102 0.1 0.264 0 0.366l-3.256 3.239 1.5781 1.578 3.2389-3.239c0.102-0.1 0.264-0.1 0.366 0l3.239 3.239 1.578-1.578-3.239-3.239c-0.1-0.102-0.1-0.264 0-0.366l3.239-3.2389-1.578-1.5781-3.239 3.2392c-0.102 0.1-0.264 0.1-0.366 0l-3.2389-3.2392z"/> |
2830 | + <path id="path3256" style="fill:#fff;fill-rule:evenodd" d="m8.5781 7l-1.5781 1.5781 3.256 3.2389c0.1 0.102 0.1 0.264 0 0.366l-3.256 3.239 1.5781 1.578 3.2389-3.239c0.102-0.1 0.264-0.1 0.366 0l3.239 3.239 1.578-1.578-3.239-3.239c-0.1-0.102-0.1-0.264 0-0.366l3.239-3.2389-1.578-1.5781-3.239 3.239c-0.102 0.1-0.264 0.1-0.366 0l-3.2389-3.239z"/> |
2831 | + </g> |
2832 | +</svg> |
2833 | |
2834 | === added file 'plainbox-gui/gui-ihv/qml/outline/artwork/passed.svg' |
2835 | --- plainbox-gui/gui-ihv/qml/outline/artwork/passed.svg 1970-01-01 00:00:00 +0000 |
2836 | +++ plainbox-gui/gui-ihv/qml/outline/artwork/passed.svg 2013-07-24 15:37:30 +0000 |
2837 | @@ -0,0 +1,23 @@ |
2838 | +<?xml version="1.0" encoding="UTF-8" standalone="no"?> |
2839 | +<!-- Created with Inkscape (http://www.inkscape.org/) --> |
2840 | +<svg id="svg2841" xmlns="http://www.w3.org/2000/svg" height="24" width="24" version="1.0" xmlns:xlink="http://www.w3.org/1999/xlink"> |
2841 | + <defs id="defs2843"> |
2842 | + <radialGradient id="radialGradient4811" gradientUnits="userSpaceOnUse" cy="19.031" cx="11.25" gradientTransform="matrix(1 0 0 .28295 0 13.646)" r="8.0625"> |
2843 | + <stop id="stop2487" style="stop-color:#0d0d0d" offset="0"/> |
2844 | + <stop id="stop2489" style="stop-color:#0d0d0d;stop-opacity:0" offset="1"/> |
2845 | + </radialGradient> |
2846 | + <linearGradient id="linearGradient4813" y2="31.138" gradientUnits="userSpaceOnUse" x2="-93.088" gradientTransform="matrix(.51128 -.12167 .12241 .50821 56.783 -3.2077)" y1="2.0691" x1="-86.129"> |
2847 | + <stop id="stop2266" style="stop-color:#d7e866" offset="0"/> |
2848 | + <stop id="stop2268" style="stop-color:#8cab2a" offset="1"/> |
2849 | + </linearGradient> |
2850 | + <linearGradient id="linearGradient3597" y2="47.76" gradientUnits="userSpaceOnUse" x2="20.494" gradientTransform="matrix(.50259 0 0 .49957 1.194 .76653)" y1="6.0098" x1="20.494"> |
2851 | + <stop id="stop3402" style="stop-color:#fff" offset="0"/> |
2852 | + <stop id="stop3404" style="stop-color:#fff;stop-opacity:0" offset="1"/> |
2853 | + </linearGradient> |
2854 | + </defs> |
2855 | + <g id="layer1"> |
2856 | + <path id="path4346" style="opacity:.16292;fill:url(#radialGradient4811)" d="m19.312 19.031a8.0625 2.2812 0 1 1 -16.125 0 8.0625 2.2812 0 1 1 16.125 0z" transform="matrix(1.4884 0 0 1.4466 -4.7442 -6.8302)"/> |
2857 | + <path id="path1542" style="stroke-linejoin:round;stroke:#699536;stroke-linecap:round;stroke-width:1.0028;fill:url(#linearGradient4813)" d="m18.175 3.5051c-0.28132-0.028378-0.561 0.10858-0.70554 0.3715l-6.158 11.2-3.9593-3.13c-0.3527-0.191-0.7927-0.068-0.9855 0.283l-1.7756 2.2659c-0.19272 0.35056-0.063069 0.78783 0.28962 0.97939 0 0 7.2294 5.935 7.2384 5.9394 0.08266 0.0449 0.1691 0.06749 0.25697 0.07853 0.28704 0.03605 0.58079-0.098 0.72834-0.3664l8.305-15.105c0.19272-0.35057 0.06307-0.78783-0.28962-0.97939l-2.664-1.4539c-0.08817-0.047891-0.186-0.074167-0.27977-0.083626z"/> |
2858 | + <path id="path1544" style="opacity:.4;stroke:url(#linearGradient3597);stroke-linecap:round;stroke-width:1.0028;fill:none" d="m18.214 4.6151-6.593 11.979-4.578-3.601c-0.5 0.6-0.8489 1.092-1.4161 1.8 0 0 6.6812 5.4506 6.7617 5.5344 0.25102-0.4046 7.8917-14.328 8.0035-14.541-0.16743-0.11534-2.1201-1.1252-2.1778-1.1715z"/> |
2859 | + </g> |
2860 | +</svg> |
2861 | |
2862 | === added file 'plainbox-gui/gui-ihv/qml/outline/artwork/rerun.svg' |
2863 | --- plainbox-gui/gui-ihv/qml/outline/artwork/rerun.svg 1970-01-01 00:00:00 +0000 |
2864 | +++ plainbox-gui/gui-ihv/qml/outline/artwork/rerun.svg 2013-07-24 15:37:30 +0000 |
2865 | @@ -0,0 +1,201 @@ |
2866 | +<?xml version="1.0" encoding="UTF-8" standalone="no"?> |
2867 | +<!-- Created with Inkscape (http://www.inkscape.org/) --> |
2868 | + |
2869 | +<svg |
2870 | + xmlns:svg="http://www.w3.org/2000/svg" |
2871 | + xmlns="http://www.w3.org/2000/svg" |
2872 | + xmlns:xlink="http://www.w3.org/1999/xlink" |
2873 | + version="1.0" |
2874 | + width="24" |
2875 | + height="24" |
2876 | + id="svg2449"> |
2877 | + <defs |
2878 | + id="defs2451"> |
2879 | + <linearGradient |
2880 | + id="linearGradient3827"> |
2881 | + <stop |
2882 | + id="stop3835" |
2883 | + style="stop-color:#6396cd;stop-opacity:1" |
2884 | + offset="0" /> |
2885 | + <stop |
2886 | + id="stop3831" |
2887 | + style="stop-color:#7ba7d5;stop-opacity:0" |
2888 | + offset="1" /> |
2889 | + </linearGradient> |
2890 | + <linearGradient |
2891 | + id="linearGradient3803"> |
2892 | + <stop |
2893 | + id="stop3805" |
2894 | + style="stop-color:#538ec6;stop-opacity:1" |
2895 | + offset="0" /> |
2896 | + <stop |
2897 | + id="stop3807" |
2898 | + style="stop-color:#538ec6;stop-opacity:0" |
2899 | + offset="1" /> |
2900 | + </linearGradient> |
2901 | + <linearGradient |
2902 | + id="linearGradient3533"> |
2903 | + <stop |
2904 | + id="stop3535" |
2905 | + style="stop-color:#93b9dd;stop-opacity:1" |
2906 | + offset="0" /> |
2907 | + <stop |
2908 | + id="stop3545" |
2909 | + style="stop-color:#6396cd;stop-opacity:1" |
2910 | + offset="1" /> |
2911 | + </linearGradient> |
2912 | + <linearGradient |
2913 | + x1="108.97875" |
2914 | + y1="185.10141" |
2915 | + x2="111.16116" |
2916 | + y2="193.85185" |
2917 | + id="linearGradient5584" |
2918 | + xlink:href="#linearGradient5578" |
2919 | + gradientUnits="userSpaceOnUse" |
2920 | + gradientTransform="matrix(1.0000213,0,0,0.99999945,-102.00336,-174.00344)" /> |
2921 | + <linearGradient |
2922 | + id="linearGradient5578"> |
2923 | + <stop |
2924 | + id="stop5580" |
2925 | + style="stop-color:#ffffff;stop-opacity:1" |
2926 | + offset="0" /> |
2927 | + <stop |
2928 | + id="stop5582" |
2929 | + style="stop-color:#ffffff;stop-opacity:0" |
2930 | + offset="1" /> |
2931 | + </linearGradient> |
2932 | + <linearGradient |
2933 | + x1="113.66741" |
2934 | + y1="189.97391" |
2935 | + x2="112.51836" |
2936 | + y2="187" |
2937 | + id="linearGradient5554" |
2938 | + xlink:href="#linearGradient5548" |
2939 | + gradientUnits="userSpaceOnUse" |
2940 | + gradientTransform="matrix(1.0000213,0,0,0.99999945,-102.00336,-174.00344)" /> |
2941 | + <linearGradient |
2942 | + id="linearGradient5548"> |
2943 | + <stop |
2944 | + id="stop5550" |
2945 | + style="stop-color:#ffffff;stop-opacity:1" |
2946 | + offset="0" /> |
2947 | + <stop |
2948 | + id="stop5552" |
2949 | + style="stop-color:#ffffff;stop-opacity:0" |
2950 | + offset="1" /> |
2951 | + </linearGradient> |
2952 | + <linearGradient |
2953 | + x1="116.4927" |
2954 | + y1="198.96754" |
2955 | + x2="110.65003" |
2956 | + y2="177.1624" |
2957 | + id="linearGradient5374" |
2958 | + xlink:href="#linearGradient4022-6-5-6" |
2959 | + gradientUnits="userSpaceOnUse" /> |
2960 | + <linearGradient |
2961 | + id="linearGradient4022-6-5-6"> |
2962 | + <stop |
2963 | + id="stop4024-1-5-3" |
2964 | + style="stop-color:#555753;stop-opacity:1" |
2965 | + offset="0" /> |
2966 | + <stop |
2967 | + id="stop4026-2-3-1" |
2968 | + style="stop-color:#babdb6;stop-opacity:1" |
2969 | + offset="1" /> |
2970 | + </linearGradient> |
2971 | + <linearGradient |
2972 | + x1="114.86526" |
2973 | + y1="192.53191" |
2974 | + x2="119.53192" |
2975 | + y2="187.86525" |
2976 | + id="linearGradient3809" |
2977 | + xlink:href="#linearGradient3803" |
2978 | + gradientUnits="userSpaceOnUse" /> |
2979 | + <linearGradient |
2980 | + x1="109.00001" |
2981 | + y1="177" |
2982 | + x2="113.00001" |
2983 | + y2="196" |
2984 | + id="linearGradient3817" |
2985 | + xlink:href="#linearGradient3533" |
2986 | + gradientUnits="userSpaceOnUse" /> |
2987 | + <linearGradient |
2988 | + x1="113.93192" |
2989 | + y1="192.53191" |
2990 | + x2="120.46526" |
2991 | + y2="189.73192" |
2992 | + id="linearGradient3833" |
2993 | + xlink:href="#linearGradient3827" |
2994 | + gradientUnits="userSpaceOnUse" /> |
2995 | + <linearGradient |
2996 | + x1="109.00001" |
2997 | + y1="177" |
2998 | + x2="112.11741" |
2999 | + y2="188.79379" |
3000 | + id="linearGradient3883" |
3001 | + xlink:href="#linearGradient3533" |
3002 | + gradientUnits="userSpaceOnUse" /> |
3003 | + <linearGradient |
3004 | + x1="109.00001" |
3005 | + y1="177" |
3006 | + x2="113.00001" |
3007 | + y2="196" |
3008 | + id="linearGradient3885" |
3009 | + xlink:href="#linearGradient3533" |
3010 | + gradientUnits="userSpaceOnUse" /> |
3011 | + </defs> |
3012 | + <g |
3013 | + transform="matrix(1.0000213,0,0,0.99999945,-102.00336,-174.00344)" |
3014 | + id="g5364" |
3015 | + style="stroke:url(#linearGradient5374);display:inline;enable-background:new"> |
3016 | + <path |
3017 | + d="m 112.44761,192.97817 a 7,7 0 1 1 5.7872,-11.6254" |
3018 | + transform="matrix(1.0714286,0,0,1.0714286,-7.0699096,-12.284198)" |
3019 | + id="path3159-8" |
3020 | + style="color:#000000;fill:none;stroke:#538ec6;stroke-width:4.66666651;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> |
3021 | + <path |
3022 | + d="m 121,179 0,0 0,5 -5,0" |
3023 | + id="path3957-8" |
3024 | + style="fill:none;stroke:#538ec6;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline;enable-background:new" /> |
3025 | + <path |
3026 | + d="m 119.19847,189.25253 a 7,7 0 0 1 -9.49902,2.92051" |
3027 | + transform="matrix(1.0714286,0,0,1.0714286,-7.0699096,-12.284198)" |
3028 | + id="path3801" |
3029 | + style="color:#000000;fill:none;stroke:url(#linearGradient3809);stroke-width:4.66666651;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> |
3030 | + </g> |
3031 | + <g |
3032 | + transform="matrix(1.0000213,0,0,0.99999945,-102.00336,-174.00344)" |
3033 | + id="g5315" |
3034 | + style="fill-opacity:1;stroke:url(#linearGradient3817);stroke-opacity:1;display:inline;enable-background:new"> |
3035 | + <path |
3036 | + d="m 112.17502,192.95122 a 7,7 0 1 1 6.05979,-11.59845" |
3037 | + transform="matrix(1.0714286,0,0,1.0714286,-7.0699104,-12.284198)" |
3038 | + id="path3159" |
3039 | + style="color:#000000;fill:none;stroke:url(#linearGradient3883);stroke-width:2.79999995;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> |
3040 | + <path |
3041 | + d="m 121,179 0,0 0,5 -5,0" |
3042 | + id="path3957-7-3" |
3043 | + style="fill:none;stroke:url(#linearGradient3885);stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline;enable-background:new" /> |
3044 | + <path |
3045 | + d="m 119.19728,189.25479 a 7,7 0 0 1 -10.70311,2.10222" |
3046 | + transform="matrix(1.0714286,0,0,1.0714286,-7.0699104,-12.284198)" |
3047 | + id="path3823" |
3048 | + style="color:#000000;fill:none;stroke:url(#linearGradient3833);stroke-width:2.79999995;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> |
3049 | + </g> |
3050 | + <path |
3051 | + d="m 17.749194,15.99646 c -0.340462,0.647683 -0.77176,1.215015 -1.270184,1.6936 -1.954963,1.877154 -4.939072,2.390862 -7.4800025,1.056399 C 5.8102596,17.07177 4.5742332,13.185142 6.2489489,9.9964646 7.9236746,6.807786 11.810397,5.5717867 14.999136,7.2464657 c 0.614773,0.3228699 1.174775,0.7544396 1.656285,1.2499994 m 0.843768,-1.968749 C 17.023499,6.1235364 16.493078,5.7574466 15.936656,5.4652167 14.900234,4.920897 13.818101,4.6186772 12.717837,4.5277172 c -0.206294,-0.0171 -0.415259,-0.0323 -0.625013,-0.0312 -0.209756,10e-4 -0.42031,0.0182 -0.625014,0.0312 C 8.601989,4.7096971 5.8965114,6.3384162 4.467661,9.0589648 2.2903547,13.204562 3.9157901,18.350447 8.0614875,20.527708 c 3.2323445,1.697581 7.0727905,1.083478 9.6400985,-1.234453 0.725431,-0.654965 1.348937,-1.446112 1.828896,-2.359295" |
3052 | + id="path3159-1" |
3053 | + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.15;color:#000000;fill:none;stroke:#ffffff;stroke-width:1.00001037;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Abandoned Bitplane;-inkscape-font-specification:Abandoned Bitplane" /> |
3054 | + <path |
3055 | + d="m 16.499168,9.4964645 -2.500054,0 c -0.264165,-0.004 -0.50713,0.2358199 -0.50713,0.5000001 M 18.905469,4.4964672 C 18.676264,4.5401672 18.4951,4.7631671 18.49921,4.996467 l 0,2.4999986" |
3056 | + id="path3957-7-5-1" |
3057 | + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.3;color:#000000;fill:none;stroke:#ffffff;stroke-width:1.00001037;stroke-linecap:round;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new;font-family:Abandoned Bitplane;-inkscape-font-specification:Abandoned Bitplane" /> |
3058 | + <path |
3059 | + d="m 15.079062,18.712861 c -1.826712,0.990175 -4.08939,1.079069 -6.0800545,0.0336 C 5.8102596,17.071772 4.5742332,13.185144 6.2489489,9.9964666 7.9236746,6.807788 11.810397,5.5717887 14.999136,7.2464677 c 0.614773,0.3228699 1.174775,0.7544396 1.656285,1.2499994" |
3060 | + id="path3159-1-7" |
3061 | + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.23999999;color:#000000;fill:none;stroke:url(#linearGradient5554);stroke-width:1.00001037;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Abandoned Bitplane;-inkscape-font-specification:Abandoned Bitplane" /> |
3062 | + <path |
3063 | + d="M 17.499189,6.5277161 C 17.023499,6.1235364 16.493078,5.7574466 15.936656,5.4652167 14.900234,4.920897 13.818101,4.6186772 12.717837,4.5277172 c -0.206294,-0.0171 -0.415259,-0.0323 -0.625013,-0.0312 -0.209756,10e-4 -0.42031,0.0182 -0.625014,0.0312 C 8.601989,4.7096971 5.8965114,6.3384162 4.467661,9.0589648 2.2903547,13.204562 3.9157892,18.350449 8.0614875,20.527708" |
3064 | + id="path3159-1-9" |
3065 | + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.23999999;color:#000000;fill:none;stroke:url(#linearGradient5584);stroke-width:1.00001037;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Abandoned Bitplane;-inkscape-font-specification:Abandoned Bitplane" /> |
3066 | +</svg> |
3067 | |
3068 | === added file 'plainbox-gui/gui-ihv/qml/outline/artwork/rerunq.svg' |
3069 | --- plainbox-gui/gui-ihv/qml/outline/artwork/rerunq.svg 1970-01-01 00:00:00 +0000 |
3070 | +++ plainbox-gui/gui-ihv/qml/outline/artwork/rerunq.svg 2013-07-24 15:37:30 +0000 |
3071 | @@ -0,0 +1,158 @@ |
3072 | +<?xml version="1.0" encoding="UTF-8" standalone="no"?> |
3073 | +<!-- Created with Inkscape (http://www.inkscape.org/) --> |
3074 | + |
3075 | +<svg |
3076 | + xmlns:svg="http://www.w3.org/2000/svg" |
3077 | + xmlns="http://www.w3.org/2000/svg" |
3078 | + xmlns:xlink="http://www.w3.org/1999/xlink" |
3079 | + version="1.0" |
3080 | + width="16" |
3081 | + height="16" |
3082 | + id="svg3151"> |
3083 | + <defs |
3084 | + id="defs3153"> |
3085 | + <linearGradient |
3086 | + id="linearGradient3931"> |
3087 | + <stop |
3088 | + id="stop3933" |
3089 | + style="stop-color:#8d8f8a;stop-opacity:1" |
3090 | + offset="0" /> |
3091 | + <stop |
3092 | + id="stop3935" |
3093 | + style="stop-color:#c1c1c1;stop-opacity:1" |
3094 | + offset="1" /> |
3095 | + </linearGradient> |
3096 | + <linearGradient |
3097 | + x1="-51.786404" |
3098 | + y1="50.786446" |
3099 | + x2="-51.786404" |
3100 | + y2="2.9062471" |
3101 | + id="linearGradient4547" |
3102 | + xlink:href="#linearGradient3931" |
3103 | + gradientUnits="userSpaceOnUse" |
3104 | + gradientTransform="matrix(0.3000362,0,0,0.3120485,22.157141,-0.3741276)" /> |
3105 | + <linearGradient |
3106 | + id="linearGradient3600"> |
3107 | + <stop |
3108 | + id="stop3602" |
3109 | + style="stop-color:#f4f4f4;stop-opacity:1" |
3110 | + offset="0" /> |
3111 | + <stop |
3112 | + id="stop3604" |
3113 | + style="stop-color:#dbdbdb;stop-opacity:1" |
3114 | + offset="1" /> |
3115 | + </linearGradient> |
3116 | + <linearGradient |
3117 | + x1="25.132275" |
3118 | + y1="6.7287393" |
3119 | + x2="25.132275" |
3120 | + y2="47.013336" |
3121 | + id="linearGradient4545" |
3122 | + xlink:href="#linearGradient3600" |
3123 | + gradientUnits="userSpaceOnUse" |
3124 | + gradientTransform="matrix(0.3715633,0,0,0.3334383,0.08247942,-0.0025171)" /> |
3125 | + <linearGradient |
3126 | + id="linearGradient4559"> |
3127 | + <stop |
3128 | + id="stop4561" |
3129 | + style="stop-color:#c0c0c0;stop-opacity:1" |
3130 | + offset="0" /> |
3131 | + <stop |
3132 | + id="stop4563" |
3133 | + style="stop-color:#949492;stop-opacity:1" |
3134 | + offset="1" /> |
3135 | + </linearGradient> |
3136 | + <linearGradient |
3137 | + id="linearGradient8589"> |
3138 | + <stop |
3139 | + id="stop8591" |
3140 | + style="stop-color:#fefefe;stop-opacity:1" |
3141 | + offset="0" /> |
3142 | + <stop |
3143 | + id="stop8593" |
3144 | + style="stop-color:#cbcbcb;stop-opacity:1" |
3145 | + offset="1" /> |
3146 | + </linearGradient> |
3147 | + <linearGradient |
3148 | + x1="15.372947" |
3149 | + y1="5.0471625" |
3150 | + x2="15.372947" |
3151 | + y2="22.599676" |
3152 | + id="linearGradient2510" |
3153 | + xlink:href="#linearGradient3533" |
3154 | + gradientUnits="userSpaceOnUse" |
3155 | + gradientTransform="matrix(0.3167426,0,0,0.310739,6.197645,1.9825705)" /> |
3156 | + <linearGradient |
3157 | + id="linearGradient3533"> |
3158 | + <stop |
3159 | + id="stop3535" |
3160 | + style="stop-color:#93b9dd;stop-opacity:1" |
3161 | + offset="0" /> |
3162 | + <stop |
3163 | + id="stop3545" |
3164 | + style="stop-color:#6396cd;stop-opacity:1" |
3165 | + offset="1" /> |
3166 | + </linearGradient> |
3167 | + <linearGradient |
3168 | + id="linearGradient4873"> |
3169 | + <stop |
3170 | + id="stop4875" |
3171 | + style="stop-color:#ffffff;stop-opacity:1" |
3172 | + offset="0" /> |
3173 | + <stop |
3174 | + id="stop4877" |
3175 | + style="stop-color:#ffffff;stop-opacity:0" |
3176 | + offset="1" /> |
3177 | + </linearGradient> |
3178 | + <linearGradient |
3179 | + x1="21.628975" |
3180 | + y1="2.1102102" |
3181 | + x2="21.628975" |
3182 | + y2="32.628334" |
3183 | + id="linearGradient2867" |
3184 | + xlink:href="#linearGradient4873" |
3185 | + gradientUnits="userSpaceOnUse" |
3186 | + gradientTransform="matrix(0.3167426,0,0,0.310739,6.197645,1.9825705)" /> |
3187 | + <linearGradient |
3188 | + x1="32.892288" |
3189 | + y1="8.0590115" |
3190 | + x2="36.358372" |
3191 | + y2="5.4565363" |
3192 | + id="linearGradient2885" |
3193 | + xlink:href="#linearGradient8589" |
3194 | + gradientUnits="userSpaceOnUse" |
3195 | + gradientTransform="matrix(0.3707081,0,0,0.3548465,0.14334242,-0.04895116)" /> |
3196 | + <linearGradient |
3197 | + x1="17.288921" |
3198 | + y1="2.184907" |
3199 | + x2="15.179585" |
3200 | + y2="5.8214641" |
3201 | + id="linearGradient2887" |
3202 | + xlink:href="#linearGradient4559" |
3203 | + gradientUnits="userSpaceOnUse" |
3204 | + gradientTransform="matrix(0.6844293,0,0,0.6820072,0.78684802,0.1569169)" /> |
3205 | + </defs> |
3206 | + <g |
3207 | + id="layer1"> |
3208 | + <path |
3209 | + d="m 4.4976268,0.49762721 5.9176882,0 c 0.522766,0.16184396 4.353689,2.61362219 5.087059,3.89029659 l 0,11.1144502 -11.0047472,0 0,-15.00474679 z" |
3210 | + id="rect2594" |
3211 | + style="fill:url(#linearGradient4545);fill-opacity:1;stroke:url(#linearGradient4547);stroke-width:0.9952535;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" /> |
3212 | + <path |
3213 | + d="M 10.5,0.4979205 C 10.5,2.041279 10.5,4.5 10.5,4.5 c 0,0 4.080603,0 5.00208,0 0,-1.9018156 -3.00574,-4.0020795 -5.00208,-4.0020795 z" |
3214 | + id="path12038" |
3215 | + style="fill:url(#linearGradient2885);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2887);stroke-width:0.9952535;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> |
3216 | + <g |
3217 | + transform="translate(-7,4)" |
3218 | + id="layer1-9"> |
3219 | + <path |
3220 | + d="m 7.9909525,11.554187 c 3.3833855,-0.109576 2.7564735,-0.524099 2.5278895,-1.029604 -0.228584,-0.505505 -0.308819,-1.0950109 -0.326354,-1.7112158 0.02384,-1.6999234 2.06212,-3.7959351 3.548285,-3.7959351 0.784598,0 1.721174,-0.058719 3.461118,1.2392474 l -1.701894,1.3020196 4.997879,0 c 0,0 0,-5.0566994 0,-5.0566994 l -1.842622,1.829721 C 17.424536,3.1452458 16.001893,2.5235558 14.185511,2.5039421 10.490419,2.4640418 7.5434021,5.4170561 7.5025494,9.0260496 7.4923364,9.9282984 7.6663904,10.78141 7.9909525,11.554187 z" |
3221 | + id="path3372" |
3222 | + style="fill:url(#linearGradient2510);fill-opacity:1;stroke:#538ec6;stroke-width:1.00424814;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> |
3223 | + <path |
3224 | + d="m 19.499995,6.9704638 c 0,0 0,-2.1496387 0,-2.1496387 l -0.798744,0.8329834 c -1.175555,-1.2864028 -2.732001,-2.153933 -4.570884,-2.153933 -3.213254,0 -5.6303675,2.6084507 -5.6303675,5.5609426 0,0.8547717 0.1756802,1.6220989 0.4827333,2.2922799" |
3225 | + id="path3370" |
3226 | + style="opacity:0.4;fill:none;stroke:url(#linearGradient2867);stroke-width:1.00424814;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> |
3227 | + </g> |
3228 | + </g> |
3229 | +</svg> |
3230 | |
3231 | === added file 'plainbox-gui/gui-ihv/qml/outline/artwork/skipped.svg' |
3232 | --- plainbox-gui/gui-ihv/qml/outline/artwork/skipped.svg 1970-01-01 00:00:00 +0000 |
3233 | +++ plainbox-gui/gui-ihv/qml/outline/artwork/skipped.svg 2013-07-24 15:37:30 +0000 |
3234 | @@ -0,0 +1,45 @@ |
3235 | +<?xml version="1.0" encoding="UTF-8" standalone="no"?> |
3236 | +<!-- Created with Inkscape (http://www.inkscape.org/) --> |
3237 | +<svg id="svg3734" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="24" width="24" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/"> |
3238 | + <metadata id="metadata29"> |
3239 | + <rdf:RDF> |
3240 | + <cc:Work rdf:about=""> |
3241 | + <dc:format>image/svg+xml</dc:format> |
3242 | + <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> |
3243 | + <dc:title/> |
3244 | + </cc:Work> |
3245 | + </rdf:RDF> |
3246 | + </metadata> |
3247 | + <defs id="defs3736"> |
3248 | + <linearGradient id="linearGradient4456"> |
3249 | + <stop id="stop4458" style="stop-color:#f6daae" offset="0"/> |
3250 | + <stop id="stop4460" style="stop-color:#f0c178;stop-opacity:0" offset="1"/> |
3251 | + </linearGradient> |
3252 | + <linearGradient id="linearGradient3390-178-986-453-4-5"> |
3253 | + <stop id="stop3624-8-6" style="stop-color:#bb2b12" offset="0"/> |
3254 | + <stop id="stop3626-1-1" style="stop-color:#cd7233" offset="1"/> |
3255 | + </linearGradient> |
3256 | + <linearGradient id="linearGradient3732" y2="176.46" xlink:href="#linearGradient3390-178-986-453-4-5" gradientUnits="userSpaceOnUse" x2="-41.204" gradientTransform="matrix(.92957 0 0 .99594 51.302 -181.74)" y1="198.54" x1="-48.735"/> |
3257 | + <linearGradient id="linearGradient4322" y2="196.54" gradientUnits="userSpaceOnUse" x2="-48.735" gradientTransform="matrix(.92957 0 0 .99594 51.302 -181.74)" y1="180.47" x1="-42.28"> |
3258 | + <stop id="stop3029" style="stop-color:#f0c178" offset="0"/> |
3259 | + <stop id="stop3031" style="stop-color:#e18941" offset=".57724"/> |
3260 | + <stop id="stop3033" style="stop-color:#ec4f18" offset="1"/> |
3261 | + </linearGradient> |
3262 | + <linearGradient id="linearGradient4324" y2="196.54" gradientUnits="userSpaceOnUse" x2="-48.735" gradientTransform="matrix(.92957 0 0 .99594 51.302 -181.74)" y1="179.47" x1="-42.28"> |
3263 | + <stop id="stop3618-1-9" style="stop-color:#f0c178" offset="0"/> |
3264 | + <stop id="stop3270-5-6" style="stop-color:#e18941" offset=".59026"/> |
3265 | + <stop id="stop3620-9-3" style="stop-color:#ec4f18" offset="1"/> |
3266 | + </linearGradient> |
3267 | + <linearGradient id="linearGradient4462" y2="16" xlink:href="#linearGradient4456" gradientUnits="userSpaceOnUse" x2="6" y1="-3" x1="12"/> |
3268 | + <linearGradient id="linearGradient3026" y2="16" xlink:href="#linearGradient4456" gradientUnits="userSpaceOnUse" x2="6" y1="-3" x1="11"/> |
3269 | + </defs> |
3270 | + <g id="layer1" transform="matrix(-1 0 0 1 23 7.0004)"> |
3271 | + <path id="path3169-2-3" style="stroke-linejoin:round;stroke-width:5;stroke:url(#linearGradient3732);stroke-linecap:round;enable-background:new;fill:none" d="m8.4802-1.4936-5.9802 6.4935 5.9802 6.4941"/> |
3272 | + <path id="path3765" style="stroke-linejoin:round;enable-background:new;stroke:url(#linearGradient3732);stroke-linecap:round;stroke-width:6;fill:none" d="m19 5-12.5-0.0001"/> |
3273 | + <path id="path4277" style="stroke-linejoin:round;stroke-width:3;stroke:url(#linearGradient4322);stroke-linecap:round;enable-background:new;fill:none" d="m8.5111-1.5245-6.0111 6.5244 6.0112 6.5241"/> |
3274 | + <path id="path4279" style="stroke-linejoin:round;stroke-width:4;stroke:url(#linearGradient4324);stroke-linecap:round;enable-background:new;fill:none" d="m19 5-12.5-0.0001"/> |
3275 | + <path id="path4454" style="opacity:.4;stroke-linejoin:round;stroke:url(#linearGradient3026);stroke-linecap:round;enable-background:new;fill:none" d="m9.0423 10.543-2.5423-2.543c-0.9998-1.0002 0-1.5 1.5-1.5h10.5c3 0 2.5-3 0-3h-10c-1.5 0-3 0-2-1.5l2.3356-2.3382c1.5-2-0.5-2.5-1.5-1.5l-5.3356 5.8382c-0.5 0.5-0.5276 1.3333 0 2l5.5423 6.0431c1 1 2.9997 0.000254 1.5-1.5z"/> |
3276 | + <path id="path4464" style="opacity:.4;stroke-linejoin:round;stroke:url(#linearGradient4462);stroke-linecap:round;enable-background:new;fill:none" d="m6.5 2 2.4035-2.1981c1.5-2-0.5-2.5-1.5-1.5l-5.4035 5.6981c-0.5 0.5-0.5276 1.3333 0 2l4.7125 5.2812c1 1 2.9702 0.02922 1.5-1.5l-1.7125-1.781"/> |
3277 | + <path id="path4466" style="opacity:0.24;stroke-linejoin:round;stroke:#f6daae;stroke-linecap:round;enable-background:new;fill:none" d="m7.2625-1.35-5.2625 5.35"/> |
3278 | + </g> |
3279 | +</svg> |
3280 | |
3281 | === added file 'plainbox-gui/gui-ihv/qml/outline/artwork/test.txt' |
3282 | --- plainbox-gui/gui-ihv/qml/outline/artwork/test.txt 1970-01-01 00:00:00 +0000 |
3283 | +++ plainbox-gui/gui-ihv/qml/outline/artwork/test.txt 2013-07-24 15:37:30 +0000 |
3284 | @@ -0,0 +1,6 @@ |
3285 | +Hello world. |
3286 | +This file has opened. |
3287 | + |
3288 | +Yippee! |
3289 | +Goodbye... |
3290 | + |
3291 | |
3292 | === added file 'plainbox-gui/gui-ihv/qml/outline/artwork/userreq.svg' |
3293 | --- plainbox-gui/gui-ihv/qml/outline/artwork/userreq.svg 1970-01-01 00:00:00 +0000 |
3294 | +++ plainbox-gui/gui-ihv/qml/outline/artwork/userreq.svg 2013-07-24 15:37:30 +0000 |
3295 | @@ -0,0 +1,31 @@ |
3296 | +<?xml version="1.0" encoding="UTF-8" standalone="no"?> |
3297 | +<!-- Created with Inkscape (http://www.inkscape.org/) --> |
3298 | +<svg id="svg2" xmlns="http://www.w3.org/2000/svg" height="24" width="24" version="1.0" xmlns:xlink="http://www.w3.org/1999/xlink"> |
3299 | + <defs id="defs4"> |
3300 | + <radialGradient id="radialGradient2501" gradientUnits="userSpaceOnUse" cy="4.625" cx="62.625" gradientTransform="matrix(1.1294 0 0 .28235 -58.729 19.694)" r="10.625"> |
3301 | + <stop id="stop8840" offset="0"/> |
3302 | + <stop id="stop8842" style="stop-opacity:0" offset="1"/> |
3303 | + </radialGradient> |
3304 | + <linearGradient id="linearGradient2498" y2="3.0816" gradientUnits="userSpaceOnUse" x2="18.379" gradientTransform="matrix(.51604 0 0 .51604 -.38499 -.38499)" y1="44.98" x1="18.379"> |
3305 | + <stop id="stop2788" style="stop-color:#1f4b6a" offset="0"/> |
3306 | + <stop id="stop2790" style="stop-color:#4083c2" offset="1"/> |
3307 | + </linearGradient> |
3308 | + <radialGradient id="radialGradient2496" gradientUnits="userSpaceOnUse" cy="3.99" cx="23.896" gradientTransform="matrix(0 1.2316 -1.6257 0 18.487 -28.721)" r="20.397"> |
3309 | + <stop id="stop2778" style="stop-color:#8badea" offset="0"/> |
3310 | + <stop id="stop2780" style="stop-color:#6396cd" offset=".26238"/> |
3311 | + <stop id="stop2782" style="stop-color:#3b7caf" offset=".66094"/> |
3312 | + <stop id="stop2784" style="stop-color:#194c70" offset="1"/> |
3313 | + </radialGradient> |
3314 | + <linearGradient id="linearGradient2493" y2="5.4676" gradientUnits="userSpaceOnUse" x2="63.397" gradientTransform="matrix(1.0863 0 0 1.0862 -55.567 15.814)" y1="-12.489" x1="63.397"> |
3315 | + <stop id="stop4875" style="stop-color:#fff" offset="0"/> |
3316 | + <stop id="stop4877" style="stop-color:#fff;stop-opacity:0" offset="1"/> |
3317 | + </linearGradient> |
3318 | + </defs> |
3319 | + <g id="layer1"> |
3320 | + <path id="path8836" style="opacity:.3;fill-rule:evenodd;fill:url(#radialGradient2501)" d="m24 21c0 1.657-5.373 3-12 3-6.6274 0-12-1.343-12-3-2.5e-7 -1.657 5.3726-3 12-3 6.627 0 12 1.343 12 3z"/> |
3321 | + <path id="path2555" style="stroke-linejoin:round;stroke:url(#linearGradient2498);stroke-linecap:round;stroke-width:1.0037;fill:url(#radialGradient2496)" d="m12 1.5018c-5.7926 0-10.498 4.7056-10.498 10.498-0.0002 5.793 4.7054 10.498 10.498 10.498 5.793 0 10.498-4.705 10.498-10.498 0-5.7926-4.705-10.498-10.498-10.498z"/> |
3322 | + <path id="path2463" style="opacity:.4;stroke:url(#linearGradient2493);fill:none" d="m21.5 12c0 5.247-4.254 9.5-9.5 9.5-5.2466 0-9.5-4.254-9.5-9.5 0-5.247 4.2534-9.5 9.5-9.5 5.246 0 9.5 4.253 9.5 9.5z"/> |
3323 | + <path id="path3295" style="opacity:.2" d="m10.599 5.2867c0.332 2.8104 0.712 5.6013 0.995 8.4233h0.902c0.234-2.71 0.612-5.4029 0.885-8.1091 0.139-0.6407-0.241-1.4015-1.021-1.5572-0.772-0.1955-1.634 0.2886-1.736 0.9801-0.017 0.0868-0.025 0.1749-0.025 0.2629zm-0.098 11.426c-0.035 0.837 1.027 1.493 1.933 1.227 0.879-0.194 1.341-1.151 0.891-1.831-0.403-0.703-1.584-0.935-2.264-0.396-0.343 0.244-0.571 0.609-0.56 1z"/> |
3324 | + <path id="text2315" style="fill:#fff" d="m10.599 6.2867c0.332 2.8104 0.712 5.6013 0.995 8.4233h0.902c0.234-2.71 0.612-5.4029 0.885-8.1091 0.139-0.6407-0.241-1.4015-1.021-1.5572-0.772-0.1955-1.634 0.2886-1.736 0.9801-0.017 0.0868-0.025 0.1749-0.025 0.2629zm-0.098 11.426c-0.035 0.837 1.027 1.493 1.933 1.227 0.879-0.194 1.341-1.151 0.891-1.831-0.403-0.703-1.584-0.935-2.264-0.396-0.343 0.244-0.571 0.609-0.56 1z"/> |
3325 | + </g> |
3326 | +</svg> |
3327 | |
3328 | === modified file 'plainbox-gui/gui-ihv/qml/outline/gui-ihv.qml' |
3329 | --- plainbox-gui/gui-ihv/qml/outline/gui-ihv.qml 2013-07-17 14:23:54 +0000 |
3330 | +++ plainbox-gui/gui-ihv/qml/outline/gui-ihv.qml 2013-07-24 15:37:30 +0000 |
3331 | @@ -35,7 +35,7 @@ |
3332 | PageStack { |
3333 | id: pageStack |
3334 | state: "WELCOME" |
3335 | - property string pageName: "DemoWarnings.qml" // initial state |
3336 | + property string pageName: "WelcomeView.qml" // initial state |
3337 | |
3338 | Component.onCompleted: { |
3339 | push(Qt.resolvedUrl(pageName)) |
3340 | |
3341 | === added file 'plainbox-gui/gui-ihv/savefiledlg.cpp' |
3342 | --- plainbox-gui/gui-ihv/savefiledlg.cpp 1970-01-01 00:00:00 +0000 |
3343 | +++ plainbox-gui/gui-ihv/savefiledlg.cpp 2013-07-24 15:37:30 +0000 |
3344 | @@ -0,0 +1,37 @@ |
3345 | +/* |
3346 | + * This file is part of plainbox-gui |
3347 | + * |
3348 | + * Copyright 2013 Canonical Ltd. |
3349 | + * |
3350 | + * Authors: |
3351 | + * - Julia Segal <julia.segal@cellsoftware.co.uk> |
3352 | + * |
3353 | + * This program is free software; you can redistribute it and/or modify |
3354 | + * it under the terms of the GNU General Public License as published by |
3355 | + * the Free Software Foundation; version 3. |
3356 | + * |
3357 | + * This program is distributed in the hope that it will be useful, |
3358 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
3359 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
3360 | + * GNU General Public License for more details. |
3361 | + * |
3362 | + * You should have received a copy of the GNU General Public License |
3363 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
3364 | + */ |
3365 | + |
3366 | +#include "savefiledlg.h" |
3367 | + |
3368 | +SaveFileDlg::SaveFileDlg(QObject *parent) : |
3369 | + QObject(parent) |
3370 | +{ |
3371 | + |
3372 | +} |
3373 | + |
3374 | +void SaveFileDlg::save(){ |
3375 | + // TODO save the file |
3376 | + //QString dir = QFileDialog::getExistingDirectory(this, tr("Open Directory"), |
3377 | + // "/home", |
3378 | + // QFileDialog::ShowDirsOnly |
3379 | + // | QFileDialog::DontResolveSymlinks); |
3380 | + //emit saveDir(); |
3381 | +} |
3382 | |
3383 | === added file 'plainbox-gui/gui-ihv/savefiledlg.h' |
3384 | --- plainbox-gui/gui-ihv/savefiledlg.h 1970-01-01 00:00:00 +0000 |
3385 | +++ plainbox-gui/gui-ihv/savefiledlg.h 2013-07-24 15:37:30 +0000 |
3386 | @@ -0,0 +1,45 @@ |
3387 | +/* |
3388 | + * This file is part of plainbox-gui |
3389 | + * |
3390 | + * Copyright 2013 Canonical Ltd. |
3391 | + * |
3392 | + * Authors: |
3393 | + * - Julia Segal <julia.segal@cellsoftware.co.uk> |
3394 | + * |
3395 | + * This program is free software; you can redistribute it and/or modify |
3396 | + * it under the terms of the GNU General Public License as published by |
3397 | + * the Free Software Foundation; version 3. |
3398 | + * |
3399 | + * This program is distributed in the hope that it will be useful, |
3400 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
3401 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
3402 | + * GNU General Public License for more details. |
3403 | + * |
3404 | + * You should have received a copy of the GNU General Public License |
3405 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
3406 | + */ |
3407 | + |
3408 | + |
3409 | +#ifndef SAVEFILEDLG_H |
3410 | +#define SAVEFILEDLG_H |
3411 | + |
3412 | +#include <QObject> |
3413 | +#include <QQmlComponent> |
3414 | +#include <qdebug.h> |
3415 | + |
3416 | +class SaveFileDlg : public QObject |
3417 | +{ |
3418 | + Q_OBJECT |
3419 | +public: |
3420 | + explicit SaveFileDlg(QObject *parent = 0); |
3421 | + Q_INVOKABLE void save();//const QString& filename); |
3422 | + |
3423 | +signals: |
3424 | + void saveDir(); |
3425 | + |
3426 | +private: |
3427 | + //QFileDialog m_fileDialog; |
3428 | +}; |
3429 | + |
3430 | + |
3431 | +#endif // SAVEFILEDLG_H |
3432 | |
3433 | === modified file 'plainbox-gui/gui-ihv/testsuiteitem.cpp' |
3434 | --- plainbox-gui/gui-ihv/testsuiteitem.cpp 2013-07-17 10:50:10 +0000 |
3435 | +++ plainbox-gui/gui-ihv/testsuiteitem.cpp 2013-07-24 15:37:30 +0000 |
3436 | @@ -29,7 +29,10 @@ |
3437 | m_testName(testName), |
3438 | m_check(true), |
3439 | m_duration(duration), |
3440 | - m_type(type) |
3441 | + m_type(type), |
3442 | + m_runstatus(0), |
3443 | + m_elapsedtime(0), |
3444 | + m_groupstatus(0) |
3445 | { |
3446 | } |
3447 | |
3448 | @@ -42,6 +45,9 @@ |
3449 | names[CheckRole] = "check"; |
3450 | names[DurationRole] = "duration"; |
3451 | names[TypeRole] = "type"; |
3452 | + names[RunstatusRole] = "runstatus"; |
3453 | + names[ElapsedtimeRole] = "elapsedtime"; |
3454 | + names[GroupstatusRole] = "groupstatus"; |
3455 | return names; |
3456 | } |
3457 | |
3458 | @@ -58,6 +64,12 @@ |
3459 | return duration(); |
3460 | case TypeRole: |
3461 | return type(); |
3462 | + case RunstatusRole: |
3463 | + return runstatus(); |
3464 | + case ElapsedtimeRole: |
3465 | + return elapsedtime(); |
3466 | + case GroupstatusRole: |
3467 | + return groupstatus(); |
3468 | default: |
3469 | return QVariant(); |
3470 | } |
3471 | @@ -77,6 +89,15 @@ |
3472 | case DurationRole: |
3473 | setDuration(value.toInt()); |
3474 | break; |
3475 | + case RunstatusRole: |
3476 | + setRunstatus(value.toInt()); |
3477 | + break; |
3478 | + case ElapsedtimeRole: |
3479 | + setElapsedtime(value.toInt()); |
3480 | + break; |
3481 | + case GroupstatusRole: |
3482 | + setGroupstatus(value.toInt()); |
3483 | + break; |
3484 | } |
3485 | |
3486 | } |
3487 | @@ -117,3 +138,29 @@ |
3488 | } |
3489 | } |
3490 | |
3491 | +void TestSuiteItem::setRunstatus(int runstatus){ |
3492 | + if (runstatus != m_runstatus){ |
3493 | + m_runstatus = runstatus; |
3494 | + emit runstatusChanged(); |
3495 | + emit dataChanged(); |
3496 | + //qDebug()<<"status changed"; |
3497 | + } |
3498 | +} |
3499 | + |
3500 | + |
3501 | +void TestSuiteItem::setElapsedtime(int elapsedtime){ |
3502 | + if (elapsedtime != m_elapsedtime){ |
3503 | + m_elapsedtime = elapsedtime; |
3504 | + emit elapsedtimeChanged(); |
3505 | + emit dataChanged(); |
3506 | + } |
3507 | +} |
3508 | + |
3509 | +void TestSuiteItem::setGroupstatus(int groupstatus){ |
3510 | + if (groupstatus != m_groupstatus){ |
3511 | + m_groupstatus = groupstatus; |
3512 | + emit groupstatusChanged(); |
3513 | + emit dataChanged(); |
3514 | + } |
3515 | +} |
3516 | + |
3517 | |
3518 | === modified file 'plainbox-gui/gui-ihv/testsuiteitem.h' |
3519 | --- plainbox-gui/gui-ihv/testsuiteitem.h 2013-07-16 15:49:19 +0000 |
3520 | +++ plainbox-gui/gui-ihv/testsuiteitem.h 2013-07-24 15:37:30 +0000 |
3521 | @@ -31,6 +31,9 @@ |
3522 | Q_PROPERTY(bool check READ check WRITE setCheck NOTIFY checkChanged) |
3523 | Q_PROPERTY(int duration READ duration WRITE setDuration NOTIFY durationChanged) |
3524 | Q_PROPERTY(QString type READ type) |
3525 | + Q_PROPERTY(int runStatus READ runstatus WRITE setRunstatus NOTIFY runstatusChanged) |
3526 | + Q_PROPERTY(int elapsedtime READ elapsedtime WRITE setElapsedtime NOTIFY elapsedtimeChanged) |
3527 | + Q_PROPERTY(int groupstatus READ groupstatus WRITE setGroupstatus NOTIFY groupstatusChanged) |
3528 | |
3529 | |
3530 | |
3531 | @@ -39,6 +42,9 @@ |
3532 | void testnameChanged(); |
3533 | void checkChanged(); |
3534 | void durationChanged(); |
3535 | + void runstatusChanged(); |
3536 | + void elapsedtimeChanged(); |
3537 | + void groupstatusChanged(); |
3538 | |
3539 | public: |
3540 | enum Roles { |
3541 | @@ -46,12 +52,15 @@ |
3542 | TestNameRole, |
3543 | CheckRole, |
3544 | DurationRole, |
3545 | - TypeRole |
3546 | + TypeRole, |
3547 | + RunstatusRole, |
3548 | + ElapsedtimeRole, |
3549 | + GroupstatusRole |
3550 | }; |
3551 | |
3552 | |
3553 | public: |
3554 | - TestSuiteItem(QObject * parent = 0 ) : ListItem(parent), m_check(true){} |
3555 | + TestSuiteItem(QObject * parent = 0 ) : ListItem(parent), m_check(true), m_runstatus(0), m_elapsedtime(0), m_groupstatus(0){} |
3556 | TestSuiteItem(const QString &groupName, const QString &testname, int durationInSeconds, const QString &type, QObject * parent = 0 ); |
3557 | |
3558 | QVariant data(int role) const; |
3559 | @@ -74,6 +83,16 @@ |
3560 | |
3561 | inline QString type() const {return m_type; } |
3562 | |
3563 | + inline int runstatus() const { return m_runstatus; } |
3564 | + void setRunstatus(int runstatus); |
3565 | + |
3566 | + inline int elapsedtime() const { return m_elapsedtime; } |
3567 | + void setElapsedtime(int elapsedtime); |
3568 | + |
3569 | + inline int groupstatus() const {return m_groupstatus; } |
3570 | + void setGroupstatus(int groupstatus); |
3571 | + |
3572 | + |
3573 | |
3574 | private: |
3575 | QString m_group; |
3576 | @@ -81,6 +100,9 @@ |
3577 | bool m_check; |
3578 | int m_duration; |
3579 | QString m_type; |
3580 | + int m_runstatus; |
3581 | + int m_elapsedtime; |
3582 | + int m_groupstatus; |
3583 | }; |
3584 | |
3585 |
I suggest this is merged first, and I will update my engine branch and resolve the handful of conflicts and propose a re-merge of that.