diff options
Diffstat (limited to 'Swiften/AdHoc/OutgoingAdHocCommandSession.cpp')
-rw-r--r-- | Swiften/AdHoc/OutgoingAdHocCommandSession.cpp | 109 |
1 files changed, 55 insertions, 54 deletions
diff --git a/Swiften/AdHoc/OutgoingAdHocCommandSession.cpp b/Swiften/AdHoc/OutgoingAdHocCommandSession.cpp index 4a006ad..22c478d 100644 --- a/Swiften/AdHoc/OutgoingAdHocCommandSession.cpp +++ b/Swiften/AdHoc/OutgoingAdHocCommandSession.cpp @@ -1,16 +1,17 @@ /* - * Copyright (c) 2010-2011 Isode Limited. + * Copyright (c) 2010-2016 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ #include <Swiften/AdHoc/OutgoingAdHocCommandSession.h> +#include <memory> + #include <boost/bind.hpp> -#include <boost/smart_ptr/make_shared.hpp> -#include <Swiften/Queries/GenericRequest.h> #include <Swiften/Base/Algorithm.h> +#include <Swiften/Queries/GenericRequest.h> namespace Swift { OutgoingAdHocCommandSession::OutgoingAdHocCommandSession(const JID& to, const std::string& commandNode, IQRouter* iqRouter) : to_(to), commandNode_(commandNode), iqRouter_(iqRouter), isMultiStage_(false) { @@ -18,83 +19,83 @@ OutgoingAdHocCommandSession::OutgoingAdHocCommandSession(const JID& to, const st } OutgoingAdHocCommandSession::~OutgoingAdHocCommandSession() { - connection_.disconnect(); + connection_.disconnect(); } -void OutgoingAdHocCommandSession::handleResponse(boost::shared_ptr<Command> payload, ErrorPayload::ref error) { - if (error) { - onError(error); - } else { - const std::vector<Command::Action>& actions = payload->getAvailableActions(); - actionStates_.clear(); - if (payload->getStatus() == Command::Executing ) { - actionStates_[Command::Cancel] = EnabledAndPresent; - actionStates_[Command::Complete] = Present; - if (std::find(actions.begin(), actions.end(), Command::Complete) != actions.end()) { - actionStates_[Command::Complete] = EnabledAndPresent; - } - - if (getIsMultiStage()) { - actionStates_[Command::Next] = Present; - actionStates_[Command::Prev] = Present; - } - - if (std::find(actions.begin(), actions.end(), Command::Next) != actions.end()) { - actionStates_[Command::Next] = EnabledAndPresent; - } - if (std::find(actions.begin(), actions.end(), Command::Prev) != actions.end()) { - actionStates_[Command::Prev] = EnabledAndPresent; - } - } - - sessionID_ = payload->getSessionID(); - if (std::find(actions.begin(), actions.end(), Command::Next) != actions.end() - || std::find(actions.begin(), actions.end(), Command::Prev) != actions.end()) { - isMultiStage_ = true; - } - onNextStageReceived(payload); - } +void OutgoingAdHocCommandSession::handleResponse(std::shared_ptr<Command> payload, ErrorPayload::ref error) { + if (error) { + onError(error); + } else { + const std::vector<Command::Action>& actions = payload->getAvailableActions(); + actionStates_.clear(); + if (payload->getStatus() == Command::Executing ) { + actionStates_[Command::Cancel] = EnabledAndPresent; + actionStates_[Command::Complete] = Present; + if (std::find(actions.begin(), actions.end(), Command::Complete) != actions.end()) { + actionStates_[Command::Complete] = EnabledAndPresent; + } + + if (getIsMultiStage()) { + actionStates_[Command::Next] = Present; + actionStates_[Command::Prev] = Present; + } + + if (std::find(actions.begin(), actions.end(), Command::Next) != actions.end()) { + actionStates_[Command::Next] = EnabledAndPresent; + } + if (std::find(actions.begin(), actions.end(), Command::Prev) != actions.end()) { + actionStates_[Command::Prev] = EnabledAndPresent; + } + } + + sessionID_ = payload->getSessionID(); + if (std::find(actions.begin(), actions.end(), Command::Next) != actions.end() + || std::find(actions.begin(), actions.end(), Command::Prev) != actions.end()) { + isMultiStage_ = true; + } + onNextStageReceived(payload); + } } bool OutgoingAdHocCommandSession::getIsMultiStage() const { - return isMultiStage_; + return isMultiStage_; } void OutgoingAdHocCommandSession::start() { - boost::shared_ptr<GenericRequest<Command> > commandRequest = boost::make_shared< GenericRequest<Command> >(IQ::Set, to_, boost::make_shared<Command>(commandNode_), iqRouter_); - connection_ = commandRequest->onResponse.connect(boost::bind(&OutgoingAdHocCommandSession::handleResponse, this, _1, _2)); - commandRequest->send(); + std::shared_ptr<GenericRequest<Command> > commandRequest = std::make_shared< GenericRequest<Command> >(IQ::Set, to_, std::make_shared<Command>(commandNode_), iqRouter_); + connection_ = commandRequest->onResponse.connect(boost::bind(&OutgoingAdHocCommandSession::handleResponse, this, _1, _2)); + commandRequest->send(); } void OutgoingAdHocCommandSession::cancel() { - if (!sessionID_.empty()) { - submitForm(Form::ref(), Command::Cancel); - } + if (!sessionID_.empty()) { + submitForm(Form::ref(), Command::Cancel); + } } void OutgoingAdHocCommandSession::goBack() { - submitForm(Form::ref(), Command::Prev); + submitForm(Form::ref(), Command::Prev); } void OutgoingAdHocCommandSession::complete(Form::ref form) { - submitForm(form, Command::Complete); + submitForm(form, Command::Complete); } void OutgoingAdHocCommandSession::goNext(Form::ref form) { - submitForm(form, Command::Next); + submitForm(form, Command::Next); } void OutgoingAdHocCommandSession::submitForm(Form::ref form, Command::Action action) { - boost::shared_ptr<Command> command(boost::make_shared<Command>(commandNode_, sessionID_, action)); - command->setForm(form); - boost::shared_ptr<GenericRequest<Command> > commandRequest = boost::make_shared< GenericRequest<Command> >(IQ::Set, to_, command, iqRouter_); - connection_.disconnect(); - connection_ = commandRequest->onResponse.connect(boost::bind(&OutgoingAdHocCommandSession::handleResponse, this, _1, _2)); - commandRequest->send(); + std::shared_ptr<Command> command(std::make_shared<Command>(commandNode_, sessionID_, action)); + command->setForm(form); + std::shared_ptr<GenericRequest<Command> > commandRequest = std::make_shared< GenericRequest<Command> >(IQ::Set, to_, command, iqRouter_); + connection_.disconnect(); + connection_ = commandRequest->onResponse.connect(boost::bind(&OutgoingAdHocCommandSession::handleResponse, this, _1, _2)); + commandRequest->send(); } OutgoingAdHocCommandSession::ActionState OutgoingAdHocCommandSession::getActionState(Command::Action action) const { - return get(actionStates_, action, Absent); + return get(actionStates_, action, Absent); } } |