Example #1
0
bool PdmlFileFormat::isMyFileFormat(const QString fileName)
{
    bool ret = false;
    QFile file(fileName);
    QByteArray buf;
    QXmlStreamReader xml;

    if (!file.open(QIODevice::ReadOnly))
        goto _exit;

    xml.setDevice(&file);

    xml.readNext();
    if (xml.hasError() || !xml.isStartDocument())
        goto _close_exit;

    // skip everything until the start of the first element
    while (!xml.isStartElement()) 
    {
        xml.readNext();
        if (xml.hasError())
            goto _close_exit;
    }

    if (!xml.hasError() && xml.isStartElement() && (xml.name() == "pdml"))
        ret = true;
    else
        ret = false;

_close_exit:
    xml.clear();
    file.close();
_exit:
    return ret;
}
/**
 * 载入模板
 */
void loadMasks(std::vector<OCRMask>* mOCRMasks)
{
		QString strDBDir = getModeDir();

		if (!strDBDir.isEmpty())
		{
				QFile file(strDBDir);
				if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
				{
						QMessageBox msgBox;
						msgBox.setIcon(QMessageBox::Warning);
						msgBox.setText(QObject::tr("Cannot open file to read.\nMaybe this file does not exist."));
						msgBox.exec();
						return;
				}

				mOCRMasks->clear();

				QXmlStreamReader xml;
				xml.setDevice(&file);

				while(!xml.atEnd() && !xml.hasError())
				{
						QXmlStreamReader::TokenType token = xml.readNext();
						if(token == QXmlStreamReader::StartDocument)
						{
								continue;
						}
						if(token == QXmlStreamReader::StartElement)
						{
								if(xml.name() == "masks")
								{
										continue;
								}
								if(xml.name() == "mask")
								{
										QXmlStreamAttributes attributes = xml.attributes();
										OCRMask mask;
										mask.key = attributes.value("key").toString().toLocal8Bit();
										mask.rect.x = (attributes.value("x").toString().toInt());
										mask.rect.y = (attributes.value("y").toString().toInt());
										mask.rect.width = (attributes.value("w").toString().toInt());
										mask.rect.height = (attributes.value("h").toString().toInt());
										mOCRMasks->push_back(mask);
								}
						}
				}
				if(xml.hasError())
				{
						QMessageBox msgBox;
						msgBox.setIcon(QMessageBox::Warning);
						msgBox.setText(QObject::tr("Parse XML failed.\nMaybe this file is not the right one."));
						msgBox.exec();
				}
				xml.clear();
				//imageWidget->update();
				//ocrWidget->update();
		}
}
Example #3
0
//------------------------------------------------------------------------------
void getListWordFromDict(const QString f_path, QMap<QString, QString>* f_map)
{
    f_map->clear();

    QFile* xmlFile = new QFile(f_path);
    if (!xmlFile->open(QIODevice::ReadOnly | QIODevice::Text))
    {
        return;
    }
    QXmlStreamReader* xmlReader = new QXmlStreamReader(xmlFile);


    //Parse the XML until we reach end of it
    while(!xmlReader->atEnd() && !xmlReader->hasError())
    {
        // Read next element
        QXmlStreamReader::TokenType token = xmlReader->readNext();
        //If token is just StartDocument - go to next
        if(token == QXmlStreamReader::StartDocument)
        {
            continue;
        }
        //If token is StartElement - read it
        if(token == QXmlStreamReader::StartElement)
        {

            if(xmlReader->name() == "word")
            {
                QXmlStreamAttributes attrs = xmlReader->attributes();

                QStringList t_list;
                QString t_text;
                t_list << xmlReader->readElementText().split("\n");
                removeEmptyQStringFromQStringList(&t_list);

                for (int i = 0; i < t_list.size(); i++)
                {
                    t_text.append(QString(t_list.at(i)).replace("    ", "") + "\n");
                }

                f_map->insert(attrs.value("name").toString(), t_text);
            }
        }
    }

    if(xmlReader->hasError())
    {
        return;
    }

    //close reader and flush file
    xmlReader->clear();
    xmlFile->close();
}
LanguageResource::LanguageResource(ResourceManager *resourceManager, const QUrl &path)
    : ResourceInterface(resourceManager)
    , d(new LanguageResourcePrivate(resourceManager))
{
    d->m_type = ResourceInterface::LanguageResourceType;
    d->m_path = path;

    // load basic information from language file, but does not parse everything
    QXmlStreamReader xml;
    QFile file(path.toLocalFile());
    if (file.open(QIODevice::ReadOnly)) {
        xml.setDevice(&file);
        xml.readNextStartElement();
        while (xml.readNext() && !xml.atEnd()) {
            if (xml.name() == "id") {
                d->m_identifier = xml.readElementText();
            }
            if (xml.name() == "title") {
                d->m_title = xml.readElementText();
            }
            if (xml.name() == "i18nTitle") {
                d->m_i18nTitle = xml.readElementText();
            }
            // quit reading when basic elements are read
            if (!d->m_identifier.isEmpty()
                && !d->m_title.isEmpty()
                && !d->m_i18nTitle.isEmpty()
            )
            {
                break;
            }
        }
        if (xml.hasError()) {
            qCritical() << "Error occurred when reading Language XML file:" << path.toLocalFile();
        }
    }
    xml.clear();
    file.close();
}
void ProfileManagement::on_pushButton_5_clicked()
{
    QString fileName=QFileDialog::getOpenFileName(this, tr("Open File"),
                                                     "",
                                                     tr("Files (*.xml)"));
    QDateTime DateTime =  QDateTime::currentDateTime();
    QString DateTime11 = DateTime.toString();
    if(fileName==0)
    {
        ui->textEdit->setText("<"+DateTime11+"> Brak sciezki!\n");
        return;
    }
    else
    {
        ui->textEdit->setText("<"+DateTime11+">Plik pomyślnie wczytany!\n");
    }
    QFile file(fileName);
    file.open(QIODevice::ReadOnly);
    QXmlStreamReader *xmlReader = new QXmlStreamReader(&file);
    int hitsAmount=0, hitsAmountBuffer=0;
    int rotation;
    QString powerBuffer;
    QString rotationBuffer;
    QString angleBuffer;
    QString positionBuffer;
    QString nameBuffer;
    QString percentBuffer;
    Profil *Prof;
    while(1)
    {
        xmlReader->readNext();
        if(xmlReader->atEnd())
            break;
        if(xmlReader->tokenType()==QXmlStreamReader::StartDocument)
        {
            continue;
        }
        if(xmlReader->tokenType()==QXmlStreamReader::StartElement)
        {
            if(xmlReader->name()=="Uderzenia" && xmlReader->tokenType()==QXmlStreamReader::StartElement)
            {
                Prof = new Profil;
                Prof->Rows=0;
                QXmlStreamAttributes attributes = xmlReader->attributes();
                hitsAmount=(attributes.value("Ilosc")).toString().toInt();
                continue;
            }
            if(xmlReader->name()=="Nazwa" && xmlReader->tokenType()==QXmlStreamReader::StartElement)
            {
                nameBuffer = xmlReader->readElementText();
                continue;
            }
            if(xmlReader->name()=="Uderzenie" && xmlReader->tokenType()==QXmlStreamReader::StartElement)
            {
                while(!(xmlReader->tokenType() == QXmlStreamReader::EndElement &&
                        xmlReader->name() == "Uderzenie"))
                {
                    if(xmlReader->name() =="Sila")
                    {
                        powerBuffer = xmlReader->readElementText();
                    }
                    if(xmlReader->name() =="Rotacja")
                    {
                        rotationBuffer = xmlReader->readElementText();
                        if(rotationBuffer =="Boczna")
                        {
                            rotation=1;
                        }
                        else if(rotationBuffer =="Wsteczna")
                        {
                            rotation=0;
                        }
                        else
                        {
                            rotation=2;
                        }
                    }
                    if(xmlReader->name() =="Kat")
                    {
                        angleBuffer = xmlReader->readElementText();
                    }
                    if(xmlReader->name() =="Pozycja")
                    {
                        positionBuffer = xmlReader->readElementText();
                    }
                    if(xmlReader->name() =="Procent")
                    {
                        percentBuffer = xmlReader->readElementText();
                        hitsAmountBuffer = hitsAmount * percentBuffer.toDouble();
                    }
                    xmlReader->readNext();
                }
                Prof->Rotation.push_back(rotationBuffer);
                Prof->Power.push_back(powerBuffer.toInt());
                Prof->Position.push_back(positionBuffer.toInt());
                Prof->Angle.push_back(angleBuffer.toInt());
                Prof->Percent.push_back(int(percentBuffer.toDouble()*100));
                Prof->Hits = hitsAmount;
                Prof->Nazwa = nameBuffer;
                Prof->DateTime = (QDateTime::currentDateTime()).toString();
                Prof->Rows++;
            }
        }
        if(xmlReader->name()=="Uderzenia" && xmlReader->tokenType()==QXmlStreamReader::EndElement)
        {
            Profil::Profile_Array.push_back(Prof);
            Refresh_Dialog();
        }
    }
    xmlReader->clear();
    file.close();

    ui->textEdit->setText("<"+DateTime11+">Plik pomyślnie odczytany!\n");
}
int formMergeSlideCalibrations
    ::funcReadSensitivities(
                                const QString &filePath,
                                structSlideStrSens* slideStrSens
){
    QFile *xmlFile = new QFile( filePath );
    if (!xmlFile->open(QIODevice::ReadOnly | QIODevice::Text)) {
        return _ERROR;
    }
    QXmlStreamReader *xmlReader = new QXmlStreamReader(xmlFile);

    //Parse the XML until we reach end of it
    while(!xmlReader->atEnd() && !xmlReader->hasError()) {
        // Read next element
        QXmlStreamReader::TokenType token = xmlReader->readNext();
        if(token == QXmlStreamReader::StartDocument) {
            continue;
        }
        //If token is StartElement - read it
        if(token == QXmlStreamReader::StartElement)
        {
            if( xmlReader->name()=="normedOrigR" )
                slideStrSens->normedOrigR.append( xmlReader->readElementText().trimmed() );
            if( xmlReader->name()=="normedOrigG" )
                slideStrSens->normedOrigG.append( xmlReader->readElementText().trimmed() );
            if( xmlReader->name()=="normedOrigB" )
                slideStrSens->normedOrigB.append( xmlReader->readElementText().trimmed() );

            if( xmlReader->name()=="normedRalfR" )
                slideStrSens->normedRalfR.append( xmlReader->readElementText().trimmed() );
            if( xmlReader->name()=="normedRalfG" )
                slideStrSens->normedRalfG.append( xmlReader->readElementText().trimmed() );
            if( xmlReader->name()=="normedRalfB" )
                slideStrSens->normedRalfB.append( xmlReader->readElementText().trimmed() );
            if( xmlReader->name()=="normedRalfH" )
                slideStrSens->normedRalfH.append( xmlReader->readElementText().trimmed() );

            if( xmlReader->name()=="originalR" )
                slideStrSens->originalR.append( xmlReader->readElementText().trimmed() );
            if( xmlReader->name()=="originalG" )
                slideStrSens->originalG.append( xmlReader->readElementText().trimmed() );
            if( xmlReader->name()=="originalB" )
                slideStrSens->originalB.append( xmlReader->readElementText().trimmed() );
            if( xmlReader->name()=="originalH" )
                slideStrSens->originalH.append( xmlReader->readElementText().trimmed() );

            if( xmlReader->name()=="wR" )
                slideStrSens->wR.append( xmlReader->readElementText().trimmed() );
            if( xmlReader->name()=="wG" )
                slideStrSens->wG.append( xmlReader->readElementText().trimmed() );
            if( xmlReader->name()=="wB" )
                slideStrSens->wB.append( xmlReader->readElementText().trimmed() );

        }
    }
    if(xmlReader->hasError()) {
        funcShowMsg("Parse Error",xmlReader->errorString());
        return _ERROR;
    }
    xmlReader->clear();
    xmlFile->close();

    slideStrSens->filled = 1;

    return _OK;
}
Example #7
0
void LapTimerThread::writeTxt()
{
    QTextStream tmp(&infoFile);
    QXmlStreamReader xmlReader;
    qWarning()<<coordTmpFile.open(QIODevice::ReadOnly | QIODevice::Text);
    xmlReader.setDevice(&coordTmpFile);
    xmlReader.readNext();
    int lapNum=0;
    //Reading from the file
    xmlReader.readNext();
    while (!xmlReader.isEndDocument())
    {
        if (xmlReader.isStartElement())
        {
            QString name = xmlReader.name().toString();
            if (name == "lap")
            {
                lapNum++;
            }

        }
        else if (xmlReader.isEndElement())
        {

        }
        xmlReader.readNext();
    }
    qWarning()<<lapNum;
    coordTmpFile.close();
    for (int s=0;s<(lapNum-1);s++)
    {
    qWarning()<<"entering lap "<<s;
    tmp<<"-**********************************************\r\n";
    tmp<< "Map: " <<mapName<<"\r\n";
    qWarning()<<"header";
    xmlReader.clear();
    coordTmpFile.open(QIODevice::ReadOnly | QIODevice::Text);
    xmlReader.setDevice(&coordTmpFile);
    xmlReader.readNext();
    int lapTmpNum=0;
    bool lapNumFlag=false;
    xmlTextBuffer.clear();
    //Reading from the file
    QString start;
    while (!xmlReader.isEndDocument())
    {
        if (xmlReader.isStartElement())
        {
            QString name = xmlReader.name().toString();
            if ((name == "when")&& lapNumFlag)//read time of each element
            {
               xmlTextBuffer.append(xmlReader.readElementText());
            }
            else if (name == "lap")
            {
                lapNumFlag=(lapTmpNum==s)?true:false;
                if (lapNumFlag)
                    start = xmlReader.attributes().value("start").toString();
                lapTmpNum++;
            }
        }
        else if (xmlReader.isEndElement())
        {

        }
        xmlReader.readNext();
    }
    coordTmpFile.close();
        tmp<< "Start Time: "<< QString(start).replace(QRegExp("[TZ]")," ")<<"\r\n";
        //tmp<< "End Time: "<< QString(xmlTextBuffer.last()).replace(QRegExp("[TZ]")," ")<<"\r\n";
        //tmp<< "Duration: "<< QTime::fromMSecsSinceStartOfDay(QTime::fromString(QString(xmlTextBuffer.first()).section(QRegExp("[TZ]"),1,1),"hh:mm:ss.zzz")
              //.msecsTo(QTime::fromString(QString(xmlTextBuffer.last()).section(QRegExp("[TZ]"),1,1),"hh:mm:ss.zzz"))).toString("hh:mm:ss.zzz")<<"\r\n";
        xmlReader.clear();
        coordTmpFile.open(QIODevice::ReadOnly | QIODevice::Text);
        xmlReader.setDevice(&coordTmpFile);
        xmlReader.readNext();
        lapTmpNum=0;
        lapNumFlag=false;
        xmlTextBuffer.clear();
        //Reading from the file
        while (!xmlReader.isEndDocument())
        {
            if (xmlReader.isStartElement())
            {
                QString name = xmlReader.name().toString();
                if ((name == "coord")&& lapNumFlag)//read coord of each element
                {
                   xmlTextBuffer.append(xmlReader.readElementText());
                }
                else if (name == "lap")
                {
                    lapNumFlag=(lapTmpNum==s)?true:false;
                    lapTmpNum++;
                }
            }
            else if (xmlReader.isEndElement())
            {

            }
            xmlReader.readNext();
        }
        coordTmpFile.close();


        double distance = 0;
        double maxAlt = 0, minAlt = 10000;
        QList <QString>::iterator i;
        for (i=xmlTextBuffer.begin();i!=xmlTextBuffer.end();++i)
        {
            if ((i+1) == xmlTextBuffer.end())
            {
                QList <QString>::iterator ii = xmlTextBuffer.begin();
                distance +=dist(i->split(" ").at(1).toDouble(),ii->split(" ").at(1).toDouble(),i->split(" ").at(0).toDouble(),ii->split(" ").at(0).toDouble(),true);
            }
            else
            {
                distance += dist(i->split(" ").at(1).toDouble(),(i+1)->split(" ").at(1).toDouble(),i->split(" ").at(0).toDouble(),(i+1)->split(" ").at(0).toDouble(),true);
            }
                minAlt = (i->split(" ").at(2).toDouble()<minAlt)?(i->split(" ").at(2).toDouble()):minAlt;
                maxAlt = (i->split(" ").at(2).toDouble()>maxAlt)?(i->split(" ").at(2).toDouble()):maxAlt;
        }
        tmp<< "Distance: "<< QString::number((int)distance)<<" m"<<"\r\n";
        tmp<< "Max Alt: "<< QString::number(maxAlt,'f',4)<<" m"<<"\r\n";
        tmp<< "Min Alt: "<< QString::number(minAlt,'f',4)<<" m"<<"\r\n";
        tmp<< "Elevation Variance:" << QString::number(maxAlt-minAlt,'f',4)<<" m"<<"\r\n";

        xmlReader.clear();
        speedTmpFile.open(QIODevice::ReadOnly | QIODevice::Text);
        xmlReader.setDevice(&speedTmpFile);
        xmlReader.readNext();
        lapTmpNum=0;
        lapNumFlag=false;
        xmlTextBuffer.clear();
        //Reading from the file
        while (!xmlReader.isEndDocument())
        {
            if (xmlReader.isStartElement())
            {
                QString name = xmlReader.name().toString();
                if ((name == "speed")&& lapNumFlag)//read speed of each element
                {
                   xmlTextBuffer.append(xmlReader.readElementText());
                }
                else if (name == "lap")
                {
                    lapNumFlag=(lapTmpNum==s)?true:false;
                    lapTmpNum++;
                }
            }
            else if (xmlReader.isEndElement())
            {

            }
            xmlReader.readNext();
        }
        speedTmpFile.close();

        double maxSpeed = 0, minSpeed = 10000, speedSum = 0;
        QList <QString>::iterator j;
        for (j=xmlTextBuffer.begin();j!=xmlTextBuffer.end();++j)
        {
                minSpeed = (j->toDouble()<minSpeed)?(j->toDouble()):minSpeed;
                maxSpeed = (j->toDouble()>maxSpeed)?(j->toDouble()):maxSpeed;
                speedSum += j->toDouble();
        }

        tmp<< "Max Speed: "<< QString::number(maxSpeed,'f',4)<<" km/h"<<"\r\n";
        tmp<< "Min Alt: "<< QString::number(minSpeed,'f',4)<<" km/h"<<"\r\n";
        tmp<< "Average Speed **: "<< QString::number(speedSum/(xmlTextBuffer.size()),'f',4)<<" km/h"<<"\r\n";

        xmlReader.clear();
        wayptTmpFile.open(QIODevice::ReadOnly | QIODevice::Text);
        xmlReader.setDevice(&wayptTmpFile);
        xmlReader.readNext();
        lapTmpNum=0;
        lapNumFlag=false;
        xmlTextBuffer.clear();
        //Reading from the file
        QStringList tmpWhen,tmpBest,tmpDev;
        while (!xmlReader.isEndDocument())
        {
            if (xmlReader.isStartElement())
            {
                QString name = xmlReader.name().toString();
                if ((name == "time")&& lapNumFlag)//read time of each element
                {
                   xmlTextBuffer.append(xmlReader.readElementText());
                }
                else if ((name == "best")&& lapNumFlag)//read best of each element
                {
                   tmpBest.append(xmlReader.readElementText());
                }
                else if ((name == "when")&& lapNumFlag)//read when of each element
                {
                   tmpWhen.append(xmlReader.readElementText());
                }
                else if ((name == "dev")&& lapNumFlag)//read dev of each element
                {
                   tmpDev.append(xmlReader.readElementText());
                }
                else if (name == "lap")
                {
                    lapNumFlag=(lapTmpNum==s)?true:false;
                    lapTmpNum++;
                }
            }
            else if (xmlReader.isEndElement())
            {

            }
            xmlReader.readNext();
        }
        wayptTmpFile.close();
        for (int k=0;k<xmlTextBuffer.length();k++)
        {
            if (k==(xmlTextBuffer.length()-1))
            {
                tmp<<"Finish Point: "<<"\r\n        Time: "
                               <<xmlTextBuffer.at(k)<<"\r\n        Best: "
                              <<tmpBest.at(k)<<"\r\n        Time To Best: "
                             <<tmpDev.at(k)<<"\r\n";
            }
            else
            {
                tmp<<"Waypoint "<<QString::number(k+1)<<": "<<"\r\n        Time: "
                               <<xmlTextBuffer.at(k)<<"\r\n        Best: "
                              <<tmpBest.at(k)<<"\r\n        Time To Best: "
                             <<tmpDev.at(k)<<"\r\n";
            }
        }
    tmp<< "End Time: "<< QString(tmpWhen.last()).replace(QRegExp("[TZ]")," ")<<"\r\n";
    tmp<< "Average Speed *: "<< QString::number
              ((distance/(QTime::fromString(start,"hh:mm:ss.zzz").msecsTo(
                              QTime::fromString(QString(tmpWhen.last()).section(QRegExp("[TZ]"),1,1),"hh:mm:ss.zzz"))))*3.6,'f',4)
       <<"\r\n";
    tmp<< "\r\n";
}
    qWarning()<<"Success";
}
Example #8
0
void LapTimerThread::writeXml()
{
    QXmlStreamReader xmlReader;
    coordTmpFile.open(QIODevice::ReadOnly | QIODevice::Text);
    xmlReader.setDevice(&coordTmpFile);
    xmlReader.readNext();
    int lapNum=0;
    //Reading from the file
    xmlReader.readNext();
    while (!xmlReader.isEndDocument())
    {
        if (xmlReader.isStartElement())
        {
            QString name = xmlReader.name().toString();
            if (name == "lap")
            {
                lapNum++;
            }

        }
        else if (xmlReader.isEndElement())
        {

        }
        xmlReader.readNext();
    }
    coordTmpFile.close();
    for (int i=0;i<lapNum-1;i++)// loop to generate kml file for each lap
    {

    QFile xmlKmlFile;
    QXmlStreamWriter bufferKml;

    xmlKmlFile.setFileName("data/"+dirName+"/"+dirName+"-"+QString::number(i+1)+".kml");
    xmlKmlFile.open(QIODevice::WriteOnly | QIODevice::Text);
    bufferKml.setDevice(&xmlKmlFile);
    bufferKml.setAutoFormatting(true);
    bufferKml.writeStartDocument();

    bufferKml.writeStartElement("kml");
    QXmlStreamAttributes atrr;
    atrr.append("xmlns","http://www.opengis.net/kml/2.2");
    atrr.append("xmlns:gx","http://www.google.com/kml/ext/2.2");
    atrr.append("xmlns:atom","http://www.w3.org/2005/Atom");
    bufferKml.writeAttributes(atrr);
    bufferKml.writeStartElement("Document");
    bufferKml.writeTextElement("open","1");
    bufferKml.writeTextElement("visibility","1");
    bufferKml.writeStartElement("name");
    bufferKml.writeCDATA("GPS Lap Timer - KML Log - "+QDate::currentDate().toString("yyyyMMdd")+QTime::currentTime().toString("hhmmss"));
    bufferKml.writeEndElement();
    //style - track
    bufferKml.writeStartElement("Style");
    bufferKml.writeAttribute(QXmlStreamAttribute("id","track"));
    bufferKml.writeStartElement("LineStyle");
    bufferKml.writeTextElement("color","7f0000ff");
    bufferKml.writeTextElement("width","4");
    bufferKml.writeEndElement();
    bufferKml.writeStartElement("IconStyle");
    bufferKml.writeTextElement("scale","1.3");
    bufferKml.writeStartElement("Icon");
    bufferKml.writeTextElement("href","http://earth.google.com/images/kml-icons/track-directional/track-0.png");
    bufferKml.writeEndElement();
    bufferKml.writeEndElement();
    bufferKml.writeEndElement();
    //style - start
    bufferKml.writeStartElement("Style");
    bufferKml.writeAttribute(QXmlStreamAttribute("id","start"));
    bufferKml.writeStartElement("IconStyle");
    bufferKml.writeTextElement("scale","1.3");
    bufferKml.writeStartElement("Icon");
    bufferKml.writeTextElement("href","http://maps.google.com/mapfiles/kml/paddle/grn-circle.png");
    bufferKml.writeEndElement();
    bufferKml.writeEmptyElement("hotSpot");
    atrr.clear();
    atrr.append("x","32");
    atrr.append("y","1");
    atrr.append("xunits","pixels");
    atrr.append("yunits","pixels");
    bufferKml.writeAttributes(atrr);
    bufferKml.writeEndElement();
    bufferKml.writeEndElement();
    // style - end
    bufferKml.writeStartElement("Style");
    bufferKml.writeAttribute(QXmlStreamAttribute("id","end"));
    bufferKml.writeStartElement("IconStyle");
    bufferKml.writeTextElement("scale","1.3");
    bufferKml.writeStartElement("Icon");
    bufferKml.writeTextElement("href","http://maps.google.com/mapfiles/kml/paddle/red-circle.png");
    bufferKml.writeEndElement();
    bufferKml.writeEmptyElement("hotSpot");
    bufferKml.writeAttributes(atrr);
    bufferKml.writeEndElement();
    bufferKml.writeEndElement();
    // style - statistics
    bufferKml.writeStartElement("Style");
    bufferKml.writeAttribute(QXmlStreamAttribute("id","statistics"));
    bufferKml.writeStartElement("IconStyle");
    bufferKml.writeTextElement("scale","1.3");
    bufferKml.writeStartElement("Icon");
    bufferKml.writeTextElement("href","http://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png");
    bufferKml.writeEndElement();
    bufferKml.writeEmptyElement("hotSpot");
    atrr.clear();
    atrr.append("x","20");
    atrr.append("y","2");
    atrr.append("xunits","pixels");
    atrr.append("yunits","pixels");
    bufferKml.writeAttributes(atrr);
    bufferKml.writeEndElement();
    bufferKml.writeEndElement();
    // style - waypoint
    bufferKml.writeStartElement("Style");
    bufferKml.writeAttribute(QXmlStreamAttribute("id","waypoint"));
    bufferKml.writeStartElement("IconStyle");
    bufferKml.writeTextElement("scale","1.3");
    bufferKml.writeStartElement("Icon");
    bufferKml.writeTextElement("href","http://maps.google.com/mapfiles/kml/pushpin/blue-pushpin.png");
    bufferKml.writeEndElement();
    bufferKml.writeEmptyElement("hotSpot");
    bufferKml.writeAttributes(atrr);
    bufferKml.writeEndElement();
    bufferKml.writeEndElement();

    QStringList xmlTmpTextBuffer;
    int lapTmpNum=0;
    bool lapNumFlag=false;

    bufferKml.writeStartElement("Folder");
    bufferKml.writeStartElement("name");
    bufferKml.writeCDATA("Lap #"+QString::number(i+1));
    bufferKml.writeEndElement();
    bufferKml.writeTextElement("open","1");

    //waypoints - load
    xmlReader.clear();
    wayptTmpFile.open(QIODevice::ReadOnly | QIODevice::Text);
    xmlReader.setDevice(&wayptTmpFile);
    xmlReader.readNext();
    xmlTmpTextBuffer.clear();
    xmlTextBuffer.clear();
    lapTmpNum=0;
    lapNumFlag=false;
    QStringList bestBuffer,devBuffer,timeBuffer;
    while (!xmlReader.isEndDocument())
    {
        if (xmlReader.isStartElement())
        {
            QString name = xmlReader.name().toString();

            if (name == "when" && lapNumFlag)//read time of each element
            {
               xmlTextBuffer.append(xmlReader.readElementText());
            }
            else if (name == "waypt" && lapNumFlag)
            {
                xmlTmpTextBuffer.append(xmlReader.readElementText());
            }
            else if (name == "best" && lapNumFlag)
            {
                bestBuffer.append(xmlReader.readElementText());
            }
            else if (name == "time" && lapNumFlag)
            {
                timeBuffer.append(xmlReader.readElementText());
            }
            else if (name == "dev" && lapNumFlag)
            {
                devBuffer.append(xmlReader.readElementText());
            }
            else if (name == "lap")
            {
                lapNumFlag=(lapTmpNum==i)?true:false;
                lapTmpNum++;
            }
        }
        else if (xmlReader.isEndElement())
        {

        }
        xmlReader.readNext();
    }
    wayptTmpFile.close();
    //waypoint - write
    for (int j=0;j<xmlTextBuffer.length();j++)
    {
        bufferKml.writeStartElement("Placemark");
        bufferKml.writeStartElement("name");
        if ((j+1)==xmlTextBuffer.length())
        bufferKml.writeCDATA("Finish");
        else
        bufferKml.writeCDATA("Waypoint"+QString::number(j+1));
        bufferKml.writeEndElement();
        bufferKml.writeStartElement("description");
        bufferKml.writeCDATA("Time: "+timeBuffer.at(j)+"; To best: "+devBuffer.at(j)+"; Best: "+bestBuffer.at(j));
        bufferKml.writeEndElement();
        bufferKml.writeStartElement("TimeStamp");
        bufferKml.writeTextElement("when",xmlTextBuffer.at(j));
        bufferKml.writeEndElement();
        if (j==xmlTextBuffer.length()-1)
        bufferKml.writeTextElement("styleUrl","#end");
        else
        bufferKml.writeTextElement("styleUrl","#waypoint");
        bufferKml.writeStartElement("Point");
        bufferKml.writeTextElement("coordinates",xmlTmpTextBuffer.at(j));
        bufferKml.writeEndElement();
        bufferKml.writeEndElement();
    }

    //track - load
    xmlReader.clear();
    coordTmpFile.open(QIODevice::ReadOnly | QIODevice::Text);
    xmlReader.setDevice(&coordTmpFile);
    xmlReader.readNext();
    xmlTmpTextBuffer.clear();
    xmlTextBuffer.clear();
    lapTmpNum=0;
    lapNumFlag=false;
    while (!xmlReader.isEndDocument())
    {
        if (xmlReader.isStartElement())
        {
            QString name = xmlReader.name().toString();

            if (name == "when" && lapNumFlag)//read time of each element
            {
               xmlTextBuffer.append(xmlReader.readElementText());
            }
            else if (name == "coord" && lapNumFlag)
            {
                xmlTmpTextBuffer.append(xmlReader.readElementText());
            }
            else if (name == "lap")
            {
                lapNumFlag=(lapTmpNum==i)?true:false;
                                lapTmpNum++;
            }
        }
        else if (xmlReader.isEndElement())
        {

        }
        xmlReader.readNext();
    }
    coordTmpFile.close();
    //track - write
    bufferKml.writeStartElement("Placemark");
    bufferKml.writeAttribute(QXmlStreamAttribute("id","tour"));
    bufferKml.writeStartElement("name");
    bufferKml.writeCDATA("track");
    bufferKml.writeEndElement();
    bufferKml.writeStartElement("description");
    bufferKml.writeCDATA("");
    bufferKml.writeEndElement();
    bufferKml.writeTextElement("styleUrl","#track");
    bufferKml.writeStartElement("gx:MultiTrack");
    bufferKml.writeTextElement("altitudeMode","absolute");
    bufferKml.writeTextElement("gx:interpolate","1");
    bufferKml.writeStartElement("gx:Track");
    for (int j=0;j<xmlTextBuffer.length();j++)
    {
        bufferKml.writeTextElement("when",xmlTextBuffer.at(j));
        bufferKml.writeTextElement("gx:coord",xmlTmpTextBuffer.at(j));
    }
    //data - alt - write
    bufferKml.writeStartElement("ExtendedData");
    bufferKml.writeEmptyElement("SchemaData");
    bufferKml.writeAttribute(QXmlStreamAttribute("schemaUrl","#schema"));
    bufferKml.writeStartElement("gx:SimpleArrayData");
    bufferKml.writeAttribute(QXmlStreamAttribute("name","elevation"));
    for (int j=0;j<xmlTextBuffer.length();j++)
    {
        bufferKml.writeTextElement("gx:value",QString(xmlTmpTextBuffer.at(j)).section(" ",2,2));
    }
    bufferKml.writeEndElement();
    //data - speed - load
    xmlReader.clear();
    speedTmpFile.open(QIODevice::ReadOnly | QIODevice::Text);
    xmlReader.setDevice(&speedTmpFile);
    xmlReader.readNext();
    xmlTmpTextBuffer.clear();
    xmlTextBuffer.clear();
    lapTmpNum=0;
    lapNumFlag=false;
    while (!xmlReader.isEndDocument())
    {
        if (xmlReader.isStartElement())
        {
            QString name = xmlReader.name().toString();

            if (name == "speed" && lapNumFlag)//read time of each element
            {
               xmlTextBuffer.append(xmlReader.readElementText());
            }
            else if (name == "lap")
            {
                lapNumFlag=(lapTmpNum==i)?true:false;
                lapTmpNum++;
            }
        }
        else if (xmlReader.isEndElement())
        {

        }
        xmlReader.readNext();
    }
    speedTmpFile.close();
    //data - speed - write
    bufferKml.writeStartElement("gx:SimpleArrayData");
    bufferKml.writeAttribute(QXmlStreamAttribute("name","speed"));
    for (int j=0;j<xmlTextBuffer.length();j++)
    {
        bufferKml.writeTextElement("gx:value",xmlTextBuffer.at(j));
    }
    bufferKml.writeEndElement();

    // close all opened element
    bufferKml.writeEndElement();
    bufferKml.writeEndElement();
    bufferKml.writeEndElement();
    bufferKml.writeEndElement();
    bufferKml.writeEndElement();
    bufferKml.writeEndElement();
    bufferKml.writeEndElement();

    bufferKml.writeEndDocument();
    xmlKmlFile.close();
  }
}
bool fb2Creator::create(const QString& path, int width, int height, QImage& img)
{
    QFile file(path);
    
    KZip zip(path);
    QIODevice *device;
    const KArchiveDirectory *dir;
    const KZipFileEntry *fb2File;
    
    QXmlStreamReader qxml;
    
    QString fileExt = QFileInfo(path).suffix().toLower();
    if (fileExt == "fb2")
    {
        if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
        {
            qDebug() << "[fb2 thumbnailer]" << "Couldn't open" << path;
            return false;
        }
        else
        {
            qDebug() << "[fb2 thumbnailer]" << "Reading" << path;
            qxml.setDevice(&file);
        }
    }
    else //if *.fb2.zip
    {
        if (!zip.open(QIODevice::ReadOnly))
        {
            qDebug() << "[fb2 thumbnailer]" << "Couldn't open" << path;
            return false;
        }
        else
        {
            qDebug() << "[fb2 thumbnailer]" << "Reading" << path;

            dir = zip.directory();

            QStringList fileList = dir->entries();

            for (int i=0; i < fileList.count(); i++)
            {
                if (fileList.at(i).endsWith(".fb2"))
                {
                    fb2File = static_cast<const KZipFileEntry*>(dir->entry(fileList.at(i)));
                    device = fb2File->createDevice();
                    qxml.setDevice(device);

                    break;
                }
            }
        }
    }
    
    //----

    bool inCoverpage = false;
    QString coverId = "";
    QByteArray coverBase64;
    
    while(!qxml.atEnd() && !qxml.hasError())
    {
        qxml.readNext();

        if (qxml.name() == "coverpage")
        {
            if (qxml.isStartElement())
                inCoverpage = true;
            else
                inCoverpage = false;
        }

        if (qxml.name() == "image" && qxml.isStartElement() && inCoverpage == true)
        {
            //various namespaces: xlink, l, NS2
            QXmlStreamAttributes qxmlAttributes = qxml.attributes();

            for (int pos = 0; pos < qxmlAttributes.size(); pos++)
            {
                if (qxmlAttributes.at(pos).name() == "href")
                {
                    coverId = qxmlAttributes.at(pos).value().toString();
                    break;
                }
            }

            if (coverId != "")
            {
                coverId.remove("#");
                qDebug() << "[fb2 thumbnailer]" << "Found cover id:" << coverId;
            }
        }

        if (qxml.name() == "binary" && qxml.isStartElement())
        {
            if (coverId != "")
            {
                if (qxml.attributes().value("id") == coverId)
                {
                    qDebug() << "[fb2 thumbnailer]" << "Found cover data";

                    coverBase64 = qxml.readElementText().toAscii();

                    QImage coverImage;
                    coverImage.loadFromData(QByteArray::fromBase64(coverBase64));
                    
                    img = coverImage.scaled(width, height, Qt::KeepAspectRatio, Qt::SmoothTransformation);

                    break;
                }
            }
            else //if coverId not found then the file doesn't follow the specification, try a workaround
            {
                qDebug() << "[fb2 thumbnailer]" << "Cover id not found";
                qDebug() << "[fb2 thumbnailer]" << "Using first image as cover";

                coverBase64 = qxml.readElementText().toAscii();

                QImage coverImage;
                coverImage.loadFromData(QByteArray::fromBase64(coverBase64));

                img = coverImage.scaled(width, height, Qt::KeepAspectRatio, Qt::SmoothTransformation);

                break;
            }
        }
    }

    if (coverBase64.isEmpty())
        qDebug() << "[fb2 thumbnailer]" << "Cover data not found";

    if (qxml.hasError())
        qDebug() << "[fb2 thumbnailer]" << "Parsing error:" << qxml.errorString();

    qxml.clear();

    if (fileExt == "fb2")
        file.close();
    else
    {
        device->close();
        delete device;
        //delete fb2File;
        //delete dir;
    }

    return !img.isNull();
}
Example #10
0
DbMysql::DbMysql()
{
    qDebug()<<"Path"<<QDir::currentPath();

    QFile file(QDir::currentPath()+"/dbInfo.xml");
    if (!file.open(QFile::ReadOnly | QFile::Text))
    {
        qDebug()<< "Error: Cannot read file " << qPrintable("filename")
         << ": " << qPrintable(file.errorString());

    }



    QXmlStreamReader *xmlReader = new QXmlStreamReader();

    xmlReader->setDevice(&file);
    while(!xmlReader->atEnd() && !xmlReader->hasError()) {
        // Read next element
        QXmlStreamReader::TokenType token = xmlReader->readNext();
        //If token is just StartDocument - go to next
        if(token == QXmlStreamReader::StartDocument) {
                continue;
        }
        //If token is StartElement - read it
        if(token == QXmlStreamReader::StartElement) {

            if(xmlReader->name() == "dbinfo") {
                    continue;
            }

            if(xmlReader->name() == "username") {
                mUserName = xmlReader->readElementText();
            }

            if(xmlReader->name() == "password") {
                mPassword = xmlReader->readElementText();
            }
            if(xmlReader->name() == "port") {
                mPort = xmlReader->readElementText().toInt();
            }
            if(xmlReader->name() == "host") {
                mHostName =  xmlReader->readElementText();
            }
            if(xmlReader->name() == "database") {
                mDb = xmlReader->readElementText();
            }
        }
    }

    qDebug()<<mUserName<<" " <<mPassword << " " <<mDb << " " <<mHostName << " " << mPort;


    //close reader and flush file
    xmlReader->clear();
    file.close();
    /*
    mHostName = "127.0.0.1";
    mUserName = "******";
    mPort = 3306;
    mPassword = "";
    mDb = "testqt";
    */
    mDbConn = QSqlDatabase::addDatabase("QMYSQL");
    mDbConn.setHostName(mHostName);
    mDbConn.setPassword(mPassword);
    mDbConn.setDatabaseName(mDb);
    mDbConn.setUserName(mUserName);
    mDbConn.setPort(mPort);
    if(!mDbConn.open())
    {
        qDebug()<<mDbConn.lastError();
        exit(1);
    }
}
Example #11
0
void Addons::treeChargeAddons(QTreeWidget *view)
{
    QTreeWidgetItem *rootItem=new QTreeWidgetItem(view) ;
    QTreeWidgetItem *item=new QTreeWidgetItem(rootItem) ;
    QFile file(db->pathUser+"/addonse-0.4.8.xml");
    file.open(QIODevice::ReadOnly);
    view->clear();
    view->setColumnCount(9);
    view->setAutoExpandDelay(1000);
    view->setAlternatingRowColors(true);
   // view->setHeaderHidden(true);
    QXmlStreamReader xml;
    xml.setDevice(&file);
    while (!xml.atEnd()) {

        xml.readNext();
        if (xml.name() == "root"){
            QString name=xml.attributes().value("Name").toString();
            QString type=xml.attributes().value("type").toString();
            if(!name.isNull()){
                rootItem= new QTreeWidgetItem(view);
                rootItem->setText(0,db->trlang(name));
                rootItem->setText(1,type);
            }
        }else if (xml.name() == "Item"){
            QString name= xml.attributes().value("Name").toString();
            QString type=xml.attributes().value("type").toString();
            QString typep=xml.attributes().value("typep").toString();
            QString lang=xml.attributes().value("lang").toString();
            QString date= xml.attributes().value("date").toString();
            QString size=xml.attributes().value("size").toString();
            QString url=xml.attributes().value("url").toString();
            QString text= xml.attributes().value("text").toString();
            QString dir= xml.attributes().value("dir").toString();


            //name,lang,date,size,url


           // if(name!="")
           // makeTable <<QString("                <tr><td>%1</td><td>%2</td><td>%3</td><td>%4</td><td><a href=\"%5\" target=\"_top\" >Download</a></td></tr>").arg(name).arg(lang).arg(date).arg(size).arg(url);

            if(!name.isNull()){
                item= new QTreeWidgetItem(rootItem);
                item->setIcon(0,QIcon(":images/ok.png"));

                if(typep=="tr"){
                    if(db->getDatastr("SELECT name FROM sqlite_master WHERE name='"+text+"' ;")!=text)
                    {
                        item->setFlags( Qt::ItemIsUserCheckable | Qt::ItemIsSelectable | Qt::ItemIsEnabled);
                        item->setCheckState(0,Qt::Unchecked);
                        item->setIcon(0,QIcon(":images/Download.png"));

                    }

                }else if(typep=="ex"){
                    if(db->getDatastr("SELECT count(id) FROM Explanation_Name where Name ='"+text+"' ;")=="0")
                        {
                            item->setFlags( Qt::ItemIsUserCheckable | Qt::ItemIsSelectable | Qt::ItemIsEnabled);
                            item->setCheckState(0,Qt::Unchecked);
                            item->setIcon(0,QIcon(":images/Download.png"));

                        }


                } else if(typep=="lang" or typep=="help"){
                    QFile file(db->pathUser+"/"+dir+"/"+text);
                    if(!file.exists())
                    {
                        item->setFlags( Qt::ItemIsUserCheckable | Qt::ItemIsSelectable | Qt::ItemIsEnabled);
                        item->setCheckState(0,Qt::Unchecked);
                        item->setIcon(0,QIcon(":images/Download.png"));

                    }

                }
                item->setText(0,db->trlang(name));
                item->setText(1,type);
                item->setText(2,typep);
                item->setText(3,db->trlang(lang));
                item->setText(4,date);
                item->setText(5,size);
                item->setText(6,url);
                item->setText(7,text);
                item->setText(8,dir);

            }
        }
    }
    xml.clear();
    view->setColumnHidden(1,true);
    view->setColumnHidden(2,true);
    view->setColumnHidden(6,true);
    view->setColumnHidden(7,true);
    view->setColumnHidden(8,true);
    QStringList labels;
    labels << db->trlang("Name") << "" << "" << db->trlang("Lang") << db->trlang("Date") << db->trlang("Size")
           << "" << "" << "";
    view->setHeaderLabels(labels);
    view->setColumnWidth(0,250);
    view->setColumnWidth(5,50);


    file.close();
}