if (variant.canConvert<ApiArray>()) {
return variant.value<ApiArray>().toString();
}
+ if (variant.canConvert<ApiEnum>()) {
+ return variant.value<ApiEnum>().toString();
+ }
return QString();
}
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)
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;
+}
+
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
{
item->setIcon(icon);
item->setToolTip(tr("Argument is read-only"));
topRow.append(item);
+ } else if (val.canConvert<ApiEnum>()) {
+ ApiEnum en = val.value<ApiEnum>();
+ 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>()) {
ApiBitmask mask = val.value<ApiBitmask>();
QStandardItem *item = new QStandardItem();