This repository has been archived on 2026-05-31. You can view files and clone it, but cannot push or open issues or pull requests.
powersync-app/guh-control/rulemanager.h
2018-02-19 18:05:54 +01:00

56 lines
1.4 KiB
C++

#ifndef RULEMANAGER_H
#define RULEMANAGER_H
#include <QObject>
#include "types/rules.h"
#include "jsonrpc/jsonhandler.h"
class JsonRpcClient;
class StateEvaluator;
class RuleManager : public JsonHandler
{
Q_OBJECT
Q_PROPERTY(Rules* rules READ rules CONSTANT)
public:
explicit RuleManager(JsonRpcClient *jsonClient, QObject *parent = nullptr);
QString nameSpace() const override;
void clear();
void init();
Rules* rules() const;
Q_INVOKABLE Rule* createNewRule();
Q_INVOKABLE void addRule(const QVariantMap params);
Q_INVOKABLE void addRule(Rule *rule);
Q_INVOKABLE void removeRule(const QUuid &ruleId);
Q_INVOKABLE void editRule(Rule *rule);
private slots:
void handleRulesNotification(const QVariantMap &params);
void getRulesReply(const QVariantMap &params);
void getRuleDetailsReply(const QVariantMap &params);
void addRuleReply(const QVariantMap &params);
void removeRuleReply(const QVariantMap &params);
void onEditRuleReply(const QVariantMap &params);
private:
void parseEventDescriptors(const QVariantList &eventDescriptorList, Rule *rule);
StateEvaluator* parseStateEvaluator(const QVariantMap &stateEvaluatorMap);
void parseRuleActions(const QVariantList &ruleActions, Rule *rule);
signals:
void editRuleReply(const QString &ruleError);
private:
JsonRpcClient *m_jsonClient;
Rules* m_rules;
};
#endif // RULEMANAGER_H