diff options
13 files changed, 171 insertions, 208 deletions
diff --git a/examples/vehiclefunctions/climate_qml/main.qml b/examples/vehiclefunctions/climate_qml/main.qml index 2ac10f0..7776b01 100644 --- a/examples/vehiclefunctions/climate_qml/main.qml +++ b/examples/vehiclefunctions/climate_qml/main.qml @@ -81,48 +81,39 @@ ApplicationWindow { ColumnLayout { anchors.fill: parent - ExclusiveGroup { id: group } - RadioButton { - text: "Floor Panel" - exclusiveGroup: group - checked: climateControl.airflowDirection.value === ClimateControl.FloorPanel - enabled: climateControl.airflowDirection.availableValues.indexOf(ClimateControl.FloorPanel) !== -1 + CheckBox { + text: "Windshield" + checked: climateControl.airflowDirections.value & ClimateControl.Windshield + enabled: climateControl.airflowDirections.availableValues.indexOf(ClimateControl.Windshield) !== -1 onClicked: { if (checked) - climateControl.airflowDirection.value = ClimateControl.FloorPanel + climateControl.airflowDirections.value |= ClimateControl.Windshield + else + climateControl.airflowDirections.value &= ~ClimateControl.Windshield } } - RadioButton { - text: "Floor Duct" - exclusiveGroup: group - checked: climateControl.airflowDirection.value === ClimateControl.FloorDuct - enabled: climateControl.airflowDirection.availableValues.indexOf(ClimateControl.FloorDuct) !== -1 + CheckBox { + text: "Dashboard" + checked: climateControl.airflowDirections.value & ClimateControl.Dashboard + enabled: climateControl.airflowDirections.availableValues.indexOf(ClimateControl.Dashboard) !== -1 onClicked: { if (checked) - climateControl.airflowDirection.value = ClimateControl.FloorDuct + climateControl.airflowDirections.value |= ClimateControl.Dashboard + else + climateControl.airflowDirections.value &= ~ClimateControl.Dashboard } } - RadioButton { - text: "Bi Level" - exclusiveGroup: group - checked: climateControl.airflowDirection.value === ClimateControl.BiLevel - enabled: climateControl.airflowDirection.availableValues.indexOf(ClimateControl.BiLevel) !== -1 + CheckBox { + text: "Floor" + checked: climateControl.airflowDirections.value & ClimateControl.Floor + enabled: climateControl.airflowDirections.availableValues.indexOf(ClimateControl.Floor) !== -1 onClicked: { if (checked) - climateControl.airflowDirection.value = ClimateControl.BiLevel - } - } - - RadioButton { - text: "Defrost Floor" - exclusiveGroup: group - checked: climateControl.airflowDirection.value === ClimateControl.DefrostFloor - enabled: climateControl.airflowDirection.availableValues.indexOf(ClimateControl.DefrostFloor) !== -1 - onClicked: { - if (checked) - climateControl.airflowDirection.value = ClimateControl.DefrostFloor + climateControl.airflowDirections.value |= ClimateControl.Floor + else + climateControl.airflowDirections.value &= ~ClimateControl.Floor } } } diff --git a/examples/vehiclefunctions/climate_widget/mainwindow.cpp b/examples/vehiclefunctions/climate_widget/mainwindow.cpp index af43331..66ac611 100644 --- a/examples/vehiclefunctions/climate_widget/mainwindow.cpp +++ b/examples/vehiclefunctions/climate_widget/mainwindow.cpp @@ -60,15 +60,15 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow), - m_radioButtonGroup(new QButtonGroup(this)), + m_buttonGroup(new QButtonGroup(this)), m_climateControl(0) { ui->setupUi(this); - m_radioButtonGroup->addButton(ui->rb_BiLevel); - m_radioButtonGroup->addButton(ui->rb_DefrostFloor); - m_radioButtonGroup->addButton(ui->rb_FloorDuct); - m_radioButtonGroup->addButton(ui->rb_FloorPanel); + m_buttonGroup->setExclusive(false); + m_buttonGroup->addButton(ui->cb_windshield); + m_buttonGroup->addButton(ui->cb_dashboard); + m_buttonGroup->addButton(ui->cb_floor); //![1] m_climateControl = new QtIVIClimateControl(QString(), this); @@ -80,13 +80,14 @@ MainWindow::MainWindow(QWidget *parent) : //![2] //Air Flow Direction - setupFlowDirectionRadioButtons(m_climateControl->airflowDirection()); - setupFlowDirectionAttribute(m_climateControl->airflowDirectionAttribute()); - connect(m_radioButtonGroup, static_cast<void (QButtonGroup::*)(QAbstractButton *, bool)>(&QButtonGroup::buttonToggled), + setupFlowDirectionRadioButtons(m_climateControl->airflowDirections()); + setupFlowDirectionAttribute(m_climateControl->airflowDirectionsAttribute()); + connect(m_buttonGroup, static_cast<void (QButtonGroup::*)(QAbstractButton *, bool)>(&QButtonGroup::buttonToggled), this, &MainWindow::onFlowDirectionButtonToggled); - connect(m_climateControl, &QtIVIClimateControl::airflowDirectionChanged, + + connect(m_climateControl, &QtIVIClimateControl::airflowDirectionsChanged, this, &MainWindow::setupFlowDirectionRadioButtons); - connect(m_climateControl, &QtIVIClimateControl::airflowDirectionAttributeChanged, + connect(m_climateControl, &QtIVIClimateControl::airflowDirectionsAttributeChanged, this, &MainWindow::setupFlowDirectionAttribute); //Air Condition @@ -142,46 +143,34 @@ void MainWindow::onAirConditioningAttributeChanged(const QtIVIPropertyAttribute< } //![3] -void MainWindow::setupFlowDirectionRadioButtons(QtIVIClimateControl::AirflowDirection direction) +void MainWindow::setupFlowDirectionRadioButtons(QtIVIClimateControl::AirflowDirections direction) { - QAbstractButton* button = ui->rb_BiLevel; - - if (direction == QtIVIClimateControl::BiLevel) - button = ui->rb_BiLevel; - else if (direction == QtIVIClimateControl::DefrostFloor) - button = ui->rb_DefrostFloor; - else if (direction == QtIVIClimateControl::FloorDuct) - button = ui->rb_FloorDuct; - else if (direction == QtIVIClimateControl::FloorPanel) - button = ui->rb_FloorPanel; - - button->setChecked(true); + ui->cb_windshield->setChecked(direction.testFlag(QtIVIClimateControl::Windshield)); + ui->cb_dashboard->setChecked(direction.testFlag(QtIVIClimateControl::Dashboard)); + ui->cb_floor->setChecked(direction.testFlag(QtIVIClimateControl::Floor)); } -void MainWindow::setupFlowDirectionAttribute(const QtIVIPropertyAttribute<QtIVIClimateControl::AirflowDirection> & attribute) +void MainWindow::setupFlowDirectionAttribute(const QtIVIPropertyAttribute<QtIVIClimateControl::AirflowDirections> & attribute) { - ui->rb_BiLevel->setEnabled(attribute.availableValues().contains(QtIVIClimateControl::BiLevel)); - ui->rb_DefrostFloor->setEnabled(attribute.availableValues().contains(QtIVIClimateControl::DefrostFloor)); - ui->rb_FloorDuct->setEnabled(attribute.availableValues().contains(QtIVIClimateControl::FloorDuct)); - ui->rb_FloorPanel->setEnabled(attribute.availableValues().contains(QtIVIClimateControl::FloorPanel)); + ui->cb_windshield->setEnabled(attribute.availableValues().contains(QtIVIClimateControl::Windshield)); + ui->cb_dashboard->setEnabled(attribute.availableValues().contains(QtIVIClimateControl::Dashboard)); + ui->cb_floor->setEnabled(attribute.availableValues().contains(QtIVIClimateControl::Floor)); } void MainWindow::onFlowDirectionButtonToggled(QAbstractButton *button, bool checked) { - if (!checked) - return; + Q_UNUSED(button) + Q_UNUSED(checked) - QtIVIClimateControl::AirflowDirection direction = QtIVIClimateControl::BiLevel; + QtIVIClimateControl::AirflowDirections direction; - if (button == ui->rb_BiLevel) - direction = QtIVIClimateControl::BiLevel; - else if (button == ui->rb_DefrostFloor) - direction = QtIVIClimateControl::DefrostFloor; - else if (button == ui->rb_FloorDuct) - direction = QtIVIClimateControl::FloorDuct; - else if (button == ui->rb_FloorPanel) - direction = QtIVIClimateControl::FloorPanel; + if (ui->cb_windshield->isChecked()) + direction |= QtIVIClimateControl::Windshield; + if (ui->cb_dashboard->isChecked()) + direction |= QtIVIClimateControl::Dashboard; + if (ui->cb_floor->isChecked()) + direction |= QtIVIClimateControl::Floor; - m_climateControl->setAirflowDirection(direction); + m_climateControl->setAirflowDirections(direction); } //![3] diff --git a/examples/vehiclefunctions/climate_widget/mainwindow.h b/examples/vehiclefunctions/climate_widget/mainwindow.h index af17946..65d936a 100644 --- a/examples/vehiclefunctions/climate_widget/mainwindow.h +++ b/examples/vehiclefunctions/climate_widget/mainwindow.h @@ -77,13 +77,13 @@ private slots: void onAirRecirculationAttributeChanged(const QtIVIPropertyAttribute<bool> &attribute); void onHeaterAttributeChanged(const QtIVIPropertyAttribute<bool> &attribute); void onAirConditioningAttributeChanged(const QtIVIPropertyAttribute<bool> &attribute); - void setupFlowDirectionRadioButtons(QtIVIClimateControl::AirflowDirection direction); - void setupFlowDirectionAttribute(const QtIVIPropertyAttribute<QtIVIClimateControl::AirflowDirection> &attribute); + void setupFlowDirectionRadioButtons(QtIVIClimateControl::AirflowDirections direction); + void setupFlowDirectionAttribute(const QtIVIPropertyAttribute<QtIVIClimateControl::AirflowDirections> &attribute); void onFlowDirectionButtonToggled(QAbstractButton * button, bool checked); private: Ui::MainWindow *ui; - QButtonGroup *m_radioButtonGroup; + QButtonGroup *m_buttonGroup; QtIVIClimateControl* m_climateControl; }; diff --git a/examples/vehiclefunctions/climate_widget/mainwindow.ui b/examples/vehiclefunctions/climate_widget/mainwindow.ui index 88e7331..7f53ae2 100644 --- a/examples/vehiclefunctions/climate_widget/mainwindow.ui +++ b/examples/vehiclefunctions/climate_widget/mainwindow.ui @@ -7,7 +7,7 @@ <x>0</x> <y>0</y> <width>384</width> - <height>236</height> + <height>238</height> </rect> </property> <property name="windowTitle"> @@ -22,30 +22,23 @@ </property> <layout class="QVBoxLayout" name="verticalLayout"> <item> - <widget class="QRadioButton" name="rb_FloorPanel"> + <widget class="QCheckBox" name="cb_windshield"> <property name="text"> - <string>Floor Panel</string> + <string>Windshield</string> </property> </widget> </item> <item> - <widget class="QRadioButton" name="rb_FloorDuct"> + <widget class="QCheckBox" name="cb_dashboard"> <property name="text"> - <string>Floor Duct</string> + <string>Dashboard</string> </property> </widget> </item> <item> - <widget class="QRadioButton" name="rb_BiLevel"> + <widget class="QCheckBox" name="cb_floor"> <property name="text"> - <string>Bi &Level</string> - </property> - </widget> - </item> - <item> - <widget class="QRadioButton" name="rb_DefrostFloor"> - <property name="text"> - <string>Defrost Floor</string> + <string>Floor</string> </property> </widget> </item> diff --git a/src/ivivehiclefunctions/doc/src/examples-climate_qml.qdoc b/src/ivivehiclefunctions/doc/src/examples-climate_qml.qdoc index 4ac2690..aa9a585 100644 --- a/src/ivivehiclefunctions/doc/src/examples-climate_qml.qdoc +++ b/src/ivivehiclefunctions/doc/src/examples-climate_qml.qdoc @@ -72,8 +72,7 @@ differentiate between the zones. A \e {general zone} can be used for settings that are applied to all zones. - General ClimateControl attribute values are handled in radio buttons and - check boxes as follows: + General ClimateControl attribute values are handled in check boxes as follows: \snippet climate_qml/main.qml 2 For the zoned ClimateControl, the \l [QML] {AbstractZonedFeature::}{zoneAt} diff --git a/src/ivivehiclefunctions/qtiviclimatecontrol.cpp b/src/ivivehiclefunctions/qtiviclimatecontrol.cpp index 475520a..07028c9 100644 --- a/src/ivivehiclefunctions/qtiviclimatecontrol.cpp +++ b/src/ivivehiclefunctions/qtiviclimatecontrol.cpp @@ -46,7 +46,7 @@ QtIVIClimateControlPrivate::QtIVIClimateControlPrivate(const QString &interface, const QString &zone, QtIVIClimateControl *parent) : QtIVIAbstractZonedFeaturePrivate(interface, zone, parent) - , m_airflowDirection(QtIVIClimateControl::None) + , m_airflowDirections(0) , m_airConditioning(false) , m_heater(false) , m_airRecirculation(false) @@ -62,12 +62,12 @@ QtIVIClimateControlPrivate::QtIVIClimateControlPrivate(const QString &interface, void QtIVIClimateControlPrivate::init() { Q_Q(QtIVIClimateControl); - m_airFlowDirectionProperty = QtIVIPropertyFactory<QtIVIClimateControl::AirflowDirection>::create(q, - &QtIVIClimateControl::airflowDirectionAttribute, - &QtIVIClimateControl::airflowDirectionAttributeChanged, - &QtIVIClimateControl::airflowDirection, - &QtIVIClimateControl::airflowDirectionChanged, - &QtIVIClimateControl::setAirflowDirection); + m_airFlowDirectionProperty = QtIVIPropertyFactory<QtIVIClimateControl::AirflowDirections>::create(q, + &QtIVIClimateControl::airflowDirectionsAttribute, + &QtIVIClimateControl::airflowDirectionsAttributeChanged, + &QtIVIClimateControl::airflowDirections, + &QtIVIClimateControl::airflowDirectionsChanged, + &QtIVIClimateControl::setAirflowDirections); m_airConditioningProperty = QtIVIPropertyFactory<bool>::create(q, &QtIVIClimateControl::airConditioningAttribute, &QtIVIClimateControl::airConditioningAttributeChanged, @@ -130,7 +130,7 @@ void QtIVIClimateControlPrivate::clearToDefaults() m_fanSpeedLevel = 0; } -void QtIVIClimateControlPrivate::onAirflowDirectionChanged(QtIVIClimateControl::AirflowDirection value, const QString &zone) +void QtIVIClimateControlPrivate::onAirflowDirectionsChanged(QtIVIClimateControl::AirflowDirections value, const QString &zone) { Q_Q(QtIVIClimateControl); QtIVIClimateControl *f = qobject_cast<QtIVIClimateControl*>(q->zoneAt(zone)); @@ -138,11 +138,11 @@ void QtIVIClimateControlPrivate::onAirflowDirectionChanged(QtIVIClimateControl:: f = q; if (f->zone() != zone) return; - f->d_func()->m_airflowDirection = value; - emit f->airflowDirectionChanged(value); + f->d_func()->m_airflowDirections = value; + emit f->airflowDirectionsChanged(value); } -void QtIVIClimateControlPrivate::onAirflowDirectionAttributeChanged(const QtIVIPropertyAttribute<QtIVIClimateControl::AirflowDirection> &airflowDirectionAttribute, const QString &zone) +void QtIVIClimateControlPrivate::onAirflowDirectionsAttributeChanged(const QtIVIPropertyAttribute<QtIVIClimateControl::AirflowDirections> &airflowDirectionsAttribute, const QString &zone) { Q_Q(QtIVIClimateControl); QtIVIClimateControl *f = qobject_cast<QtIVIClimateControl*>(q->zoneAt(zone)); @@ -150,8 +150,8 @@ void QtIVIClimateControlPrivate::onAirflowDirectionAttributeChanged(const QtIVIP f = q; if (f->zone() != zone) return; - f->d_func()->m_airflowDirectionAttribute = airflowDirectionAttribute; - emit f->airflowDirectionAttributeChanged(airflowDirectionAttribute); + f->d_func()->m_airflowDirectionsAttribute = airflowDirectionsAttribute; + emit f->airflowDirectionsAttributeChanged(airflowDirectionsAttribute); } void QtIVIClimateControlPrivate::onAirConditioningEnabledChanged(bool enabled, const QString &zone) @@ -376,17 +376,13 @@ QtIVIClimateControlBackendInterface *QtIVIClimateControlPrivate::climateControlB */ /*! - \enum QtIVIClimateControl::AirflowDirection - \value None - AirflowDirection is not initialized - \value FloorPanel - Direct airflow along the floor panel. - \value FloorDuct - Direct airflow through the floor duct. - \value BiLevel - Direct airflow at both levels. - \value DefrostFloor - Direct airflow to defrost. + \enum QtIVIClimateControl::AirflowDirections + \value Windshield + Direct airflow along the windshield. + \value Dashboard + Direct airflow through the dashboard. + \value Floor + Direct airflow to the floor. */ /*! @@ -402,7 +398,7 @@ QtIVIClimateControl::QtIVIClimateControl(const QString &zone, QObject* parent) Q_D(QtIVIClimateControl); d->init(); qRegisterMetaType<QtIVIPropertyAttribute<int>>(); - qRegisterMetaType<QtIVIPropertyAttribute<QtIVIClimateControl::AirflowDirection>>(); + qRegisterMetaType<QtIVIPropertyAttribute<QtIVIClimateControl::AirflowDirections>>(); qRegisterMetaType<QtIVIPropertyAttribute<bool>>(); } @@ -442,10 +438,10 @@ void QtIVIClimateControl::connectToServiceObject(QtIVIServiceObject *serviceObje d, &QtIVIClimateControlPrivate::onFanSpeedLevelChanged); QObjectPrivate::connect(backend, &QtIVIClimateControlBackendInterface::fanSpeedLevelAttributeChanged, d, &QtIVIClimateControlPrivate::onFanSpeedLevelAttributeChanged); - QObjectPrivate::connect(backend, &QtIVIClimateControlBackendInterface::airflowDirectionChanged, - d, &QtIVIClimateControlPrivate::onAirflowDirectionChanged); - QObjectPrivate::connect(backend, &QtIVIClimateControlBackendInterface::airflowDirectionAttributeChanged, - d, &QtIVIClimateControlPrivate::onAirflowDirectionAttributeChanged); + QObjectPrivate::connect(backend, &QtIVIClimateControlBackendInterface::airflowDirectionsChanged, + d, &QtIVIClimateControlPrivate::onAirflowDirectionsChanged); + QObjectPrivate::connect(backend, &QtIVIClimateControlBackendInterface::airflowDirectionsAttributeChanged, + d, &QtIVIClimateControlPrivate::onAirflowDirectionsAttributeChanged); QObjectPrivate::connect(backend, &QtIVIClimateControlBackendInterface::airConditioningEnabledChanged, d, &QtIVIClimateControlPrivate::onAirConditioningEnabledChanged); QObjectPrivate::connect(backend, &QtIVIClimateControlBackendInterface::airConditioningAttributeChanged, @@ -527,52 +523,48 @@ QtIVIProperty *QtIVIClimateControl::airConditioningProperty() const } /*! - \qmlqtivipropertyEnum {QtIVIVehicleFunctions::ClimateControl::airflowDirection} + \qmlqtivipropertyEnum {QtIVIVehicleFunctions::ClimateControl::airflowDirections} - \e value holds the airflow direction. + \e value holds the airflow directions. Available values are: - \value None - AirflowDirection is not initialized. - \value FloorPanel - Direct airflow along the floor panel. - \value FloorDuct - Direct airflow through the floor duct. - \value BiLevel - Direct airflow at both levels. - \value DefrostFloor - Direct airflow to defrost. + \value Windshield + Direct airflow along the windshield. + \value Dashboard + Direct airflow through the dashboard. + \value Floor + Direct airflow to the floor. */ /*! - \property QtIVIClimateControl::airflowDirection + \property QtIVIClimateControl::airflowDirections - Holds a QtIVIProperty of type \e QtIVIClimateControl::AirflowDirection where the QtIVIProperty::value() function returns the current air flow direction. + Holds a QtIVIProperty of type \e QtIVIClimateControl::AirflowDirections where the QtIVIProperty::value() function returns the current air flow directions. \sa AttributeSystem - \sa airflowDirection() setAirflowDirection() airflowDirectionAttribute() + \sa airflowDirections() setAirflowDirections() airflowDirectionsAttribute() */ /*! * Returns the current air flow direction. * - * \sa setAirflowDirection() airflowDirectionChanged() airflowDirectionAttribute() + * \sa setAirflowDirections() airflowDirectionsChanged() airflowDirectionsAttribute() */ -QtIVIClimateControl::AirflowDirection QtIVIClimateControl::airflowDirection() const +QtIVIClimateControl::AirflowDirections QtIVIClimateControl::airflowDirections() const { Q_D(const QtIVIClimateControl); - return d->m_airflowDirection; + return d->m_airflowDirections; } /*! * Returns the attribute defining the boundaries and availability of the air flow property * - * \sa setAirflowDirection() airflowDirection() airflowDirectionChanged() + * \sa setAirflowDirections() airflowDirections() airflowDirectionsChanged() */ -QtIVIPropertyAttribute<QtIVIClimateControl::AirflowDirection> QtIVIClimateControl::airflowDirectionAttribute() const +QtIVIPropertyAttribute<QtIVIClimateControl::AirflowDirections> QtIVIClimateControl::airflowDirectionsAttribute() const { Q_D(const QtIVIClimateControl); - return d->m_airflowDirectionAttribute; + return d->m_airflowDirectionsAttribute; } -QtIVIProperty *QtIVIClimateControl::airflowDirectionProperty() const +QtIVIProperty *QtIVIClimateControl::airflowDirectionsProperty() const { Q_D(const QtIVIClimateControl); return d->m_airFlowDirectionProperty; @@ -889,13 +881,13 @@ void QtIVIClimateControl::setAirConditioningEnabled(bool enabled) /*! * Sets the air flow direction to \a direction. * - * \sa airflowDirection() airflowDirectionChanged() airflowDirectionAttribute() + * \sa airflowDirections() airflowDirectionsChanged() airflowDirectionsAttribute() */ -void QtIVIClimateControl::setAirflowDirection(QtIVIClimateControl::AirflowDirection direction) +void QtIVIClimateControl::setAirflowDirections(QtIVIClimateControl::AirflowDirections direction) { Q_D(QtIVIClimateControl); if (QtIVIClimateControlBackendInterface* backend = d->climateControlBackend()) - backend->setAirflowDirection(direction, zone()); + backend->setAirflowDirections(direction, zone()); } /*! @@ -983,18 +975,18 @@ void QtIVIClimateControl::setSeatHeater(int value) } /*! - * \fn void QtIVIClimateControl::airflowDirectionChanged(QtIVIClimateControl::AirflowDirection value) + * \fn void QtIVIClimateControl::airflowDirectionsChanged(QtIVIClimateControl::AirflowDirections value) * - * This signal is emitted whenever the air flow direction changes. The new flow direction is passed as \a value. + * This signal is emitted whenever the air flow directions change. The new flow directions are passed as \a value. * - * \sa airflowDirection() setAirflowDirection() airflowDirectionAttribute() + * \sa airflowDirections() setAirflowDirections() airflowDirectionsAttribute() */ /*! - * \fn void QtIVIClimateControl::airflowDirectionAttributeChanged(const QtIVIPropertyAttribute<QtIVIClimateControl::AirflowDirection> &attribute); + * \fn void QtIVIClimateControl::airflowDirectionsAttributeChanged(const QtIVIPropertyAttribute<QtIVIClimateControl::AirflowDirections> &attribute); * - * This signal is emitted whenever the attribute for the airflowDirection property changes. The new attribute is passed as \a attribute. + * This signal is emitted whenever the attribute for the airflowDirections property changes. The new attribute is passed as \a attribute. * - * \sa airflowDirectionAttribute() airflowDirection() + * \sa airflowDirectionsAttribute() airflowDirections() */ /*! * \fn void QtIVIClimateControl::airConditioningEnabledChanged(bool enabled); diff --git a/src/ivivehiclefunctions/qtiviclimatecontrol.h b/src/ivivehiclefunctions/qtiviclimatecontrol.h index 0157d5f..16d9017 100644 --- a/src/ivivehiclefunctions/qtiviclimatecontrol.h +++ b/src/ivivehiclefunctions/qtiviclimatecontrol.h @@ -57,7 +57,7 @@ class Q_QTIVIVEHICLEFUNCTIONS_EXPORT QtIVIClimateControl : public QtIVIAbstractZ { Q_OBJECT Q_PROPERTY(QtIVIProperty* airConditioning READ airConditioningProperty CONSTANT) - Q_PROPERTY(QtIVIProperty* airflowDirection READ airflowDirectionProperty CONSTANT) + Q_PROPERTY(QtIVIProperty* airflowDirections READ airflowDirectionsProperty CONSTANT) Q_PROPERTY(QtIVIProperty* heater READ heaterProperty CONSTANT) Q_PROPERTY(QtIVIProperty* airRecirculation READ airRecirculationProperty CONSTANT) Q_PROPERTY(QtIVIProperty* fanSpeedLevel READ fanSpeedLevelProperty CONSTANT) @@ -68,13 +68,12 @@ class Q_QTIVIVEHICLEFUNCTIONS_EXPORT QtIVIClimateControl : public QtIVIAbstractZ public: enum AirflowDirection { - None, - FloorPanel, - FloorDuct, - BiLevel, - DefrostFloor + Windshield = 0x1, + Dashboard = 0x2, + Floor = 0x4 }; - Q_ENUM(AirflowDirection) + Q_DECLARE_FLAGS(AirflowDirections, AirflowDirection) + Q_FLAG(AirflowDirections) QtIVIClimateControl(const QString &zone=QString(), QObject* parent=0); ~QtIVIClimateControl(); @@ -85,9 +84,9 @@ public: bool isAirConditioningEnabled() const; QtIVIPropertyAttribute<bool> airConditioningAttribute() const; QtIVIProperty* airConditioningProperty() const; - QtIVIClimateControl::AirflowDirection airflowDirection() const; - QtIVIPropertyAttribute<QtIVIClimateControl::AirflowDirection> airflowDirectionAttribute() const; - QtIVIProperty* airflowDirectionProperty() const; + QtIVIClimateControl::AirflowDirections airflowDirections() const; + QtIVIPropertyAttribute<QtIVIClimateControl::AirflowDirections> airflowDirectionsAttribute() const; + QtIVIProperty* airflowDirectionsProperty() const; bool isHeaterEnabled() const; QtIVIPropertyAttribute<bool> heaterAttribute() const; QtIVIProperty* heaterProperty() const; @@ -112,7 +111,7 @@ public: public Q_SLOTS: void setAirConditioningEnabled(bool enabled); - void setAirflowDirection(QtIVIClimateControl::AirflowDirection value); + void setAirflowDirections(QtIVIClimateControl::AirflowDirections value); void setHeaterEnabled(bool enabled); void setAirRecirculationEnabled(bool enabled); void setSteeringWheelHeater(int value); @@ -122,8 +121,8 @@ public Q_SLOTS: void setSeatHeater(int seatHeater); Q_SIGNALS: - void airflowDirectionChanged(QtIVIClimateControl::AirflowDirection value); - void airflowDirectionAttributeChanged(const QtIVIPropertyAttribute<QtIVIClimateControl::AirflowDirection> &attribute); + void airflowDirectionsChanged(QtIVIClimateControl::AirflowDirections value); + void airflowDirectionsAttributeChanged(const QtIVIPropertyAttribute<QtIVIClimateControl::AirflowDirections> &attribute); void airConditioningEnabledChanged(bool enabled); void airConditioningAttributeChanged(const QtIVIPropertyAttribute<bool> &attribute); void heaterEnabledChanged(bool enabled); @@ -147,8 +146,8 @@ protected: private: Q_DECLARE_PRIVATE(QtIVIClimateControl) - Q_PRIVATE_SLOT(d_func(), void onAirflowDirectionChanged(QtIVIClimateControl::AirflowDirection value, const QString &zone)) - Q_PRIVATE_SLOT(d_func(), void onAirflowDirectionAttributeChanged(const QtIVIPropertyAttribute<QtIVIClimateControl::AirflowDirection> &airflowDirectionAttribute, const QString &zone)) + Q_PRIVATE_SLOT(d_func(), void onAirflowDirectionsChanged(QtIVIClimateControl::AirflowDirections value, const QString &zone)) + Q_PRIVATE_SLOT(d_func(), void onAirflowDirectionsAttributeChanged(const QtIVIPropertyAttribute<QtIVIClimateControl::AirflowDirections> &airflowDirectionsAttribute, const QString &zone)) Q_PRIVATE_SLOT(d_func(), void onAirConditioningEnabledChanged(bool enabled, const QString &zone)) Q_PRIVATE_SLOT(d_func(), void onAirConditioningAttributeChanged(const QtIVIPropertyAttribute<bool> &airConditioningEnabledAttribute, const QString &zone)) Q_PRIVATE_SLOT(d_func(), void onHeaterEnabledChanged(bool enabled, const QString &zone)) @@ -169,7 +168,7 @@ private: QT_END_NAMESPACE -Q_DECLARE_METATYPE(QtIVIClimateControl::AirflowDirection) -Q_DECLARE_METATYPE(QtIVIPropertyAttribute<QtIVIClimateControl::AirflowDirection>) +Q_DECLARE_METATYPE(QtIVIPropertyAttribute<QtIVIClimateControl::AirflowDirections>) +Q_DECLARE_OPERATORS_FOR_FLAGS(QtIVIClimateControl::AirflowDirections) #endif // CLIMATECONTROL_H diff --git a/src/ivivehiclefunctions/qtiviclimatecontrol_p.h b/src/ivivehiclefunctions/qtiviclimatecontrol_p.h index bd19978..8c88162 100644 --- a/src/ivivehiclefunctions/qtiviclimatecontrol_p.h +++ b/src/ivivehiclefunctions/qtiviclimatecontrol_p.h @@ -68,8 +68,8 @@ public: void init(); void clearToDefaults(); - void onAirflowDirectionChanged(QtIVIClimateControl::AirflowDirection value, const QString &zone); - void onAirflowDirectionAttributeChanged(const QtIVIPropertyAttribute<QtIVIClimateControl::AirflowDirection> &airflowDirectionAttribute, const QString &zone); + void onAirflowDirectionsChanged(QtIVIClimateControl::AirflowDirections value, const QString &zone); + void onAirflowDirectionsAttributeChanged(const QtIVIPropertyAttribute<QtIVIClimateControl::AirflowDirections> &airflowDirectionsAttribute, const QString &zone); void onAirConditioningEnabledChanged(bool enabled, const QString &zone); void onAirConditioningAttributeChanged(const QtIVIPropertyAttribute<bool> &airConditioningEnabledAttribute, const QString &zone); void onHeaterEnabledChanged(bool enabled, const QString &zone); @@ -89,8 +89,8 @@ public: QtIVIClimateControlBackendInterface* climateControlBackend(); - QtIVIClimateControl::AirflowDirection m_airflowDirection; - QtIVIPropertyAttribute<QtIVIClimateControl::AirflowDirection> m_airflowDirectionAttribute; + QtIVIClimateControl::AirflowDirections m_airflowDirections; + QtIVIPropertyAttribute<QtIVIClimateControl::AirflowDirections> m_airflowDirectionsAttribute; QtIVIProperty *m_airFlowDirectionProperty; bool m_airConditioning; QtIVIPropertyAttribute<bool> m_airConditioningAttribute; diff --git a/src/ivivehiclefunctions/qtiviclimatecontrolbackendinterface.cpp b/src/ivivehiclefunctions/qtiviclimatecontrolbackendinterface.cpp index 48eab25..dc8bec8 100644 --- a/src/ivivehiclefunctions/qtiviclimatecontrolbackendinterface.cpp +++ b/src/ivivehiclefunctions/qtiviclimatecontrolbackendinterface.cpp @@ -109,14 +109,14 @@ QtIVIClimateControlBackendInterface::QtIVIClimateControlBackendInterface(QObject */ /*! - * \fn virtual void QtIVIClimateControlBackendInterface::setAirflowDirection(QtIVIClimateControl::AirflowDirection, const QString &zone) = 0; + * \fn virtual void QtIVIClimateControlBackendInterface::setAirflowDirections(QtIVIClimateControl::AirflowDirections, const QString &zone) = 0; * - * Sets the \a zone air flow direction to \a airflowDirection. + * Sets the \a zone air flow directions to \a airflowDirections. * - * This method is expected to emit the \l airflowDirectionChanged() signal when receiving a - * new \a airflowDirection. + * This method is expected to emit the \l airflowDirectionsChanged() signal when receiving a + * new \a airflowDirections. * - * \sa airflowDirectionChanged() + * \sa airflowDirectionsChanged() */ /*! @@ -224,15 +224,15 @@ QtIVIClimateControlBackendInterface::QtIVIClimateControlBackendInterface(QObject */ /*! - * \fn virtual void QtIVIClimateControlBackendInterface::airflowDirectionChanged(QtIVIClimateControl::AirflowDirection airflowDirection, const QString &zone = QString()) = 0 + * \fn virtual void QtIVIClimateControlBackendInterface::airflowDirectionsChanged(QtIVIClimateControl::AirflowDirections airflowDirections, const QString &zone = QString()) = 0 * - * The signal is emitted when the \a zone airflow direction is changed to \a airflowDirection. + * The signal is emitted when the \a zone airflow directions changed to \a airflowDirections. * - * \sa setAirflowDirection() + * \sa setAirflowDirections() */ /*! - * \fn void QtIVIClimateControlBackendInterface::airflowDirectionAttributeChanged(const QtIVIPropertyAttribute<QtIVIClimateControl::AirflowDirection> &attribute, const QString &zone = QString()); + * \fn void QtIVIClimateControlBackendInterface::airflowDirectionsAttributeChanged(const QtIVIPropertyAttribute<QtIVIClimateControl::AirflowDirections> &attribute, const QString &zone = QString()); * * The signal is emitted when the zone airflow direction attribute for \a zone is changed to \a attribute. */ diff --git a/src/ivivehiclefunctions/qtiviclimatecontrolbackendinterface.h b/src/ivivehiclefunctions/qtiviclimatecontrolbackendinterface.h index 57d05c4..382a808 100644 --- a/src/ivivehiclefunctions/qtiviclimatecontrolbackendinterface.h +++ b/src/ivivehiclefunctions/qtiviclimatecontrolbackendinterface.h @@ -63,7 +63,7 @@ public: virtual void setSteeringWheelHeater(int value, const QString &zone) = 0; virtual void setFanSpeedLevel(int value, const QString &zone) = 0; - virtual void setAirflowDirection(QtIVIClimateControl::AirflowDirection airflowDirection, const QString &zone) = 0; + virtual void setAirflowDirections(QtIVIClimateControl::AirflowDirections airflowDirections, const QString &zone) = 0; virtual void setAirConditioningEnabled(bool enabled, const QString &zone) = 0; virtual void setHeaterEnabled(bool enabled, const QString &zone) = 0; virtual void setAirRecirculationEnabled(bool enabled, const QString &zone) = 0; @@ -79,8 +79,8 @@ Q_SIGNALS: void steeringWheelHeaterAttributeChanged(const QtIVIPropertyAttribute<int> &attribute, const QString &zone = QString()); void fanSpeedLevelChanged(int value, const QString &zone = QString()); void fanSpeedLevelAttributeChanged(const QtIVIPropertyAttribute<int> &attribute, const QString &zone = QString()); - void airflowDirectionChanged(QtIVIClimateControl::AirflowDirection value, const QString &zone = QString()); - void airflowDirectionAttributeChanged(const QtIVIPropertyAttribute<QtIVIClimateControl::AirflowDirection> &attribute, const QString &zone = QString()); + void airflowDirectionsChanged(QtIVIClimateControl::AirflowDirections value, const QString &zone = QString()); + void airflowDirectionsAttributeChanged(const QtIVIPropertyAttribute<QtIVIClimateControl::AirflowDirections> &attribute, const QString &zone = QString()); void airConditioningEnabledChanged(bool value, const QString &zone = QString()); void airConditioningAttributeChanged(const QtIVIPropertyAttribute<bool> &attribute, const QString &zone = QString()); void heaterEnabledChanged(bool value, const QString &zone = QString()); diff --git a/src/plugins/ivivehiclefunctions/climate_simulator/climatecontrolbackend.cpp b/src/plugins/ivivehiclefunctions/climate_simulator/climatecontrolbackend.cpp index e4d4f2c..23f714f 100644 --- a/src/plugins/ivivehiclefunctions/climate_simulator/climatecontrolbackend.cpp +++ b/src/plugins/ivivehiclefunctions/climate_simulator/climatecontrolbackend.cpp @@ -45,7 +45,7 @@ ClimateControlBackend::ClimateControlBackend(QObject *parent) : QtIVIClimateControlBackendInterface(parent), - m_flowDirection(QtIVIClimateControl::BiLevel), + m_flowDirection(QtIVIClimateControl::Floor | QtIVIClimateControl::Dashboard), m_airCondition(true), m_heater(true), m_airRecirculation(false), @@ -92,10 +92,10 @@ QStringList ClimateControlBackend::availableZones() const void ClimateControlBackend::initializeAttributes() { - QVector<QtIVIClimateControl::AirflowDirection> list; - list << QtIVIClimateControl::BiLevel << QtIVIClimateControl::DefrostFloor; - emit airflowDirectionAttributeChanged(QtIVIPropertyAttribute<QtIVIClimateControl::AirflowDirection>(list)); - emit airflowDirectionChanged(m_flowDirection); + QVector<QtIVIClimateControl::AirflowDirections> list; + list << (QtIVIClimateControl::Floor | QtIVIClimateControl::Dashboard) << QtIVIClimateControl::Floor << QtIVIClimateControl::Dashboard; + emit airflowDirectionsAttributeChanged(QtIVIPropertyAttribute<QtIVIClimateControl::AirflowDirections>(list)); + emit airflowDirectionsChanged(m_flowDirection); emit airConditioningAttributeChanged(QtIVIPropertyAttribute<bool>(true)); emit airConditioningEnabledChanged(m_airCondition); emit heaterAttributeChanged(QtIVIPropertyAttribute<bool>(true)); @@ -193,15 +193,15 @@ void ClimateControlBackend::setFanSpeedLevel(int speed, const QString &zone) emit fanSpeedLevelChanged(speed, zone); } -void ClimateControlBackend::setAirflowDirection(QtIVIClimateControl::AirflowDirection direction, const QString &zone) +void ClimateControlBackend::setAirflowDirections(QtIVIClimateControl::AirflowDirections direction, const QString &zone) { if (!zone.isEmpty() || m_flowDirection == direction) return; - qWarning() << "SIMULATION AirflowDirection changed to" << direction; + qWarning() << "SIMULATION AirflowDirections changed to" << direction; m_flowDirection = direction; - emit airflowDirectionChanged(direction); + emit airflowDirectionsChanged(direction); } void ClimateControlBackend::setAirConditioningEnabled(bool val, const QString &zone) diff --git a/src/plugins/ivivehiclefunctions/climate_simulator/climatecontrolbackend.h b/src/plugins/ivivehiclefunctions/climate_simulator/climatecontrolbackend.h index dc6c672..89081e4 100644 --- a/src/plugins/ivivehiclefunctions/climate_simulator/climatecontrolbackend.h +++ b/src/plugins/ivivehiclefunctions/climate_simulator/climatecontrolbackend.h @@ -62,14 +62,14 @@ public: void setSeatHeater(int val, const QString &zone); void setSteeringWheelHeater(int val, const QString &zone); void setFanSpeedLevel(int, const QString &zone); - void setAirflowDirection(QtIVIClimateControl::AirflowDirection direction, const QString &zone); + void setAirflowDirections(QtIVIClimateControl::AirflowDirections direction, const QString &zone); void setAirConditioningEnabled(bool val, const QString &zone); void setHeaterEnabled(bool val, const QString &zone); void setAirRecirculationEnabled(bool val, const QString &zone); private: - QtIVIClimateControl::AirflowDirection m_flowDirection; + QtIVIClimateControl::AirflowDirections m_flowDirection; bool m_airCondition; bool m_heater; bool m_airRecirculation; diff --git a/tests/auto/vehiclefunctions/climatecontroltest/tst_climatecontroltest.cpp b/tests/auto/vehiclefunctions/climatecontroltest/tst_climatecontroltest.cpp index 954bdc0..522b046 100644 --- a/tests/auto/vehiclefunctions/climatecontroltest/tst_climatecontroltest.cpp +++ b/tests/auto/vehiclefunctions/climatecontroltest/tst_climatecontroltest.cpp @@ -38,7 +38,7 @@ class ClimateControlTestBackend : public QtIVIClimateControlBackendInterface public: ClimateControlTestBackend() : QtIVIClimateControlBackendInterface() - , m_airflowDirection(QtIVIClimateControl::DefrostFloor) + , m_airflowDirections(QtIVIClimateControl::Floor | QtIVIClimateControl::Dashboard) , m_airConditioningEnabled(false) , m_airConditioningAttribute(QtIVIPropertyAttribute<bool>(true)) , m_heaterEnabled(false) @@ -46,9 +46,9 @@ public: , m_airRecirculationEnabled(false) , m_airRecirculationAttribute(QtIVIPropertyAttribute<bool>(true)) { - QVector<QtIVIClimateControl::AirflowDirection> list; - list << QtIVIClimateControl::DefrostFloor << QtIVIClimateControl::BiLevel; - m_airflowDirectionAttribute = list; + QVector<QtIVIClimateControl::AirflowDirections> list; + list << (QtIVIClimateControl::Floor | QtIVIClimateControl::Dashboard) << QtIVIClimateControl::Floor << QtIVIClimateControl::Dashboard; + m_airflowDirectionsAttribute = list; m_zones << "FrontLeft" << "Upper" << "Lower"; foreach (const QString &z, m_zones) { m_zoneTargetTemperature[z] = 0; @@ -72,8 +72,8 @@ public: void initializeAttributes() Q_DECL_OVERRIDE { - emit airflowDirectionChanged(m_airflowDirection); - emit airflowDirectionAttributeChanged(m_airflowDirectionAttribute); + emit airflowDirectionsChanged(m_airflowDirections); + emit airflowDirectionsAttributeChanged(m_airflowDirectionsAttribute); emit airConditioningEnabledChanged(m_airConditioningEnabled); emit airConditioningAttributeChanged(m_airConditioningAttribute); emit heaterEnabledChanged(m_heaterEnabled); @@ -169,21 +169,21 @@ public: } } - void setAirflowDirection(QtIVIClimateControl::AirflowDirection ad, const QString &z) Q_DECL_OVERRIDE + void setAirflowDirections(QtIVIClimateControl::AirflowDirections ad, const QString &z) Q_DECL_OVERRIDE { Q_UNUSED(z) - if (m_airflowDirection != ad) { - m_airflowDirection = ad; - emit airflowDirectionChanged(m_airflowDirection); + if (m_airflowDirections != ad) { + m_airflowDirections = ad; + emit airflowDirectionsChanged(m_airflowDirections); } } - void setAirflowDirectionAttribute(QtIVIPropertyAttribute<QtIVIClimateControl::AirflowDirection> attribute, const QString &z) + void setAirflowDirectionsAttribute(QtIVIPropertyAttribute<QtIVIClimateControl::AirflowDirections> attribute, const QString &z) { Q_UNUSED(z) - if (m_airflowDirectionAttribute != attribute) { - m_airflowDirectionAttribute = attribute; - emit airflowDirectionAttributeChanged(m_airflowDirectionAttribute, z); + if (m_airflowDirectionsAttribute != attribute) { + m_airflowDirectionsAttribute = attribute; + emit airflowDirectionsAttributeChanged(m_airflowDirectionsAttribute, z); } } @@ -292,8 +292,8 @@ public: } private: - QtIVIClimateControl::AirflowDirection m_airflowDirection; - QtIVIPropertyAttribute<QtIVIClimateControl::AirflowDirection> m_airflowDirectionAttribute; + QtIVIClimateControl::AirflowDirections m_airflowDirections; + QtIVIPropertyAttribute<QtIVIClimateControl::AirflowDirections> m_airflowDirectionsAttribute; bool m_airConditioningEnabled; QtIVIPropertyAttribute<bool> m_airConditioningAttribute; bool m_heaterEnabled; |