19 #include "controller.h" 35 return Component::OnlyExecute;
42 if (method.returnType() == QMetaType::Bool) {
43 d->evaluateBool =
true;
46 if (method.parameterCount() == 2 && method.parameterType(1) == QMetaType::QStringList) {
47 d->listSignature =
true;
69 if (!argsAttr.isEmpty()) {
70 d->numberOfArgs = qint8(argsAttr.toInt());
74 if (!capturesAttr.isEmpty()) {
75 d->numberOfCaptures = qint8(capturesAttr.toInt());
88 return d->attributes.value(
name, defaultValue);
100 return QString::fromLatin1(d->controller->metaObject()->className());
106 return d->controller;
116 return d->numberOfArgs == -1 || d->numberOfArgs ==
numberOfArgs;
126 return d->numberOfCaptures == -1 || d->numberOfCaptures ==
numberOfCaptures;
138 return d->numberOfArgs;
144 return d->numberOfCaptures;
155 if (d->evaluateBool) {
158 if (d->listSignature) {
159 ret = d->method.invoke(d->controller,
160 Qt::DirectConnection,
161 Q_RETURN_ARG(
bool, methodRet),
167 args.append(d->emptyArgs);
169 ret = d->method.invoke(d->controller,
170 Qt::DirectConnection,
171 Q_RETURN_ARG(
bool, methodRet),
173 Q_ARG(QString, args.at(0)),
174 Q_ARG(QString, args.at(1)),
175 Q_ARG(QString, args.at(2)),
176 Q_ARG(QString, args.at(3)),
177 Q_ARG(QString, args.at(4)),
178 Q_ARG(QString, args.at(5)),
179 Q_ARG(QString, args.at(6)),
180 Q_ARG(QString, args.at(7)),
181 Q_ARG(QString, args.at(8)));
195 if (d->listSignature) {
196 ret = d->method.invoke(d->controller,
197 Qt::DirectConnection,
203 args.append(d->emptyArgs);
205 ret = d->method.invoke(d->controller,
206 Qt::DirectConnection,
208 Q_ARG(QString, args.at(0)),
209 Q_ARG(QString, args.at(1)),
210 Q_ARG(QString, args.at(2)),
211 Q_ARG(QString, args.at(3)),
212 Q_ARG(QString, args.at(4)),
213 Q_ARG(QString, args.at(5)),
214 Q_ARG(QString, args.at(6)),
215 Q_ARG(QString, args.at(7)),
216 Q_ARG(QString, args.at(8)));
223 #include "moc_action.cpp" virtual bool doExecute(Context *c) override
QMap< QString, QString > attributes() const
virtual qint8 numberOfCaptures() const
virtual bool matchCaptures(int numberOfCaptures) const
void detach(Action *action=nullptr)
void setAttributes(const QMap< QString, QString > &attributes)
virtual bool match(int numberOfArgs) const
The Cutelyst Component base class.
This class represents a Cutelyst Action.
Cutelyst Controller base class
QString attribute(const QString &name, const QString &defaultValue=QString()) const
virtual bool init(Application *application, const QVariantHash &args)
Controller * controller() const
The Cutelyst namespace holds all public Cutelyst API.
void setState(bool state)
Sets the state of the current executed action, setting to false will make the dispatcher skip non pro...
Action(QObject *parent=nullptr)
virtual Modifiers modifiers() const override
void setController(Controller *controller)
void setupAction(const QVariantHash &args, Application *app)
The Cutelyst Application.
void setMethod(const QMetaMethod &method)
virtual qint8 numberOfArgs() const
QString className() const