mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-02 23:25:53 +08:00
Ref T409, new version of livery string parsing (sending ids)
This commit is contained in:
@@ -515,13 +515,55 @@ namespace BlackMisc
|
||||
return pm;
|
||||
}
|
||||
|
||||
const QString &CAircraftModel::liveryStringPrefix()
|
||||
{
|
||||
static const QString p("swift_");
|
||||
return p;
|
||||
}
|
||||
|
||||
bool CAircraftModel::isSwiftLiyeryString(const QString &liveryString)
|
||||
{
|
||||
return (liveryString.length() > liveryStringPrefix().length() && liveryString.startsWith(liveryStringPrefix(), Qt::CaseInsensitive));
|
||||
}
|
||||
|
||||
QString CAircraftModel::getSwiftLiveryString() const
|
||||
{
|
||||
const QString cc(this->getLivery().getCombinedCode());
|
||||
if (cc.isEmpty() && !this->hasModelString()) { return ""; }
|
||||
if (cc.isEmpty()) { return this->getModelString(); }
|
||||
if (!this->hasModelString()) { return cc; }
|
||||
return cc + " [" + this->getModelString() + "]";
|
||||
const QString l =
|
||||
(this->getLivery().hasValidDbKey() ? QStringLiteral("l") % this->getLivery().getDbKeyAsString() : QStringLiteral("")) %
|
||||
(this->getAircraftIcaoCode().hasValidDbKey() ? QStringLiteral("a") % this->getAircraftIcaoCode().getDbKeyAsString() : QStringLiteral("")) %
|
||||
(this->hasValidDbKey() ? QStringLiteral("m") % this->getDbKeyAsString() : QStringLiteral(""));
|
||||
|
||||
return l.isEmpty() ? QStringLiteral("") : liveryStringPrefix() % l;
|
||||
}
|
||||
|
||||
DBTripleIds CAircraftModel::parseNetworkLiveryString(const QString &liveryString)
|
||||
{
|
||||
// "swift_m22l33a11"
|
||||
if (!CAircraftModel::isSwiftLiyeryString(liveryString)) {return DBTripleIds(); }
|
||||
|
||||
DBTripleIds ids;
|
||||
const QString ls = liveryString.mid(liveryStringPrefix().length()).toLower();
|
||||
for (int c = 0; c < ls.length(); c++)
|
||||
{
|
||||
const QChar m = ls[c];
|
||||
if ((m == 'm' || m == 'a' || m == 'l') && (c + 1) < ls.length())
|
||||
{
|
||||
const int cs = c + 1;
|
||||
int cc = cs;
|
||||
while (cc < ls.length() && ls[cc].isDigit()) { cc++; } // find end of id
|
||||
if (cc > cs)
|
||||
{
|
||||
const QString idString = ls.mid(cs, cc - cs);
|
||||
const int id = idString.toInt();
|
||||
c = cc - 1; // +1 again in for
|
||||
|
||||
if (m == 'm') { ids.model = id; }
|
||||
else if (m == 'a') { ids.aircraft = id; }
|
||||
else if (m == 'l') { ids.livery = id; }
|
||||
}
|
||||
}
|
||||
}
|
||||
return ids;
|
||||
}
|
||||
|
||||
void CAircraftModel::updateMissingParts(const CAircraftModel &otherModel, bool dbModelPriority)
|
||||
@@ -922,37 +964,6 @@ namespace BlackMisc
|
||||
return model;
|
||||
}
|
||||
|
||||
QStringList CAircraftModel::splitNetworkLiveryString(const QString &liveryString)
|
||||
{
|
||||
QStringList liveryModelStrings({ "", "" });
|
||||
if (liveryString.isEmpty()) { return liveryModelStrings; }
|
||||
const QString l(liveryString.toUpper().trimmed());
|
||||
if (liveryString.contains('[') && liveryString.contains(']'))
|
||||
{
|
||||
// seems to be a valid swift string
|
||||
const QStringList split = l.split("[");
|
||||
if (split.size() > 0)
|
||||
{
|
||||
liveryModelStrings[0] = split[0].trimmed();
|
||||
}
|
||||
if (split.size() > 1)
|
||||
{
|
||||
QString m = split[1];
|
||||
m.replace('[', ' ');
|
||||
m.replace(']', ' ');
|
||||
liveryModelStrings[1] = m.trimmed();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (CLivery::isValidCombinedCode(l))
|
||||
{
|
||||
liveryModelStrings[0] = l;
|
||||
}
|
||||
}
|
||||
return liveryModelStrings;
|
||||
}
|
||||
|
||||
const QString &CAircraftModel::autoGenerated()
|
||||
{
|
||||
static const QString ag("swift auto generated");
|
||||
|
||||
Reference in New Issue
Block a user