Added BCValue creation, part I.
This commit is contained in:
@@ -28,8 +28,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
#include <QXmlStreamReader>
|
||||
#include <QXmlStreamWriter>
|
||||
|
||||
|
||||
#include <QFile>
|
||||
#include <QFileDialog>
|
||||
@@ -42,43 +41,149 @@
|
||||
#include <QStatusBar>
|
||||
#include <bcvaluemanager.h>
|
||||
|
||||
|
||||
using namespace Qt::StringLiterals;
|
||||
|
||||
|
||||
BCValueManager::BCValueManager()
|
||||
{}
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
BCValueManager::~BCValueManager()
|
||||
{
|
||||
// nothing to do here for now,
|
||||
// our models are autokilled.
|
||||
}
|
||||
|
||||
void BCValueManager::loadXml()
|
||||
{
|
||||
auto printAttrs = [](const QXmlStreamReader& xml)
|
||||
{
|
||||
QStringList parts;
|
||||
for (const auto &attr : xml.attributes()) {
|
||||
parts << attr.name().toString() + "=\"" + attr.value().toString() + "\"";
|
||||
}
|
||||
qDebug().noquote() << parts.join(" ");
|
||||
};
|
||||
/*
|
||||
QString fileName = QFileDialog::getOpenFileName(this, "XML öffnen", "", "XML Files (*.xml)");
|
||||
if (fileName.isEmpty()) return;
|
||||
if (fileName.isEmpty())
|
||||
return;
|
||||
*/
|
||||
|
||||
QFile file(fileName);
|
||||
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
||||
QMessageBox::warning(this, "Fehler", "Datei konnte nicht geöffnet werden.");
|
||||
return;
|
||||
}
|
||||
QFile file(":/bikeinfo.xml");
|
||||
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
|
||||
{
|
||||
// __fix throw
|
||||
QMessageBox::warning(nullptr, "Fehler", "Datei konnte nicht geöffnet werden.");
|
||||
return;
|
||||
}
|
||||
|
||||
QList<Device> parsedDevices;
|
||||
QXmlStreamReader xml(&file);
|
||||
_xml.setDevice(&file);
|
||||
|
||||
while (!xml.atEnd() && !xml.hasError()) {
|
||||
QXmlStreamReader::TokenType token = xml.readNext();
|
||||
if (token == QXmlStreamReader::StartElement && xml.name() == u"device") {
|
||||
Device d;
|
||||
d.name = xml.attributes().value(u"name").toString();
|
||||
d.ip = xml.attributes().value(u"ip").toString();
|
||||
parsedDevices.append(d);
|
||||
}
|
||||
}
|
||||
if (_xml.readNextStartElement())
|
||||
{
|
||||
if (_xml.name() != "Bike"_L1 )
|
||||
// fix throw
|
||||
_xml.raiseError(QObject::tr("The file is not an 'Bike' file."));
|
||||
}
|
||||
// ??
|
||||
Q_ASSERT(_xml.isStartElement() && _xml.name() == "Bike"_L1);
|
||||
|
||||
if (xml.hasError())
|
||||
|
||||
while (!_xml.atEnd() && !_xml.hasError())
|
||||
{
|
||||
QXmlStreamReader::TokenType token = _xml.readNext();
|
||||
if (token == QXmlStreamReader::StartElement)
|
||||
{
|
||||
QMessageBox::critical(this, "Parsing Fehler", xml.errorString());
|
||||
} else {
|
||||
m_model->setDevices(parsedDevices);
|
||||
qDebug() << " --- Device: " << _xml.name() << ": " << _xml.attributes().value("Type"_L1);
|
||||
printAttrs (_xml);
|
||||
const char* deviceKey = _xml.attributes().value("Type"_L1).toLatin1().constData();
|
||||
auto deviceID = _bcDeviceEnum.keyToValue64(deviceKey);
|
||||
//_currentDeviceID = BCDevice::ID( deviceID.value_or( BCDevice::ID::Invalid ) );
|
||||
_currentDeviceID = deviceID.has_value() ? BCDevice::ID( deviceID.value() ) : BCDevice::ID::Invalid;
|
||||
readDevice();
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
/*
|
||||
if (xml.hasError())
|
||||
{
|
||||
QMessageBox::critical(nullptr, "Parsing Fehler", xml.errorString());
|
||||
}
|
||||
else
|
||||
{
|
||||
m_model->setDevices(parsedValues);
|
||||
}
|
||||
*/
|
||||
|
||||
// create & add new model to the model map
|
||||
|
||||
}
|
||||
|
||||
void BCValueManager::readDevice()
|
||||
{
|
||||
auto printAttrs = [](const QXmlStreamReader& xml)
|
||||
{
|
||||
QStringList parts;
|
||||
for (const auto &attr : xml.attributes()) {
|
||||
parts << attr.name().toString() + "=\"" + attr.value().toString() + "\"";
|
||||
}
|
||||
qDebug().noquote() << parts.join(" ");
|
||||
};
|
||||
|
||||
printAttrs (_xml);
|
||||
Q_ASSERT(_xml.isStartElement() && _xml.name() == "Device"_L1);
|
||||
qDebug() << " ---------------";
|
||||
|
||||
BCValueList parsedValues;
|
||||
|
||||
//while (!_xml.atEnd() && !_xml.hasError())
|
||||
while( _xml.readNextStartElement() )
|
||||
{
|
||||
const char* key = _xml.attributes().value("I##D"_L1).toLatin1().constData();
|
||||
qDebug() << " --- blub: " << _xml.name() << " : " << key << ":" <<_xml.attributes().value("ID"_L1);
|
||||
if(key)
|
||||
makeValue(parsedValues);
|
||||
else
|
||||
qDebug() << " --- fitz";
|
||||
|
||||
//printAttrs (_xml);
|
||||
_xml.skipCurrentElement();
|
||||
/*
|
||||
if (token == QXmlStreamReader::StartElement )
|
||||
{
|
||||
qDebug() << " --- moo: " << _xml.name();
|
||||
//Q_ASSERT(_xml.name() == "Value"_L1);
|
||||
//makeValue();
|
||||
//d.name = xml.attributes().value(u"name")
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
//qDebug()xml.attributes().value(u"name").toString();
|
||||
/*
|
||||
Device d;
|
||||
d.name = xml.attributes().value(u"name").toString();
|
||||
d.ip = xml.attributes().value(u"ip").toString();
|
||||
parsedValues.append(d);
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
void BCValueManager::makeValue(BCValueList& parsedValues)
|
||||
{
|
||||
// ID='Cons_Stat_Dist_Hi' Default='' Current='' Enabled='true' UnitType='mm' Factor='0.1' Min Max
|
||||
const char* ID = _xml.attributes().value("firz"_L1).toLatin1().constData();
|
||||
auto enumVal = _bcValueEnum.keyToValue64( ID);
|
||||
if( enumVal.has_value() )
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// --- NEU: Speichern mit QXmlStreamWriter ---
|
||||
|
||||
Reference in New Issue
Block a user