extern void ImportSoftware::importData() { QStringList args; args << "-listsoftware"; Program process; process.setArguments(args); QXmlStreamReader xml; xml.setDevice(&process); if(process.open(QIODevice::ReadOnly)){ QMap<QString,QString> map; QString machine; while(!process.state()==QProcess::NotRunning){ if (process.atEnd()) process.waitForReadyRead(); xml.readNextStartElement(); if(xml.isStartElement()){ if(xml.name()=="softwarelist") machine=xml.attributes().value("name").toString(); else if(xml.name()=="software"){ map.insert("machine",machine); QXmlStreamAttributes attributes=xml.attributes(); foreach(QXmlStreamAttribute attribute,attributes.toList()) map.insert(attribute.name().toString(),attribute.value().toString()); } else if(xml.name()=="description"){ QString description=xml.readElementText(); if(description.contains("(")){ int index=description.indexOf("("); map.insert("version",description.mid(index+1,description.size()-index-2)); description.truncate(index-1); } if(description.contains(" / ")){ int index=description.indexOf(" / "); description.truncate(index); } if(description.contains(" - ")){ int index=description.indexOf(" - "); map.insert("subtitle",description.mid(index+3)); description.truncate(index); } else if(description.contains(": ")){ int index=description.indexOf(": "); map.insert("subtitle",description.mid(index+2)); description.truncate(index); } map.insert("title",description); } else if(xml.name()=="year"){ map.insert("year",xml.readElementText()); } else if(xml.name()=="publisher"){ map.insert("developer",xml.readElementText()); } } else if(xml.isEndElement() && xml.name()=="software"){ dataTable.append(map); map.clear(); } } } }