Merge lp:~unity-team/libusermetrics/minimum-maximum-qml into lp:libusermetrics

Proposed by Pete Woods
Status: Merged
Approved by: Pete Woods
Approved revision: 141
Merged at revision: 141
Proposed branch: lp:~unity-team/libusermetrics/minimum-maximum-qml
Merge into: lp:libusermetrics
Diff against target: 538 lines (+159/-42)
15 files modified
po/en_GB.po (+11/-10)
po/libusermetrics.pot (+11/-10)
src/modules/UserMetrics/CMakeLists.txt (+4/-1)
src/modules/UserMetrics/Metric.cpp (+44/-5)
src/modules/UserMetrics/Metric.h (+21/-1)
src/modules/UserMetrics/qmldir (+1/-0)
tests/unit/qml/CMakeLists.txt (+7/-7)
tests/unit/qml/UserMetricsTest/CMakeLists.txt (+4/-1)
tests/unit/qml/UserMetricsTest/DBusQuery.cpp (+12/-2)
tests/unit/qml/UserMetricsTest/MetricInfo.cpp (+11/-2)
tests/unit/qml/UserMetricsTest/MetricInfo.h (+16/-1)
tests/unit/qml/UserMetricsTest/TestPlugin.cpp (+2/-2)
tests/unit/qml/UserMetricsTest/TestPlugin.h (+4/-0)
tests/unit/qml/UserMetricsTest/qmldir (+1/-0)
tests/unit/qml/tst_Metrics.qml (+10/-0)
To merge this branch: bzr merge lp:~unity-team/libusermetrics/minimum-maximum-qml
Reviewer Review Type Date Requested Status
PS Jenkins bot (community) continuous-integration Approve
Unity Team Pending
Review via email: mp+188788@code.launchpad.net

Commit message

Support minimum and maximum properties in the QML API

Description of the change

Support minimum and maximum properties in the QML API

