static bool
isVariantEditable(const QVariant &var)
{
+ if (var.canConvert<ApiArray>()) {
+ ApiArray array = var.value<ApiArray>();
+ QList<QVariant> vals = array.values();
+ if (vals.isEmpty())
+ return false;
+ else
+ return isVariantEditable(vals.first());
+ }
switch (var.userType()) {
case QVariant::Bool:
case QVariant::Int:
ArgumentsEditor::~ArgumentsEditor()
{
+ delete m_model;
}
void ArgumentsEditor::setCall(ApiTraceCall *call)
void ArgumentsEditor::accept()
{
QStringList argNames = m_call->argNames();
- QList<QVariant> originalValues = m_call->arguments();
- QList<QVariant> newValues;
+ QVector<QVariant> originalValues = m_call->arguments();
+ QVector<QVariant> newValues;
bool changed = false;
for (int i = 0; i < argNames.count(); ++i) {
bool valChanged = false;
QString argName = argNames[i];
QVariant argValue = originalValues[i];
QVariant editorValue = valueForName(argName, argValue, &valChanged);
+
newValues.append(editorValue);
+#if 0
qDebug()<<"Arg = "<<argName;
qDebug()<<"\toriginal = "<<argValue;
qDebug()<<"\teditor = "<<editorValue;
qDebug()<<"\tchanged = "<<valChanged;
+#endif
if (valChanged)
changed = true;
}
return arrayFromEditor(array, changed);
}
+ if (!isVariantEditable(originalValue)) {
+ return originalValue;
+ }
+
for (int topRow = 0; topRow < m_model->rowCount(); ++topRow) {
QModelIndex nameIdx = m_model->index(topRow, 0, QModelIndex());
QString argName = nameIdx.data().toString();