diff options
author | Kevin Smith <git@kismith.co.uk> | 2011-04-25 08:56:21 (GMT) |
---|---|---|
committer | Kevin Smith <git@kismith.co.uk> | 2011-04-25 09:46:05 (GMT) |
commit | 3727dd9632007bc97962156bd131f6c8c977a7ba (patch) | |
tree | 75b85d1264cc43846765acf1194f3123f6e50c00 /Swiften/AdHoc/OutgoingAdHocCommandSession.cpp | |
parent | 1ae62edd9a9bc3a92e546a7e5267f9c943750c23 (diff) | |
download | swift-contrib-3727dd9632007bc97962156bd131f6c8c977a7ba.zip swift-contrib-3727dd9632007bc97962156bd131f6c8c977a7ba.tar.bz2 |
Move available actions logic into Swiften class.
Ready for unit testing, and fixing.
Diffstat (limited to 'Swiften/AdHoc/OutgoingAdHocCommandSession.cpp')
-rw-r--r-- | Swiften/AdHoc/OutgoingAdHocCommandSession.cpp | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/Swiften/AdHoc/OutgoingAdHocCommandSession.cpp b/Swiften/AdHoc/OutgoingAdHocCommandSession.cpp index 40b17e7..edacf94 100644 --- a/Swiften/AdHoc/OutgoingAdHocCommandSession.cpp +++ b/Swiften/AdHoc/OutgoingAdHocCommandSession.cpp @@ -19,8 +19,27 @@ void OutgoingAdHocCommandSession::handleResponse(boost::shared_ptr<Command> payl if (error) { onError(error); } else { - sessionID_ = payload->getSessionID(); const std::vector<Command::Action> actions = payload->getAvailableActions(); + actionStates_.clear(); + 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; @@ -74,4 +93,8 @@ void OutgoingAdHocCommandSession::goNext(Form::ref form) { commandRequest->send(); } +OutgoingAdHocCommandSession::ActionState OutgoingAdHocCommandSession::getActionState(Command::Action action) { + return actionStates_[action]; +} + } |