From 5d8d6fed3fd7dd796a5a3093a7dbd46fab8d380a Mon Sep 17 00:00:00 2001 From: "Javier S. Pedro" Date: Thu, 4 Apr 2013 00:00:38 +0200 Subject: pass Board objects instead of boardUrls around QML --- loginaction.cpp | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 loginaction.cpp (limited to 'loginaction.cpp') diff --git a/loginaction.cpp b/loginaction.cpp new file mode 100644 index 0000000..445b812 --- /dev/null +++ b/loginaction.cpp @@ -0,0 +1,50 @@ +#include + +#include "board.h" +#include "xmlrpcinterface.h" +#include "xmlrpcreply.h" +#include "loginaction.h" + +LoginAction::LoginAction(const QString &name, const QString &password, Board *board) + : Action(board), _username(name), _password(password) +{ +} + +bool LoginAction::isSupersetOf(Action *action) const +{ + LoginAction *other = qobject_cast(action); + if (other) { + if (other->_username == _username && other->_password == _password) { + return true; + } + } + return false; +} + +void LoginAction::execute() +{ + qDebug() << "Sending login call.."; + _call = _board->service()->asyncCall("login", + _username.toUtf8(), _password.toUtf8()); + _call->setParent(this); + connect(_call, SIGNAL(finished(XmlRpcPendingCall*)), SLOT(handleFinishedCall())); +} + +void LoginAction::handleFinishedCall() +{ + XmlRpcReply result(_call); + if (result.isValid()) { + QVariantMap map = result; + bool login_ok = map["result"].toBool(); + if (login_ok) { + _board->notifyLogin(map); + } else { + qWarning() << "Could not login to board as:" << _username; + } + } else { + qWarning() << "Could not fetch posts"; + // TODO emit error ... + } + emit finished(this); + _call->deleteLater(); +} -- cgit v1.2.3