]> git.cworth.org Git - apitrace/commitdiff
Start collecting the edited values.
authorZack Rusin <zack@kde.org>
Sat, 16 Apr 2011 06:16:49 +0000 (02:16 -0400)
committerZack Rusin <zack@kde.org>
Sat, 16 Apr 2011 06:16:49 +0000 (02:16 -0400)
gui/apitracecall.cpp
gui/apitracecall.h
gui/argumentseditor.cpp
gui/argumentseditor.h

index 69bfdc7a104d1fc0680a84c3bfd0df48d443c64c..32e78b5d3b928aae7eef01904eb948610e93051b 100644 (file)
@@ -207,6 +207,11 @@ ApiArray::ApiArray(const Trace::Array *arr)
     init(arr);
 }
 
+ApiArray::ApiArray(const QList<QVariant> &vals)
+    : m_array(vals)
+{
+}
+
 QString ApiArray::toString() const
 {
     QString str;
@@ -606,3 +611,4 @@ ApiTraceFrame * ApiTraceCall::parentFrame()const
 {
     return m_parentFrame;
 }
+
index 14ef52d5df474ffcf83b5442311c1ecfaeaf89e0..1cabceca33d4a52bb7af3d76be099ea6ed5fe509 100644 (file)
@@ -88,6 +88,7 @@ class ApiArray
 {
 public:
     ApiArray(const Trace::Array *arr = 0);
+    ApiArray(const QList<QVariant> &vals);
 
     QString toString() const;
 
index 7f75d2c15ae4bf2b271933878678068da8b55918..4648f1cdd072705a1e0db2bd3ab6c6ed7272ebc0 100644 (file)
@@ -184,7 +184,6 @@ void ArgumentsEditor::setupCall()
         nameItem->setFlags(nameItem->flags() ^ Qt::ItemIsEditable);
         QList<QStandardItem*> topRow;
         topRow.append(nameItem);
-        qDebug()<<"arg "<<argName<<", val = "<<val;
 
         if (val.canConvert<ApiArray>()) {
             ApiArray array = val.value<ApiArray>();
@@ -301,4 +300,66 @@ void ArgumentsEditor::sourceChanged()
         tr("%1").arg(str.length()));
 }
 
+void ArgumentsEditor::accept()
+{
+    QStringList argNames = m_call->argNames();
+    QList<QVariant> originalValues = m_call->arguments();
+    for (int i = 0; i < argNames.count(); ++i) {
+        QString argName = argNames[i];
+        QVariant argValue = originalValues[i];
+        QVariant editorValue = valueForName(argName, argValue);
+        qDebug()<<"Arg = "<<argName;
+        qDebug()<<"\toriginal = "<<argValue;
+        qDebug()<<"\teditor   = "<<editorValue;
+    }
+
+    QDialog::accept();
+}
+
+QVariant ArgumentsEditor::valueForName(const QString &name,
+                                       const QVariant &originalValue) const
+{
+    QVariant val;
+    for (int topRow = 0; topRow < m_model->rowCount(); ++topRow) {
+        QModelIndex nameIdx = m_model->index(topRow, 0, QModelIndex());
+        QString argName = nameIdx.data().toString();
+        /* we display shaders in a separate widget so
+         * the ordering might be different */
+        if (argName == name) {
+            if (originalValue.userType() == QMetaType::type("ApiArray")) {
+                ApiArray array = originalValue.value<ApiArray>();
+                val = arrayFromIndex(nameIdx, array);
+            } else {
+                QModelIndex valIdx = m_model->index(topRow, 1, QModelIndex());
+                val = valIdx.data();
+            }
+        }
+    }
+    return val;
+}
+
+QVariant ArgumentsEditor::arrayFromIndex(const QModelIndex &parentIndex,
+                                         const ApiArray &origArray) const
+{
+    QList<QVariant> origValues = origArray.values();
+    QVariant newValue;
+    if (origValues.isEmpty())
+        return QVariant::fromValue(ApiArray());
+
+    if (origValues.first().userType() == QVariant::String) {
+        //shaders
+
+    } else {
+        QList<QVariant> lst;
+        for (int i = 0; i < origValues.count(); ++i) {
+            QModelIndex valIdx = m_model->index(i, 1, parentIndex);
+            QVariant var = valIdx.data();
+            //qDebug()<<"\t\tarray "<<i<<") "<<var;
+            lst.append(var);
+        }
+        newValue = QVariant::fromValue(ApiArray(lst));
+    }
+    return newValue;
+}
+
 #include "argumentseditor.moc"
index 4454e003cb312ae4e93378564acd8c5658b3e843..286dfdee9ea840d70282be8bf69946b7f2f4bb42 100644 (file)
@@ -1,7 +1,9 @@
 #ifndef ARGUMENTSEDITOR_H
 #define ARGUMENTSEDITOR_H
 
+#include "apitracecall.h"
 #include "ui_argumentseditor.h"
+
 #include <QComboBox>
 #include <QDialog>
 #include <QItemEditorFactory>
@@ -35,6 +37,8 @@ public:
     ~ArgumentsEditor();
 
 
+    virtual void accept();
+
     void setCall(ApiTraceCall *call);
     ApiTraceCall *call() const;
 
@@ -45,6 +49,10 @@ private:
     void init();
     void setupCall();
     void setupShaderEditor(const QList<QVariant> &sources);
+    QVariant valueForName(const QString &name,
+                          const QVariant &orignalValue) const;
+    QVariant arrayFromIndex(const QModelIndex &index,
+                            const ApiArray &array) const;
 private:
     Ui_ArgumentsEditor m_ui;
     QStandardItemModel *m_model;