|
|
|
@ -448,15 +448,32 @@ bool ExtcapOptionsDialog::saveOptionToCaptureInfo()
|
|
|
|
|
{
|
|
|
|
|
QString call = (*iter)->call();
|
|
|
|
|
QString value = (*iter)->value();
|
|
|
|
|
QString prefValue = (*iter)->prefValue();
|
|
|
|
|
|
|
|
|
|
if ((*iter)->argument()->arg_type != EXTCAP_ARG_BOOLFLAG && value.length() == 0)
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
|
|
if (call.length() <= 0)
|
|
|
|
|
if (call.length() <= 0) {
|
|
|
|
|
/* BOOLFLAG was cleared, make its value empty */
|
|
|
|
|
if ((*iter)->argument()->arg_type == EXTCAP_ARG_BOOLFLAG) {
|
|
|
|
|
*(*iter)->argument()->pref_valptr[0] = 0;
|
|
|
|
|
}
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (value.compare((*iter)->defaultValue()) == 0) {
|
|
|
|
|
extcap_arg *arg = (*iter)->argument();
|
|
|
|
|
|
|
|
|
|
if (value.compare((*iter)->defaultValue()) == 0)
|
|
|
|
|
// If previous value is not default, set it to default value
|
|
|
|
|
if (arg->default_complex != NULL && arg->default_complex->_val != NULL) {
|
|
|
|
|
g_free(*arg->pref_valptr);
|
|
|
|
|
*arg->pref_valptr = g_strdup(arg->default_complex->_val);
|
|
|
|
|
} else {
|
|
|
|
|
// Set empty value if there is no default value
|
|
|
|
|
*arg->pref_valptr[0] = 0;
|
|
|
|
|
}
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
gchar * call_string = g_strdup(call.toStdString().c_str());
|
|
|
|
|
gchar * value_string = NULL;
|
|
|
|
@ -464,6 +481,14 @@ bool ExtcapOptionsDialog::saveOptionToCaptureInfo()
|
|
|
|
|
value_string = g_strdup(value.toStdString().c_str());
|
|
|
|
|
|
|
|
|
|
g_hash_table_insert(ret_args, call_string, value_string);
|
|
|
|
|
|
|
|
|
|
// For current value we need strdup even it is empty
|
|
|
|
|
value_string = g_strdup(prefValue.toStdString().c_str());
|
|
|
|
|
// Update current value with new value
|
|
|
|
|
// We use prefValue because for bool/boolflag it returns value
|
|
|
|
|
// even it is false
|
|
|
|
|
g_free(*(*iter)->argument()->pref_valptr);
|
|
|
|
|
*(*iter)->argument()->pref_valptr = value_string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (device->external_cap_args_settings != NULL)
|
|
|
|
@ -558,7 +583,9 @@ GHashTable *ExtcapOptionsDialog::getArgumentSettings(bool useCallsAsKey, bool in
|
|
|
|
|
if (dynamic_cast<ExtArgBool *>((*iter)) != NULL)
|
|
|
|
|
{
|
|
|
|
|
value = ((ExtArgBool *)*iter)->prefValue();
|
|
|
|
|
isBoolflag = true;
|
|
|
|
|
// For boolflag there should be no value
|
|
|
|
|
if ((*iter)->argument()->arg_type != EXTCAP_ARG_BOOLFLAG)
|
|
|
|
|
isBoolflag = true;
|
|
|
|
|
}
|
|
|
|
|
else if (dynamic_cast<ExtArgRadio *>((*iter)) != NULL)
|
|
|
|
|
{
|
|
|
|
|