diff options
author | Thomas McGuire <thomas.mcguire.qnx@kdab.com> | 2013-01-08 16:38:36 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-01-23 18:32:24 +0100 |
commit | bbf9a9f61a18ccb478cbca414d85ed531f078966 (patch) | |
tree | 3e58f1505f0e04e97426f52a3a1832074e48e08e /src/sensors | |
parent | 33edd92343082ab5d59e09fff049b6b74c40720e (diff) |
Add the QML classes to the sensor template script
Change-Id: I373a88ee3116d6ad9c389e762478742af38cb949
Reviewed-by: Lorn Potter <lorn.potter@jollamobile.com>
Diffstat (limited to 'src/sensors')
-rwxr-xr-x | src/sensors/make_sensor.pl | 174 |
1 files changed, 174 insertions, 0 deletions
diff --git a/src/sensors/make_sensor.pl b/src/sensors/make_sensor.pl index a2d5bf8c..4d35739f 100755 --- a/src/sensors/make_sensor.pl +++ b/src/sensors/make_sensor.pl @@ -52,6 +52,15 @@ $sensorbase =~ s/Sensor$//; my $reading = $sensorbase.'Reading'; my $reading_private = $reading.'Private'; my $filter = $sensorbase.'Filter'; +my $no_q_sensor = $sensor; +$no_q_sensor =~ s/^.//; +my $qmlsensor = "Qml".$no_q_sensor; +my $qmlsensorbase = $qmlsensor; +$qmlsensorbase =~ s/Sensor$//; +my $qmlreading = $qmlsensorbase."Reading"; +my $no_q_reading = $no_q_sensor; +$no_q_reading =~ s/Sensor$//; +$no_q_reading = $no_q_reading."Reading"; my $filebase; eval { @@ -61,9 +70,15 @@ if ($@) { $filebase = lc($sensor); } +my $qmlfilebase = $filebase; +$qmlfilebase =~ s/^.//; +$qmlfilebase = "qml".$qmlfilebase; + my $pheader = $filebase."_p.h"; my $header = $filebase.".h"; my $source = $filebase.".cpp"; +my $qmlsource = "../imports/sensors/".$qmlfilebase.".cpp"; +my $qmlheader = "../imports/sensors/".$qmlfilebase.".h"; my $pguard = uc($pheader); $pguard =~ s/\./_/g; @@ -71,6 +86,165 @@ $pguard =~ s/\./_/g; my $guard = uc($header); $guard =~ s/\./_/g; +my $qmlguard = "QML".uc($no_q_sensor)."_H"; + +if (! -e $qmlheader) { + print "Creating $qmlheader\n"; + open OUT, ">$qmlheader" or die $!; + print OUT ' +#ifndef '.$qmlguard.' +#define '.$qmlguard.' + +#include "qmlsensor.h" + +QT_BEGIN_HEADER +QT_BEGIN_NAMESPACE + +class '.$sensor.'; + +class '.$qmlsensor.' : public QmlSensor +{ + Q_OBJECT +public: + explicit '.$qmlsensor.'(QObject *parent = 0); + ~'.$qmlsensor.'(); + +private: + QSensor *sensor() const Q_DECL_OVERRIDE; + QmlSensorReading *createReading() const Q_DECL_OVERRIDE; + + '.$sensor.' *m_sensor; +}; + +class '.$qmlreading.' : public QmlSensorReading +{ + Q_OBJECT + Q_PROPERTY(qreal prop1 READ prop1 NOTIFY prop1Changed) +public: + explicit '.$qmlreading.'('.$sensor.' *sensor); + ~'.$qmlreading.'(); + + qreal prop1() const; + +Q_SIGNALS: + void prop1Changed(); + +private: + QSensorReading *reading() const Q_DECL_OVERRIDE; + void readingUpdate() Q_DECL_OVERRIDE; + + '.$sensor.' *m_sensor; + qreal m_prop1; +}; + +QT_END_NAMESPACE +QT_END_HEADER +#endif +'; + close OUT; +} + +if (! -e $qmlsource) { + print "Creating $qmlsource\n"; + open OUT, ">$qmlsource" or die $!; + print OUT ' +#include "qml'.lc($no_q_sensor).'.h" +#include <'.$sensor.'> + +/*! + \qmltype '.$no_q_sensor.' + \instantiates '.$qmlsensor.' + \ingroup qml-sensors_type + \inqmlmodule QtSensors 5.0 + \since QtSensors 5.[INSERT VERSION HERE] + \inherits Sensor + \brief The '.$no_q_sensor.' element reports on fubbleness. + + The '.$no_q_sensor.' element reports on fubbleness. + + This element wraps the '.$sensor.' class. Please see the documentation for + '.$sensor.' for details. + + \sa '.$no_q_reading.' +*/ + +'.$qmlsensor.'::'.$qmlsensor.'(QObject *parent) + : QmlSensor(parent) + , m_sensor(new '.$sensor.'(this)) +{ +} + +'.$qmlsensor.'::~'.$qmlsensor.'() +{ +} + +QmlSensorReading *'.$qmlsensor.'::createReading() const +{ + return new '.$qmlreading.'(m_sensor); +} + +QSensor *'.$qmlsensor.'::sensor() const +{ + return m_sensor; +} + +/*! + \qmltype '.$no_q_reading.' + \instantiates '.$qmlreading.' + \ingroup qml-sensors_reading + \inqmlmodule QtSensors 5.0 + \since QtSensors 5.[INSERT VERSION HERE] + \inherits SensorReading + \brief The '.$no_q_reading.' element holds the most recent '.$no_q_sensor.' reading. + + The '.$no_q_reading.' element holds the most recent '.$no_q_sensor.' reading. + + This element wraps the '.$reading.' class. Please see the documentation for + '.$reading.' for details. + + This element cannot be directly created. +*/ + +'.$qmlreading.'::'.$qmlreading.'('.$sensor.' *sensor) + : QmlSensorReading(sensor) + , m_sensor(sensor) + , m_prop1(0) +{ +} + +'.$qmlreading.'::~'.$qmlreading.'() +{ +} + +/*! + \qmlproperty qreal '.$no_q_reading.'::prop1 + This property holds the fubble of the device. + + Please see '.$reading.'::prop1 for information about this property. +*/ + +qreal '.$qmlreading.'::prop1() const +{ + return m_prop1; +} + +QSensorReading *'.$qmlreading.'::reading() const +{ + return m_sensor->reading(); +} + +void '.$qmlreading.'::readingUpdate() +{ + qreal prop1 = m_sensor->reading()->prop1(); + if (m_prop1 != prop1) { + m_prop1 = prop1; + Q_EMIT prop1Changed(); + } +} +'; + close OUT; +} + if (! -e $pheader) { print "Creating $pheader\n"; open OUT, ">$pheader" or die $!; |