added triggers

pull/1/head
Michael Zanetti 2013-12-30 23:08:35 +01:00
parent 9f7fd197bb
commit 29217b9aff
11 changed files with 190 additions and 3 deletions

View File

@ -3,5 +3,5 @@ TEMPLATE=subdirs
SUBDIRS += libhive server plugins
server.depends = libhive plugins
plugins.deoends = libhive
libhive.deoends = libhive

View File

@ -25,3 +25,13 @@ void DeviceClass::setName(const QString &name)
{
m_name = name;
}
QList<TriggerType> DeviceClass::triggers() const
{
return m_triggers;
}
void DeviceClass::setTriggers(const QList<TriggerType> &triggers)
{
m_triggers = triggers;
}

View File

@ -1,6 +1,9 @@
#ifndef DEVICECLASS_H
#define DEVICECLASS_H
#include "triggertype.h"
#include <QList>
#include <QUuid>
class DeviceClass
@ -14,9 +17,13 @@ public:
QString name() const;
void setName(const QString &name);
QList<TriggerType> triggers() const;
void setTriggers(const QList<TriggerType> &triggers);
private:
QUuid m_id;
QString m_name;
QList<TriggerType> m_triggers;
};
#endif

View File

@ -2,6 +2,7 @@
#define DEVICEPLUGIN_H
#include "deviceclass.h"
#include "trigger.h"
#include <QObject>
@ -21,6 +22,9 @@ public:
virtual QList<DeviceClass> supportedDevices() const = 0;
signals:
void emitTrigger(const Trigger &trigger);
protected:
DeviceManager *deviceManager() const;

View File

@ -9,11 +9,15 @@ SOURCES += device.cpp \
devicemanager.cpp \
deviceplugin.cpp \
radio433.cpp \
gpio.cpp
gpio.cpp \
trigger.cpp \
triggertype.cpp
HEADERS += device.h \
deviceclass.h \
devicemanager.h \
radio433.h \
gpio.h
gpio.h \
trigger.h \
triggertype.h

31
libhive/trigger.cpp Normal file
View File

@ -0,0 +1,31 @@
#include "trigger.h"
Trigger::Trigger(const QUuid &id):
m_id(id)
{
}
QUuid Trigger::id() const
{
return m_id;
}
QString Trigger::name() const
{
return m_name;
}
void Trigger::setName(const QString &name)
{
m_name = name;
}
QVariantList Trigger::params() const
{
return m_params;
}
void Trigger::setParams(const QVariantList &params)
{
m_params = params;
}

27
libhive/trigger.h Normal file
View File

@ -0,0 +1,27 @@
#ifndef TRIGGER_H
#define TRIGGER_H
#include <QString>
#include <QUuid>
#include <QVariantList>
class Trigger
{
public:
Trigger(const QUuid &id);
QUuid id() const;
QString name() const;
void setName(const QString &name);
QVariantList params() const;
void setParams(const QVariantList &params);
private:
QUuid m_id;
QString m_name;
QVariantList m_params;
};
#endif // TRIGGER_H

31
libhive/triggertype.cpp Normal file
View File

@ -0,0 +1,31 @@
#include "triggertype.h"
TriggerType::TriggerType(const QUuid &id):
m_id(id)
{
}
QUuid TriggerType::id() const
{
return m_id;
}
QString TriggerType::name() const
{
return m_name;
}
void TriggerType::setName(const QString &name)
{
m_name = name;
}
QVariantList TriggerType::parameters() const
{
return m_parameters;
}
void TriggerType::setParameters(const QVariantList &parameters)
{
m_parameters = parameters;
}

28
libhive/triggertype.h Normal file
View File

@ -0,0 +1,28 @@
#ifndef TRIGGERTYPE_H
#define TRIGGERTYPE_H
#include <QUuid>
#include <QVariantMap>
class TriggerType
{
public:
TriggerType(const QUuid &id);
QUuid id() const;
QString name() const;
void setName(const QString &name);
QVariantList parameters() const;
void setParameters(const QVariantList &parameters);
private:
QUuid m_id;
QString m_name;
QVariantList m_parameters;
};
#endif // TRIGGERTYPE_H

View File

@ -21,6 +21,41 @@ QList<DeviceClass> RfSwitch::supportedDevices() const
DeviceClass deviceClassRfRemote(QUuid::createUuid());
deviceClassRfRemote.setName("RF Remote");
QList<TriggerType> buttonTriggers;
QVariantList params;
QVariantMap param;
param.insert("name", "on");
param.insert("type", "bool");
params.append(param);
TriggerType buttonATrigger(QUuid::createUuid());
buttonATrigger.setName("Button A");
buttonATrigger.setParameters(params);
buttonTriggers.append(buttonATrigger);
TriggerType buttonBTrigger(QUuid::createUuid());
buttonBTrigger.setName("Button B");
buttonBTrigger.setParameters(params);
buttonTriggers.append(buttonBTrigger);
TriggerType buttonCTrigger(QUuid::createUuid());
buttonCTrigger.setName("Button C");
buttonCTrigger.setParameters(params);
buttonTriggers.append(buttonCTrigger);
TriggerType buttonDTrigger(QUuid::createUuid());
buttonDTrigger.setName("Button D");
buttonDTrigger.setParameters(params);
buttonTriggers.append(buttonDTrigger);
TriggerType buttonETrigger(QUuid::createUuid());
buttonETrigger.setName("Button E");
buttonETrigger.setParameters(params);
buttonTriggers.append(buttonETrigger);
deviceClassRfRemote.setTriggers(buttonTriggers);
ret.append(deviceClassRfRemote);

View File

@ -83,6 +83,16 @@ QVariantMap JsonRPCServer::packDeviceClass(const DeviceClass &deviceClass)
QVariantMap variant;
variant.insert("name", deviceClass.name());
variant.insert("id", deviceClass.id());
QVariantList triggerTypes;
foreach (const TriggerType &triggerType, deviceClass.triggers()) {
QVariantMap triggerMap;
triggerMap.insert("id", triggerType.id().toString());
triggerMap.insert("name", triggerType.name());
triggerMap.insert("params", triggerType.parameters());
triggerTypes.append(triggerMap);
}
variant.insert("triggers", triggerTypes);
return variant;
}