diff options
author | Javier S. Pedro <maemo@javispedro.com> | 2013-04-04 00:00:38 +0200 |
---|---|---|
committer | Javier S. Pedro <maemo@javispedro.com> | 2013-04-04 00:00:38 +0200 |
commit | 5d8d6fed3fd7dd796a5a3093a7dbd46fab8d380a (patch) | |
tree | 56d1aa55260d0081cfd99b52c53f5ddc78cba200 /loginaction.cpp | |
parent | a6d8b23fd03993c0b94d21806ac3a36e251c8b9c (diff) | |
download | tapasboard-5d8d6fed3fd7dd796a5a3093a7dbd46fab8d380a.tar.gz tapasboard-5d8d6fed3fd7dd796a5a3093a7dbd46fab8d380a.zip |
pass Board objects instead of boardUrls around QML
Diffstat (limited to 'loginaction.cpp')
-rw-r--r-- | loginaction.cpp | 50 |
1 files changed, 50 insertions, 0 deletions
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 <QtCore/QDebug> + +#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<LoginAction*>(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<QVariantMap> 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(); +} |