1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
/*
* Copyright (c) 2010 Kevin Smith
* Licensed under the GNU General Public License v3.
* See Documentation/Licenses/GPLv3.txt for more information.
*/
#pragma once
#include "Swiften/Base/String.h"
#include "Swiften/Elements/Payload.h"
namespace Swift {
/**
* Ad-Hoc Command (XEP-0050).
*/
class Command : public Payload {
public:
enum Status {Executing, Completed, Canceled, NoStatus};
enum Action {Cancel, Execute, Complete, Prev, Next, NoAction};
struct Note {
enum Type {Info, Warn, Error};
Note(String note, Type type) : note(note), type(type) {};
String note;
Type type;
};
public:
Command(const String& node, const String& sessionID, Status status) { constructor(node, sessionID, NoAction, status);}
Command(const String& node, const String& sessionID = "", Action action = Execute) { constructor(node, sessionID, action, NoStatus); }
const String& getNode() const { return node_; }
const String& getSessionID() const { return sessionID_; }
Action getPerformedAction() const { return performedAction_; }
void setExecuteAction(Action action) { executeAction_ = action; }
Action getExecuteAction() const { return executeAction_; }
Status getStatus() const { return status_; }
void addAvailableAction(Action action) { availableActions_.push_back(action); }
const std::vector<Action>& getAvailableActions() const { return availableActions_; }
void addNote(const Note& note) { notes_.push_back(note); }
const std::vector<Note>& getNotes() const { return notes_; }
boost::shared_ptr<Payload> getPayload() const { return payload_; }
void setPayload(boost::shared_ptr<Payload> payload) { payload_ = payload; }
private:
void constructor(const String& node, const String& sessionID, Action action, Status status) {
node_ = node;
sessionID_ = sessionID;
performedAction_ = action;
status_ = status;
executeAction_ = NoAction;
}
private:
String node_;
String sessionID_;
Action performedAction_;
Status status_;
Action executeAction_;
std::vector<Action> availableActions_;
std::vector<Note> notes_;
boost::shared_ptr<Payload> payload_;
};
}
|