7 #include "commandmanager.h"
18 #include <QJsonObject>
19 #include <QStringList>
35 CommandManager::CommandManager(
bool p_bIsActive, QObject *parent)
37 , m_bIsActive(p_bIsActive)
45 CommandManager::CommandManager(
const QByteArray &p_qByteArrayJsonDoc,
bool p_bIsActive, QObject *parent)
47 , m_bIsActive(p_bIsActive)
51 m_jsonDocumentOrigin = QJsonDocument::fromJson(p_qByteArrayJsonDoc);
53 insert(m_jsonDocumentOrigin);
59 CommandManager::CommandManager(
const QJsonDocument &p_jsonDoc,
bool p_bIsActive, QObject *parent)
61 , m_bIsActive(p_bIsActive)
62 , m_jsonDocumentOrigin(p_jsonDoc)
66 insert(m_jsonDocumentOrigin);
72 CommandManager::~CommandManager()
87 m_qMapCommands.clear();
93 void CommandManager::init()
103 QJsonObject t_jsonObjectCommand;
106 if(p_jsonDocument.isObject() && p_jsonDocument.object().value(QString(
"commands")) != QJsonValue::Undefined)
107 t_jsonObjectCommand = p_jsonDocument.object().value(QString(
"commands")).toObject();
111 QJsonObject::Iterator it;
112 for(it = t_jsonObjectCommand.begin(); it != t_jsonObjectCommand.end(); ++it)
114 if(!m_qMapCommands.contains(it.key()))
115 m_qMapCommands.insert(it.key(),
Command(it.key(), it.value().toObject(),
true,
this));
117 qWarning(
"Warning: CommandMap contains command %s already. Insertion skipped.\n", it.key().toLatin1().constData());
120 emit commandMapChanged();
128 Command t_command(p_sKey, p_sDescription,
false,
this);
129 insert(p_sKey, t_command);
138 t_command.setParent(
this);
139 m_qMapCommands.insert(p_sKey, t_command);
140 emit commandMapChanged();
155 QString t_sCommandName = t_rawCommand.
command();
161 if(t_rawCommand.count() >= m_qMapCommands[t_sCommandName].count())
163 m_qMapCommands[t_sCommandName].isJson() = t_rawCommand.isJson();
166 for(quint32 i = 0; i < m_qMapCommands[t_sCommandName].count(); ++i)
168 QVariant::Type t_type = m_qMapCommands[t_sCommandName][i].type();
170 QVariant t_qVariantParam(t_rawCommand.pValues()[i]);
172 if(t_qVariantParam.canConvert(t_type) && t_qVariantParam.convert(t_type))
173 m_qMapCommands[t_sCommandName][i] = t_qVariantParam;
178 m_qMapCommands[t_sCommandName].execute();
187 return m_qMapCommands[key];
195 return m_qMapCommands[key];
Command & operator[](const QString &key)
void insert(const QJsonDocument &p_jsonDocument)
Declaration of the RawCommand Class.
virtual void update(Subject *p_pSubject)
The Subject class provides the base class of every subject of the observer design pattern...
RawCommand & getRawCommand()
bool hasCommand(const QString &p_sCommand) const