Integrator XMLReader::LoadIntegrator(QXmlStreamReader &xml_reader)
{
    Integrator result;

    //First check what type of integrator we're supposed to load
    QXmlStreamAttributes attribs(xml_reader.attributes());
    QStringRef type = attribs.value(QString(), QString("type"));
    bool is_mesh = false;

    while(!xml_reader.isEndElement() || QStringRef::compare(xml_reader.name(), QString("integrator")) != 0)
    {
        xml_reader.readNext();

        QString tag(xml_reader.name().toString());
        if(is_mesh && QString::compare(tag, QString("maxDepth")) == 0)
        {
            xml_reader.readNext();
            if(xml_reader.isCharacters())
            {
                result.SetDepth(xml_reader.text().toInt());
            }
            xml_reader.readNext();
        }
    }
    return result;
}
Example #2
0
QDebug operator<<(QDebug dbg, const QXmlStreamReader& reader)
{
    dbg.nospace() << "QXmlStreamReader(";
    if (reader.isStartElement()) {
        dbg.nospace() << "<";
        dbg.nospace() << reader.qualifiedName().toString().toLocal8Bit().constData();
        QString attrsString;
        const QXmlStreamAttributes& attrs = reader.attributes();
        for (int i = 0; i < attrs.count(); i++) {
            dbg.nospace() << " " << attrs[i].qualifiedName().toString().toLocal8Bit().constData();
            dbg.nospace() << "=";
            dbg.nospace() << attrs[i].value().toString();
        }
        if (reader.isEndElement()) {
            dbg.nospace() << "/>)";
        } else {
            dbg.nospace() << ">)";
        }
    } else if (reader.isEndElement()) {
        dbg.nospace() << "</" << reader.qualifiedName().toString().toLocal8Bit().constData() << ">)";
    } else if (reader.isCharacters()) {
        dbg.nospace() << "characters:" << reader.text() << ")";
    } else if (reader.isComment()) {
        dbg.nospace() << "<!-- " << reader.text().toString().toLocal8Bit().constData() << " -->)";
    } else if (reader.isCDATA()) {
        dbg.nospace() << "CDATA:" << reader.text() << ")";
    } else if (reader.isWhitespace()) {
        dbg.nospace() << "whitespace:" << reader.text() << ")";
    } else {
        dbg.nospace() << reader.tokenString() << reader.text();
    }
    return dbg.space();
}
Example #3
0
void SyncMLExt::processElement( QXmlStreamReader& aReader, SyncMLCmdObject* aParent )
{

    FUNCTION_CALL_TRACE;

    SyncMLCmdObject* obj = new SyncMLCmdObject( aReader.name().toString() );

    while( !aReader.atEnd() ) {

        aReader.readNext();

        if( aReader.isStartElement() ) {
            processElement( aReader, obj );
        }
        else if( aReader.isCharacters() ) {
            obj->setValue( aReader.text().toString().simplified() );
        }
        else if( aReader.isEndElement() ) {
            break;
        }

    }

    aParent->addChild( obj );

}
QMultiMap<QString, QString>* FileManager::caricaCollegamenti() const
{
    QMultiMap<QString, QString>* lista = new QMultiMap<QString, QString>();
    QXmlStreamReader rxml;

    QFile file(_fileNameReti);
    if (file.open(QFile::ReadOnly | QFile::Text))
    {
        rxml.setDevice(&file);
        rxml.readNext();

        QString utente1, utente2;

        bool collegamentoAperto = false;

        while(!rxml.atEnd())
        {
            if(rxml.isStartElement())
            {
                if(rxml.name() == "Rete")
                    rxml.readNext();
                else if(rxml.name() == "Collegamento")
                {
                    collegamentoAperto = true;

                    while(!rxml.atEnd())
                    {
                        if(rxml.isEndElement())
                        {
                            if(collegamentoAperto)
                            {
                                lista->insert(utente1, utente2);
                                collegamentoAperto = false;
                            }
                            rxml.readNext();
                            break;
                        }
                        else if(rxml.isCharacters())
                            rxml.readNext();
                        else if(rxml.isStartElement())
                        {
                            if(rxml.name() == "Utente1")
                                utente1 = rxml.readElementText();
                            else if(rxml.name() == "Utente2")
                                utente2 = rxml.readElementText();
                            rxml.readNext();
                        }
                        else
                            rxml.readNext();
                    }
                }
            }
            else
                rxml.readNext();
        }
        file.close();
    }
    return lista;
}
Example #5
0
//--------------------------------------------------------------------------------------------------
///  PdmFieldHandle implementations
//--------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------
/// 
//--------------------------------------------------------------------------------------------------
void PdmFieldIOHelper::skipCharactersAndComments(QXmlStreamReader& xmlStream)
{
    QXmlStreamReader::TokenType type;
    while (!xmlStream.atEnd() && xmlStream.isCharacters() || xmlStream.isComment())
    {
        type = xmlStream.readNext();
    }
}
bool
SoundSettings::loadXML (
        const QString   &xmlFileName,
        QString         &origFileName,
        QString         &copyFileName,
        QString         &title)
{
    QFile            *file = 0;
    QXmlStreamReader *xml  = 0;
    bool              retval = false;
    QStringList       names;

    SYS_DEBUG ("*** xmlFileName = %s", SYS_STR(xmlFileName));
    file = new QFile(xmlFileName);

    if (!file || !file->open(QIODevice::ReadOnly | QIODevice::Text))
    {
        SYS_WARNING ("Can not open '%s' for reading: %m",
                SYS_STR(xmlFileName));
        goto finalize;
    }

    xml = new QXmlStreamReader(file);
    while(!xml->atEnd() && !xml->hasError()) {
        QString name(xml->name().toString());

        #if 0
        SYS_DEBUG ("*************************************");
        SYS_DEBUG ("*** name: %s", SYS_STR(name));
        SYS_DEBUG ("*** lineNumber : %d", xml->lineNumber());
        #endif

        if (xml->isStartElement()) {
            names << xml->name().toString();
        } else if (xml->isEndElement()) {
            names.removeLast();
        } else if (xml->isCharacters()) {
            QString path = names.join("/");

            if (path == "soundsettings-applet/orig-file")
                origFileName = xml->text().toString();
            else if (path == "soundsettings-applet/copy-file")
                copyFileName = xml->text().toString();
            else if (path == "soundsettings-applet/title")
                title = xml->text().toString();
        }

        xml->readNext();
    }

finalize:
    if (xml)
        delete xml;
    if (file)
        delete file;

    return retval;
}
Transform XMLReader::LoadTransform(QXmlStreamReader &xml_reader)
{
    glm::vec3 t, r, s;
    s = glm::vec3(1,1,1);
    while(!xml_reader.isEndElement() || QStringRef::compare(xml_reader.name(), QString("transform")) != 0)
    {
        xml_reader.readNext();
        QString tag(xml_reader.name().toString());
        if(xml_reader.isStartElement() && QString::compare(tag, QString("translate")) == 0)
        {
            xml_reader.readNext();
            if(xml_reader.isCharacters())
            {
                QStringRef vec = xml_reader.text();
                t = ToVec3(vec);
            }
            xml_reader.readNext();
        }
        else if(xml_reader.isStartElement() && QString::compare(tag, QString("rotate")) == 0)
        {
            xml_reader.readNext();
            if(xml_reader.isCharacters())
            {
                QStringRef vec = xml_reader.text();
                r = ToVec3(vec);
            }
            xml_reader.readNext();
        }
        else if(xml_reader.isStartElement() && QString::compare(tag, QString("scale")) == 0)
        {
            xml_reader.readNext();
            if(xml_reader.isCharacters())
            {
                QStringRef vec = xml_reader.text();
                s = ToVec3(vec);
            }
            xml_reader.readNext();
        }
    }
    return Transform(t, r, s);
}
Example #8
0
/*!
  \reimp
*/
void QThemeLevelItem::loadChildren(QXmlStreamReader &reader)
{
    while (!reader.atEnd()) {
        reader.readNext();

        if (reader.isEndElement())
            break;

        if (reader.isCharacters())
            d->text += reader.text().toString().trimmed();
    }
}
Example #9
0
void PdmFieldReader<QString>::readFieldData(PdmField<QString> & field, QXmlStreamReader& xmlStream)
{
    PdmFieldIOHelper::skipComments(xmlStream);
    if (!xmlStream.isCharacters()) return;

    field = xmlStream.text().toString();

    // Make stream point to end of element
    QXmlStreamReader::TokenType type;
    type = xmlStream.readNext();
    PdmFieldIOHelper::skipCharactersAndComments(xmlStream);
}
Example #10
0
unsigned int XMLReader::LoadPixelSamples(QXmlStreamReader &xml_reader)
{
    while(!xml_reader.isEndElement() || QStringRef::compare(xml_reader.name(), QString("pixelSampleLength")) != 0)
    {
        xml_reader.readNext();
        if(xml_reader.isCharacters())
        {
            return xml_reader.text().toInt();
        }
        xml_reader.readNext();
    }
}
Example #11
0
//=============================================================================
bool GoogleEngine::parseWeather(WeatherInfo &aInfo)
{
    QString aXmlPath;
    aXmlPath = "chengdu.xml";
    QFile file(aXmlPath);
    //QFileInfo info;
    //info.setFile(aXmlPath);
    //bool is = info.exists();
    file.open(QIODevice::ReadOnly | QIODevice::Text );
    int iForecastDay = 0;

    QXmlStreamReader xml;
    xml.setDevice(&file);

    while(!xml.atEnd()) {
        xml.readNext();
        //QString element = xml.name().toString();
        if(xml.isStartElement()) {
            //bool l = xml.attributes().hasAttribute("data");

            if (parseForecastInformation(xml, aInfo)) {
                continue;
            }
            if(parseCurrentCondition(xml, aInfo)) {
                continue;
            }
            if (parseForecastCondition(xml, aInfo, iForecastDay)) {
                iForecastDay++;
                continue;
            }
        } else if (xml.isCharacters()) {

        } else if (xml.isEndElement()) {

        }
    }
    if (xml.hasError()) {
        qDebug(xml.errorString().toLatin1());
    }
    file.close();
    aInfo.mForecastDay = iForecastDay;

    return true;
}
Example #12
0
void XmlParser::parseXmlStream()
{
    while (!m_reader.atEnd()) {
        if (m_reader.readNext()) {

            if (m_reader.isEndElement()) {
                if (isProgramValid) {
                    m_programs.append(m_currentProgram);
                    isProgramValid = false;
                }
                m_currentToken.clear();
                return;
            }

            if (m_reader.isCharacters()) {
                if (m_currentToken == QLatin1String("title"))
                    m_currentProgram.setName(m_reader.text().toString());
                else if (m_currentToken == QLatin1String("display-name"))
                    m_channel.setName(m_reader.text().toString());
            }

            if (m_reader.isStartElement()) {
                m_currentToken = m_reader.name().toString();
                if (m_currentToken == QLatin1String("icon")) {
                    QXmlStreamAttributes attribs = m_reader.attributes();
                    foreach (QXmlStreamAttribute attr, attribs) {
                        const QString attrName = attr.name().toString();
                        const QString attrValue = attr.value().toString();
                        if (attrName == QLatin1String("src"))
                            m_channel.setIcon(QUrl(attrValue));
                    }
                } else if (m_currentToken == QLatin1String("programme")) {
                    isProgramValid = true;
                    QXmlStreamAttributes attribs = m_reader.attributes();
                    foreach (QXmlStreamAttribute attr, attribs) {
                        const QString attrName = attr.name().toString();
                        const QString attrValue = attr.value().toString();
                        if (attrName == QLatin1String("start")) {
                            QDateTime dt = QDateTime::fromString(attrValue, QLatin1String("yyyyMMddhhmmss"));
                            m_currentProgram.setStartTime(dt.toLocalTime().toString(QLatin1String("hh:mm")));
                        }
                    }
                }
Example #13
0
void
DirectParser::ParseSendfile (QXmlStreamReader & xread, 
                            DirectMessage    & msg,
                            qint64           & offset,
                            bool             & complete,
                            bool             & good,
                            QXmlStreamAttributes & atts)
{
  QString subop = atts.value("subop").toString().toLower();
  msg.SetSubop (subop);
  bool valid (false);
  if (subop == "chunk-data") {
    ReadNext (xread);
    if (xread.isCharacters ()) {
      msg.SetData (xread.text().toString().toUtf8());
      valid = true;
      ReadNext (xread);
    }
    offset = xread.characterOffset ();
  } else {
    valid= ( subop == "sendreq"
          || subop == "samreq"
          || subop == "goahead"
          || subop == "deny"
          || subop == "chunk-ack"
          || subop == "snd-done"
          || subop == "abort"
           );
    ReadNext (xread);
  }
  if (valid) {
    for (int i=0; i< atts.size(); i++) {
      msg.SetAttribute (atts[i].name().toString().toLower(),
                        atts[i].value().toString());
    }
    good = true;
    complete = true;
    offset = xread.characterOffset ();
  } 
}
Example #14
0
void
DirectParser::ParseXmpp (QXmlStreamReader & xread, 
                            DirectMessage    & msg,
                            qint64           & offset,
                            bool             & complete,
                            bool             & good,
                            QXmlStreamAttributes & atts)
{
  QString subop = atts.value("subop").toString().toLower();
  msg.SetSubop (subop);
  if (subop == "msg") {
    complete = true; good = true;
  }
  ReadNext (xread);
  if (xread.isCharacters()) {
    msg.SetData (xread.text().toString().toUtf8());
    ReadNext (xread);
  }
  offset = xread.characterOffset ();
  if (xread.tokenType() != QXmlStreamReader::EndElement) {
    complete = false; good = false;
  }
}
QMap<QString, Utente *> *FileManager::caricaUtenti() const {
    QMap<QString, Utente*>* lista = new QMap<QString, Utente*>();
    QXmlStreamReader rxml;

    QFile file(_fileNameUtenti);
    if (file.open(QFile::ReadOnly | QFile::Text))
    {
        rxml.setDevice(&file);
        rxml.readNext();

        QString username, password, nome, cognome, tipo;
        bool isAdmin = false;

        bool utenteAperto = false;

        while(!rxml.atEnd())
        {
            if(rxml.isStartElement())
            {
                if(rxml.name() == "Utenti")
                    rxml.readNext();
                else if(rxml.name() == "Utente")
                {
                    utenteAperto = true;

                    while(!rxml.atEnd())
                    {
                        if(rxml.isEndElement())
                        {
                            if(utenteAperto)
                            {
                                if(tipo == "1")
                                {
                                    lista->insert(username,
                                                  (new UtenteBasic(username, password, isAdmin))
                                                  ->setNome(nome)->setCognome(cognome));
                                }
                                else if(tipo == "2")
                                {
                                    lista->insert(username,
                                                  (new UtenteBusiness(username, password, isAdmin))
                                                  ->setNome(nome)->setCognome(cognome));
                                }
                                else
                                {
                                    lista->insert(username,
                                                  (new UtenteExecutive(username, password, isAdmin))
                                                  ->setNome(nome)->setCognome(cognome));
                                }
                                utenteAperto = false;
                            }
                            rxml.readNext();
                            break;
                        }
                        else if(rxml.isCharacters())
                            rxml.readNext();
                        else if(rxml.isStartElement())
                        {
                            if(rxml.name() == "Username")
                                username = rxml.readElementText();
                            else if(rxml.name() == "Password")
                                password = rxml.readElementText();
                            else if(rxml.name() == "Tipo")
                                tipo = rxml.readElementText();
                            else if(rxml.name() == "IsAdmin")
                                isAdmin = rxml.readElementText() == "true" ? true : false;
                            else if(rxml.name() == "Nome")
                                nome = rxml.readElementText();
                            else if(rxml.name() == "Cognome")
                                cognome = rxml.readElementText();
                            rxml.readNext();
                        }
                        else
                            rxml.readNext();
                    }
                }
            }
            else
                rxml.readNext();
        }

        file.close();
    }
    if(lista->empty())
        lista->insert("matteo",
                      (new UtenteExecutive("matteo", "matteo", true))
                      ->setNome("Matteo")->setCognome("Bortolazzo"));
    return lista;
}
QMap<QString, Info *> *FileManager::caricaInfo() const {
    QMap<QString, Info*>* lista = new QMap<QString, Info*>();
    QXmlStreamReader rxml;

    QFile file(_fileNameInfo);
    if (file.open(QFile::ReadOnly | QFile::Text))
    {
        rxml.setDevice(&file);
        rxml.readNext();

        QString username, codiceFiscale, indirizzo, citta, cap, telefono;
        QDate dataNascita;

        bool infoAperta = false;

        while(!rxml.atEnd())
        {
            if(rxml.isStartElement())
            {
                if(rxml.name() == "Informazioni")
                    rxml.readNext();
                else if(rxml.name() == "Info")
                {
                    infoAperta = true;
                    Info* i = new Info();

                    while(!rxml.atEnd())
                    {
                        if(rxml.isEndElement())
                        {
                            if(infoAperta)
                            {
                                i->setCodiceFiscale(codiceFiscale)
                                        ->setIndirizzo(indirizzo)->setCitta(citta)
                                        ->setCap(cap)->setTelefono(telefono)->setDataNascita(dataNascita);
                                lista->insert(username, i);

                                infoAperta = false;
                            }
                            rxml.readNext();
                            break;
                        }
                        else if(rxml.isCharacters())
                            rxml.readNext();
                        else if(rxml.isStartElement())
                        {
                            if(rxml.name() == "Username")
                                username = rxml.readElementText();
                            else if(rxml.name() == "CodiceFiscale")
                                codiceFiscale = rxml.readElementText();
                            else if(rxml.name() == "Indirizzo")
                                indirizzo = rxml.readElementText();
                            else if(rxml.name() == "Citta")
                                citta = rxml.readElementText();
                            else if(rxml.name() == "Cap")
                                cap = rxml.readElementText();
                            else if(rxml.name() == "Telefono")
                                telefono = rxml.readElementText();
                            else if(rxml.name() == "DataNascita")
                            {
                                QStringList temp = rxml.readElementText().split(";");
                                dataNascita = QDate(temp.at(2).toInt(), temp.at(1).toInt(), temp.at(0).toInt());
                            }
                            else if(rxml.name() == "Competenze")
                                rxml.readNext();
                            else if(rxml.name() == "Competenza")
                            {
                                i->aggiungiCompetenza(rxml.readElementText());
                                rxml.readNext();
                            }
                            rxml.readNext();
                        }
                        else
                            rxml.readNext();
                    }
                }
            }
            else
                rxml.readNext();
        }
        file.close();
    }
    return lista;
}
Example #17
0
const Animal AnimalDatabase::getData(QXmlStreamReader & reader) {

    assert(reader.name() == k_name);

    Animal animal;

    const auto attr = reader.attributes();
    if (!attr.hasAttribute("id")) {
        qWarning() << "Animal has no ID!";
        return animal;
    }

    while(!(reader.isEndElement() && reader.name() == k_name)) {

        reader.readNext();
        if (reader.isEndElement()) {
            continue;
        }

        auto name = reader.name();

        // name
        if (name == "name") {

            reader.readNext();
            if(!reader.isCharacters()) {

                qWarning() << "Name does not contain characters!";
                return animal;

            } else {

                animal.setName(reader.text().toString());

            }

        } else

        // type
        if (name == "type") {

            while(!(reader.isEndElement() && reader.name() == "type")) {

                reader.readNext();
                if (reader.isEndElement()) {
                    continue;
                }

                name = reader.name();

                if (name == "primary") {

                    reader.readNext();
                    if (!reader.isCharacters()) {

                        qWarning() << "Primary Type does not contain characters!";
                        return animal;

                    } else {

                        animal.setPrimaryType(reader.text().toString());

                    }

                } else if (name == "secondary") {

                    reader.readNext();
                    if (!reader.isCharacters() && !reader.text().isEmpty()) {

                        qWarning() << "Secondary Type does not contain characters!";
                        return animal;

                    } else {

                        animal.setSecondaryType(reader.text().toString());

                    }

                }

            }

        } else

        // basestats
        if (name == "basestats") {

            while(!(reader.isEndElement() && reader.name() == "basestats")) {

                reader.readNext();
                if (reader.isEndElement()) {
                    continue;
                }

                name = reader.name();

                if (name == "hp") {

                    reader.readNext();
                    if (!reader.isCharacters()) {

                        qWarning() << "HP does not contain characters!";
                        return animal;

                    } else {

                        animal.setBaseHP(reader.text().toUInt());

                    }

                } else if (name == "attack") {

                    reader.readNext();
                    if (!reader.isCharacters()) {

                        qWarning() << "Attack does not contain characters!";
                        return animal;

                    } else {

                        animal.setBaseAttack(reader.text().toUInt());

                    }

                } else if (name == "defense") {

                    reader.readNext();
                    if (!reader.isCharacters()) {

                        qWarning() << "Defense does not contain characters!";
                        return animal;

                    } else {

                        animal.setBaseDefense(reader.text().toUInt());

                    }

                } else if (name == "speed") {

                    reader.readNext();
                    if (!reader.isCharacters()) {

                        qWarning() << "Speed does not contain characters!";
                        return animal;

                    } else {

                        animal.setBaseSpeed(reader.text().toUInt());

                    }

                } else if (name == "specialattack") {

                    reader.readNext();
                    if (!reader.isCharacters()) {

                        qWarning() << "Special Attack does not contain characters!";
                        return animal;

                    } else {

                        animal.setBaseSpecialAttack(reader.text().toUInt());

                    }

                } else if (name == "specialdefense") {

                    reader.readNext();
                    if (!reader.isCharacters()) {

                        qWarning() << "Special Defense does not contain characters!";
                        return animal;

                    } else {

                        animal.setBaseSpecialDefense(reader.text().toUInt());

                    }

                } else if (name == "xp") {

                    reader.readNext();
                    if (!reader.isCharacters()) {

                        qWarning() << "base XP does not contain characters!";
                        return animal;

                    } else {

                        animal.setBaseXP(reader.text().toUInt());

                    }

                }

            }

        } else

        // moves
        if (name == "moves") {

            std::multimap<unsigned int, QString> moves;

            while(!(reader.isEndElement() && reader.name() == "moves")) {

                reader.readNext();
                if (reader.isEndElement()) {
                    continue;
                }

                name = reader.name();

                if (name == "move") {

                    QString moveName;
                    unsigned int moveLevel;

                    while(!(reader.isEndElement() && reader.name() == "move")) {

                        reader.readNext();
                        if (reader.isEndElement()) {
                            continue;
                        }

                        name = reader.name();

                        if (name == "name") {

                            reader.readNext();
                            if (!reader.isCharacters()) {

                                qWarning() << "Move Name does not contain characters!";
                                return animal;

                            } else {

                                moveName = reader.text().toString();

                            }

                        } else if (name == "level") {

                            reader.readNext();
                            if (!reader.isCharacters()) {

                                qWarning() << "Move Level does not contain characters!";
                                return animal;

                            } else {

                                moveLevel = reader.text().toUInt();

                            }

                        }

                    }

                    moves.emplace(moveLevel, moveName);

                }

            }

            animal.setMoves(moves);

        } else

        // evolutions
        if (name == "evolutions") {

            std::vector<std::tuple<QString, QString, unsigned int>> evolutions;

            while(!(reader.isEndElement() && reader.name() == "evolutions")) {

                reader.readNext();
                if (reader.isEndElement()) {
                    continue;
                }

                name = reader.name();

                if (name == "evolution") {

                    QString evolutionName;
                    QString evolutionMethod;
                    unsigned int evolutionValue;

                    while(!(reader.isEndElement() && reader.name() == "evolution")) {

                        reader.readNext();
                        if (reader.isEndElement()) {
                            continue;
                        }

                        name = reader.name();

                        if (name == "name") {

                            reader.readNext();
                            if (!reader.isCharacters()) {

                                qWarning() << "Evolution Name does not contain characters!";
                                return animal;

                            } else {

                                evolutionName = reader.text().toString();

                            }

                        } else if (name == "method") {

                            reader.readNext();
                            if (!reader.isCharacters()) {

                                qWarning() << "Evolution Method does not contain characters!";
                                return animal;

                            } else {

                                evolutionMethod = reader.text().toString();

                            }

                        } else if (name == "value") {

                            reader.readNext();
                            if (!reader.isCharacters()) {

                                qWarning() << "Evolution Value does not contain characters!";
                                return animal;

                            } else {

                                evolutionValue = reader.text().toUInt();

                            }

                        }

                    }

                    evolutions.emplace_back(evolutionName, evolutionMethod, evolutionValue);

                }

            }

            animal.setEvolutions(evolutions);

        }

    }

    return animal;

}
Example #18
0
Camera XMLReader::LoadCamera(QXmlStreamReader &xml_reader)
{
    Camera result;
    while(!xml_reader.isEndElement() || QStringRef::compare(xml_reader.name(), QString("camera")) != 0)
    {
        xml_reader.readNext();
        QString tag(xml_reader.name().toString());


        if(QString::compare(tag, QString("target")) == 0)
        {
            xml_reader.readNext();
            if(xml_reader.isCharacters())
            {
                result.ref = ToVec3(xml_reader.text());
            }
            xml_reader.readNext();
        }
        else if(QString::compare(tag, QString("eye")) == 0)
        {
            xml_reader.readNext();
            if(xml_reader.isCharacters())
            {
                result.eye = ToVec3(xml_reader.text());
            }
            xml_reader.readNext();
        }
        else if(QString::compare(tag, QString("worldUp")) == 0)
        {
            xml_reader.readNext();
            if(xml_reader.isCharacters())
            {
                result.world_up = ToVec3(xml_reader.text());
            }
            xml_reader.readNext();
        }
        else if(QString::compare(tag, QString("width")) == 0)
        {
            xml_reader.readNext();
            if(xml_reader.isCharacters())
            {
                result.width = xml_reader.text().toFloat();
            }
            xml_reader.readNext();
        }
        else if(QString::compare(tag, QString("height")) == 0)
        {
            xml_reader.readNext();
            if(xml_reader.isCharacters())
            {
                result.height = xml_reader.text().toFloat();
            }
            xml_reader.readNext();
        }
        else if(QString::compare(tag, QString("fov")) == 0)
        {
            xml_reader.readNext();
            if(xml_reader.isCharacters())
            {
                result.fovy = xml_reader.text().toFloat();
            }
            xml_reader.readNext();
        }
        else if(QString::compare(tag, QString("nearClip")) == 0)
        {
            xml_reader.readNext();
            if(xml_reader.isCharacters())
            {
                result.near_clip = xml_reader.text().toFloat();
            }
            xml_reader.readNext();
        }
        else if(QString::compare(tag, QString("farClip")) == 0)
        {
            xml_reader.readNext();
            if(xml_reader.isCharacters())
            {
                result.far_clip = xml_reader.text().toFloat();
            }
            xml_reader.readNext();
        }
    }
    result.RecomputeAttributes();
    return result;
}
Example #19
0
void Parser::parseFiles(QNetworkReply *reply, QMap<QNetworkReply*, Structureelement*> *replies, QString downloadDirectoryPath)
{
    // Holen die aktuelle Veranstaltung aus der Map
    Structureelement* aktuellerOrdner = replies->value(reply);

    // Auslesen der Antwort und Speichern in dem XmlReader
    QString replyText = reply->readAll();
    QXmlStreamReader Reader;
    Reader.addData(replyText);


    // Vorbereitung der Daten für die Elemente
    QString currentXmlTag;
    QUrl    url;
    QString name;
    QString time;
    qint32  size = 0;

    // Prüfen auf das Ende
    while(!Reader.atEnd())
    {
        // Lese nächstes Element
        Reader.readNext();

        // 1. Fall: Öffnendes Element <Element>
        if(Reader.isStartElement())
        {
            // Speichern des Namens
            currentXmlTag = Reader.name().toString();
        }

        // 2. Fall: Schließendes Element mit Namen Response </Response>
        else if (Reader.isEndElement() && Reader.name() == "response")
        {
            // Hinzufügen des Slashs bei der Url von Ordnern
            if(!size)
                url.setUrl(url.toString() % "/");

            // Wechsel in den übergeordneten Ordner des aktuellen Elements
            QString bla = url.toString();
            while(!url.toString().contains((aktuellerOrdner->data(urlRole).toUrl().toString()), Qt::CaseSensitive))//(in = RegExp.indexIn(url.toString())) == -1)
            {
                aktuellerOrdner->sortChildren(0, Qt::AscendingOrder);
                aktuellerOrdner = (Structureelement*)aktuellerOrdner->parent();
                if (aktuellerOrdner == 0)
                    qDebug() << replyText;
            }

            // Ignorieren aller Adressen, die "/Forms" enthalten
            if (!url.toString().contains("/Forms", Qt::CaseSensitive))
            {
                // Prüfe auf Elementart
                // 1. Fall: Datei (size > 0)
                if (size)
                {
                    // Erstellen einer neuen Datei
                    Structureelement* newFile = new Structureelement(name, url, time, size);

                    // Hinzufügen des endungsabhängigen Icons
                    // PDF
                    if (name.contains(QRegExp(".pdf$", Qt::CaseInsensitive)))
                        newFile->setData(QIcon(":/Icons/Icons/filetype_pdf.png"), Qt::DecorationRole);

                    // ZIP
                    else if (name.contains(QRegExp(".zip$", Qt::CaseInsensitive)))
                        newFile->setData(QIcon(":/Icons/Icons/filetype_zip.png"), Qt::DecorationRole);

                    // RAR
                    else if (name.contains(QRegExp(".rar$", Qt::CaseInsensitive)))
                        newFile->setData(QIcon(":/Icons/Icons/filetype_rar.png"), Qt::DecorationRole);

                    // Sonstige
                    else
                        newFile->setData(QIcon(":/Icons/Icons/file.png"), Qt::DecorationRole);


                    QString path;
                    path.append(Utils::getStrukturelementPfad(aktuellerOrdner, downloadDirectoryPath) %"/");
                    path.append(name);
                    path.remove(0,8);

                    if(QFile::exists(path))
                    {
                        newFile->setData(SYNCHRONISED, synchronisedRole);
                    }
                    else
                    {
                        newFile->setData(NOT_SYNCHRONISED, synchronisedRole);
                    }

                    QList<QStandardItem*> row;
                    row.append(newFile);
                    row.append(new QStandardItem(QString::number(size/1024.0/1024.0, 'f', 2) % " MB"));
                    row.append(new QStandardItem(QDateTime::fromString(time, Qt::ISODate).toString("yyyy-MM-dd hh:mm")));

                    // Hinzufügen zum aktuellen Ordner
                    aktuellerOrdner->appendRow(row);
                }
                // 2. Fall: Ordner/Veranstaltung
                // Ausschließen der Ordnernamen "documents" und "structured"
                else if (name != "documents" && name != "structured" && !url.toString().contains("exerciseCourse"))
                {
                    // Erstellen eines neuen Ordners
                    Structureelement* newDirectory = new Structureelement(name, url, directoryItem);

                    // Setzen des Zeichens
                    newDirectory->setData(QIcon(":/Icons/Icons/25_folder.png"), Qt::DecorationRole);

                    // Hinzufügen zum aktuellen Ordner
                    aktuellerOrdner->appendRow(newDirectory);

                    // NeuerOrdner wird zum aktuellen Ordner
                    aktuellerOrdner = newDirectory;
                }
            }

            // Löschen aller eingelesener Daten
            url.clear();
            name.clear();
            size = 0;
            time.clear();
        }

        // Einlesen der Elementeigenschaften
        else if (Reader.isCharacters() && !Reader.isWhitespace())
        {
            // URL
            if(currentXmlTag == "href" && url.isEmpty())
                url.setUrl(QString::fromUtf8(Reader.text().toString().toUtf8()));

            // Name
            else if (currentXmlTag == "displayname")
                name = QString::fromUtf8(Reader.text().toString().toUtf8());

            // Größe
            else if (currentXmlTag == "getcontentlength")
                size = Reader.text().toString().toInt();

            // Modifizierungsdatum
            else if (currentXmlTag == "getlastmodified")
                time = QString::fromUtf8(Reader.text().toString().toLatin1());
        }
    }

    // Leere Ordner wieder rausschmeißen.
    Structureelement* rootCourse = replies->value(reply);
    for (int i = 0; i < rootCourse->rowCount(); i++)
    {
        Structureelement *item = (Structureelement *)rootCourse->child(i);
        if (item->type() == directoryItem && item->rowCount() == 0)
        {
            rootCourse->removeRow(i);
        }
    }
    // Sortieren aller Dateien
    replies->value(reply)->sortChildren(0, Qt::AscendingOrder);
}
Example #20
0
void RSSManager::finished()
{
    FollowRedirectReply* reply = qobject_cast<FollowRedirectReply*> (sender());
    if (!reply) {
        return;
    }

    QString replyUrl;
    for (int i = 0; i < m_replies.count(); i++) {
        QPair<FollowRedirectReply*, QUrl> pair = m_replies.at(i);
        if (pair.first == reply) {
            replyUrl = pair.second.toString();
            break;
        }
    }

    if (replyUrl.isEmpty()) {
        return;
    }

    QString currentTag;
    QString linkString;
    QString titleString;

    QXmlStreamReader xml;
    xml.addData(reply->readAll());

    reply->deleteLater();

    int tabIndex = -1;
    for (int i = 0; i < ui->tabWidget->count(); i++) {
        if (replyUrl == ui->tabWidget->tabToolTip(i)) {
            tabIndex = i;
            break;
        }
    }

    if (tabIndex == -1) {
        return;
    }

    TreeWidget* treeWidget = qobject_cast<TreeWidget*>(ui->tabWidget->widget(tabIndex));
    if (!treeWidget) {
        return;
    }
    treeWidget->clear();

    while (!xml.atEnd()) {
        xml.readNext();
        if (xml.isStartElement()) {
            if (xml.name() == QLatin1String("item")) {
                linkString = xml.attributes().value("rss:about").toString();
            }
            currentTag = xml.qualifiedName().toString();
        }
        else if (xml.isEndElement()) {
            if (xml.qualifiedName() == QLatin1String("item")) {
                QTreeWidgetItem* item = new QTreeWidgetItem;
                item->setText(0, titleString);
                item->setIcon(0, QIcon(":/icons/other/feed.png"));
                item->setToolTip(0, linkString);
                treeWidget->addTopLevelItem(item);

                titleString.clear();
                linkString.clear();
            }
        }
        else if (xml.isCharacters() && !xml.isWhitespace()) {
            if (currentTag == QLatin1String("title")) {
                titleString = xml.text().toString();
            }
            else if (currentTag == QLatin1String("link")) {
                linkString += xml.text().toString();
            }
        }
    }

    if (treeWidget->topLevelItemCount() == 0) {
        QTreeWidgetItem* item = new QTreeWidgetItem;
        item->setText(0, tr("Error in fetching feed"));
        treeWidget->addTopLevelItem(item);
    }
}
Example #21
0
QString ScutRSS::parseXml(const QString &data){
     QString titleString;
     QString currentTag;
     QString dateString;
     QString linkString;
     QString description;
     QString html = "<html><h1>Scutum RSS</h1>";

     QXmlStreamReader xml;
     xml.addData(data);

     while (!xml.atEnd()) {
         xml.readNext();
         if (xml.isStartElement()) {

             if (xml.name() == "item"){

                 if (titleString!=""){
                    //feed = new QTreeWidgetItem;
                    //feed->setText(0, titleString);
                    //feed->setText(2, linkString);
                    //ui->treeWidget->addTopLevelItem(feed);

                    //qDebug() << __PRETTY_FUNCTION__<< " title: " << titleString << " linkString: " << linkString;
                 }

                 description.clear();
                 linkString.clear();
                 titleString.clear();
                 dateString.clear();
             }

             currentTag = xml.name().toString();
             //qDebug() << __PRETTY_FUNCTION__<< " current tag: " << currentTag;
         } else if (xml.isEndElement()) {
              if (xml.name() == "item") {

               //qDebug() << __PRETTY_FUNCTION__<< " title: " << titleString << " linkString: " << linkString;
               html = html + "<p><h2><a href=\"" + linkString +"\">" + titleString + "</a></h2></p>";

               html = html + "<p><h3>" + description + "<h3></p>";

                 //QTreeWidgetItem *item = new QTreeWidgetItem(feed);
                 //item->setText(0, titleString);
                 //item->setText(1, dateString);
                 //item->setText(2, linkString);
                 //ui->treeWidget->addTopLevelItem(item);

                 titleString.clear();
                 linkString.clear();
                 dateString.clear();
             }

         } else if (xml.isCharacters() && !xml.isWhitespace()) {
            if (currentTag == "channel"){
                 qDebug() << __PRETTY_FUNCTION__<< " channel: " << currentTag;
                 //titleString += xml.text().toString();
             }
            if (currentTag == "description"){
                 qDebug() << __PRETTY_FUNCTION__<< " description: " << xml.text();
                 description += xml.text().toString();
             }
             else if (currentTag == "title"){
                 //qDebug() << __PRETTY_FUNCTION__<< " current tag: " << currentTag;
                 titleString += xml.text().toString();
             }
             else if (currentTag == "link"){
                 linkString += xml.text().toString();
                 //qDebug() << __PRETTY_FUNCTION__<< " current link: " << currentTag;
             }
             else if (currentTag == "pubDate"){
                 dateString += xml.text().toString();
                 //qDebug() << __PRETTY_FUNCTION__<< " current date: " << currentTag;
             }
         }
     }
     if (xml.error() && xml.error() != QXmlStreamReader::PrematureEndOfDocumentError) {
         qWarning() << "XML ERROR:" << xml.lineNumber() << ": " << xml.errorString();
         //http.abort();
     }

 html = html + "</html>";
 return html;
 } // QString ScutRSS::parseXml(const QString &data);
	_class * readFromXML(QString fileXml) {
		_class *root = NULL;

		// init xml stream
		QFile file(fileXml);
		QXmlStreamReader xmlReader;
	
		//QString line;
		if ( !file.open(QIODevice::ReadOnly) )
			return false;
	
		{
			QTextStream t( &file );
			// stream.setCodec("CP-866");
			xmlReader.addData(t.readAll());
		}	
	
		// start reading
		QStack<_specXMLElement *> stackElements;
		while(!xmlReader.atEnd()) 
		{
			if(xmlReader.isCharacters() && stackElements.count() != 0)
			{
				_specXMLElement *pElemTop = stackElements.top();
				if(pElemTop->hasBody())
				  pElemTop->setBody(xmlReader.readElementText());
			}
		
			if(xmlReader.isStartElement())
			{ 
				QString strName = xmlReader.name().toString();
				_specXMLElement *elem = createElement(strName);
			
				_specXMLElement *parentElem = (stackElements.count() != 0) ? stackElements.top() : NULL;

				if(stackElements.count() == 0)
					root = (_class *)elem;
								
				if(parentElem != NULL)
					parentElem->addChildElement(strName,elem);

				stackElements.push(elem);
			
				for(int i = 0;  i < xmlReader.attributes().count(); i++)
				{
					QXmlStreamAttribute attr = xmlReader.attributes().at(i);
					elem->setAttribute(attr.name().toString(), attr.value().toString());
				}
			}
		
			if(xmlReader.isEndElement())
			{
				stackElements.pop();
			}
			xmlReader.readNext();		

		};
	
		if(xmlReader.hasError())
		{
			return NULL;
			// std::cout << xmlReader.errorString().toStdString();
		}
	
		return root;
	};
void SimpleLoggerRoutingInfo::readInternals(QXmlStreamReader& reader, const QString&)
{
  // Some elements store a map with the key as an attribute such as: "<Level MessageCategory="UserMessage">3</Level>"
  // The nameAttrMapprovides the mapping between the element name and the single attribute used to contain the key.
  QMap<QString, QString> nameAttrMap;
  nameAttrMap["level"] = "MessageCategory";
  nameAttrMap["routing"] = "MessageRouting";
  nameAttrMap["format"] = "MessageComponent";

  QString name;
  QString attributeValue;
  bool foundCharacters = false;
  while (!reader.atEnd())
  {
    if (reader.isStartElement())
    {
      attributeValue = "";
      name = reader.name().toString();
      foundCharacters = false;
      //qDebug(qPrintable(QString("Found start element %1").arg(name)));

      if (QString::compare(name, "LocationRegEx", Qt::CaseInsensitive) == 0)
      {
        if (m_locationRegExp != nullptr)
        {
          delete m_locationRegExp;
          m_locationRegExp = nullptr;
        }
        m_locationRegExp = XMLUtility::readRegExp(reader);
      }
      else if (QString::compare(name, "MessageRegEx", Qt::CaseInsensitive) == 0)
      {
        if (m_messageRegExp != nullptr)
        {
          delete m_messageRegExp;
          m_messageRegExp = nullptr;
        }
        m_messageRegExp = XMLUtility::readRegExp(reader);
      }
      else
      {
        // At a start element that is not a regular expression, so check for the value in the attribute.
        if (nameAttrMap.contains(name.toLower()) && reader.attributes().hasAttribute(nameAttrMap[name.toLower()]))
        {
          attributeValue = reader.attributes().value(nameAttrMap[name.toLower()]).toString();
        }
      }
    }
    else if (reader.isCharacters() && !name.isEmpty())
    {
      QString value = reader.text().toString();
      //qDebug(qPrintable(QString("Found characters for name %1 and value (%2)").arg(name, value)));
      if (name.compare("Enabled", Qt::CaseInsensitive) == 0)
      {
        m_enabled = XMLUtility::stringToBoolean(value);
      }
      else if (name.compare("Name", Qt::CaseInsensitive) == 0)
      {
        setName(value.trimmed());
      }
      else if (attributeValue.length() > 0)
      {
        // These next guys store their value in the attribute as specified in the nameAttrMap.
        if (name.compare("Level", Qt::CaseInsensitive) == 0)
        {
          m_levels->insert(stringToCategory(attributeValue), value.toInt());
        }
        else if (name.compare("Routing", Qt::CaseInsensitive) == 0)
        {
          m_routing->insert(stringToRouting(attributeValue), XMLUtility::stringToBoolean(value));
        }
        else if (name.compare("Format", Qt::CaseInsensitive) == 0)
        {
          m_format.append(QPair<MessageComponent, QString>(stringToComponent(attributeValue), value));
          foundCharacters = true;
        }
      }
      attributeValue = "";
    } else if (reader.isEndElement()) {
      if (QString::compare(reader.name().toString(), "SimpleLoggerRoutingInfo", Qt::CaseInsensitive) == 0)
      {
        return;
      }
      if (name.compare("Format", Qt::CaseInsensitive) == 0 && !foundCharacters)
      {
        m_format.append(QPair<MessageComponent, QString>(stringToComponent(attributeValue), ""));
      }
      name = "";
    }
    reader.readNext();
  }
}