mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-24 16:05:35 +08:00
refs #877, CSimulatedAircraft DBus signature size
* reduce size by storing models in list * using an array for the models failed - not supported by tuple system
This commit is contained in:
committed by
Mathew Sutcliffe
parent
113fe2ec5a
commit
3de16cbec1
@@ -32,7 +32,7 @@ namespace BlackMisc
|
||||
init();
|
||||
}
|
||||
|
||||
CSimulatedAircraft::CSimulatedAircraft(const CAircraftModel &model) : m_model(model), m_networkModel(model)
|
||||
CSimulatedAircraft::CSimulatedAircraft(const CAircraftModel &model) : m_models( {model, model})
|
||||
{
|
||||
this->setCallsign(model.getCallsign());
|
||||
init();
|
||||
@@ -46,6 +46,8 @@ namespace BlackMisc
|
||||
|
||||
void CSimulatedAircraft::init()
|
||||
{
|
||||
Q_ASSERT_X(m_models.size() == 2, Q_FUNC_INFO, "Wrong model size");
|
||||
|
||||
// sync some values, order here is crucial
|
||||
// set get/set thing here updates the redundant data (e.g. livery / model.livery)
|
||||
this->setCallsign(this->getCallsign());
|
||||
@@ -93,7 +95,7 @@ namespace BlackMisc
|
||||
|
||||
const CAircraftIcaoCode &CSimulatedAircraft::getAircraftIcaoCode() const
|
||||
{
|
||||
return m_model.getAircraftIcaoCode();
|
||||
return m_models[CurrentModel].getAircraftIcaoCode();
|
||||
}
|
||||
|
||||
void CSimulatedAircraft::setPilot(const Network::CUser &user)
|
||||
@@ -120,20 +122,18 @@ namespace BlackMisc
|
||||
|
||||
bool CSimulatedAircraft::setIcaoCodes(const CAircraftIcaoCode &aircraftIcaoCode, const CAirlineIcaoCode &airlineIcaoCode)
|
||||
{
|
||||
//! \note to be compatible with old version I still allow to set airline here but I should actually set a livery
|
||||
|
||||
if (this->getLivery().getAirlineIcaoCode() != airlineIcaoCode)
|
||||
{
|
||||
// create a dummy livery for given ICAO code
|
||||
CLivery newLivery(CLivery::getStandardCode(airlineIcaoCode), airlineIcaoCode, "Standard auto generated");
|
||||
this->m_model.setLivery(newLivery);
|
||||
this->m_models[CurrentModel].setLivery(newLivery);
|
||||
}
|
||||
return this->m_model.setAircraftIcaoCode(aircraftIcaoCode);
|
||||
return this->m_models[CurrentModel].setAircraftIcaoCode(aircraftIcaoCode);
|
||||
}
|
||||
|
||||
const CAirlineIcaoCode &CSimulatedAircraft::getAirlineIcaoCode() const
|
||||
{
|
||||
return this->m_model.getAirlineIcaoCode();
|
||||
return this->m_models[CurrentModel].getAirlineIcaoCode();
|
||||
}
|
||||
|
||||
const QString &CSimulatedAircraft::getAirlineIcaoCodeDesignator() const
|
||||
@@ -143,7 +143,7 @@ namespace BlackMisc
|
||||
|
||||
void CSimulatedAircraft::setAircraftIcaoDesignator(const QString &designator)
|
||||
{
|
||||
this->m_model.setAircraftIcaoDesignator(designator);
|
||||
this->m_models[CurrentModel].setAircraftIcaoDesignator(designator);
|
||||
}
|
||||
|
||||
bool CSimulatedAircraft::hasAircraftDesignator() const
|
||||
@@ -364,11 +364,11 @@ namespace BlackMisc
|
||||
this->m_parts.setPropertyByIndex(index.copyFrontRemoved(), variant);
|
||||
break;
|
||||
case IndexModel:
|
||||
this->m_model.setPropertyByIndex(index.copyFrontRemoved(), variant);
|
||||
this->setModel(this->m_model); // sync some values
|
||||
this->m_models[CurrentModel].setPropertyByIndex(index.copyFrontRemoved(), variant);
|
||||
this->setModel(this->m_models[CurrentModel]); // sync some values
|
||||
break;
|
||||
case IndexNetworkModel:
|
||||
this->m_networkModel.setPropertyByIndex(index.copyFrontRemoved(), variant);
|
||||
this->m_models[NetworkModel].setPropertyByIndex(index.copyFrontRemoved(), variant);
|
||||
break;
|
||||
case IndexEnabled:
|
||||
this->m_enabled = variant.toBool();
|
||||
@@ -423,9 +423,9 @@ namespace BlackMisc
|
||||
case IndexParts:
|
||||
return this->m_parts.comparePropertyByIndex(index.copyFrontRemoved(), compareValue.getParts());
|
||||
case IndexModel:
|
||||
return m_model.comparePropertyByIndex(index.copyFrontRemoved(), compareValue.getModel());
|
||||
return m_models[CurrentModel].comparePropertyByIndex(index.copyFrontRemoved(), compareValue.getModel());
|
||||
case IndexNetworkModel:
|
||||
return m_networkModel.comparePropertyByIndex(index.copyFrontRemoved(), compareValue.getModel());
|
||||
return m_models[NetworkModel].comparePropertyByIndex(index.copyFrontRemoved(), compareValue.getModel());
|
||||
case IndexNetworkModelAircraftIcaoDifference:
|
||||
return this->getNetworkModelAircraftIcaoDifference().compare(compareValue.getNetworkModelAircraftIcaoDifference());
|
||||
case IndexNetworkModelAirlineIcaoDifference:
|
||||
@@ -455,12 +455,14 @@ namespace BlackMisc
|
||||
|
||||
const CAircraftModel &CSimulatedAircraft::getNetworkModelOrModel() const
|
||||
{
|
||||
return this->hasNetworkModel() ? this->m_networkModel : this->m_model;
|
||||
Q_ASSERT_X(m_models.size() == 2, Q_FUNC_INFO, "Wrong model size");
|
||||
return this->hasNetworkModel() ? this->m_models[NetworkModel] : this->m_models[CurrentModel];
|
||||
}
|
||||
|
||||
bool CSimulatedAircraft::hasNetworkModel() const
|
||||
{
|
||||
return this->m_networkModel.hasModelString() || !this->m_networkModel.getCallsign().isEmpty();
|
||||
Q_ASSERT_X(m_models.size() == 2, Q_FUNC_INFO, "Wrong model size");
|
||||
return this->m_models[NetworkModel].hasModelString() || !this->m_models[NetworkModel].getCallsign().isEmpty();
|
||||
}
|
||||
|
||||
QString CSimulatedAircraft::getNetworkModelAircraftIcaoDifference() const
|
||||
@@ -483,6 +485,8 @@ namespace BlackMisc
|
||||
|
||||
QString CSimulatedAircraft::getNetworkModelLiveryDifference() const
|
||||
{
|
||||
Q_ASSERT_X(m_models.size() == 2, Q_FUNC_INFO, "Wrong model size");
|
||||
|
||||
const CLivery livery(this->getModel().getLivery());
|
||||
const CLivery liveryNw(this->getNetworkModel().getLivery());
|
||||
if (livery == liveryNw) { return "[=] " + livery.getCombinedCodePlusInfo(); }
|
||||
@@ -492,27 +496,32 @@ namespace BlackMisc
|
||||
|
||||
void CSimulatedAircraft::setModel(const CAircraftModel &model)
|
||||
{
|
||||
Q_ASSERT_X(m_models.size() == 2, Q_FUNC_INFO, "Wrong model size");
|
||||
|
||||
// sync the callsigns
|
||||
this->m_model = model;
|
||||
this->m_models[CurrentModel] = model;
|
||||
this->setCallsign(this->hasValidCallsign() ? this->getCallsign() : model.getCallsign());
|
||||
this->setIcaoCodes(model.getAircraftIcaoCode(), model.getAirlineIcaoCode());
|
||||
}
|
||||
|
||||
void CSimulatedAircraft::setNetworkModel(const CAircraftModel &model)
|
||||
{
|
||||
this->m_networkModel = model;
|
||||
Q_ASSERT_X(m_models.size() == 2, Q_FUNC_INFO, "Wrong model size");
|
||||
this->m_models[NetworkModel] = model;
|
||||
}
|
||||
|
||||
void CSimulatedAircraft::setModelString(const QString &modelString)
|
||||
{
|
||||
this->m_model.setModelString(modelString);
|
||||
Q_ASSERT_X(m_models.size() == 2, Q_FUNC_INFO, "Wrong model size");
|
||||
this->m_models[CurrentModel].setModelString(modelString);
|
||||
}
|
||||
|
||||
void CSimulatedAircraft::setCallsign(const CCallsign &callsign)
|
||||
{
|
||||
Q_ASSERT_X(m_models.size() == 2, Q_FUNC_INFO, "Wrong model size");
|
||||
this->m_callsign = callsign;
|
||||
this->m_model.setCallsign(callsign);
|
||||
this->m_networkModel.setCallsign(callsign);
|
||||
this->m_models[CurrentModel].setCallsign(callsign);
|
||||
this->m_models[NetworkModel].setCallsign(callsign);
|
||||
this->m_pilot.setCallsign(callsign);
|
||||
}
|
||||
|
||||
|
||||
@@ -131,13 +131,14 @@ namespace BlackMisc
|
||||
const QString &getAircraftIcaoCombinedType() const;
|
||||
|
||||
//! Set aicraft ICAO code
|
||||
bool setAircraftIcaoCode(const BlackMisc::Aviation::CAircraftIcaoCode &aircraftIcaoCode) { return m_model.setAircraftIcaoCode(aircraftIcaoCode);}
|
||||
bool setAircraftIcaoCode(const BlackMisc::Aviation::CAircraftIcaoCode &aircraftIcaoCode) { return m_models[CurrentModel].setAircraftIcaoCode(aircraftIcaoCode);}
|
||||
|
||||
//! Set ICAO info
|
||||
//! \note to be compatible with old version I still allow to set airline here, but I should actually set a livery
|
||||
bool setIcaoCodes(const BlackMisc::Aviation::CAircraftIcaoCode &aircraftIcaoCode, const BlackMisc::Aviation::CAirlineIcaoCode &airlineIcaoCode);
|
||||
|
||||
//! Get livery
|
||||
const BlackMisc::Aviation::CLivery &getLivery() const { return m_model.getLivery(); }
|
||||
const BlackMisc::Aviation::CLivery &getLivery() const { return m_models[CurrentModel].getLivery(); }
|
||||
|
||||
//! Airline ICAO code if any
|
||||
const BlackMisc::Aviation::CAirlineIcaoCode &getAirlineIcaoCode() const;
|
||||
@@ -158,7 +159,7 @@ namespace BlackMisc
|
||||
bool hasAircraftDesignator() const;
|
||||
|
||||
//! Valid airline designator
|
||||
bool hasAirlineDesignator() const { return this->m_model.getLivery().hasValidAirlineDesignator(); }
|
||||
bool hasAirlineDesignator() const { return this->m_models[CurrentModel].getLivery().hasValidAirlineDesignator(); }
|
||||
|
||||
//! Valid designators?
|
||||
bool hasAircraftAndAirlineDesignator() const;
|
||||
@@ -329,10 +330,10 @@ namespace BlackMisc
|
||||
int comparePropertyByIndex(const CPropertyIndex &index, const CSimulatedAircraft &compareValue) const;
|
||||
|
||||
//! Get model
|
||||
const BlackMisc::Simulation::CAircraftModel &getModel() const { return m_model; }
|
||||
const BlackMisc::Simulation::CAircraftModel &getModel() const { return m_models[CurrentModel]; }
|
||||
|
||||
//! Get network model
|
||||
const BlackMisc::Simulation::CAircraftModel &getNetworkModel() const { return m_networkModel; }
|
||||
const BlackMisc::Simulation::CAircraftModel &getNetworkModel() const { return m_models[NetworkModel]; }
|
||||
|
||||
//! Get network model or (if not existing) model
|
||||
const BlackMisc::Simulation::CAircraftModel &getNetworkModelOrModel() const;
|
||||
@@ -350,16 +351,16 @@ namespace BlackMisc
|
||||
QString getNetworkModelLiveryDifference() const;
|
||||
|
||||
//! \copydoc BlackMisc::Simulation::CAircraftModel::getIconPath
|
||||
const QString &getIconPath() const { return m_model.getIconPath(); }
|
||||
const QString &getIconPath() const { return m_models[CurrentModel].getIconPath(); }
|
||||
|
||||
//! Get model string
|
||||
const QString &getModelString() const { return m_model.getModelString(); }
|
||||
const QString &getModelString() const { return m_models[CurrentModel].getModelString(); }
|
||||
|
||||
//! Set model string
|
||||
void setModelString(const QString &modelString);
|
||||
|
||||
//! Has model string?
|
||||
bool hasModelString() const { return m_model.hasModelString(); }
|
||||
bool hasModelString() const { return m_models[CurrentModel].hasModelString(); }
|
||||
|
||||
//! Set model
|
||||
void setModel(const BlackMisc::Simulation::CAircraftModel &model);
|
||||
@@ -410,16 +411,17 @@ namespace BlackMisc
|
||||
BlackMisc::CIcon toIcon() const { return this->m_callsign.toIcon(); }
|
||||
|
||||
private:
|
||||
BlackMisc::Aviation::CCallsign m_callsign;
|
||||
BlackMisc::Network::CUser m_pilot;
|
||||
BlackMisc::Aviation::CAircraftSituation m_situation;
|
||||
BlackMisc::Aviation::CComSystem m_com1system;
|
||||
BlackMisc::Aviation::CComSystem m_com2system;
|
||||
BlackMisc::Aviation::CTransponder m_transponder;
|
||||
BlackMisc::Aviation::CAircraftParts m_parts;
|
||||
BlackMisc::Aviation::CSelcal m_selcal;
|
||||
BlackMisc::Simulation::CAircraftModel m_model;
|
||||
BlackMisc::Simulation::CAircraftModel m_networkModel; //!< model received from network
|
||||
static constexpr int CurrentModel = 0; //!< m_models
|
||||
static constexpr int NetworkModel = 1; //!< m_models
|
||||
BlackMisc::Aviation::CCallsign m_callsign;
|
||||
BlackMisc::Network::CUser m_pilot;
|
||||
BlackMisc::Aviation::CAircraftSituation m_situation;
|
||||
BlackMisc::Aviation::CComSystem m_com1system;
|
||||
BlackMisc::Aviation::CComSystem m_com2system;
|
||||
BlackMisc::Aviation::CTransponder m_transponder;
|
||||
BlackMisc::Aviation::CAircraftParts m_parts;
|
||||
BlackMisc::Aviation::CSelcal m_selcal;
|
||||
BlackMisc::Simulation::CAircraftModelList m_models = { { CAircraftModel(), CAircraftModel() } }; //!< Shorter DBus signature: current model, and model received from network
|
||||
bool m_enabled = true; //!< to be displayed in simulator
|
||||
bool m_rendered = false; //!< really shown in simulator
|
||||
bool m_partsSynchronized = false; //!< synchronize parts
|
||||
@@ -438,8 +440,7 @@ namespace BlackMisc
|
||||
BLACK_METAMEMBER(transponder),
|
||||
BLACK_METAMEMBER(parts),
|
||||
BLACK_METAMEMBER(selcal),
|
||||
BLACK_METAMEMBER(model),
|
||||
// BLACK_METAMEMBER(networkModel),
|
||||
BLACK_METAMEMBER(models),
|
||||
BLACK_METAMEMBER(enabled),
|
||||
BLACK_METAMEMBER(rendered),
|
||||
BLACK_METAMEMBER(partsSynchronized),
|
||||
|
||||
Reference in New Issue
Block a user