Beispiel #1
0
void TcxReader::readActivity()
{
    Q_ASSERT(isStartElement() && name() == "Activity");

    CTrack *track = new CTrack(parent);
    track->setTraineeData();
    while (!atEnd())
    {
        readNext();

        if (isEndElement())
            break;

        if (isStartElement())
        {
            if (name() == "Id")
            {
                track->setName(readElementText());
            }
            else if (name() == "Lap")
            {
                readLap(track);
            }
            else
                readUnknownElement();
        }
    }
    if (track->getTrackPoints().count() > 0)
    {
        track->rebuild(true);
        track->sortByTimestamp();
        CTrackDB::self().addTrack(track, false);
    }
    else
    {
        delete track;
    }
}
void XbelReader::readBookmark(QTreeWidgetItem *item)
{
    Q_ASSERT(isStartElement() && name() == "bookmark");

    QTreeWidgetItem *bookmark = createChildItem(item);
    bookmark->setFlags(bookmark->flags() | Qt::ItemIsEditable);
    bookmark->setIcon(0, bookmarkIcon);
    bookmark->setText(0, QObject::tr("Unknown title"));
    bookmark->setText(1, attributes().value("href").toString());
    while (!atEnd()) {
        readNext();

        if (isEndElement())
            break;

        if (isStartElement()) {
            if (name() == "title")
                readTitle(bookmark);
            else
                readUnknownElement();
        }
    }
}
Beispiel #3
0
void ProjectReader::readMaps()
{
  Q_ASSERT(isStartElement() && name() == "maps");
  //message("readMaps");

  while (!atEnd()) {
    readNext();

    if (isEndElement())
      break;

    if (isStartElement()) {
      if (name() == "map")
      {
        maplist.push_back(QString(readElementText()));
      }
      else
      {
        readUnknownElement();
      }
    }
  }
}
Beispiel #4
0
void TcxReader::readPosition(CTrack::pt_t *pt)
{
    Q_ASSERT(isStartElement() && name() == "Position");

    while (!atEnd())
    {
        readNext();

        if (isEndElement())
            break;

        if (isStartElement())
        {
            if (name() == "LatitudeDegrees")
                pt->lat = readElementText().toDouble();
            else if (name() == "LongitudeDegrees")
                pt->lon = readElementText().toDouble();
            else
                readUnknownElement();
        }
    }
    return;
}
Beispiel #5
0
void ProjectReader::readTilesets()
{
  Q_ASSERT(isStartElement() && name() == "tilesets");


  while (!atEnd()) {
    readNext();

    if (isEndElement())
      break;

    if (isStartElement()) {
      if (name() == "tileset")
      {
        tilesetlist.push_back(QString(readElementText()));
      }
      else
      {
        readUnknownElement();
      }
    }
  }
}
Beispiel #6
0
ChangelogEntry ModXReader::readEntry()
{
    ChangelogEntry entry;

    while (!atEnd())
    {
        readNext();

        if (isEndElement())
        {
            break;
        }

        if (isStartElement())
        {
            if (name() == "date")
            {
                entry.date = QDate::fromString(readElementText(), Qt::ISODate);
            }
            else if (name() == "rev-version")
            {
                entry.version = readElementText();
            }
            else if (name() == "changelog")
            {
                QString lang = attributes().value("lang").toString();
                entry.changes.insert(lang, readChanges());
            }
            else
            {
                readUnknownElement();
            }
        }
    }
    return entry;
}
Beispiel #7
0
void ModXReader::readHistory()
{
    while (!atEnd())
    {
        readNext();

        if (isEndElement())
        {
            break;
        }

        if (isStartElement())
        {
            if (name() == "entry")
            {
                m_data->history << readEntry();
            }
            else
            {
                readUnknownElement();
            }
        }
    }
}
Beispiel #8
0
void TcxReader::readLap(CTrack *track)
{
    Q_ASSERT(isStartElement() && name() == "Lap");

    int lap = 1;
    while (!atEnd())
    {
        readNext();

        if (isEndElement())
            break;

        if (isStartElement())
        {
            if (name() == "Track")
            {
                readTrack(track, lap);
            }
            else
                readUnknownElement();
        }
    }

}
Beispiel #9
0
void    ContactsReader::readGroup(QTreeWidgetItem* parent)
{
  Q_ASSERT(isStartElement() && name() == "Group");

  QTreeWidgetItem* group = createChildItem(parent);
  const bool expanded = (attributes().value("expanded") == "yes");

  this->_tree->setItemExpanded(group, expanded);
  group->setIcon(0, QIcon(":/images/group.png"));
  group->setData(0, ContactsTree::Type, ContactsTree::Group);
  group->setData(0, ContactsTree::IconPath, ":/images/group.png");
  group->setFlags(Qt::ItemIsSelectable  |
                  Qt::ItemIsEditable    |
                  Qt::ItemIsEnabled     |
                  Qt::ItemIsDragEnabled |
                  Qt::ItemIsDropEnabled);
  while (!atEnd())
    {
      readNext();

      if (isEndElement())
        break;

      if (name() == "name")
        group->setText(0, readElementText());

      if (isStartElement())
        {
          if (name() == "Contact")
            readContact(group);
          else
            readUnknownElement();
        }
    }
  Group::buildToolTip(group);
}
Beispiel #10
0
void    ContactsReader::readQNS(void)
{
  Q_ASSERT(isStartElement() && name() == "qns");

  while (!atEnd())
    {
      readNext();

      if (isEndElement())
        break;

      if (isStartElement())
        {
          if (name() == "Group")
            readGroup(0);
          else if (name() == "Contact")
            readContact(0);
          else if (name() == "BlockedContact")
            readBlocked();
          else
            readUnknownElement();
        }
    }
}
void InstanceParser::readItem()
{
    Q_ASSERT(isStartElement()
             && name() == "item");

    QXmlStreamAttributes elementAttributes = attributes();
    if(m_type == InstanceParser::MultipleKnapsack) {
        if(elementAttributes.hasAttribute("height")
                && elementAttributes.hasAttribute("profit"))
        {
            ProfitItem item;
            item.setSize(elementAttributes.value("height").toString().toInt());
            item.setProfit(elementAttributes.value("profit").toString().toInt());

            m_mkpItems.append(item);
        }
    }
    else if(m_type == InstanceParser::BinPacking) {
        if(elementAttributes.hasAttribute("height")) {
            FloatItem item;
            item.setSize(elementAttributes.value("height").toString().toFloat());

            m_binItems.append(item);
        }
    }

    while(!atEnd()) {
        readNext();

        if(isEndElement())
            break;

        if(isStartElement())
            readUnknownElement();
    }
}
Beispiel #12
0
void ModXReader::readAuthorGroup()
{
    while (!atEnd())
    {
        readNext();

        if (isEndElement())
        {
            break;
        }

        if (isStartElement())
        {
            if (name() == "author")
            {
                m_data->authorGroup << readAuthor();
            }
            else
            {
                readUnknownElement();
            }
        }
    }
}
Beispiel #13
0
void ProjectReader::readScripts()
{
  while (!atEnd()) {
    readNext();
    tokenDebug();

    if (isEndElement())
      break;

    if (isStartElement()) {
      if (name() == "script")
      {
        int condition = attributes().value("condition").toString().toInt();
        QString script = readElementText();

        RPGEngine::addScript(condition, script);
      }
      else
      {
        readUnknownElement();
      }
    }
  }
}
Beispiel #14
0
void ProjectReader::readProject()
{
  Q_ASSERT(isStartElement() && name() == "project");
  project = new Project();
  bool dirExists;

  //message("readProject");

  QDir::setCurrent(fileinfo.absolutePath());

  // Since we need to load our bitmaps first, we just read in all of the filenames
  // and then load the actual resources last.  That way, if <tilesets> isn't the
  // first section, there won't be any errors.

  while (!atEnd()) {
    readNext();

    if (isEndElement())
      break;

    if (isStartElement()) {
      if (name() == "name")
      {
        project->SetName(readElementText());
        //message("Map name: " + map->GetName());
      }
      else if (name() == "maps")
      {
        readMaps();
      }
      else if (name() == "tilesets")
      {
        readTilesets();
      }
      else if (name() == "sprites")
      {
        readSprites();
      }
      else if (name() == "scripts")
      {
        readScripts();
      }
      else
      {
        readUnknownElement();
      }
    }
  }

  // Load bitmaps
  dirExists = QDir::setCurrent("tilesets");
  BitmapReader bitmapReader;
  while(!tilesetlist.isEmpty()) {
    QString b = tilesetlist.takeFirst();
    // load bitmap
    bitmapReader.read(b);
  }
  if(dirExists) QDir::setCurrent("..");

  // load sprites
  dirExists = QDir::setCurrent("sprites");
  SpriteReader spriteReader;
  while(!spritelist.isEmpty()) {
    QString s = spritelist.takeFirst();
    // load sprite
    spriteReader.read(s);
  }
  if(dirExists) QDir::setCurrent("..");

  // load maps
  dirExists = QDir::setCurrent("maps");
  MapReader mapReader;
  while(!maplist.isEmpty()) {
    QString m = maplist.takeFirst();
    // load map
    mapReader.read(m);
  }
  if(dirExists) QDir::setCurrent("..");

}
DataLayer *ConfigurationParser::readLayer()
{
    Q_ASSERT(isStartElement()
              && name() == "layer");

    DataLayer *layer = new DataLayer();
    ColorMap colorMap;
    
    QColor c;
    c.setHsv(240, 255, 189, 255);
    colorMap.addColor(c);
    c.setHsv(240, 255, 255, 255);
    colorMap.addColor(c);
    c.setHsv(224, 255, 255, 255);
    colorMap.addColor(c);
    c.setHsv(208, 255, 255, 255);
    colorMap.addColor(c);
    c.setHsv(195, 255, 255, 255);
    colorMap.addColor(c);
    c.setHsv(180, 255, 255, 255);
    colorMap.addColor(c);
    c.setHsv(159, 189, 255, 255);
    colorMap.addColor(c);
    c.setHsv(120, 123, 255, 255);
    colorMap.addColor(c);
    c.setHsv(80, 189, 255, 255);
    colorMap.addColor(c);
    c.setHsv(60, 255, 255, 255);
    colorMap.addColor(c);
    c.setHsv(44, 255, 255, 255);
    colorMap.addColor(c);
    c.setHsv(15, 255, 255, 255);
    colorMap.addColor(c);
    c.setHsv(0, 255, 255, 255);
    colorMap.addColor(c);
    c.setHsv(0, 255, 189, 255);
    colorMap.addColor(c);
    c.setHsv(0, 255, 132, 255);
    colorMap.addColor(c);
    colorMap.setInterpolationSpec(QColor::Hsv);

    while(!atEnd()) {
        readNext();

        if(isEndElement())
            break;

        if(isStartElement()) {
            if(name() == "file") {
                QXmlStreamAttributes att = attributes();
                QDateTime dateTime;
                dateTime.setTime(QTime::fromString(att.value("time").toString(), Qt::ISODate));
                dateTime.setDate(QDate::fromString(att.value("date").toString(), Qt::ISODate));
                layer->setFileName(dateTime, readCharacters());
                qDebug() << "Added file for time:" << dateTime;
            }
            else if(name() == "files") {
                readFiles(layer);
            }
            else if(name() == "name") {
                layer->setName(readCharacters());
                qDebug() << "Name:" << layer->name();
            }
            else if(name() == "geometry") {
                QString geometryName = readCharacters();
                
                QHash<QString,MapGeometry>::iterator it = m_geometries.find(geometryName);
                if(it != m_geometries.end()) {
                    layer->setGeometry(it.value());
                }
                else {
                    delete layer;
                    qDebug() << "Geometry not found.";
                    return 0;
                }
            }
            else if(name() == "scaleMin") {
                layer->setScaleMin(readCharacters().toDouble());
            }
            else if(name() == "scaleMax") {
                layer->setScaleMax(readCharacters().toDouble());
            }
            else if(name() == "defaultColorMap") {
                QString colorMapString = readCharacters();
                if(m_colorMaps.contains(colorMapString)) {
                    colorMap = m_colorMaps.value(colorMapString);
                }
            }
            else {
                readUnknownElement();
            }
        }
    }

    layer->setDefaultColorMap(colorMap);
    return layer;
}
Beispiel #16
0
void TcxReader::readTrackpoint(CTrack *track, int lap)
{
    Q_ASSERT(isStartElement() && name() == "Trackpoint");

    CTrack::pt_t *pt = new CTrack::pt_t();
    pt->lat = pold.lat;
    pt->lon = pold.lon;
    pt->ele = pold.ele;
    pt->distance = pold.distance;
    pt->heartReateBpm = pold.heartReateBpm;

    while (!atEnd())
    {
        readNext();

        if (isEndElement())
            break;

        if (isStartElement())
        {
            if (name() == "Time")
            {
                QDateTime time(QDateTime::fromString(readElementText(),
                    Qt::ISODate));
                time.setTimeSpec(Qt::UTC);
                pt->timestamp = time.toTime_t();
            }
            else if (name() == "AltitudeMeters")
            {
                pt->ele = readElementText().toDouble();
                pold.ele = pt->ele;
            }
            else if (name() == "DistanceMeters")
            {
                pt->distance = readElementText().toDouble();
                pold.distance = pt->distance;
            }
            else if (name() == "Position")
            {
                readPosition(pt);
                pold.lat = pt->lat;
                pold.lon = pt->lon;
                firstPositionFound = true;
            }
            else if (name() == "HeartRateBpm")
            {
                readHeartRateBpm(pt);
                pold.heartReateBpm  = pt->heartReateBpm;
            }
            else if (name() == "Cadence")
            {
                //readCadenceRpm(pt);
                pt->cadenceRpm = readElementText().toInt();
                pold.cadenceRpm  = pt->cadenceRpm;
            }
            else
                readUnknownElement();
        }
    }
    pt->_lat=pt->lat;
    pt->_lon=pt->lon;
    pt->_ele=pt->ele;
    if (firstPositionFound)
    {
        *track << *pt;
    }
}
void ConfigurationParser::readFiles(DataLayer *layer)
{
    Q_ASSERT(isStartElement()
             && name() == "files");
    
    QDateTime startDate;
    int start = 0;
    QDateTime endDate;
    int end = 0;
    int digits = 0;
    QString scheme;
    int skip = 0;
    
    while(!atEnd()) {
        readNext();
        
        if(isEndElement()) {
            break;
        }
        
        if(isStartElement()) {
            if(name() == "start") {
                QXmlStreamAttributes att = attributes();
                startDate.setTime(QTime::fromString(att.value("time").toString(), Qt::ISODate));
                startDate.setDate(QDate::fromString(att.value("date").toString(), Qt::ISODate));
                start = readCharacters().toInt();
            }
            else if(name() == "end") {
                QXmlStreamAttributes att = attributes();
                endDate.setTime(QTime::fromString(att.value("time").toString(), Qt::ISODate));
                endDate.setDate(QDate::fromString(att.value("date").toString(), Qt::ISODate));
                end = readCharacters().toInt();
            }
            else if(name() == "scheme") {
                QXmlStreamAttributes att = attributes();
                digits = att.value("digits").toString().toInt();
                if(att.hasAttribute("skip")) {
                    skip = att.value("skip").toString().toInt();
                }
                scheme = readCharacters();
            }
            else {
                readUnknownElement();
            }
        }
    }
    
    if(startDate.isValid() && endDate.isValid()) {
        qint64 spanMSecs = endDate.toMSecsSinceEpoch() - startDate.toMSecsSinceEpoch();
        int count = end - start;
        qint64 diffMSecs = spanMSecs / count;
        
        for(int i = start; i < end; i += 1 + skip) {
            QDateTime fileTime = startDate.addMSecs(diffMSecs * (i - start));
            qDebug() << "Time [" << i << "]:" << fileTime.toString();
            QString fileName = scheme.arg(i, digits, 10, QChar('0'));
            
            layer->setFileName(fileTime, fileName);
        }
    }
}