An attempt to make it configurable

pull/387/head
Michael Zanetti 2020-12-15 11:14:42 +01:00
parent 59140f7bd4
commit 56448543df
7 changed files with 75 additions and 0 deletions

View File

@ -383,6 +383,24 @@ State Thing::state(const StateTypeId &stateTypeId) const
return State(StateTypeId(), ThingId());
}
void Thing::setStateLogged(const StateTypeId &stateTypeId, bool logged)
{
for (int i = 0; i < m_states.count(); i++) {
if (m_states.at(i).stateTypeId() == stateTypeId) {
m_states[i].setLogged(logged);
}
}
}
void Thing::setStateFilter(const StateTypeId &stateTypeId, Types::StateValueFilter filter)
{
for (int i = 0; i < m_states.count(); i++) {
if (m_states.at(i).stateTypeId() == stateTypeId) {
m_states[i].setFilter(filter);
}
}
}
/*! Returns the \l{ThingId} of the parent of this thing. If the parentId
is not set, this thing does not have a parent.
*/

View File

@ -133,6 +133,9 @@ public:
Q_INVOKABLE State state(const StateTypeId &stateTypeId) const;
void setStateLogged(const StateTypeId &stateTypeId, bool logged);
void setStateFilter(const StateTypeId &stateTypeId, Types::StateValueFilter filter);
ThingId parentId() const;
void setParentId(const ThingId &parentId);

View File

@ -80,6 +80,26 @@ void State::setValue(const QVariant &value)
m_value = value;
}
Types::StateValueFilter State::filter() const
{
return m_filter;
}
void State::setFilter(Types::StateValueFilter filter)
{
m_filter = filter;
}
bool State::logged() const
{
return m_logged;
}
void State::setLogged(bool logged)
{
m_logged = logged;
}
/*! Writes the stateTypeId, the deviceId and the value of the given \a state to \a dbg. */
QDebug operator<<(QDebug dbg, const State &state)
{

View File

@ -42,6 +42,8 @@ class LIBNYMEA_EXPORT State
Q_GADGET
Q_PROPERTY(QUuid stateTypeId READ stateTypeId)
Q_PROPERTY(QVariant value READ value)
Q_PROPERTY(Types::StateValueFilter filter READ filter)
Q_PROPERTY(bool logged READ logged)
public:
State();
@ -53,10 +55,18 @@ public:
QVariant value() const;
void setValue(const QVariant &value);
Types::StateValueFilter filter() const;
void setFilter(Types::StateValueFilter filter);
bool logged() const;
void setLogged(bool logged);
private:
StateTypeId m_stateTypeId;
ThingId m_thingId;
QVariant m_value;
Types::StateValueFilter m_filter;
bool m_logged = false;
};
Q_DECLARE_METATYPE(State)

View File

@ -208,6 +208,16 @@ void StateType::setCached(bool cached)
m_cached = cached;
}
Types::StateValueFilter StateType::filter() const
{
return m_filter;
}
void StateType::setFilter(Types::StateValueFilter filter)
{
m_filter = filter;
}
/*! Returns a list of all valid properties a DeviceClass definition can have. */
QStringList StateType::typeProperties()
{

View File

@ -93,6 +93,12 @@ public:
bool cached() const;
void setCached(bool cached);
bool logged() const;
void setLogged(bool logged);
Types::StateValueFilter filter() const;
void setFilter(Types::StateValueFilter filter);
static QStringList typeProperties();
static QStringList mandatoryTypeProperties();
@ -112,6 +118,8 @@ private:
Types::IOType m_ioType = Types::IOTypeNone;
bool m_writable = false;
bool m_cached = true;
bool m_logged = false;
Types::StateValueFilter m_filter = Types::StateValueFilterNone;
};
Q_DECLARE_METATYPE(StateType)

View File

@ -173,6 +173,12 @@ public:
IOTypeAnalogOutput
};
Q_ENUM(IOType)
enum StateValueFilter {
StateValueFilterNone,
StateValueFilterAdaptive
};
Q_ENUM(StateValueFilter)
};
Q_DECLARE_METATYPE(Types::InputType)