diff options
Diffstat (limited to 'Swiften/AdHoc')
-rw-r--r-- | Swiften/AdHoc/OutgoingAdHocCommandSession.cpp | 109 | ||||
-rw-r--r-- | Swiften/AdHoc/OutgoingAdHocCommandSession.h | 150 | ||||
-rw-r--r-- | Swiften/AdHoc/SConscript | 4 |
3 files changed, 132 insertions, 131 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); } } diff --git a/Swiften/AdHoc/OutgoingAdHocCommandSession.h b/Swiften/AdHoc/OutgoingAdHocCommandSession.h index 19b4b7e..9a97ed0 100644 --- a/Swiften/AdHoc/OutgoingAdHocCommandSession.h +++ b/Swiften/AdHoc/OutgoingAdHocCommandSession.h @@ -1,99 +1,99 @@ /* - * Copyright (c) 2010-2011 Isode Limited. + * Copyright (c) 2010-2016 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ #pragma once -#include <boost/shared_ptr.hpp> -#include <string> #include <map> +#include <memory> +#include <string> + +#include <boost/signals2.hpp> #include <Swiften/Base/API.h> -#include <Swiften/JID/JID.h> -#include <Swiften/Base/boost_bsignals.h> #include <Swiften/Elements/Command.h> #include <Swiften/Elements/ErrorPayload.h> -#include <boost/signals/connection.hpp> +#include <Swiften/JID/JID.h> namespace Swift { - class IQRouter; - class MainWindow; - class UIEventStream; + class IQRouter; + class MainWindow; + class UIEventStream; - class SWIFTEN_API OutgoingAdHocCommandSession { - public: + class SWIFTEN_API OutgoingAdHocCommandSession { + public: - /** - * Availability of action. - */ - enum ActionState { - Absent /** Action isn't applicable to this command. */ = 0, - Present /** Action is applicable to this command */= 1, - Enabled /** Action is applicable and currently available */ = 2, - EnabledAndPresent = 3}; + /** + * Availability of action. + */ + enum ActionState { + Absent /** Action isn't applicable to this command. */ = 0, + Present /** Action is applicable to this command */= 1, + Enabled /** Action is applicable and currently available */ = 2, + EnabledAndPresent = 3}; - OutgoingAdHocCommandSession(const JID& to, const std::string& commandNode, IQRouter* iqRouter); - ~OutgoingAdHocCommandSession(); - /** - * Send initial request to the target. - */ - void start(); - /** - * Cancel command session with the target. - */ - void cancel(); - /** - * Return to the previous stage. - */ - void goBack(); - /** - * Send the form to complete the command. - * \param form Form for submission - if missing the command will be submitted with no form. - */ - void complete(Form::ref form); - /** - * Send the form to advance to the next stage of the command. - * \param form Form for submission - if missing the command will be submitted with no form. - */ - void goNext(Form::ref form); + OutgoingAdHocCommandSession(const JID& to, const std::string& commandNode, IQRouter* iqRouter); + ~OutgoingAdHocCommandSession(); + /** + * Send initial request to the target. + */ + void start(); + /** + * Cancel command session with the target. + */ + void cancel(); + /** + * Return to the previous stage. + */ + void goBack(); + /** + * Send the form to complete the command. + * \param form Form for submission - if missing the command will be submitted with no form. + */ + void complete(Form::ref form); + /** + * Send the form to advance to the next stage of the command. + * \param form Form for submission - if missing the command will be submitted with no form. + */ + void goNext(Form::ref form); - /** - * Is the form multi-stage? - */ - bool getIsMultiStage() const; + /** + * Is the form multi-stage? + */ + bool getIsMultiStage() const; - /** - * Emitted when the form for the next stage is available. - */ - boost::signal<void (Command::ref)> onNextStageReceived; + /** + * Emitted when the form for the next stage is available. + */ + boost::signals2::signal<void (Command::ref)> onNextStageReceived; - /** - * Emitted on error. - */ - boost::signal<void (ErrorPayload::ref)> onError; + /** + * Emitted on error. + */ + boost::signals2::signal<void (ErrorPayload::ref)> onError; - /** - * Get the state of a given action. - * This is useful for a UI to determine which buttons should be visible, - * and which enabled. - * Use for Next, Prev, Cancel and Complete only. - * If no actions are available, the command has completed. - */ - ActionState getActionState(Command::Action action) const; + /** + * Get the state of a given action. + * This is useful for a UI to determine which buttons should be visible, + * and which enabled. + * Use for Next, Prev, Cancel and Complete only. + * If no actions are available, the command has completed. + */ + ActionState getActionState(Command::Action action) const; - private: - void handleResponse(boost::shared_ptr<Command> payload, ErrorPayload::ref error); - void submitForm(Form::ref, Command::Action action); + private: + void handleResponse(std::shared_ptr<Command> payload, ErrorPayload::ref error); + void submitForm(Form::ref, Command::Action action); - private: - JID to_; - std::string commandNode_; - IQRouter* iqRouter_; - bool isMultiStage_; - std::string sessionID_; - std::map<Command::Action, ActionState> actionStates_; - boost::bsignals::connection connection_; - }; + private: + JID to_; + std::string commandNode_; + IQRouter* iqRouter_; + bool isMultiStage_; + std::string sessionID_; + std::map<Command::Action, ActionState> actionStates_; + boost::signals2::connection connection_; + }; } diff --git a/Swiften/AdHoc/SConscript b/Swiften/AdHoc/SConscript index 69c9083..6d3f176 100644 --- a/Swiften/AdHoc/SConscript +++ b/Swiften/AdHoc/SConscript @@ -1,6 +1,6 @@ Import("swiften_env") objects = swiften_env.SwiftenObject([ - "OutgoingAdHocCommandSession.cpp", - ]) + "OutgoingAdHocCommandSession.cpp", + ]) swiften_env.Append(SWIFTEN_OBJECTS = [objects]) |