#include "step.h" #include #include #include #include #include #include #include QString Step::getTitle() const { return title; } float Step::getLatitude() const { return latitude; } float Step::getLongitude() const { return longitude; } int Step::getResponse() const { return response; } QList Step::getPersonnage() const { return personnage; } QList Step::getTexte() const { return texte; } void Step::setTitle(const QString &newTitle) { title = newTitle; } void Step::setResponse(int newResponse) { response = newResponse; } void Step::setPersonnage(const QList &newPersonnage) { personnage = newPersonnage; } void Step::setTexte(const QList &newTexte) { texte = newTexte; } Step::Step() { latitude = 0.0; longitude = 0.0; response = 0; } QList Step::getPersonnage() const { return personnage; } QList Step::getTexte() const { return texte; } Step::Step( QJsonObject &in) { title = in["title"].toString(); response = in["reponse"].toInt(); QString gps = in["GPS"].toString(); QStringList parts = gps.split(" ", Qt::SkipEmptyParts); QChar latDir = parts[0][0]; int latDeg = parts[1].toInt(); float latMin = parts[2].toFloat(); setLatitude(latDeg, latMin, latDir); QChar lonDir = parts[3][0]; int lonDeg = parts[4].toInt(); float lonMin = parts[5].toFloat(); setLongitude(lonDeg, lonMin, lonDir); QJsonArray personnagetab = in["dialogue"].toArray(); for (const QJsonValue &val : personnagetab) { if (val.isObject()) { QJsonObject obj = val.toObject(); QString personnages = obj["personnage"].toString(); personnage.append(personnages); QString textes = obj["texte"].toString(); texte.append(textes); } } } void Step::setLatitude(int degree, float minute, QChar NS) { latitude = degree + minute / 60.0; if (NS.toUpper() == 'S') latitude = -latitude; } void Step::setLongitude(int degree, float minute, QChar EW) { longitude = degree + minute / 60.0; if (EW.toUpper() == 'W') longitude = -longitude; } QString Step::toGPSFormat(){ int latDeg = static_cast(latitude); float latMin = (latitude - latDeg) * 60.0; QChar latDir = latitude >= 0 ? 'N' : 'S'; latDeg = abs(latDeg); int lonDeg = static_cast(longitude); float lonMin = (longitude - lonDeg) * 60.0; QChar lonDir = longitude >= 0 ? 'E' : 'W'; lonDeg = abs(lonDeg); QString gpsString = QString("%1 %2 %3 %4 %5 %6") .arg(latDir) .arg(latDeg, 2) .arg(latMin, 5, 'f', 3) .arg(lonDir) .arg(lonDeg, 2) .arg(lonMin, 5, 'f', 3); return gpsString; }