QIfFeatureInterface Class

QIfFeatureInterface defines the base class for all backends. More...

Public Functions

virtual void initialize() = 0

Signals

void errorChanged(QIfAbstractFeature::Error error, const QString &message = QString())
void initializationDone()

Detailed Description

To implement a backend for a specific feature, you need to derive from this class. There's a one-to-one mapping between a specialized feature API and its corresponding feature interface class.

The feature interface class specifies which functions and signals need to be implemented by a backend to work with a specific feature.

This base class contains the initialization logic and the generic error handling, which is common between all interfaces.

A feature interface for coffee machine could look like this:

class CoffeMachineInterface : public QIfFeatureInterface
{
    void setTargetTemperature(int targetTemperature) = 0;
    ...

signals:
    void currentTemperatureChanged(int currentTemperature);
    void targetTemperatureChanged(int targetTemperature);
    ...
}

A backend implementation providing the actual functionality needs to implement all pure-virtual functions and the logic to provide property updates and their initial state. Once the feature knows which backend implementation needs to be used, it will request the initial state of all properties by calling the initialize() function. The implementation needs to emit the changed signals with the initial values and once it is done, emit the initializationDone signal.

In the coffee machine example the implementation could look like this:

class CoffeMachineImplementation : public CoffeMachineInterface
{
    void initialize()
    {
        emit currentTemperature(0);
        emit targetTemperature(0);
        emit initializationDone();
    }

    void setTargetTemperature(int targetTemperature)
    {
        if (m_targetTemperature == targetTemperature)
            return;

        // adjust the heating element to the new target temperature
        emit targetTemperatureChanged(targetTemperature)
    }
}

The implementation for setTargetTemperature() controls the internal heating element and once that is done, the change signal is emitted to inform the feature about the new state of the property.

See also QIfAbstractFeature.

Member Function Documentation

[signal] void QIfFeatureInterface::errorChanged(QIfAbstractFeature::Error error, const QString &message = QString())

The signal is emitted when error occurs in the backend. Error message is optional.

[signal] void QIfFeatureInterface::initializationDone()

The signal is emitted once the current backend state has been sent to the feature after a call to initialize()

See also initialize.

[pure virtual] void QIfFeatureInterface::initialize()

Initializes the backend. This function is called after a feature connected to the backend. It is expected that this function will inform about the current state of the backend by emitting signals with the current status.

The last signal which needs to be sent is the initializationDone() signal.

See also initializationDone().

© 2023 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.