14 const QStringList fields = line.split(
';');
15 if (fields.size() < 18 || fields.at(0).trimmed().toUpper() != QStringLiteral(
"STR")) {
22 mp.
format = fields.at(3).trimmed();
24 mp.
carrier = fields.at(5).trimmed().toInt();
26 mp.
network = fields.at(7).trimmed();
27 mp.
country = fields.at(8).trimmed();
30 const auto parseCoord = [](
const QString& s,
double limit) ->
double {
32 const double v = s.trimmed().toDouble(&ok);
33 return (ok && qIsFinite(v) && qAbs(v) <= limit) ? v : 0.0;
35 mp.
latitude = parseCoord(fields.at(9), 90.0);
36 mp.
longitude = parseCoord(fields.at(10), 180.0);
37 mp.
nmea = fields.at(11).trimmed() == QStringLiteral(
"1");
38 mp.
solution = fields.at(12).trimmed() == QStringLiteral(
"1");
42 mp.
fee = fields.at(16).trimmed() == QStringLiteral(
"Y");
43 mp.
bitrate = fields.at(17).trimmed().toInt();