added input type to API

This commit is contained in:
Simon Stürz 2015-02-25 15:18:18 +01:00 committed by Michael Zanetti
parent df00303bed
commit d510157b26
6 changed files with 71 additions and 7 deletions

View File

@ -368,6 +368,29 @@ QList<ParamType> DevicePlugin::parseParamTypes(const QJsonArray &array) const
foreach (const QJsonValue &allowedTypesJson, pt.value("allowedValues").toArray()) { foreach (const QJsonValue &allowedTypesJson, pt.value("allowedValues").toArray()) {
allowedValues.append(allowedTypesJson.toVariant()); allowedValues.append(allowedTypesJson.toVariant());
} }
// set the input type if there is any
if (pt.contains("inputType")) {
QString inputTypeString = pt.value("inputType").toString();
if (inputTypeString == "TextLine") {
paramType.setInputType(Types::InputTypeTextLine);
} else if (inputTypeString == "TextArea") {
paramType.setInputType(Types::InputTypeTextArea);
} else if (inputTypeString == "Password") {
paramType.setInputType(Types::InputTypePassword);
} else if (inputTypeString == "Search") {
paramType.setInputType(Types::InputTypeSearch);
} else if (inputTypeString == "Mail") {
paramType.setInputType(Types::InputTypeMail);
} else if (inputTypeString == "IPv4Address") {
paramType.setInputType(Types::InputTypeIPv4Address);
} else if (inputTypeString == "IPv6Address") {
paramType.setInputType(Types::InputTypeIPv6Address);
} else if (inputTypeString == "Url") {
paramType.setInputType(Types::InputTypeUrl);
} else if (inputTypeString == "MacAddress") {
paramType.setInputType(Types::InputTypeMacAddress);
}
}
paramType.setAllowedValues(allowedValues); paramType.setAllowedValues(allowedValues);
paramType.setLimits(pt.value("minValue").toVariant(), pt.value("maxValue").toVariant()); paramType.setLimits(pt.value("minValue").toVariant(), pt.value("maxValue").toVariant());
paramTypes.append(paramType); paramTypes.append(paramType);

View File

