Wireshark  2.9.0-477-g68ec514b
The Wireshark network protocol analyzer
extcap_argument.h
1 /* extcap_argument.h
2  *
3  * Wireshark - Network traffic analyzer
4  * By Gerald Combs <gerald@wireshark.org>
5  * Copyright 1998 Gerald Combs
6  *
7  * SPDX-License-Identifier: GPL-2.0-or-later
8  */
9 
10 #ifndef UI_QT_EXTCAP_ARGUMENT_H_
11 #define UI_QT_EXTCAP_ARGUMENT_H_
12 
13 #include <QObject>
14 #include <QWidget>
15 #include <QLabel>
16 #include <QVariant>
17 #include <QList>
18 #include <QLineEdit>
19 #include <QComboBox>
20 #include <QButtonGroup>
21 #include <QCheckBox>
22 #include <QDateTime>
23 
24 #include <extcap_parser.h>
25 
26 #define EXTCAP_GUI_BLANK_LABEL "QLabel { color : ; }"
27 #define EXTCAP_GUI_ERROR_LABEL "QLabel { color : red; }"
28 
29 class ExtcapValue;
30 
31 typedef QList<ExtcapValue> ExtcapValueList;
32 
34 {
35 public:
36  ExtcapValue(QString value, QString call, bool enabled, bool isDefault) :
37  _value(value), _call(call), _enabled(enabled),
38  _isDefault(isDefault), _depth(0) {}
39  virtual ~ExtcapValue();
40 
41  void setChildren(ExtcapValueList children);
42  ExtcapValueList children()
43  {
44  if ( _children.length() == 0 )
45  return ExtcapValueList();
46  return _children;
47  }
48 
49  QString value() const { return _value; }
50  const QString call() const { return _call; }
51  bool enabled() const { return _enabled; }
52  bool isDefault() const { return _isDefault; }
53 
54  int depth() { return _depth; }
55 
56 private:
57  QString _value;
58  QString _call;
59 
60  bool _enabled;
61  bool _isDefault;
62 
63  int _depth;
64 
65  ExtcapValueList _children;
66 };
67 
68 
69 class ExtcapArgument: public QObject
70 {
71  Q_OBJECT
72 
73 public:
74  ExtcapArgument(QObject *parent = Q_NULLPTR);
75  ExtcapArgument(extcap_arg * argument, QObject *parent = Q_NULLPTR);
76  ExtcapArgument(const ExtcapArgument &obj);
77  virtual ~ExtcapArgument();
78 
79  virtual QWidget * createLabel(QWidget * parent = 0);
80  virtual QWidget * createEditor(QWidget * parent = 0);
81 
82  virtual extcap_arg * argument() { return _argument; }
83  virtual QString call();
84  virtual QString value();
85  virtual QString defaultValue();
86 
87  bool isDefault();
88  virtual bool isValid();
89  bool isRequired();
90  bool reload();
91 
92  QString prefKey(const QString & device_name);
93  virtual QString prefValue();
94 
95  void resetValue();
96 
97  virtual QString group() const;
98  virtual int argNr() const;
99 
100  static ExtcapArgument * create(extcap_arg * argument = Q_NULLPTR, QObject * parent = Q_NULLPTR);
101 
102 Q_SIGNALS:
103  void valueChanged();
104 
105 protected:
106 
107  bool fileExists();
108 
109  ExtcapValueList loadValues(QString parent);
110  bool reloadValues();
111 
112  ExtcapValueList values;
113 
114  extcap_arg * _argument;
115  QLabel * _label;
116  int _number;
117 
118  const QString label_style;
119 
120 private Q_SLOTS:
121 
122  void onStringChanged(QString);
123  void onIntChanged(int);
124  void onBoolChanged(bool);
125 
126 };
127 
129 {
130 
131 public:
132  ExtArgText(extcap_arg * argument, QObject *parent = Q_NULLPTR);
133 
134  virtual QWidget * createEditor(QWidget * parent);
135  virtual QString value();
136  virtual bool isValid();
137 
138 protected:
139 
140  QLineEdit * textBox;
141 };
142 
143 class ExtArgNumber : public ExtArgText
144 {
145 public:
146  ExtArgNumber(extcap_arg * argument, QObject *parent = Q_NULLPTR);
147 
148  virtual QWidget * createEditor(QWidget * parent);
149  virtual QString defaultValue();
150 };
151 
153 {
154  Q_OBJECT
155 
156 public:
157  ExtArgSelector(extcap_arg * argument, QObject *parent = Q_NULLPTR);
158 
159  virtual QWidget * createEditor(QWidget * parent);
160  virtual QString value();
161  virtual bool isValid();
162 
163 private:
164 
165  QComboBox * boxSelection;
166 
167 private Q_SLOTS:
168  void onReloadTriggered();
169 
170 };
171 
173 {
174 public:
175  ExtArgRadio(extcap_arg * argument, QObject *parent = Q_NULLPTR);
176 
177  virtual QWidget * createEditor(QWidget * parent);
178  virtual QString value();
179  virtual bool isValid();
180 
181 private:
182 
183  QButtonGroup * selectorGroup;
184  QList<QString> * callStrings;
185 };
186 
188 {
189 public:
190  ExtArgBool(extcap_arg * argument, QObject *parent = Q_NULLPTR);
191 
192  virtual QWidget * createLabel(QWidget * parent);
193  virtual QWidget * createEditor(QWidget * parent);
194 
195  virtual QString call();
196  virtual QString value();
197  virtual bool isValid();
198  virtual QString defaultValue();
199  virtual QString prefValue();
200 
201 private:
202 
203  QCheckBox * boolBox;
204 
205  bool defaultBool();
206 };
207 
209 {
210  Q_OBJECT
211 
212 public:
213  ExtArgTimestamp(extcap_arg * argument, QObject *parent = Q_NULLPTR);
214  virtual QWidget * createEditor(QWidget * parent);
215 
216  virtual bool isValid();
217  virtual QString defaultValue();
218  virtual QString value();
219  virtual QString prefValue();
220 
221 private Q_SLOTS:
222  void onDateTimeChanged(QDateTime);
223 
224 private:
225  QDateTime ts;
226 };
227 
228 #endif /* UI_QT_EXTCAP_ARGUMENT_H_ */
229 
230 /*
231  * Editor modelines
232  *
233  * Local Variables:
234  * c-basic-offset: 4
235  * tab-width: 8
236  * indent-tabs-mode: nil
237  * End:
238  *
239  * ex: set shiftwidth=4 tabstop=8 expandtab:
240  * :indentSize=4:tabSize=8:noTabs=true:
241  */
Definition: extcap_argument.h:143
Definition: extcap_argument.h:208
Definition: extcap_argument.h:172
Definition: extcap_argument.h:152
Definition: extcap_argument.h:33
Definition: extcap_argument.h:128
Definition: extcap_argument.h:69
Definition: extcap_parser.h:99
Definition: extcap_argument.h:187