diff --git a/libhive/device.cpp b/libhive/device.cpp index 5c9d05bc..23268d7a 100644 --- a/libhive/device.cpp +++ b/libhive/device.cpp @@ -43,26 +43,6 @@ void Device::setName(const QString &name) m_name = name; } -QList Device::triggers() const -{ - return m_triggers; -} - -void Device::setTriggers(const QList triggers) -{ - m_triggers = triggers; -} - -QList Device::actions() const -{ - return m_actions; -} - -void Device::setActions(const QList &actions) -{ - m_actions = actions; -} - QVariantMap Device::params() const { return m_params; diff --git a/libhive/device.h b/libhive/device.h index 621ac296..70250457 100644 --- a/libhive/device.h +++ b/libhive/device.h @@ -22,12 +22,6 @@ public: QString name() const; void setName(const QString &name); - QList triggers() const; - void setTriggers(const QList triggers); - - QList actions() const; - void setActions(const QList &actions); - QVariantMap params() const; void setParams(const QVariantMap ¶ms); @@ -40,8 +34,6 @@ private: QUuid m_deviceClassId; QUuid m_pluginId; QString m_name; - QList m_triggers; - QList m_actions; QVariantMap m_params; }; diff --git a/libhive/devicemanager.cpp b/libhive/devicemanager.cpp index 43e04af1..cb177e1b 100644 --- a/libhive/devicemanager.cpp +++ b/libhive/devicemanager.cpp @@ -54,14 +54,6 @@ DeviceManager::DeviceError DeviceManager::addConfiguredDevice(const QUuid &devic Device *device = new Device(plugin->pluginId(), deviceClassId, this); device->setName(deviceClass.name()); device->setParams(params); - QList triggers; - foreach (const TriggerType &triggerType, deviceClass.triggers()) { - Trigger trigger(QUuid::createUuid()); - trigger.setName(triggerType.name()); - trigger.setParams(triggerType.parameters()); - triggers.append(trigger); - } - device->setTriggers(triggers); m_configuredDevices.append(device); storeConfiguredDevices(); @@ -95,43 +87,6 @@ DeviceClass DeviceManager::findDeviceClass(const QUuid &deviceClassId) return DeviceClass(QUuid(), QUuid()); } -Trigger DeviceManager::findTrigger(const QUuid &triggerId) -{ - foreach (Device *device, m_configuredDevices) { - foreach (const Trigger &trigger, device->triggers()) { - if (trigger.id() == triggerId) { - return trigger; - } - } - } - return Trigger(); -} - -Action DeviceManager::findAction(const QUuid &actionId) -{ - foreach (Device *device, m_configuredDevices) { - qDebug() << "got action" << actionId; - foreach (const Action &action, device->actions()) { - qDebug() << "got action" << action.id() << actionId; - if (action.id() == actionId) { - return action; - } - } - } - return Action(); -} - -QList DeviceManager::allActions() const -{ - QList ret; - foreach (Device *device, m_configuredDevices) { - foreach (const Action &action, device->actions()) { - ret << action; - } - } - return ret; -} - Radio433 *DeviceManager::radio433() const { return m_radio433; @@ -160,7 +115,7 @@ void DeviceManager::loadPlugins() m_supportedDevices.append(deviceClass); } m_devicePlugins.insert(pluginIface->pluginId(), pluginIface); - connect(pluginIface,SIGNAL(emitTrigger(QUuid,QVariantMap)),this,SIGNAL(emitTrigger(QUuid,QVariantMap))); + connect(pluginIface, &DevicePlugin::emitTrigger, this, &DeviceManager::emitTrigger); } } @@ -176,19 +131,6 @@ void DeviceManager::loadConfiguredDevices() Device *device = new Device(settings.value("pluginid").toUuid(), QUuid(idString), settings.value("deviceClassId").toUuid(), this); device->setName(settings.value("devicename").toString()); device->setParams(settings.value("params").toMap()); - settings.beginGroup("triggers"); - QList triggerList; - foreach (const QString &triggerId, settings.childGroups()) { - settings.beginGroup(triggerId); - QUuid id(triggerId); - Trigger trigger(id); - trigger.setName(settings.value("triggername").toString()); - trigger.setParams(settings.value("params").toList()); - settings.endGroup(); - triggerList.append(trigger); - } - device->setTriggers(triggerList); - settings.endGroup(); settings.endGroup(); m_configuredDevices.append(device); } @@ -203,14 +145,6 @@ void DeviceManager::storeConfiguredDevices() settings.setValue("deviceClassId", device->deviceClassId().toString()); settings.setValue("pluginid", device->pluginId()); settings.setValue("params", device->params()); - settings.beginGroup("triggers"); - foreach (const Trigger &trigger, device->triggers()) { - settings.beginGroup(trigger.id().toString()); - settings.setValue("triggername", trigger.name()); - settings.setValue("params", trigger.params()); - settings.endGroup(); - } - settings.endGroup(); settings.endGroup(); } } diff --git a/libhive/devicemanager.h b/libhive/devicemanager.h index 85459d5f..9a1c87b4 100644 --- a/libhive/devicemanager.h +++ b/libhive/devicemanager.h @@ -33,15 +33,10 @@ public: QList findConfiguredDevices(const QUuid &deviceClassId); DeviceClass findDeviceClass(const QUuid &deviceClassId); - Trigger findTrigger(const QUuid &triggerId); - Action findAction(const QUuid &actionId); - - QList allActions() const; - Radio433 *radio433() const; signals: - void emitTrigger(const QUuid &triggerId, const QVariantMap ¶ms); + void emitTrigger(const Trigger &trigger); public slots: DeviceError executeAction(const Action &action); diff --git a/libhive/deviceplugin.h b/libhive/deviceplugin.h index 73a47639..58a1b1f6 100644 --- a/libhive/deviceplugin.h +++ b/libhive/deviceplugin.h @@ -30,7 +30,7 @@ public slots: virtual void executeAction(Device *device, const Action &action) = 0; signals: - void emitTrigger(const QUuid &triggerId, const QVariantMap ¶ms); + void emitTrigger(const Trigger &trigger); protected: DeviceManager *deviceManager() const; diff --git a/libhive/trigger.cpp b/libhive/trigger.cpp index b65c6f69..b5d3f120 100644 --- a/libhive/trigger.cpp +++ b/libhive/trigger.cpp @@ -1,36 +1,22 @@ #include "trigger.h" -Trigger::Trigger(const QUuid &id): - m_id(id) +Trigger::Trigger(const QUuid &deviceClassid, const QVariantMap ¶ms): + m_deviceClassId(deviceClassid), + m_params(params) { } -bool Trigger::isValid() const +QUuid Trigger::deviceClassId() const { - return !m_id.isNull(); + return m_deviceClassId; } -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 +QVariantMap Trigger::params() const { return m_params; } -void Trigger::setParams(const QVariantList ¶ms) +void Trigger::setParams(const QVariantMap ¶ms) { m_params = params; } diff --git a/libhive/trigger.h b/libhive/trigger.h index d7e89833..c17e0925 100644 --- a/libhive/trigger.h +++ b/libhive/trigger.h @@ -8,21 +8,16 @@ class Trigger { public: - Trigger(const QUuid &id = QUuid()); - bool isValid() const; + Trigger(const QUuid &deviceClassid, const QVariantMap ¶ms); - QUuid id() const; + QUuid deviceClassId() const; - QString name() const; - void setName(const QString &name); - - QVariantList params() const; - void setParams(const QVariantList ¶ms); + QVariantMap params() const; + void setParams(const QVariantMap ¶ms); private: - QUuid m_id; - QString m_name; - QVariantList m_params; + QUuid m_deviceClassId; + QVariantMap m_params; }; #endif // TRIGGER_H diff --git a/plugins/deviceplugins/devicepluginelro/devicepluginelro.cpp b/plugins/deviceplugins/devicepluginelro/devicepluginelro.cpp index 9e0d4048..7469e399 100644 --- a/plugins/deviceplugins/devicepluginelro/devicepluginelro.cpp +++ b/plugins/deviceplugins/devicepluginelro/devicepluginelro.cpp @@ -349,14 +349,16 @@ void DevicePluginElro::dataReceived(QList rawData) qWarning() << "couldn't find any configured device for elro:" << binCode.left(10) ; return; } - + QVariantMap params; - params.insert("button", button); params.insert("power", power); - foreach (const Trigger &trigger, device->triggers()) { - //qDebug() << "got trigger" << trigger.name(); - if (trigger.name() == button) { - emit emitTrigger(trigger.id(), params); + + // FIXME: find a better way to get to the remote DeviceClass + DeviceClass deviceClass = supportedDevices().first(); + foreach (const TriggerType &triggerType, deviceClass.triggers()) { + if (triggerType.name() == button) { + Trigger trigger = Trigger(triggerType.id(), params); + emit emitTrigger(trigger); return; } } diff --git a/server/jsonrpcserver.cpp b/server/jsonrpcserver.cpp index a24b35ef..f7690cb8 100644 --- a/server/jsonrpcserver.cpp +++ b/server/jsonrpcserver.cpp @@ -177,16 +177,6 @@ QVariantMap JsonRPCServer::packDevice(Device *device) variant.insert("id", device->id()); variant.insert("deviceClassId", device->deviceClassId()); variant.insert("name", device->name()); - QVariantList triggers; - foreach (const Trigger &trigger, device->triggers()) { - triggers.append(trigger.id()); - } - variant.insert("triggers", triggers); - QVariantList actions; - foreach (const Action &action, device->actions()) { - actions.append(action.id()); - } - variant.insert("actions", actions); variant.insert("params", device->params()); return variant; } diff --git a/server/ruleengine.cpp b/server/ruleengine.cpp index 105b2a54..c2136b7a 100644 --- a/server/ruleengine.cpp +++ b/server/ruleengine.cpp @@ -36,18 +36,10 @@ QList RuleEngine::evaluateTrigger(const QUuid &triggerId) return actions; } -RuleEngine::RuleError RuleEngine::addRule(const QUuid &triggerId, const QUuid &actionId) +RuleEngine::RuleError RuleEngine::addRule(const QUuid &triggerTypeId, const Action &action) { - if (!HiveCore::instance()->deviceManager()->findTrigger(triggerId).isValid()) { - qWarning() << "Cannot create rule. No such trigger."; - return RuleErrorNoSuchTrigger; - } - if (!HiveCore::instance()->deviceManager()->findAction(actionId).isValid()) { - qWarning() << "Cannot create rule. No such action."; - return RuleErrorNoSuchAction; - } - Rule rule = Rule(QUuid::createUuid(), triggerId, actionId); + Rule rule = Rule(QUuid::createUuid(), triggerTypeId, action); m_rules.append(rule); QSettings settings(rulesFileName); diff --git a/server/ruleengine.h b/server/ruleengine.h index 9081fc31..f198fadf 100644 --- a/server/ruleengine.h +++ b/server/ruleengine.h @@ -21,7 +21,7 @@ public: QList evaluateTrigger(const QUuid &triggerId); - RuleError addRule(const QUuid &triggerId, const QUuid &actionId); + RuleError addRule(const QUuid &triggerTypeId, const Action &action); QList rules() const; private: