refs #789, improvements when addressing FSX driver issue

* added new utility funtion is model list / aircraft list
* added setters/getters for CSimConnectObject
* added setters/getters for InterpolationStatus / PartsStatus
* added CSimConnectObjects (better encapsulation)
This commit is contained in:
Klaus Basan
2016-11-07 01:47:28 +01:00
parent 3de052494f
commit 9deedf1e10
13 changed files with 200 additions and 28 deletions

View File

@@ -54,6 +54,16 @@ namespace BlackMisc
return false;
}
bool CAircraftModelList::containsCallsign(const CCallsign &callsign) const
{
return this->contains(&CAircraftModel::getCallsign, callsign);
}
bool CAircraftModelList::containsModelsWithAircraftAndAirlineDesignator(const QString &aircraftDesignator, const QString &airlineDesignator) const
{
return this->contains(&CAircraftModel::getAircraftIcaoCodeDesignator, aircraftDesignator, &CAircraftModel::getAirlineIcaoCodeDesignator, airlineDesignator);
}
CAircraftModelList CAircraftModelList::findByModelString(const QString &modelString, Qt::CaseSensitivity sensitivity) const
{
return this->findBy([ & ](const CAircraftModel & model)

View File

@@ -65,6 +65,12 @@ namespace BlackMisc
//! Contains model with model string or id
bool containsModelStringOrDbKey(const BlackMisc::Simulation::CAircraftModel &model, Qt::CaseSensitivity sensitivity = Qt::CaseInsensitive) const;
//! Contains model for callsign
bool containsCallsign(const BlackMisc::Aviation::CCallsign &callsign) const;
//! Contains any model with aircraft and airline designator
bool containsModelsWithAircraftAndAirlineDesignator(const QString &aircraftDesignator, const QString &airlineDesignator) const;
//! Find by model string
//! \remark normally CAircraftModelList::findFirstByModelStringOrDefault would be used
CAircraftModelList findByModelString(const QString &modelString, Qt::CaseSensitivity sensitivity = Qt::CaseInsensitive) const;

View File

@@ -153,5 +153,18 @@ namespace BlackMisc
return false;
}
bool CSimulatedAircraftList::replaceOrAddByCallsign(const CSimulatedAircraft &aircraft)
{
const CCallsign cs(aircraft.getCallsign());
if (cs.isEmpty()) { return false; }
if (this->containsCallsign(cs))
{
int c = this->replaceIf(&CSimulatedAircraft::getCallsign, cs, aircraft);
return c > 0;
}
this->push_back(aircraft);
return true;
}
} // namespace
} // namespace

View File

@@ -92,8 +92,9 @@ namespace BlackMisc
//! Rendered?
bool isRendered(const BlackMisc::Aviation::CCallsign &callsign) const;
//! Replace or add by callsign
bool replaceOrAddByCallsign(const CSimulatedAircraft &aircraft);
};
} //namespace
} // namespace