11 : QAbstractListModel(parent)
13 SGPropertyNode_ptr localRoot(
new SGPropertyNode);
17 for (
auto s : localRoot->getNode(
"sim/ai/scenarios")->getChildren(
"scenario")) {
18 const std::string scenarioId = s->getStringValue(
"id");
19 for (
auto c : s->getChildren(
"carrier")) {
20 processCarrier(scenarioId, c);
25void CarriersLocationModel::processCarrier(
const std::string &scenario, SGPropertyNode_ptr carrierNode)
27 const auto name = QString::fromStdString(carrierNode->getStringValue(
"name"));
28 const auto pennant = QString::fromStdString(carrierNode->getStringValue(
"pennant-number"));
29 const auto tacan = QString::fromStdString(carrierNode->getStringValue(
"TACAN-channel-ID"));
30 const auto desc = QString::fromStdString(carrierNode->getStringValue(
"description"));
31 SGGeod geod = SGGeod::fromDeg(carrierNode->getDoubleValue(
"longitude"),
32 carrierNode->getDoubleValue(
"latitude"));
35 for (
auto c : carrierNode->getChildren(
"parking-pos")) {
36 parkings.append(QString::fromStdString(c->getStringValue()));
39 mCarriers.push_back(Carrier{
40 QString::fromStdString(scenario),
57 return static_cast<int>(mCarriers.size());
65 if (m_carrierPixmap.isNull()) {
68 m_carrierPixmap = iconProvider->requestPixmap(
"aircraft-carrier?theme", &sz, {});
71 const auto& c = mCarriers.at(
static_cast<size_t>(index.row()));
79 case IconRole:
return m_carrierPixmap;
89 QHash<int, QByteArray> result = QAbstractListModel::roleNames();
104 auto it = std::find_if(mCarriers.begin(), mCarriers.end(), [
name]
105 (
const Carrier& carrier)
106 { return name == carrier.mName || name == carrier.mCallsign; });
107 if (it == mCarriers.end())
110 return static_cast<int>(std::distance(mCarriers.begin(), it));
115 const auto uIndex =
static_cast<size_t>(index);
116 if ((index < 0) || (uIndex >= mCarriers.size())) {
120 const auto& c = mCarriers.at(uIndex);
121 return c.mInitialLocation;
126 const auto uIndex =
static_cast<size_t>(index);
127 if ((index < 0) || (uIndex >= mCarriers.size())) {
131 const auto& c = mCarriers.at(uIndex);
137 const auto uIndex =
static_cast<size_t>(index);
138 if ((index < 0) || (uIndex >= mCarriers.size())) {
142 const auto& c = mCarriers.at(uIndex);
QString pennantForIndex(int index) const
SGGeod geodForIndex(int index) const
int rowCount(const QModelIndex &parent=QModelIndex()) const override
CarriersLocationModel(QObject *parent=nullptr)
int indexOf(const QString name) const
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
QHash< int, QByteArray > roleNames() const override
QStringList parkingsForIndex(int index) const
static void registerScenarios(SGPropertyNode_ptr root={})
Static helper to register scenarios.
static QmlColoredImageProvider * instance()