OpenTwin 0.1
OpenTwin
 
Loading...
Searching...
No Matches
Terminal.h
Go to the documentation of this file.
1
4// ###########################################################################################################################################################################################################################################################################################################################
5
6#pragma once
7
8// API header
9#include "OToolkitAPI/Tool.h"
10
11// OT header
13
14// Qt header
15#include <QtCore/qobject.h>
16#include <QtCore/qbytearray.h>
17#include <QtCore/qlist.h>
18#include <QtCore/qjsonobject.h>
19#include <QtWidgets/qtreewidget.h>
20#include <QtWidgets/qdialog.h>
21
22class Terminal;
23class JSONEditor;
24
25class QWidget;
26class QVBoxLayout;
27class QHBoxLayout;
28class QGridLayout;
29class QComboBox;
30class QLineEdit;
31class QGroupBox;
32class QLabel;
33class QPushButton;
34class QProgressBar;
35class QShortcut;
36
37namespace ot { class Splitter; }
38
39class TerminalCollectionItem : public QTreeWidgetItem {
40public:
41 TerminalCollectionItem(Terminal * _owner, const QString& _title);
43
44 static TerminalCollectionItem * createFromJsonObject(Terminal * _owner, const QJsonObject& _object);
45
46 virtual bool setFromJsonObject(const QJsonObject& _object) = 0;
47 virtual void addToJsonObject(QJsonObject& _object) const = 0;
48
49 void setTitle(const QString& _title);
50 const QString& title(void) const { return m_title; };
51
52 Terminal * ownerTerminal(void) { return m_owner; };
53
54private:
55 Terminal * m_owner;
56 QString m_title;
57
58 TerminalCollectionItem() = delete;
60 TerminalCollectionItem& operator = (TerminalCollectionItem&) = delete;
61};
62
63// #####################################################################################################################################################################################
64
65// #####################################################################################################################################################################################
66
67// #####################################################################################################################################################################################
68
70public:
71 TerminalCollectionFilter(Terminal * _owner, const QString& _title);
73
74 virtual bool setFromJsonObject(const QJsonObject& _object) override;
75 virtual void addToJsonObject(QJsonObject& _object) const override;
76
77 bool hasDirectChildWith(const QString& _title) const;
78 bool hasAnyChildWith(const QString& _title) const;
79 bool hasChild(TerminalCollectionItem * _item) const;
80
81 bool merge(TerminalCollectionFilter* _newData, bool _isFirst);
82
83private:
84 bool createChildFromMerge(TerminalCollectionItem* _itemToMerge);
85
86 TerminalCollectionFilter() = delete;
89};
90
91// #####################################################################################################################################################################################
92
93// #####################################################################################################################################################################################
94
95// #####################################################################################################################################################################################
96
98public:
99 TerminalRequest(Terminal * _owner, const QString& _title);
100 virtual ~TerminalRequest(void);
101
102 virtual bool setFromJsonObject(const QJsonObject& _object) override;
103 virtual void addToJsonObject(QJsonObject& _object) const override;
104
105 void setUrl(const QString& _url) { m_url = _url; };
106 const QString& url(void) const { return m_url; };
107
108 void setMessageBody(const QString& _messageBody) { m_messageBody = _messageBody; };
109 const QString& messageBody(void) const { return m_messageBody; };
110
111 void setEndpoint(ot::MessageType _endpoint) { m_endpoint = _endpoint; };
112 ot::MessageType endpoint(void) const { return m_endpoint; };
113
114private:
115 QString m_url;
116 QString m_messageBody;
117 ot::MessageType m_endpoint;
118
119 TerminalRequest() = delete;
121 TerminalRequest& operator = (TerminalRequest&) = delete;
122};
123
124// #####################################################################################################################################################################################
125
126// #####################################################################################################################################################################################
127
128// #####################################################################################################################################################################################
129
130class Terminal : public QObject, public otoolkit::Tool {
131 Q_OBJECT
132public:
133 Terminal();
134 virtual ~Terminal();
135
136 // ###########################################################################################################################################################################################################################################################################################################################
137
138 // API base functions
139
142 virtual QString getToolName(void) const override;
143
145 virtual bool runTool(QMenu* _rootMenu, otoolkit::ToolWidgets& _content) override;
146
147 virtual void restoreToolSettings(QSettings& _settings) override;
148
150 virtual bool prepareToolShutdown(QSettings& _settings) override;
151
152 // ###########################################################################################################################################################################################################################################################################################################################
153
155
158
159 // ################################################################################################################################
160
161 // Private: Slots
162
163private Q_SLOTS:
164 void slotSendMessage(void);
165 void slotMessageSendSuccessful(const QByteArray& _response);
166 void slotMessageSendFailed(const QString& _errorString);
167 void slotServiceNameChanged(void);
168 void slotSelectionChanged(void);
169 void slotShowNavigationContextMenu(const QPoint& _pt);
170 void slotNavigationItemDoubleClicked(QTreeWidgetItem* _item, int _column);
171 void slotNavigationItemChanged(QTreeWidgetItem* _item, int _column);
172 void slotUpdateCurrent(void);
173 void slotRenameCurrent(void);
174 void slotDeleteCurrent(void);
175 void slotCloneCurrent(void);
176
177 void slotLoadRequestCollection(void);
178 void slotSaveRequestCollection(void);
179
180private:
181 // ################################################################################################################################
182
183 // Private: Helper
184
185 void initializeServices(void);
186 void initializeDefaultServices(void);
187 void setWaitingMode(bool _isWaiting);
188
189 // ################################################################################################################################
190
191 // Private: Context Menu handling
192
193 void handleContextFilter(const QPoint& _pt, TerminalCollectionFilter * _filter);
194 void handleContextRequest(const QPoint& _pt, TerminalRequest * _request);
195
196 void addNewFilter(TerminalCollectionFilter * _parentFilter);
197 void removeFilter(TerminalCollectionFilter * _filter);
198
199 void addNewRequestFromCurrent(TerminalCollectionFilter * _parentFilter);
200 void updateRequestFromCurrent(TerminalRequest * _request);
201 void removeRequest(TerminalRequest * _request);
202 void applyRequest(TerminalRequest* _request);
203 void applyAndSendRequest(TerminalRequest* _request);
204
205 void exportToFile(TerminalCollectionFilter* _filter);
206 void importFromFile(TerminalCollectionFilter* _filter);
207
208 // ################################################################################################################################
209
210 // Private: Async worker functions
211
212 void workerSendMessage(const std::string& _receiverUrl, ot::MessageType _messageType, const QByteArray& _data);
213
214 struct ServiceInfo {
215 QString name;
216 QString shortName;
217 QString url;
218 };
219
220 // Data
221 QList<ServiceInfo> m_services;
222 TerminalCollectionFilter * m_requestsRootFilter;
223 bool m_exportLock;
224
225 // Layouts
226
227 ot::WidgetView* m_root;
228
229 QWidget * m_leftLayoutW;
230 QVBoxLayout * m_leftLayout;
231
232 QGridLayout * m_buttonLayout;
233
234 QHBoxLayout * m_navigationLayout;
235 QTreeWidget * m_navigation;
236
237 QWidget * m_rightLayoutW;
238 QVBoxLayout * m_rightLayout;
239 ot::Splitter* m_rightSplitter;
240
241 QGroupBox * m_receiverBox;
242 QGridLayout * m_receiverLayout;
243
244 QGroupBox * m_messageBox;
245 QVBoxLayout * m_messageLayout;
246
247 QGroupBox * m_responseBox;
248 QVBoxLayout * m_responseLayout;
249
250 // Controls
251
252 QLabel * m_receiverNameL;
253 QComboBox * m_receiverName;
254 QLabel * m_receiverUrlL;
255 QLineEdit * m_receiverUrl;
256
257 QLabel * m_endpointL;
258 QComboBox * m_endpoint;
259
260 QPushButton * m_btnSend;
261
262 JSONEditor * m_messageEdit;
263
264 JSONEditor * m_responseEdit;
265 QLabel * m_responseLength;
266
267 QProgressBar * m_progressBar;
268
269 // Shortcuts
270
271 QShortcut* m_shortcutSave;
272 QShortcut* m_shortcutSend;
273 QShortcut* m_shortcutRename;
274 QShortcut* m_shortcutDelete;
275 QShortcut* m_shortcutClone;
276
277};
Definition JSONEditor.h:11
Definition Terminal.h:69
bool hasChild(TerminalCollectionItem *_item) const
Definition Terminal.cpp:214
bool merge(TerminalCollectionFilter *_newData, bool _isFirst)
Definition Terminal.cpp:225
virtual bool setFromJsonObject(const QJsonObject &_object) override
Definition Terminal.cpp:137
virtual void addToJsonObject(QJsonObject &_object) const override
Definition Terminal.cpp:174
virtual ~TerminalCollectionFilter()
Definition Terminal.cpp:135
bool hasDirectChildWith(const QString &_title) const
Definition Terminal.cpp:194
bool hasAnyChildWith(const QString &_title) const
Definition Terminal.cpp:201
Definition Terminal.h:39
static TerminalCollectionItem * createFromJsonObject(Terminal *_owner, const QJsonObject &_object)
Definition Terminal.cpp:89
void setTitle(const QString &_title)
Definition Terminal.cpp:117
virtual bool setFromJsonObject(const QJsonObject &_object)=0
virtual void addToJsonObject(QJsonObject &_object) const =0
virtual ~TerminalCollectionItem()
Definition Terminal.cpp:83
Terminal * ownerTerminal(void)
Definition Terminal.h:52
const QString & title(void) const
Definition Terminal.h:50
Definition Terminal.h:130
virtual QString getToolName(void) const override
Return the unique tool name The name will be used to create all required menu entries.
Definition Terminal.cpp:386
ot::MessageType endpointToMessageType(void) const
Definition Terminal.cpp:569
virtual bool runTool(QMenu *_rootMenu, otoolkit::ToolWidgets &_content) override
Create the central widget that will be displayed to the user in the main tab view.
Definition Terminal.cpp:390
Terminal()
Definition Terminal.cpp:375
virtual void restoreToolSettings(QSettings &_settings) override
Definition Terminal.cpp:536
virtual bool prepareToolShutdown(QSettings &_settings) override
Stop all the logic of this tool.
Definition Terminal.cpp:541
void setEndpointFromMessageType(ot::MessageType _type)
Definition Terminal.cpp:553
virtual ~Terminal()
Definition Terminal.cpp:379
void notifyItemDeleted(TerminalCollectionItem *_item)
Definition Terminal.cpp:549
Definition Terminal.h:97
virtual void addToJsonObject(QJsonObject &_object) const override
Definition Terminal.cpp:360
const QString & url(void) const
Definition Terminal.h:106
const QString & messageBody(void) const
Definition Terminal.h:109
void setUrl(const QString &_url)
Definition Terminal.h:105
void setEndpoint(ot::MessageType _endpoint)
Definition Terminal.h:111
virtual ~TerminalRequest(void)
Definition Terminal.cpp:340
virtual bool setFromJsonObject(const QJsonObject &_object) override
Definition Terminal.cpp:342
void setMessageBody(const QString &_messageBody)
Definition Terminal.h:108
ot::MessageType endpoint(void) const
Definition Terminal.h:112
Definition Splitter.h:18
The WidgetView class is used to integrate the Qt-ADS functionallity into open twin.
Definition WidgetView.h:33
Definition Tool.h:27
Definition ToolWidgets.h:24
Definition Connector.h:8
MessageType
The message types describes how a message should be delivered.
Definition CommunicationTypes.h:10