summaryrefslogtreecommitdiff
path: root/ui
diff options
context:
space:
mode:
authorRoland Knall <roland.knall@br-automation.com>2016-01-28 10:41:38 +0100
committerRoland Knall <rknall@gmail.com>2016-01-28 14:51:14 +0000
commit97a1a50e200a6c50e0014dde7e8ec932c30190a1 (patch)
treef7f49f88fd79da22f17d95d39f94b146c2e3b316 /ui
parent08527e9b85d91f1d121bfa323b9c32780012a02c (diff)
downloadwireshark-97a1a50e200a6c50e0014dde7e8ec932c30190a1.tar.gz
extcap: Cleanup complex types and add save option
Cleanup handling of complex data types and use only glib defined datatypes while handling argument values. Add a save parameter, which (additionally) can set, that a parameter is not saved in a configuration file. Passwords are by default not saved, which may be overwritten using this parameter Change-Id: I67eff0f3286170f082d532e806a39511c40df647 Reviewed-on: https://code.wireshark.org/review/13573 Petri-Dish: Roland Knall <rknall@gmail.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Dario Lombardo <lomato@gmail.com> Reviewed-by: Roland Knall <rknall@gmail.com>
Diffstat (limited to 'ui')
-rw-r--r--ui/qt/extcap_argument.cpp142
-rw-r--r--ui/qt/extcap_argument.h8
-rw-r--r--ui/qt/extcap_argument_file.cpp3
-rw-r--r--ui/qt/extcap_argument_multiselect.cpp16
-rw-r--r--ui/qt/extcap_argument_multiselect.h1
-rw-r--r--ui/qt/extcap_options_dialog.cpp13
-rw-r--r--ui/qt/extcap_options_dialog.h1
7 files changed, 84 insertions, 100 deletions
diff --git a/ui/qt/extcap_argument.cpp b/ui/qt/extcap_argument.cpp
index 38dc865770..0c06107f3e 100644
--- a/ui/qt/extcap_argument.cpp
+++ b/ui/qt/extcap_argument.cpp
@@ -41,6 +41,8 @@
#include <QStandardItemModel>
#include <QItemSelectionModel>
+#include <glib.h>
+#include <log.h>
#include <epan/prefs.h>
#include <color_utils.h>
@@ -138,19 +140,11 @@ QWidget * ExtArgRadio::createEditor(QWidget * parent)
QString callString = (*iter).call();
callStrings->append(callString);
- if ( _default != NULL && (*iter).isDefault() )
+ if ( (*iter).isDefault() )
{
radio->setChecked(true);
anyChecked = true;
}
- else if (_default != NULL)
- {
- if ( callString.compare(_default->toString()) == 0 )
- {
- radio->setChecked(true);
- anyChecked = true;
- }
- }
connect(radio, SIGNAL(clicked(bool)), SLOT(onBoolChanged(bool)));
selectorGroup->addButton(radio, count);
@@ -219,19 +213,13 @@ QWidget * ExtArgBool::createLabel(QWidget * parent)
QWidget * ExtArgBool::createEditor(QWidget * parent)
{
+ bool state = defaultBool();
+
boolBox = new QCheckBox(QString().fromUtf8(_argument->display), parent);
if ( _argument->tooltip != NULL )
boolBox->setToolTip(QString().fromUtf8(_argument->tooltip));
- if ( _argument->default_complex != NULL )
- if ( extcap_complex_get_bool(_argument->default_complex) == (gboolean)TRUE )
- boolBox->setCheckState(Qt::Checked);
-
- if ( _default != NULL )
- {
- if ( _default->toString().compare("true") )
- boolBox->setCheckState(Qt::Checked);
- }
+ boolBox->setCheckState(state ? Qt::Checked : Qt::Unchecked );
connect (boolBox, SIGNAL(stateChanged(int)), SLOT(onIntChanged(int)));
@@ -263,26 +251,37 @@ bool ExtArgBool::isValid()
return true;
}
-QString ExtArgBool::defaultValue()
+bool ExtArgBool::defaultBool()
{
- if ( _argument != 0 && _argument->default_complex != NULL )
- if ( extcap_complex_get_bool(_argument->default_complex) == (gboolean)TRUE )
- return QString("true");
+ bool result = false;
+
+ if ( _argument )
+ {
+ if ( _argument->default_complex )
+ {
+ if ( extcap_complex_get_bool(_argument->default_complex) == (gboolean)TRUE )
+ result = true;
+ }
+ }
+
+ return result;
+}
- return QString("false");
+QString ExtArgBool::defaultValue()
+{
+ return defaultBool() ? QString("true") : QString("false");
}
ExtArgText::ExtArgText(extcap_arg * argument) :
ExtcapArgument(argument), textBox(0)
{
- _default = new QVariant(QString(""));
}
QWidget * ExtArgText::createEditor(QWidget * parent)
{
- textBox = new QLineEdit(_default->toString(), parent);
+ QString text = defaultValue();
- textBox->setText(defaultValue());
+ textBox = new QLineEdit(text, parent);
if ( _argument->tooltip != NULL )
textBox->setToolTip(QString().fromUtf8(_argument->tooltip));
@@ -330,23 +329,12 @@ bool ExtArgText::isValid()
return valid;
}
-QString ExtArgText::defaultValue()
-{
- if ( _argument != 0 && _argument->default_complex != 0)
- {
- gchar * str = extcap_get_complex_as_string(_argument->default_complex);
- if ( str != 0 )
- return QString(str);
- }
-
- return QString();
-}
-
ExtArgNumber::ExtArgNumber(extcap_arg * argument) :
ExtArgText(argument) {}
QWidget * ExtArgNumber::createEditor(QWidget * parent)
{
+ QString text = defaultValue();
textBox = (QLineEdit *)ExtArgText::createEditor(parent);
textBox->disconnect(SIGNAL(textChanged(QString)));
@@ -354,13 +342,45 @@ QWidget * ExtArgNumber::createEditor(QWidget * parent)
{
QIntValidator * textValidator = new QIntValidator(parent);
if ( _argument->range_start != NULL )
- textValidator->setBottom(extcap_complex_get_int(_argument->range_start));
+ {
+ int val = 0;
+ if ( _argument->arg_type == EXTCAP_ARG_INTEGER )
+ val = extcap_complex_get_int(_argument->range_start);
+ else if ( _argument->arg_type == EXTCAP_ARG_UNSIGNED )
+ {
+ val = extcap_complex_get_uint(_argument->range_start);
+ if ( val > G_MAXINT )
+ {
+ g_log(LOG_DOMAIN_CAPTURE, G_LOG_LEVEL_DEBUG, "Defined value for range_start of %s exceeds valid integer range", _argument->call );
+ val = G_MAXINT;
+ }
+ }
+ textValidator->setBottom(val);
+ }
if ( _argument->arg_type == EXTCAP_ARG_UNSIGNED && textValidator->bottom() < 0 )
+ {
+ g_log(LOG_DOMAIN_CAPTURE, G_LOG_LEVEL_DEBUG, "%s sets negative bottom range for unsigned value, setting to 0", _argument->call );
textValidator->setBottom(0);
+ }
if ( _argument->range_end != NULL )
- textValidator->setTop(extcap_complex_get_int(_argument->range_end));
+ {
+ int val = 0;
+ if ( _argument->arg_type == EXTCAP_ARG_INTEGER )
+ val = extcap_complex_get_int(_argument->range_end);
+ else if ( _argument->arg_type == EXTCAP_ARG_UNSIGNED )
+ {
+ val = extcap_complex_get_uint(_argument->range_end);
+ if ( val > G_MAXINT )
+ {
+ g_log(LOG_DOMAIN_CAPTURE, G_LOG_LEVEL_DEBUG, "Defined value for range_end of %s exceeds valid integer range", _argument->call );
+ val = G_MAXINT;
+ }
+ }
+
+ textValidator->setTop(val);
+ }
textBox->setValidator(textValidator);
}
else if ( _argument->arg_type == EXTCAP_ARG_DOUBLE )
@@ -374,7 +394,7 @@ QWidget * ExtArgNumber::createEditor(QWidget * parent)
textBox->setValidator(textValidator);
}
- textBox->setText(defaultValue());
+ textBox->setText(text.trimmed());
connect(textBox, SIGNAL(textChanged(QString)), SLOT(onStringChanged(QString)));
@@ -385,7 +405,7 @@ QString ExtArgNumber::defaultValue()
{
QString result;
- if ( _argument != 0 && _argument->default_complex != NULL )
+ if ( _argument != 0 )
{
if ( _argument->arg_type == EXTCAP_ARG_DOUBLE )
result = QString::number(extcap_complex_get_double(_argument->default_complex));
@@ -396,7 +416,10 @@ QString ExtArgNumber::defaultValue()
else if ( _argument->arg_type == EXTCAP_ARG_LONG )
result = QString::number(extcap_complex_get_long(_argument->default_complex));
else
- result = QString();
+ {
+ QString defValue = ExtcapArgument::defaultValue();
+ result = defValue.length() > 0 ? defValue : QString();
+ }
}
return result;
@@ -417,7 +440,7 @@ void ExtcapValue::setChildren(ExtcapValueList children)
}
ExtcapArgument::ExtcapArgument(extcap_arg * argument, QObject *parent) :
- QObject(parent), _argument(argument), _default(0), _label(0),
+ QObject(parent), _argument(argument), _label(0),
label_style(QString("QLabel { color: %1; }"))
{
if ( _argument->values != 0 )
@@ -515,29 +538,14 @@ bool ExtcapArgument::isValid()
QString ExtcapArgument::defaultValue()
{
- return QString();
-}
-
-void ExtcapArgument::setDefault(GHashTable * defaultsList)
-{
- if ( defaultsList != NULL && g_hash_table_size(defaultsList) > 0 )
+ if ( _argument != 0 && _argument->default_complex != 0)
{
- GList * keys = g_hash_table_get_keys(defaultsList);
- while ( keys != NULL )
- {
- if ( call().compare(QString().fromUtf8((gchar *)keys->data)) == 0 )
- {
- gpointer data = g_hash_table_lookup(defaultsList, keys->data);
- QString dataStr = QString().fromUtf8((gchar *)data);
- /* We assume an empty value but set entry must be a boolflag */
- if ( dataStr.length() == 0 )
- dataStr = "true";
- _default = new QVariant(dataStr);
- break;
- }
- keys = keys->next;
- }
+ gchar * str = extcap_get_complex_as_string(_argument->default_complex);
+ if ( str != 0 )
+ return QString(str);
}
+
+ return QString();
}
bool ExtcapArgument::isRequired()
@@ -564,7 +572,7 @@ bool ExtcapArgument::isDefault()
return false;
}
-ExtcapArgument * ExtcapArgument::create(extcap_arg * argument, GHashTable * device_defaults)
+ExtcapArgument * ExtcapArgument::create(extcap_arg * argument)
{
if ( argument == 0 || argument->display == 0 )
return 0;
@@ -592,8 +600,6 @@ ExtcapArgument * ExtcapArgument::create(extcap_arg * argument, GHashTable * devi
result = new ExtcapArgument(argument);
}
- result->setDefault(device_defaults);
-
return result;
}
diff --git a/ui/qt/extcap_argument.h b/ui/qt/extcap_argument.h
index 017a163378..c83111a2d3 100644
--- a/ui/qt/extcap_argument.h
+++ b/ui/qt/extcap_argument.h
@@ -98,7 +98,7 @@ public:
bool isValid();
bool isRequired();
- static ExtcapArgument * create(extcap_arg * argument = 0, GHashTable * device_defaults = 0);
+ static ExtcapArgument * create(extcap_arg * argument = 0);
Q_SIGNALS:
void valueChanged();
@@ -107,14 +107,11 @@ protected:
bool fileExists();
- void setDefault(GHashTable * defaultsList);
-
ExtcapValueList loadValues(QString parent);
ExtcapValueList values;
extcap_arg * _argument;
- QVariant * _default;
QWidget * _label;
const QString label_style;
@@ -136,7 +133,6 @@ public:
virtual QWidget * createEditor(QWidget * parent);
virtual QString value();
virtual bool isValid();
- virtual QString defaultValue();
protected:
@@ -197,6 +193,8 @@ public:
private:
QCheckBox * boolBox;
+
+ bool defaultBool();
};
#endif /* UI_QT_EXTCAP_ARGUMENT_H_ */
diff --git a/ui/qt/extcap_argument_file.cpp b/ui/qt/extcap_argument_file.cpp
index b93e889ef6..4d2e301aa1 100644
--- a/ui/qt/extcap_argument_file.cpp
+++ b/ui/qt/extcap_argument_file.cpp
@@ -43,7 +43,6 @@
ExtcapArgumentFileSelection::ExtcapArgumentFileSelection (extcap_arg * argument) :
ExtcapArgument(argument), textBox(0)
{
- _default = new QVariant(QString(""));
}
ExtcapArgumentFileSelection::~ExtcapArgumentFileSelection()
@@ -61,7 +60,7 @@ QWidget * ExtcapArgumentFileSelection::createEditor(QWidget * parent)
fileWidget->setContentsMargins(margins.left(), margins.right(), 0, margins.bottom());
QPushButton * button = new QPushButton(UTF8_HORIZONTAL_ELLIPSIS, fileWidget);
- textBox = new QLineEdit(_default->toString(), parent);
+ textBox = new QLineEdit(defaultValue(), parent);
textBox->setReadOnly(true);
if ( _argument->default_complex != NULL && _argument->arg_type == EXTCAP_ARG_STRING )
diff --git a/ui/qt/extcap_argument_multiselect.cpp b/ui/qt/extcap_argument_multiselect.cpp
index fc01dfb351..221f0f240b 100644
--- a/ui/qt/extcap_argument_multiselect.cpp
+++ b/ui/qt/extcap_argument_multiselect.cpp
@@ -119,8 +119,8 @@ QWidget * ExtArgMultiSelect::createEditor(QWidget * parent)
if (items.length() == 0)
return new QWidget();
- if ( _default != 0 )
- defaults = _default->toString().split(",", QString::SkipEmptyParts);
+ if ( defaultValue().length() > 0 )
+ defaults = defaultValue().split(",", QString::SkipEmptyParts);
viewModel = new QStandardItemModel();
QList<QStandardItem *>::const_iterator iter = items.constBegin();
@@ -173,18 +173,6 @@ QString ExtArgMultiSelect::value()
return result.join(QString(","));
}
-QString ExtArgMultiSelect::defaultValue()
-{
- if ( _argument != 0 && _argument->default_complex != 0)
- {
- gchar * str = extcap_get_complex_as_string(_argument->default_complex);
- if ( str != 0 )
- return QString(str);
- }
-
- return QString();
-}
-
void ExtArgMultiSelect::selectionChanged(const QItemSelection &, const QItemSelection &)
{
emit valueChanged();
diff --git a/ui/qt/extcap_argument_multiselect.h b/ui/qt/extcap_argument_multiselect.h
index 9e72faeca2..69259e0025 100644
--- a/ui/qt/extcap_argument_multiselect.h
+++ b/ui/qt/extcap_argument_multiselect.h
@@ -40,7 +40,6 @@ public:
virtual ~ExtArgMultiSelect();
virtual QString value();
- virtual QString defaultValue();
virtual bool isValid();
protected:
diff --git a/ui/qt/extcap_options_dialog.cpp b/ui/qt/extcap_options_dialog.cpp
index e2b5c165ca..f36d4afbd8 100644
--- a/ui/qt/extcap_options_dialog.cpp
+++ b/ui/qt/extcap_options_dialog.cpp
@@ -62,15 +62,14 @@ ExtcapOptionsDialog::ExtcapOptionsDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::ExtcapOptionsDialog),
device_name(""),
- device_idx(0),
- device_defaults(NULL)
+ device_idx(0)
{
ui->setupUi(this);
setWindowTitle(wsApp->windowTitleString(tr("Extcap Interface Options")));
- ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("Start"));
+ ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("Start"));
}
ExtcapOptionsDialog * ExtcapOptionsDialog::createForDevice(QString &dev_name, QWidget *parent)
@@ -99,7 +98,6 @@ ExtcapOptionsDialog * ExtcapOptionsDialog::createForDevice(QString &dev_name, QW
resultDialog = new ExtcapOptionsDialog(parent);
resultDialog->device_name = QString(dev_name);
resultDialog->device_idx = if_idx;
- resultDialog->device_defaults = device.external_cap_args_settings;
resultDialog->setWindowTitle(wsApp->windowTitleString(tr("Extcap Interface Options") + ": " + device.display_name));
@@ -205,7 +203,7 @@ void ExtcapOptionsDialog::updateWidgets()
item = g_list_first((GList *)(walker->data));
while ( item != NULL )
{
- argument = ExtcapArgument::create((extcap_arg *)(item->data), device_defaults);
+ argument = ExtcapArgument::create((extcap_arg *)(item->data));
if ( argument != NULL )
{
if ( argument->isRequired() )
@@ -266,9 +264,7 @@ void ExtcapOptionsDialog::updateWidgets()
// Not sure why we have to do this manually.
void ExtcapOptionsDialog::on_buttonBox_rejected()
{
- if (saveOptionToCaptureInfo()) {
- reject();
- }
+ reject();
}
void ExtcapOptionsDialog::on_buttonBox_helpRequested()
@@ -305,7 +301,6 @@ bool ExtcapOptionsDialog::saveOptionToCaptureInfo()
gchar * call_string = g_strdup(call.toStdString().c_str());
gchar * value_string = g_strdup(value.toStdString().c_str());
-
g_hash_table_insert(ret_args, call_string, value_string );
}
diff --git a/ui/qt/extcap_options_dialog.h b/ui/qt/extcap_options_dialog.h
index c508d62701..eb0761df8e 100644
--- a/ui/qt/extcap_options_dialog.h
+++ b/ui/qt/extcap_options_dialog.h
@@ -66,7 +66,6 @@ private:
Ui::ExtcapOptionsDialog *ui;
QString device_name;
guint device_idx;
- GHashTable * device_defaults;
ExtcapArgumentList extcapArguments;