@ -32,7 +32,8 @@
ParamType::ParamType(const QString &name, const QVariant::Type type, const QVariant &defaultValue): ParamType::ParamType(const QString &name, const QVariant::Type type, const QVariant &defaultValue):
m_name(name), m_name(name),
m_type(type), m_type(type),
m_defaultValue(defaultValue) m_defaultValue(defaultValue),
m_inputType(Types::InputTypeNone)
{ {
} }
@ -96,6 +97,18 @@ void ParamType::setMaxValue(const QVariant &maxValue)
m_maxValue = maxValue; m_maxValue = maxValue;
} }
/*! Returns the input type of this ParamType. */
Types::InputType ParamType::inputType() const
{
return m_inputType;
}
/*! Sets the input value of this ParamType to the given \a inputType. */
void ParamType::setInputType(const Types::InputType &inputType)
{
m_inputType = inputType;
}
/*! Returns the limits of this ParamType. limits(minValue, maxValue). */ /*! Returns the limits of this ParamType. limits(minValue, maxValue). */
QPair<QVariant, QVariant> ParamType::limits() const QPair<QVariant, QVariant> ParamType::limits() const
{ {

View File

@ -21,10 +21,11 @@
#include <QVariant> #include <QVariant>
#include <QDebug> #include <QDebug>
#include "typeutils.h"
class ParamType class ParamType
{ {
public: public:
ParamType(const QString &name, const QVariant::Type type, const QVariant &defaultValue = QVariant()); ParamType(const QString &name, const QVariant::Type type, const QVariant &defaultValue = QVariant());
QString name() const; QString name() const;
@ -42,6 +43,9 @@ public:
QVariant maxValue() const; QVariant maxValue() const;
void setMaxValue(const QVariant &maxValue); void setMaxValue(const QVariant &maxValue);
Types::InputType inputType() const;
void setInputType(const Types::InputType &inputType);
QPair<QVariant, QVariant> limits() const; QPair<QVariant, QVariant> limits() const;
void setLimits(const QVariant &min, const QVariant &max); void setLimits(const QVariant &min, const QVariant &max);
@ -54,6 +58,7 @@ private:
QVariant m_defaultValue; QVariant m_defaultValue;
QVariant m_minValue; QVariant m_minValue;
QVariant m_maxValue; QVariant m_maxValue;
Types::InputType m_inputType;
QVariantList m_allowedValues; QVariantList m_allowedValues;
}; };

View File

@ -57,8 +57,22 @@ class Types
Q_GADGET Q_GADGET
Q_ENUMS(StateOperator) Q_ENUMS(StateOperator)
Q_ENUMS(ValueOperator) Q_ENUMS(ValueOperator)
Q_ENUMS(InputType)
public: public:
enum InputType {
InputTypeNone,
InputTypeTextLine,
InputTypeTextArea,
InputTypePassword,
InputTypeSearch,
InputTypeMail,
InputTypeIPv4Address,
InputTypeIPv6Address,
InputTypeUrl,
InputTypeMacAddress
};
enum ValueOperator { enum ValueOperator {
ValueOperatorEquals, ValueOperatorEquals,
ValueOperatorNotEquals, ValueOperatorNotEquals,
@ -75,5 +89,6 @@ public:
Q_DECLARE_METATYPE(Types::ValueOperator) Q_DECLARE_METATYPE(Types::ValueOperator)
Q_DECLARE_METATYPE(Types::StateOperator) Q_DECLARE_METATYPE(Types::StateOperator)
Q_DECLARE_METATYPE(Types::InputType)
#endif // TYPEUTILS_H #endif // TYPEUTILS_H

View File

@ -33,6 +33,7 @@ QString JsonTypes::s_lastError;
QVariantList JsonTypes::s_basicType; QVariantList JsonTypes::s_basicType;
QVariantList JsonTypes::s_stateOperator; QVariantList JsonTypes::s_stateOperator;
QVariantList JsonTypes::s_valueOperator; QVariantList JsonTypes::s_valueOperator;
QVariantList JsonTypes::s_inputType;
QVariantList JsonTypes::s_createMethod; QVariantList JsonTypes::s_createMethod;
QVariantList JsonTypes::s_setupMethod; QVariantList JsonTypes::s_setupMethod;
QVariantList JsonTypes::s_removePolicy; QVariantList JsonTypes::s_removePolicy;
@ -69,6 +70,7 @@ void JsonTypes::init()
s_basicType = enumToStrings(JsonTypes::staticMetaObject, "BasicType"); s_basicType = enumToStrings(JsonTypes::staticMetaObject, "BasicType");
s_stateOperator = enumToStrings(Types::staticMetaObject, "StateOperator"); s_stateOperator = enumToStrings(Types::staticMetaObject, "StateOperator");
s_valueOperator = enumToStrings(Types::staticMetaObject, "ValueOperator"); s_valueOperator = enumToStrings(Types::staticMetaObject, "ValueOperator");
s_inputType = enumToStrings(Types::staticMetaObject, "InputType");
s_createMethod = enumToStrings(DeviceClass::staticMetaObject, "CreateMethod"); s_createMethod = enumToStrings(DeviceClass::staticMetaObject, "CreateMethod");
s_setupMethod = enumToStrings(DeviceClass::staticMetaObject, "SetupMethod"); s_setupMethod = enumToStrings(DeviceClass::staticMetaObject, "SetupMethod");
s_removePolicy = enumToStrings(RuleEngine::staticMetaObject, "RemovePolicy"); s_removePolicy = enumToStrings(RuleEngine::staticMetaObject, "RemovePolicy");
@ -86,6 +88,7 @@ void JsonTypes::init()
s_paramType.insert("o:minValue", basicTypeToString(Variant)); s_paramType.insert("o:minValue", basicTypeToString(Variant));
s_paramType.insert("o:maxValue", basicTypeToString(Variant)); s_paramType.insert("o:maxValue", basicTypeToString(Variant));
s_paramType.insert("o:allowedValues", QVariantList() << basicTypeToString(Variant)); s_paramType.insert("o:allowedValues", QVariantList() << basicTypeToString(Variant));
s_paramType.insert("o:inputType",basicTypeToString(Variant));
// Param // Param
s_param.insert("name", basicTypeToString(String)); s_param.insert("name", basicTypeToString(String));
@ -220,6 +223,7 @@ QVariantMap JsonTypes::allTypes()
QVariantMap allTypes; QVariantMap allTypes;
allTypes.insert("BasicType", basicType()); allTypes.insert("BasicType", basicType());
allTypes.insert("ParamType", paramTypeDescription()); allTypes.insert("ParamType", paramTypeDescription());
allTypes.insert("InputType", inputType());
allTypes.insert("CreateMethod", createMethod()); allTypes.insert("CreateMethod", createMethod());
allTypes.insert("SetupMethod", setupMethod()); allTypes.insert("SetupMethod", setupMethod());
allTypes.insert("ValueOperator", valueOperator()); allTypes.insert("ValueOperator", valueOperator());
@ -391,6 +395,9 @@ QVariantMap JsonTypes::packParamType(const ParamType &paramType)
if (!paramType.allowedValues().isEmpty()) { if (!paramType.allowedValues().isEmpty()) {
variantMap.insert("allowedValues", paramType.allowedValues()); variantMap.insert("allowedValues", paramType.allowedValues());
} }
if (paramType.inputType() != Types::InputTypeNone) {
variantMap.insert("inputType", s_inputType.at(paramType.inputType()));
}
return variantMap; return variantMap;
} }
@ -515,7 +522,7 @@ QVariantMap JsonTypes::packLogEntry(const LogEntry &logEntry)
break; break;
case Logging::LoggingSourceSystem: case Logging::LoggingSourceSystem:
// FIXME: Update this once we support error codes for the general system // FIXME: Update this once we support error codes for the general system
// logEntryMap.insert("errorCode", ""); // logEntryMap.insert("errorCode", "");
break; break;
} }
} }
@ -568,7 +575,7 @@ ParamList JsonTypes::unpackParams(const QVariantList &paramList)
{ {
ParamList params; ParamList params;
foreach (const QVariant &paramVariant, paramList) { foreach (const QVariant &paramVariant, paramList) {
// qDebug() << "unpacking param" << paramVariant; // qDebug() << "unpacking param" << paramVariant;
params.append(unpackParam(paramVariant.toMap())); params.append(unpackParam(paramVariant.toMap()));
} }
return params; return params;
@ -703,7 +710,7 @@ QPair<bool, QString> JsonTypes::validateList(const QVariantList &templateList, c
for (int i = 0; i < list.count(); ++i) { for (int i = 0; i < list.count(); ++i) {
QVariant listEntry = list.at(i); QVariant listEntry = list.at(i);
// qDebug() << "validating" << list << templateList; // qDebug() << "validating" << list << templateList;
QPair<bool, QString> result = validateVariant(entryTemplate, listEntry); QPair<bool, QString> result = validateVariant(entryTemplate, listEntry);
if (!result.first) { if (!result.first) {
qDebug() << "List entry not matching template"; qDebug() << "List entry not matching template";
@ -720,14 +727,14 @@ QPair<bool, QString> JsonTypes::validateVariant(const QVariant &templateVariant,
if (templateVariant.toString().startsWith("$ref:")) { if (templateVariant.toString().startsWith("$ref:")) {
QString refName = templateVariant.toString(); QString refName = templateVariant.toString();
if (refName == actionRef()) { if (refName == actionRef()) {
// qDebug() << "validating action"; // qDebug() << "validating action";
QPair<bool, QString> result = validateMap(actionDescription(), variant.toMap()); QPair<bool, QString> result = validateMap(actionDescription(), variant.toMap());
if (!result.first) { if (!result.first) {
qDebug() << "Error validating action"; qDebug() << "Error validating action";
return result; return result;
} }
} else if (refName == eventRef()) { } else if (refName == eventRef()) {
// qDebug() << "validating event"; // qDebug() << "validating event";
QPair<bool, QString> result = validateMap(eventDescription(), variant.toMap()); QPair<bool, QString> result = validateMap(eventDescription(), variant.toMap());
if (!result.first) { if (!result.first) {
qDebug() << "event not valid"; qDebug() << "event not valid";

View File

@ -92,6 +92,7 @@ public:
DECLARE_TYPE(basicType, "BasicType", JsonTypes, BasicType) DECLARE_TYPE(basicType, "BasicType", JsonTypes, BasicType)
DECLARE_TYPE(stateOperator, "StateOperator", Types, StateOperator) DECLARE_TYPE(stateOperator, "StateOperator", Types, StateOperator)
DECLARE_TYPE(valueOperator, "ValueOperator", Types, ValueOperator) DECLARE_TYPE(valueOperator, "ValueOperator", Types, ValueOperator)
DECLARE_TYPE(inputType, "InputType", Types, InputType)
DECLARE_TYPE(createMethod, "CreateMethod", DeviceClass, CreateMethod) DECLARE_TYPE(createMethod, "CreateMethod", DeviceClass, CreateMethod)
DECLARE_TYPE(setupMethod, "SetupMethod", DeviceClass, SetupMethod) DECLARE_TYPE(setupMethod, "SetupMethod", DeviceClass, SetupMethod)
DECLARE_TYPE(deviceError, "DeviceError", DeviceManager, DeviceError) DECLARE_TYPE(deviceError, "DeviceError", DeviceManager, DeviceError)