From d54055e8535893286fe7dd90e92095bcbfe3cd5c Mon Sep 17 00:00:00 2001 From: Zack Rusin Date: Sun, 17 Apr 2011 18:27:28 -0400 Subject: [PATCH] Introduce ApiEnum. we also need the value when saving back so just a string is not enough anymore --- gui/apitracecall.cpp | 32 +++++++++++++++++++++++++++++++- gui/apitracecall.h | 14 ++++++++++++++ gui/argumentseditor.cpp | 9 +++++++++ 3 files changed, 54 insertions(+), 1 deletion(-) diff --git a/gui/apitracecall.cpp b/gui/apitracecall.cpp index 608e482..6024b15 100644 --- a/gui/apitracecall.cpp +++ b/gui/apitracecall.cpp @@ -52,6 +52,9 @@ QString apiVariantToString(const QVariant &variant) if (variant.canConvert()) { return variant.value().toString(); } + if (variant.canConvert()) { + return variant.value().toString(); + } return QString(); } @@ -176,7 +179,13 @@ void VariantVisitor::visit(Trace::String *node) void VariantVisitor::visit(Trace::Enum *e) { - m_variant = QVariant(QString::fromStdString(e->sig->first)); + VariantVisitor vis; + e->sig->second->visit(vis); + + QVariant val = vis.variant(); + + m_variant = QVariant::fromValue( + ApiEnum(QString::fromStdString(e->sig->first), val)); } void VariantVisitor::visit(Trace::Bitmask *bitmask) @@ -692,3 +701,24 @@ bool ApiTraceCall::edited() const return !m_editedValues.isEmpty(); } +ApiEnum::ApiEnum(const QString &name, const QVariant &val) + : m_name(name), + m_value(val) +{ +} + +QString ApiEnum::toString() const +{ + return m_name; +} + +QVariant ApiEnum::value() const +{ + return m_value; +} + +QString ApiEnum::name() const +{ + return m_name; +} + diff --git a/gui/apitracecall.h b/gui/apitracecall.h index b9e2312..1b4e5ab 100644 --- a/gui/apitracecall.h +++ b/gui/apitracecall.h @@ -37,6 +37,20 @@ private: QVariant m_variant; }; +class ApiEnum +{ +public: + ApiEnum(const QString &name = QString(), const QVariant &val=QVariant()); + + QString toString() const; + + QVariant value() const; + QString name() const; +private: + QString m_name; + QVariant m_value; +}; +Q_DECLARE_METATYPE(ApiEnum); class ApiPointer { diff --git a/gui/argumentseditor.cpp b/gui/argumentseditor.cpp index 3ac381e..125e12d 100644 --- a/gui/argumentseditor.cpp +++ b/gui/argumentseditor.cpp @@ -239,6 +239,15 @@ void ArgumentsEditor::setupCall() item->setIcon(icon); item->setToolTip(tr("Argument is read-only")); topRow.append(item); + } else if (val.canConvert()) { + ApiEnum en = val.value(); + QStandardItem *item = new QStandardItem(); + item->setFlags(item->flags() ^ Qt::ItemIsEditable); + item->setText(en.toString()); + QIcon icon(":/resources/emblem-locked.png"); + item->setIcon(icon); + item->setToolTip(tr("Argument is read-only")); + topRow.append(item); } else if (val.canConvert()) { ApiBitmask mask = val.value(); QStandardItem *item = new QStandardItem(); -- 2.43.0