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.h | |
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.h')
-rw-r--r-- | Swiften/AdHoc/OutgoingAdHocCommandSession.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/Swiften/AdHoc/OutgoingAdHocCommandSession.h b/Swiften/AdHoc/OutgoingAdHocCommandSession.h index 820dc62..fcc93e7 100644 --- a/Swiften/AdHoc/OutgoingAdHocCommandSession.h +++ b/Swiften/AdHoc/OutgoingAdHocCommandSession.h @@ -19,6 +19,16 @@ namespace Swift { class AdHocCommandWindowFactory; class 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}; + OutgoingAdHocCommandSession(const DiscoItems::Item& command, AdHocCommandWindowFactory* factory, IQRouter* iqRouter); /** * Send initial request to the target. @@ -57,6 +67,14 @@ namespace Swift { * Emitted on error. */ boost::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. + */ + ActionState getActionState(Command::Action action); private: void handleResponse(boost::shared_ptr<Command> payload, ErrorPayload::ref error); private: @@ -64,5 +82,6 @@ namespace Swift { IQRouter* iqRouter_; bool isMultiStage_; std::string sessionID_; + std::map<Command::Action, ActionState> actionStates_; }; } |