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);
|
||||
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
|
||||
@ -100,6 +105,28 @@ QVariantMap RulesHandler::AddRule(const QVariantMap ¶ms)
|
||||
returns.insert("success", false);
|
||||
returns.insert("errorMessage", "Device does not have such a trigger type.");
|
||||
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;
|
||||
}
|
||||
|
||||
@ -14,6 +14,7 @@ public:
|
||||
Q_INVOKABLE QVariantMap GetRules(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_trigger(trigger),
|
||||
m_states(states),
|
||||
m_actions(actions)
|
||||
m_actions(actions),
|
||||
m_ruleType(RuleTypeAll)
|
||||
{
|
||||
}
|
||||
|
||||
@ -29,3 +30,13 @@ QList<Action> Rule::actions() const
|
||||
{
|
||||
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
|
||||
{
|
||||
public:
|
||||
enum RuleType {
|
||||
RuleTypeAll,
|
||||
RuleTypeAny
|
||||
};
|
||||
|
||||
Rule(const QUuid &id, const Trigger &trigger, const QList<State> states, const QList<Action> &actions);
|
||||
|
||||
QUuid id() const;
|
||||
@ -17,11 +22,15 @@ public:
|
||||
QList<State> states() const;
|
||||
QList<Action> actions() const;
|
||||
|
||||
RuleType ruleType() const;
|
||||
void setRuleType(RuleType ruleType);
|
||||
|
||||
private:
|
||||
QUuid m_id;
|
||||
Trigger m_trigger;
|
||||
QList<State> m_states;
|
||||
QList<Action> m_actions;
|
||||
RuleType m_ruleType;
|
||||
};
|
||||
|
||||
#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);
|
||||
m_rules.append(rule);
|
||||
emit ruleAdded(rule.id());
|
||||
|
||||
QSettings settings(rulesFileName);
|
||||
settings.beginGroup(rule.id().toString());
|
||||
@ -151,3 +152,23 @@ QList<Rule> RuleEngine::rules() const
|
||||
{
|
||||
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:
|
||||
enum RuleError {
|
||||
RuleErrorNoError,
|
||||
RuleErrorRuleNotFound,
|
||||
RuleErrorDeviceNotFound,
|
||||
RuleErrorTriggerTypeNotFound
|
||||
};
|
||||
@ -26,6 +27,12 @@ public:
|
||||
RuleError addRule(const Trigger &trigger, const QList<State> states, const QList<Action> &actions);
|
||||
QList<Rule> rules() const;
|
||||
|
||||
RuleError removeRule(const QUuid &ruleId);
|
||||
|
||||
signals:
|
||||
void ruleAdded(const QUuid &ruleId);
|
||||
void ruleRemoved(const QUuid &ruleId);
|
||||
|
||||
private:
|
||||
QList<Rule> m_rules;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user