To post a comment you must log in.
Revision history for this message
PS Jenkins bot (ps-jenkins) :
review: Approve (continuous-integration)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'po/en_GB.po'
2--- po/en_GB.po 2013-10-01 10:22:38 +0000
3+++ po/en_GB.po 2013-10-02 09:46:27 +0000
4@@ -7,7 +7,7 @@
5 msgstr ""
6 "Project-Id-Version: libusermetrics\n"
7 "Report-Msgid-Bugs-To: \n"
8-"POT-Creation-Date: 2013-10-01 11:14+0100\n"
9+"POT-Creation-Date: 2013-10-02 10:29+0100\n"
10 "PO-Revision-Date: 2013-07-05 15:09+0100\n"
11 "Last-Translator: Pete Woods <pete.woods@canonical.com>\n"
12 "Language-Team: British English <en@li.org>\n"
13@@ -25,7 +25,7 @@
14 msgid "Attempt to create data set owned by another user"
15 msgstr "Attempt to create data set owned by another user"
16
17-#: src/usermetricsservice/DBusUserMetrics.cpp:239
18+#: src/usermetricsservice/DBusUserMetrics.cpp:250
19 #, fuzzy
20 msgid "Attempt to create user data owned by another user"
21 msgstr "Attempt to create user data owned by another user"
22@@ -73,11 +73,11 @@
23 #: src/usermetricsservice/DBusDataSource.cpp:190
24 #: src/usermetricsservice/DBusDataSource.cpp:216
25 #: src/usermetricsservice/DBusDataSource.cpp:234
26-#: src/usermetricsservice/DBusUserMetrics.cpp:177
27+#: src/usermetricsservice/DBusUserMetrics.cpp:188
28 msgid "Could not save data source"
29 msgstr "Couldn't save data source"
30
31-#: src/usermetricsservice/DBusUserMetrics.cpp:257
32+#: src/usermetricsservice/DBusUserMetrics.cpp:268
33 msgid "Could not save user data"
34 msgstr "Couldn't save user data"
35
36@@ -98,23 +98,24 @@
37 msgid "Data source not found"
38 msgstr "Data source not found"
39
40-#: src/usermetricsservice/DBusUserMetrics.cpp:143
41+#: src/usermetricsservice/DBusUserMetrics.cpp:142
42+#: src/usermetricsservice/DBusUserMetrics.cpp:154
43 msgid "Data source query failed"
44 msgstr "Data source query failed"
45
46-#: src/modules/UserMetrics/Metric.cpp:28
47+#: src/modules/UserMetrics/Metric.cpp:30
48 msgid "Failed to connect to metrics service:"
49 msgstr "Failed to connect to metrics service:"
50
51-#: src/modules/UserMetrics/Metric.cpp:115
52+#: src/modules/UserMetrics/Metric.cpp:154
53 msgid "Failed to increment metric:"
54 msgstr ""
55
56-#: src/modules/UserMetrics/Metric.cpp:102
57+#: src/modules/UserMetrics/Metric.cpp:141
58 msgid "Failed to register user metric:"
59 msgstr "Failed to register user metric:"
60
61-#: src/modules/UserMetrics/Metric.cpp:127
62+#: src/modules/UserMetrics/Metric.cpp:166
63 msgid "Failed to update metric:"
64 msgstr "Failed to update metric:"
65
66@@ -151,7 +152,7 @@
67 msgid "Usage: "
68 msgstr "Usage: "
69
70-#: src/usermetricsservice/DBusUserMetrics.cpp:248
71+#: src/usermetricsservice/DBusUserMetrics.cpp:259
72 msgid "User data query failed"
73 msgstr "User data query failed"
74
75
76=== modified file 'po/libusermetrics.pot'
77--- po/libusermetrics.pot 2013-10-01 10:22:38 +0000
78+++ po/libusermetrics.pot 2013-10-02 09:46:27 +0000
79@@ -8,7 +8,7 @@
80 msgstr ""
81 "Project-Id-Version: libusermetrics\n"
82 "Report-Msgid-Bugs-To: \n"
83-"POT-Creation-Date: 2013-10-01 11:16+0100\n"
84+"POT-Creation-Date: 2013-10-02 10:29+0100\n"
85 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
86 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
87 "Language-Team: LANGUAGE <LL@li.org>\n"
88@@ -38,7 +38,7 @@
89 #: src/usermetricsservice/DBusDataSource.cpp:190
90 #: src/usermetricsservice/DBusDataSource.cpp:216
91 #: src/usermetricsservice/DBusDataSource.cpp:234
92-#: src/usermetricsservice/DBusUserMetrics.cpp:177
93+#: src/usermetricsservice/DBusUserMetrics.cpp:188
94 msgid "Could not save data source"
95 msgstr ""
96
97@@ -46,19 +46,20 @@
98 msgid "Unable to register user metrics object on DBus"
99 msgstr ""
100
101-#: src/usermetricsservice/DBusUserMetrics.cpp:143
102+#: src/usermetricsservice/DBusUserMetrics.cpp:142
103+#: src/usermetricsservice/DBusUserMetrics.cpp:154
104 msgid "Data source query failed"
105 msgstr ""
106
107-#: src/usermetricsservice/DBusUserMetrics.cpp:239
108+#: src/usermetricsservice/DBusUserMetrics.cpp:250
109 msgid "Attempt to create user data owned by another user"
110 msgstr ""
111
112-#: src/usermetricsservice/DBusUserMetrics.cpp:248
113+#: src/usermetricsservice/DBusUserMetrics.cpp:259
114 msgid "User data query failed"
115 msgstr ""
116
117-#: src/usermetricsservice/DBusUserMetrics.cpp:257
118+#: src/usermetricsservice/DBusUserMetrics.cpp:268
119 msgid "Could not save user data"
120 msgstr ""
121
122@@ -107,19 +108,19 @@
123 msgid "New data set could not be found"
124 msgstr ""
125
126-#: src/modules/UserMetrics/Metric.cpp:28
127+#: src/modules/UserMetrics/Metric.cpp:30
128 msgid "Failed to connect to metrics service:"
129 msgstr ""
130
131-#: src/modules/UserMetrics/Metric.cpp:102
132+#: src/modules/UserMetrics/Metric.cpp:141
133 msgid "Failed to register user metric:"
134 msgstr ""
135
136-#: src/modules/UserMetrics/Metric.cpp:115
137+#: src/modules/UserMetrics/Metric.cpp:154
138 msgid "Failed to increment metric:"
139 msgstr ""
140
141-#: src/modules/UserMetrics/Metric.cpp:127
142+#: src/modules/UserMetrics/Metric.cpp:166
143 msgid "Failed to update metric:"
144 msgstr ""
145
146
147=== modified file 'src/modules/UserMetrics/CMakeLists.txt'
148--- src/modules/UserMetrics/CMakeLists.txt 2013-09-24 08:13:01 +0000
149+++ src/modules/UserMetrics/CMakeLists.txt 2013-10-02 09:46:27 +0000
150@@ -38,4 +38,7 @@
151 install(FILES qmldir DESTINATION ${PLUGIN_DIR})
152
153 # copy qmldir file to build dir so QML unit tests can use it to import the plugin
154-file(COPY qmldir DESTINATION ${CMAKE_BINARY_DIR}/src/modules/UserMetrics)
155+configure_file(
156+ qmldir
157+ qmldir
158+)
159
160=== modified file 'src/modules/UserMetrics/Metric.cpp'
161--- src/modules/UserMetrics/Metric.cpp 2013-09-26 15:24:43 +0000
162+++ src/modules/UserMetrics/Metric.cpp 2013-10-02 09:46:27 +0000
163@@ -18,10 +18,12 @@
164 #include <libusermetricscommon/Localisation.h>
165
166 #include <stdexcept>
167+#include <cmath>
168 #include <QDebug>
169
170 Metric::Metric(QObject *parent) :
171- QObject(parent), m_componentComplete(false) {
172+ QObject(parent), m_componentComplete(false), m_minimum(NAN), m_maximum(
173+ NAN) {
174 try {
175 m_metricManager.reset(UserMetricsInput::MetricManager::getInstance());
176 } catch (std::exception &e) {
177@@ -80,6 +82,30 @@
178 }
179 }
180
181+double Metric::minimum() const {
182+ return m_minimum;
183+}
184+
185+void Metric::setMinimum(double minimum) {
186+ if (m_minimum != minimum) {
187+ m_minimum = minimum;
188+ Q_EMIT minimumChanged();
189+ registerMetric();
190+ }
191+}
192+
193+double Metric::maximum() const {
194+ return m_maximum;
195+}
196+
197+void Metric::setMaximum(double maximum) {
198+ if (m_maximum != maximum) {
199+ m_maximum = maximum;
200+ Q_EMIT maximumChanged();
201+ registerMetric();
202+ }
203+}
204+
205 void Metric::registerMetric() {
206 if (!m_componentComplete) {
207 return;
208@@ -94,10 +120,23 @@
209 }
210
211 try {
212- m_metric = m_metricManager->add(
213- UserMetricsInput::MetricParameters(m_name).formatString(
214- m_format).emptyDataString(m_emptyFormat).textDomain(
215- m_domain));
216+ UserMetricsInput::MetricParameters parameters(m_name);
217+ parameters.formatString(m_format);
218+
219+ if (!m_emptyFormat.isEmpty()) {
220+ parameters.emptyDataString(m_emptyFormat);
221+ }
222+ if (!m_domain.isEmpty()) {
223+ parameters.textDomain(m_domain);
224+ }
225+ if (!isnan(m_minimum)) {
226+ parameters.minimum(m_minimum);
227+ }
228+ if (!isnan(m_maximum)) {
229+ parameters.maximum(m_maximum);
230+ }
231+
232+ m_metric = m_metricManager->add(parameters);
233 } catch (std::exception &e) {
234 qWarning() << _("Failed to register user metric:") << m_name << "\""
235 << m_format << "\": " << e.what();
236
237=== modified file 'src/modules/UserMetrics/Metric.h'
238--- src/modules/UserMetrics/Metric.h 2013-09-24 08:13:01 +0000
239+++ src/modules/UserMetrics/Metric.h 2013-10-02 09:46:27 +0000
240@@ -24,10 +24,14 @@
241 class Metric: public QObject, public QQmlParserStatus {
242 Q_OBJECT
243
244-Q_INTERFACES (QQmlParserStatus)Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
245+Q_INTERFACES (QQmlParserStatus)
246+
247+Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
248 Q_PROPERTY(QString format READ format WRITE setFormat NOTIFY formatChanged)
249 Q_PROPERTY(QString emptyFormat READ emptyFormat WRITE setEmptyFormat NOTIFY emptyFormatChanged)
250 Q_PROPERTY(QString domain READ domain WRITE setDomain NOTIFY domainChanged)
251+Q_PROPERTY(double minimum READ minimum WRITE setMinimum NOTIFY minimumChanged)
252+Q_PROPERTY(double maximum READ maximum WRITE setMaximum NOTIFY maximumChanged)
253
254 public:
255 explicit Metric(QObject *parent = 0);
256@@ -50,6 +54,14 @@
257
258 void setDomain(const QString &domain);
259
260+ double minimum() const;
261+
262+ void setMinimum(double minimum);
263+
264+ double maximum() const;
265+
266+ void setMaximum(double maximum);
267+
268 void classBegin();
269
270 void componentComplete();
271@@ -68,6 +80,10 @@
272
273 void domainChanged();
274
275+ void minimumChanged();
276+
277+ void maximumChanged();
278+
279 protected:
280 void registerMetric();
281
282@@ -84,6 +100,10 @@
283 QString m_emptyFormat;
284
285 QString m_domain;
286+
287+ double m_minimum;
288+
289+ double m_maximum;
290 };
291
292 #endif // MODULES_USERMETRICS_METRICSMANAGER_H
293
294=== modified file 'src/modules/UserMetrics/qmldir'
295--- src/modules/UserMetrics/qmldir 2013-09-17 11:03:34 +0000
296+++ src/modules/UserMetrics/qmldir 2013-10-02 09:46:27 +0000
297@@ -1,1 +1,2 @@
298+module UserMetrics
299 plugin usermetrics-qml
300
301=== modified file 'tests/unit/qml/CMakeLists.txt'
302--- tests/unit/qml/CMakeLists.txt 2013-09-18 15:13:02 +0000
303+++ tests/unit/qml/CMakeLists.txt 2013-10-02 09:46:27 +0000
304@@ -1,13 +1,13 @@
305+
306 add_executable(tst_QmlTests tst_QmlTests.cpp)
307 qt5_use_modules(tst_QmlTests Core Qml Quick Test QuickTest)
308 target_link_libraries(tst_QmlTests ${TPL_QT5_LIBRARIES})
309-add_test(tst_QmlTests ${CMAKE_CURRENT_BINARY_DIR}/tst_QmlTests -import ${SOURCE_BINARY_DIR}/modules)
310+
311+add_test(tst_QmlTests
312+ ${CMAKE_CURRENT_BINARY_DIR}/tst_QmlTests
313+ -input ${CMAKE_CURRENT_SOURCE_DIR}
314+ -import ${SOURCE_BINARY_DIR}/modules
315+)
316 set_tests_properties(tst_QmlTests PROPERTIES ENVIRONMENT "QT_QPA_PLATFORM=minimal")
317
318-# copy qml test files to build dir
319-file(GLOB qmlTestFiles RELATIVE ${CMAKE_SOURCE_DIR}/tests/unit/qml/ *qml)
320-foreach(qmlTestFile ${qmlTestFiles})
321- file(COPY ${qmlTestFile} DESTINATION ${CMAKE_BINARY_DIR}/tests/unit/qml/)
322-endforeach(qmlTestFile)
323-
324 add_subdirectory(UserMetricsTest)
325
326=== modified file 'tests/unit/qml/UserMetricsTest/CMakeLists.txt'
327--- tests/unit/qml/UserMetricsTest/CMakeLists.txt 2013-09-23 14:12:23 +0000
328+++ tests/unit/qml/UserMetricsTest/CMakeLists.txt 2013-10-02 09:46:27 +0000
329@@ -22,4 +22,7 @@
330 )
331
332 # copy qmldir file to build dir
333-file(COPY qmldir DESTINATION ${CMAKE_BINARY_DIR}/tests/unit/qml/UserMetricsTest)
334+configure_file(
335+ qmldir
336+ qmldir
337+)
338
339=== modified file 'tests/unit/qml/UserMetricsTest/DBusQuery.cpp'
340--- tests/unit/qml/UserMetricsTest/DBusQuery.cpp 2013-09-26 11:35:49 +0000
341+++ tests/unit/qml/UserMetricsTest/DBusQuery.cpp 2013-10-02 09:46:27 +0000
342@@ -17,7 +17,7 @@
343 #include <DBusQuery.h>
344 #include <MetricInfo.h>
345
346-#include <QDebug>
347+#include <cmath>
348 #include <QtDBus/QtDBus>
349 #include <libqtdbustest/QProcessDBusService.h>
350 #include <libqtdbustest/DBusService.h>
351@@ -59,10 +59,20 @@
352 if (dataSourceInterface.name().isEmpty()) {
353 return 0;
354 } else {
355+ double minimum(NAN);
356+ double maximum(NAN);
357+ QVariantMap options(dataSourceInterface.options());
358+ if (options.contains("minimum")) {
359+ minimum = options["minimum"].toDouble();
360+ }
361+ if (options.contains("maximum")) {
362+ maximum = options["maximum"].toDouble();
363+ }
364+
365 return new MetricInfo(dataSourceInterface.name(),
366 dataSourceInterface.formatString(),
367 dataSourceInterface.emptyDataString(),
368- dataSourceInterface.textDomain(), this);
369+ dataSourceInterface.textDomain(), minimum, maximum, this);
370 }
371 }
372
373
374=== modified file 'tests/unit/qml/UserMetricsTest/MetricInfo.cpp'
375--- tests/unit/qml/UserMetricsTest/MetricInfo.cpp 2013-09-24 08:13:01 +0000
376+++ tests/unit/qml/UserMetricsTest/MetricInfo.cpp 2013-10-02 09:46:27 +0000
377@@ -17,9 +17,10 @@
378 #include <MetricInfo.h>
379
380 MetricInfo::MetricInfo(QString name, QString format, QString emptyFormat,
381- QString domain, QObject *parent) :
382+ QString domain, double minimum, double maximum, QObject *parent) :
383 QObject(parent), m_name(name), m_format(format), m_emptyFormat(
384- emptyFormat), m_domain(domain) {
385+ emptyFormat), m_domain(domain), m_minimum(minimum), m_maximum(
386+ maximum) {
387 }
388
389 MetricInfo::~MetricInfo() {
390@@ -40,3 +41,11 @@
391 QString MetricInfo::domain() const {
392 return m_domain;
393 }
394+
395+double MetricInfo::minimum() const {
396+ return m_minimum;
397+}
398+
399+double MetricInfo::maximum() const {
400+ return m_maximum;
401+}
402
403=== modified file 'tests/unit/qml/UserMetricsTest/MetricInfo.h'
404--- tests/unit/qml/UserMetricsTest/MetricInfo.h 2013-09-24 08:13:01 +0000
405+++ tests/unit/qml/UserMetricsTest/MetricInfo.h 2013-10-02 09:46:27 +0000
406@@ -26,10 +26,13 @@
407 Q_PROPERTY(QString format READ format NOTIFY formatChanged)
408 Q_PROPERTY(QString emptyFormat READ emptyFormat NOTIFY emptyFormatChanged)
409 Q_PROPERTY(QString domain READ domain NOTIFY domainChanged)
410+Q_PROPERTY(double minimum READ minimum NOTIFY minimumChanged)
411+Q_PROPERTY(double maximum READ maximum NOTIFY maximumChanged)
412
413 public:
414 explicit MetricInfo(QString name, QString format, QString emptyFormat,
415- QString domain, QObject *parent = 0);
416+ QString domain, double minimum, double maximum,
417+ QObject *parent = 0);
418
419 virtual ~MetricInfo();
420
421@@ -42,6 +45,10 @@
422
423 QString domain() const;
424
425+ double minimum() const;
426+
427+ double maximum() const;
428+
429 Q_SIGNALS:
430 void nameChanged();
431
432@@ -51,6 +58,10 @@
433
434 void domainChanged();
435
436+ void minimumChanged();
437+
438+ void maximumChanged();
439+
440 private:
441 QString m_name;
442
443@@ -60,6 +71,10 @@
444
445 QString m_domain;
446
447+ double m_minimum;
448+
449+ double m_maximum;
450+
451 };
452
453 #endif // MODULES_USERMETRICSTEST_METRICINFO_H
454
455=== modified file 'tests/unit/qml/UserMetricsTest/TestPlugin.cpp'
456--- tests/unit/qml/UserMetricsTest/TestPlugin.cpp 2013-09-24 08:13:01 +0000
457+++ tests/unit/qml/UserMetricsTest/TestPlugin.cpp 2013-10-02 09:46:27 +0000
458@@ -16,7 +16,6 @@
459
460 #include <QtQuick/QtQuick>
461 #include <TestPlugin.h>
462-#include <DBusQuery.h>
463 #include <MetricInfo.h>
464
465 void Components::registerTypes(const char *uri) {
466@@ -27,6 +26,7 @@
467 }
468
469 void Components::initializeEngine(QQmlEngine *engine, const char *uri) {
470+ m_dbusQuery.reset(new DBusQuery());
471 QQmlExtensionPlugin::initializeEngine(engine, uri);
472- engine->rootContext()->setContextProperty("dbusQuery", new DBusQuery(this));
473+ engine->rootContext()->setContextProperty("dbusQuery", m_dbusQuery.data());
474 }
475
476=== modified file 'tests/unit/qml/UserMetricsTest/TestPlugin.h'
477--- tests/unit/qml/UserMetricsTest/TestPlugin.h 2013-09-23 14:32:44 +0000
478+++ tests/unit/qml/UserMetricsTest/TestPlugin.h 2013-10-02 09:46:27 +0000
479@@ -19,6 +19,7 @@
480
481 #include <QtQml/QQmlExtensionPlugin>
482 #include <QtQml/QQmlEngine>
483+#include <DBusQuery.h>
484
485 class Components : public QQmlExtensionPlugin
486 {
487@@ -28,6 +29,9 @@
488 public:
489 void registerTypes(const char *uri);
490 void initializeEngine(QQmlEngine *engine, const char *uri);
491+
492+protected:
493+ QScopedPointer<DBusQuery> m_dbusQuery;
494 };
495
496 #endif // MODULES_USERMETRICSTEST_TESTPLUGIN_H
497
498=== modified file 'tests/unit/qml/UserMetricsTest/qmldir'
499--- tests/unit/qml/UserMetricsTest/qmldir 2013-09-18 15:13:02 +0000
500+++ tests/unit/qml/UserMetricsTest/qmldir 2013-10-02 09:46:27 +0000
501@@ -1,1 +1,2 @@
502+module UserMetricsTest
503 plugin usermetrics-qml-test
504
505=== modified file 'tests/unit/qml/tst_Metrics.qml'
506--- tests/unit/qml/tst_Metrics.qml 2013-09-23 14:44:47 +0000
507+++ tests/unit/qml/tst_Metrics.qml 2013-10-02 09:46:27 +0000
508@@ -26,6 +26,7 @@
509 property string originalFormat: "Test Metric"
510 property string originalEmptyFormat: "Nope, no data"
511 property string originalDomain: "test-domain"
512+ property double originalMinimum: 0.0
513
514 Metric {
515 id: metric
516@@ -33,6 +34,7 @@
517 format: originalFormat
518 emptyFormat: originalEmptyFormat
519 domain: originalDomain
520+ minimum: originalMinimum
521 }
522
523 function test_metric() {
524@@ -42,6 +44,14 @@
525 compare(info.format, originalFormat, "Metric format was not set properly");
526 compare(info.emptyFormat, originalEmptyFormat, "Metric emptyFormat was not set properly");
527 compare(info.domain, originalDomain, "Metric domain was not set properly");
528+ compare(info.minimum, originalMinimum, "Metric minimum was not set properly");
529+ compare(info.maximum, NaN, "Metric maximum was not set properly");
530+
531+ metric.minimum = 0.0
532+ metric.maximum = 10.0
533+ info = dbusQuery.queryMetricInfo(1);
534+ compare(info.minimum, 0.0, "Metric minimum was not set properly");
535+ compare(info.maximum, 10.0, "Metric maximum was not set properly");
536
537 // Test update and increment with integers and floating point data
538 metric.update(0);

Subscribers

People subscribed via source and target branches

to all changes: