Przeglądaj źródła

Merge branch 'qttesting-mulitple-app-setting'

* qttesting-mulitple-app-setting:
  BUG: Fix unique key to allow multiple appsetting elements for QtTesting
Benjamin Long 13 lat temu
rodzic
commit
aa9f5f5f8e
1 zmienionych plików z 11 dodań i 4 usunięć
  1. 11 4
      Libs/QtTesting/ctkXMLEventSource.cpp

+ 11 - 4
Libs/QtTesting/ctkXMLEventSource.cpp

@@ -72,7 +72,7 @@ void ctkXMLEventSource::setContent(const QString& xmlfilename)
   QFile xml(xmlfilename);
   if (!xml.open(QIODevice::ReadOnly))
     {
-    qDebug() << "Failed to load " << xmlfilename;
+    qCritical() << "Failed to load " << xmlfilename;
     return;
     }
 
@@ -81,7 +81,7 @@ void ctkXMLEventSource::setContent(const QString& xmlfilename)
   if (!xmlSchema.load(QUrl::fromLocalFile(":/XML/XMLDescription.xsd")) ||
       !xmlSchema.isValid())
     {
-    qDebug() << "Xml cannot be check.";
+    qCritical() << "Xml cannot be check.";
     return;
     }
 
@@ -200,7 +200,8 @@ bool ctkXMLEventSource::restoreApplicationSettings()
   for(iter = states.begin() ; iter!=states.end() ; ++iter)
     {
     iter.key()->setProperty(iter.value().toLatin1(),
-                            QVariant(this->OldSettings.value(iter.value())));
+                            QVariant(this->OldSettings.value(
+                              QString("appsetting_%1").arg(iter.value()))));
     }
 
 
@@ -219,7 +220,13 @@ QMap<QString, QString> ctkXMLEventSource::recoverSettingsFromXML()
     if (!this->XMLStream->name().isEmpty() &&
         this->XMLStream->tokenType() == QXmlStreamReader::StartElement)
       {
-      settings.insert(this->XMLStream->name().toString(),
+      QString key = this->XMLStream->name().toString();
+      // There might be multiple appsetting elements, ensure key is unique
+      if (this->XMLStream->name().toString() == "appsetting")
+        {
+        key += "_" + this->XMLStream->attributes().value("command").toString();
+        }
+      settings.insert(key,
                       this->XMLStream->attributes().value("arguments").toString());
       }
     }