QValueSpaceSubscriber Class
The QValueSpaceSubscriber class allows applications to read and subscribe to Value Space paths. More...
Header: | #include <QValueSpaceSubscriber> |
Properties
Public Functions
QValueSpaceSubscriber(const QUuid &uuid, const QString &path, QObject *parent = Q_NULLPTR) | |
QValueSpaceSubscriber(QValueSpace::LayerOptions filter, const QString &path, QObject *parent = Q_NULLPTR) | |
QValueSpaceSubscriber(const QString &path, QObject *parent = Q_NULLPTR) | |
QValueSpaceSubscriber(QObject *parent = Q_NULLPTR) | |
virtual | ~QValueSpaceSubscriber() |
void | cd(const QString &path) |
void | cdUp() |
bool | isConnected() const |
QString | path() const |
void | setPath(const QString &path) |
void | setPath(QValueSpaceSubscriber *subscriber) |
QStringList | subPaths() const |
QVariant | value(const QString &subPath = QString(), const QVariant &def = QVariant()) const |
Signals
void | contentsChanged() |
Reimplemented Protected Functions
virtual void | connectNotify(const QMetaMethod &signal) override |
virtual void | disconnectNotify(const QMetaMethod &signal) override |
Detailed Description
By default QValueSpaceSubscriber can read values from and report change notifications for all available Value Space layers. Only data from the layer with the highest priority and that contains the specific key is returned by this class.
The layers that QValueSpaceSubscriber accesses can be limited by specifying either a filter or a QUuid at construction time.
Applications subscribe to a particular path in the Value Space. If anything under that path changes the contextChanged() signal is emitted. For example given the schema:
/Device/Buttons = 3 /Device/Buttons/1/Name = Menu /Device/Buttons/1/Usable = true /Device/Buttons/2/Name = Select /Device/Buttons/2/Usable = false /Device/Buttons/3/Name = Back /Device/Buttons/3/Usable = true
The code:
QValueSpaceSubscriber *buttons = new QValueSpaceSubscriber("/Device/Buttons"); QObject::connect(buttons, SIGNAL(contentsChanged()), this, SLOT(buttonInfoChanged()));
will invoke the buttonInfoChanged()
slot whenever any value under /Device/Buttons
changes. This includes the value of /Device/Buttons
itself, a change of a subpath such as /Device/Buttons/2/Name
or the creation or removal of a subpath.
Property Documentation
path : QString
This property holds the current path that the QValueSpaceSubscriber refers to.
Settings this property causes the QValueSpaceSubscriber to disconnect and reconnect to the Value Space with the new path. As a result all signal/slot connections are disconnected.
Access functions:
QString | path() const |
void | setPath(const QString &path) |
void | setPath(QValueSpaceSubscriber *subscriber) |
value : const QVariant
This property holds the value of the path that this QValueSpaceSubscriber refers to.
Notifier signal:
void | contentsChanged() |
Member Function Documentation
QValueSpaceSubscriber::QValueSpaceSubscriber(const QUuid &uuid, const QString &path, QObject *parent = Q_NULLPTR)
Constructs a QValueSpaceSubscriber with the specified parent that refers to path. This QValueSpaceSubscriber will only use the layer identified by uuid.
Use of this constructor is not platform agnostic. If possible use one of the constructors that take a QValueSpace::LayerOptions parameter instead.
If a layer with a matching uuid is not found, the constructed QValueSpaceSubscriber will be unconnected.
See also QValueSpace and isConnected().
QValueSpaceSubscriber::QValueSpaceSubscriber(QValueSpace::LayerOptions filter, const QString &path, QObject *parent = Q_NULLPTR)
Constructs a QValueSpaceSubscriber with the specified parent that refers to path. The filter parameter is used to limit which layers this QValueSpaceSubscriber will access.
If a layer matching filter is not found, the constructed QValueSpaceSubscriber will be unconnected.
See also isConnected().
QValueSpaceSubscriber::QValueSpaceSubscriber(const QString &path, QObject *parent = Q_NULLPTR)
Constructs a QValueSpaceSubscriber with the specified parent that refers to path.
The constructed Value Space subscriber will access all available layers.
QValueSpaceSubscriber::QValueSpaceSubscriber(QObject *parent = Q_NULLPTR)
Constructs a QValueSpaceSubscriber with the specified parent that refers to the root path.
The constructed Value Space subscriber will access all available layers.
[signal]
void QValueSpaceSubscriber::contentsChanged()
Emitted whenever any value under the current path changes.
Note: that if a value changes multiple times in quick succession, only the most recent value may be accessible via the value() function.
Note: Notifier signal for property value.
[virtual]
QValueSpaceSubscriber::~QValueSpaceSubscriber()
Destroys the QValueSpaceSubscriber.
void QValueSpaceSubscriber::cd(const QString &path)
Changes the path to the absolute path if path starts with a '/'; otherwise changes to the sub path of the current path.
void QValueSpaceSubscriber::cdUp()
Sets the path to parent of the current path.
[override virtual protected]
void QValueSpaceSubscriber::connectNotify(const QMetaMethod &signal)
[override virtual protected]
void QValueSpaceSubscriber::disconnectNotify(const QMetaMethod &signal)
bool QValueSpaceSubscriber::isConnected() const
Returns true if this QValueSpaceSubscriber is connected to at least one available layer; otherwise returns false. An unconnected QValueSpaceSubscriber is constructed if the filtering parameters passed to the constructor eliminate all available layers.
void QValueSpaceSubscriber::setPath(QValueSpaceSubscriber *subscriber)
Sets the path to the same path as subscriber.
Calling this function causes the QValueSpaceSubscriber to disconnect and reconnect to the value space with the specified path.
Calling this function disconnects all signal/slot connections.
Note: Setter function for property path.
QStringList QValueSpaceSubscriber::subPaths() const
Returns a list of sub-paths under the current path. For example, given a Value Space tree containing:
/Settings/QtProject/Device /Settings/QtProject/Other /Settings/Qt /Device/Buttons
QValueSpaceSubscriber("/Settings").subPaths()
will return a list containing { QtProject, Qt }
in no particular order.
QVariant QValueSpaceSubscriber::value(const QString &subPath = QString(), const QVariant &def = QVariant()) const
Returns the value of the subPath under this subscriber path, or the value of this subscriber path if subPath is empty. If the value does not exists def is returned.
The following code shows how the subscriber path and subPath relate.
QValueSpaceSubscriber base("/Settings"); QValueSpaceSubscriber equiv("/Settings/QtProject/General/Mappings"); // Is true equiv.value() == base.value("QtProject/General/Mappings");