added api to remove rules
This commit is contained in:
parent
e9a2502e91
commit
52c2b3bfaf
@ -28,6 +28,11 @@ RulesHandler::RulesHandler(QObject *parent) :
|
|||||||
setParams("AddRule", params);
|
setParams("AddRule", params);
|
||||||
setReturns("AddRule", returns);
|
setReturns("AddRule", returns);
|
||||||
|
|
||||||
|
params.clear(); returns.clear();
|
||||||
|
setDescription("RemoveRule", "Remove a rule");
|
||||||
|
params.insert("ruleId", "uuid");
|
||||||
|
setParams("RemoveRule", params);
|
||||||
|
setReturns("RemoveRule", returns);
|
||||||
}
|
}
|
||||||
|
|
||||||
QString RulesHandler::name() const
|
QString RulesHandler::name() const
|
||||||
@ -100,6 +105,28 @@ QVariantMap RulesHandler::AddRule(const QVariantMap ¶ms)
|
|||||||
returns.insert("success", false);
|
returns.insert("success", false);
|
||||||
returns.insert("errorMessage", "Device does not have such a trigger type.");
|
returns.insert("errorMessage", "Device does not have such a trigger type.");
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
returns.insert("success", false);
|
||||||
|
returns.insert("errorMessage", "Unknown error");
|
||||||
|
}
|
||||||
|
return returns;
|
||||||
|
}
|
||||||
|
|
||||||
|
QVariantMap RulesHandler::RemoveRule(const QVariantMap ¶ms)
|
||||||
|
{
|
||||||
|
QVariantMap returns;
|
||||||
|
QUuid ruleId = params.value("ruleId").toUuid();
|
||||||
|
switch (HiveCore::instance()->ruleEngine()->removeRule(ruleId)) {
|
||||||
|
case RuleEngine::RuleErrorNoError:
|
||||||
|
returns.insert("success", true);
|
||||||
|
break;
|
||||||
|
case RuleEngine::RuleErrorRuleNotFound:
|
||||||
|
returns.insert("success", false);
|
||||||
|
returns.insert("errorMessage", "No such rule.");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
returns.insert("success", false);
|
||||||
|
returns.insert("errorMessage", "Unknown error");
|
||||||
}
|
}
|
||||||
return returns;
|
return returns;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -14,6 +14,7 @@ public:
|
|||||||
Q_INVOKABLE QVariantMap GetRules(const QVariantMap ¶ms);
|
Q_INVOKABLE QVariantMap GetRules(const QVariantMap ¶ms);
|
||||||
|
|
||||||
Q_INVOKABLE QVariantMap AddRule(const QVariantMap ¶ms);
|
Q_INVOKABLE QVariantMap AddRule(const QVariantMap ¶ms);
|
||||||
|
Q_INVOKABLE QVariantMap RemoveRule(const QVariantMap ¶ms);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -6,7 +6,8 @@ Rule::Rule(const QUuid &id, const Trigger &trigger, const QList<State> states, c
|
|||||||
m_id(id),
|
m_id(id),
|
||||||
m_trigger(trigger),
|
m_trigger(trigger),
|
||||||
m_states(states),
|
m_states(states),
|
||||||
m_actions(actions)
|
m_actions(actions),
|
||||||
|
m_ruleType(RuleTypeAll)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -29,3 +30,13 @@ QList<Action> Rule::actions() const
|
|||||||
{
|
{
|
||||||
return m_actions;
|
return m_actions;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Rule::RuleType Rule::ruleType() const
|
||||||
|
{
|
||||||
|
return m_ruleType;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Rule::setRuleType(Rule::RuleType ruleType)
|
||||||
|
{
|
||||||
|
m_ruleType = ruleType;
|
||||||
|
}
|
||||||
|
|||||||
@ -10,6 +10,11 @@
|
|||||||
class Rule
|
class Rule
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
enum RuleType {
|
||||||
|
RuleTypeAll,
|
||||||
|
RuleTypeAny
|
||||||
|
};
|
||||||
|
|
||||||
Rule(const QUuid &id, const Trigger &trigger, const QList<State> states, const QList<Action> &actions);
|
Rule(const QUuid &id, const Trigger &trigger, const QList<State> states, const QList<Action> &actions);
|
||||||
|
|
||||||
QUuid id() const;
|
QUuid id() const;
|
||||||
@ -17,11 +22,15 @@ public:
|
|||||||
QList<State> states() const;
|
QList<State> states() const;
|
||||||
QList<Action> actions() const;
|
QList<Action> actions() const;
|
||||||
|
|
||||||
|
RuleType ruleType() const;
|
||||||
|
void setRuleType(RuleType ruleType);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QUuid m_id;
|
QUuid m_id;
|
||||||
Trigger m_trigger;
|
Trigger m_trigger;
|
||||||
QList<State> m_states;
|
QList<State> m_states;
|
||||||
QList<Action> m_actions;
|
QList<Action> m_actions;
|
||||||
|
RuleType m_ruleType;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // RULE_H
|
#endif // RULE_H
|
||||||
|
|||||||
@ -114,6 +114,7 @@ RuleEngine::RuleError RuleEngine::addRule(const Trigger &trigger, const QList<St
|
|||||||
|
|
||||||
Rule rule = Rule(QUuid::createUuid(), trigger, states, actions);
|
Rule rule = Rule(QUuid::createUuid(), trigger, states, actions);
|
||||||
m_rules.append(rule);
|
m_rules.append(rule);
|
||||||
|
emit ruleAdded(rule.id());
|
||||||
|
|
||||||
QSettings settings(rulesFileName);
|
QSettings settings(rulesFileName);
|
||||||
settings.beginGroup(rule.id().toString());
|
settings.beginGroup(rule.id().toString());
|
||||||
@ -151,3 +152,23 @@ QList<Rule> RuleEngine::rules() const
|
|||||||
{
|
{
|
||||||
return m_rules;
|
return m_rules;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RuleEngine::RuleError RuleEngine::removeRule(const QUuid &ruleId)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < m_rules.count(); ++i) {
|
||||||
|
Rule rule = m_rules.at(i);
|
||||||
|
if (rule.id() == ruleId) {
|
||||||
|
|
||||||
|
m_rules.takeAt(i);
|
||||||
|
|
||||||
|
QSettings settings(rulesFileName);
|
||||||
|
settings.beginGroup(rule.id().toString());
|
||||||
|
settings.remove("");
|
||||||
|
settings.endGroup();
|
||||||
|
|
||||||
|
emit ruleRemoved(rule.id());
|
||||||
|
return RuleErrorNoError;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return RuleErrorRuleNotFound;
|
||||||
|
}
|
||||||
|
|||||||
@ -14,6 +14,7 @@ class RuleEngine : public QObject
|
|||||||
public:
|
public:
|
||||||
enum RuleError {
|
enum RuleError {
|
||||||
RuleErrorNoError,
|
RuleErrorNoError,
|
||||||
|
RuleErrorRuleNotFound,
|
||||||
RuleErrorDeviceNotFound,
|
RuleErrorDeviceNotFound,
|
||||||
RuleErrorTriggerTypeNotFound
|
RuleErrorTriggerTypeNotFound
|
||||||
};
|
};
|
||||||
@ -26,6 +27,12 @@ public:
|
|||||||
RuleError addRule(const Trigger &trigger, const QList<State> states, const QList<Action> &actions);
|
RuleError addRule(const Trigger &trigger, const QList<State> states, const QList<Action> &actions);
|
||||||
QList<Rule> rules() const;
|
QList<Rule> rules() const;
|
||||||
|
|
||||||
|
RuleError removeRule(const QUuid &ruleId);
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void ruleAdded(const QUuid &ruleId);
|
||||||
|
void ruleRemoved(const QUuid &ruleId);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QList<Rule> m_rules;
|
QList<Rule> m_rules;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user