mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-03 07:35:48 +08:00
refs #573, access to mode (exclude/include)
* in model * in value object
This commit is contained in:
@@ -42,7 +42,8 @@ namespace BlackGui
|
||||
case OwnSimulatorModel:
|
||||
case StashModel:
|
||||
this->m_columns.addColumn(CColumn::standardString("model", { CAircraftModel::IndexModelString}));
|
||||
this->m_columns.addColumn(CColumn::standardString("DB", "parts from DB", { CAircraftModel::IndexPartsDbStatus}));
|
||||
this->m_columns.addColumn(CColumn("mode", "model mode(include, exclude)", CAircraftModel::IndexModelModeAsIcon, new CPixmapFormatter()));
|
||||
this->m_columns.addColumn(CColumn::standardString("DB", "parts from DB", { CAircraftModel::IndexMembersDbStatus}));
|
||||
this->m_columns.addColumn(CColumn::standardString("description", { CAircraftModel::IndexDescription}));
|
||||
this->m_columns.addColumn(CColumn::standardString("sim.", "simulator supported", CAircraftModel::IndexSimulatorInfoAsString));
|
||||
|
||||
@@ -79,6 +80,8 @@ namespace BlackGui
|
||||
case Database:
|
||||
this->m_columns.addColumn(CColumn::standardString("id", CAircraftModel::IndexDbIntegerKey, CDefaultFormatter::alignRightVCenter()));
|
||||
this->m_columns.addColumn(CColumn::standardString("model", CAircraftModel::IndexModelString));
|
||||
this->m_columns.addColumn(CColumn("mode", "model mode(include, exclude)", CAircraftModel::IndexModelModeAsIcon, new CPixmapFormatter()));
|
||||
|
||||
this->m_columns.addColumn(CColumn::standardString("dist.", "distributor", { CAircraftModel::IndexDistributor, CDistributor::IndexDbStringKey}));
|
||||
this->m_columns.addColumn(CColumn::standardString("name", CAircraftModel::IndexName));
|
||||
this->m_columns.addColumn(CColumn::standardString("description", CAircraftModel::IndexDescription));
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
#include <QString>
|
||||
#include <QJsonDocument>
|
||||
#include <QJsonObject>
|
||||
#include "blackmisc/verify.h"
|
||||
|
||||
using namespace BlackMisc;
|
||||
using namespace BlackMisc::Aviation;
|
||||
@@ -116,7 +117,9 @@ namespace BlackMisc
|
||||
case IndexModelMode:
|
||||
return CVariant::fromValue(this->m_modelMode);
|
||||
case IndexModelModeAsString:
|
||||
return CVariant(this->getModelModeAsString());
|
||||
return CVariant::fromValue(this->getModelModeAsString());
|
||||
case IndexModelModeAsIcon:
|
||||
return CVariant::fromValue(this->getModelModeAsIcon());
|
||||
case IndexDistributor:
|
||||
return m_distributor.propertyByIndex(index.copyFrontRemoved());
|
||||
case IndexSimulatorInfo:
|
||||
@@ -135,8 +138,8 @@ namespace BlackMisc
|
||||
return m_livery.propertyByIndex(index.copyFrontRemoved());
|
||||
case IndexCallsign:
|
||||
return m_callsign.propertyByIndex(index.copyFrontRemoved());
|
||||
case IndexPartsDbStatus:
|
||||
return getPartsDbStatus();
|
||||
case IndexMembersDbStatus:
|
||||
return getMembersDbStatus();
|
||||
default:
|
||||
return CValueObject::propertyByIndex(index);
|
||||
}
|
||||
@@ -179,7 +182,14 @@ namespace BlackMisc
|
||||
this->m_modelType = variant.value<ModelType>();
|
||||
break;
|
||||
case IndexModelMode:
|
||||
this->m_modelMode = variant.value<ModelMode>();
|
||||
if (variant.type() == QMetaType::QString)
|
||||
{
|
||||
this->setModelModeAsString(variant.toQString());
|
||||
}
|
||||
else
|
||||
{
|
||||
this->m_modelMode = variant.value<ModelMode>();
|
||||
}
|
||||
break;
|
||||
default:
|
||||
CValueObject::setPropertyByIndex(variant, index);
|
||||
@@ -216,9 +226,11 @@ namespace BlackMisc
|
||||
case IndexModelType:
|
||||
return Compare::compare(this->m_modelType, compareValue.getModelType());
|
||||
case IndexModelMode:
|
||||
case IndexModelModeAsString:
|
||||
case IndexModelModeAsIcon:
|
||||
return Compare::compare(this->m_modelMode, compareValue.getModelMode());
|
||||
case IndexPartsDbStatus:
|
||||
return getPartsDbStatus().compare(compareValue.getPartsDbStatus());
|
||||
case IndexMembersDbStatus:
|
||||
return getMembersDbStatus().compare(compareValue.getMembersDbStatus());
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -259,6 +271,26 @@ namespace BlackMisc
|
||||
return this->m_livery.hasValidAirlineDesignator();
|
||||
}
|
||||
|
||||
const CIcon &CAircraftModel::getModelModeAsIcon() const
|
||||
{
|
||||
switch (this->getModelMode())
|
||||
{
|
||||
case Include:
|
||||
return CIconList::iconByIndex(CIcons::ModelInclude);
|
||||
case Exclude:
|
||||
return CIconList::iconByIndex(CIcons::ModelExclude);
|
||||
default:
|
||||
Q_ASSERT_X(false, Q_FUNC_INFO, "wrong mode");
|
||||
break;
|
||||
}
|
||||
return CIconList::iconByIndex(CIcons::ModelInclude);
|
||||
}
|
||||
|
||||
void CAircraftModel::setModelModeAsString(const QString &mode)
|
||||
{
|
||||
this->setModelMode(CAircraftModel::modelModeFromString(mode));
|
||||
}
|
||||
|
||||
void CAircraftModel::updateMissingParts(const CAircraftModel &otherModel)
|
||||
{
|
||||
if (!this->hasValidDbKey() && otherModel.hasValidDbKey())
|
||||
@@ -305,7 +337,7 @@ namespace BlackMisc
|
||||
return m_simulator.isAnySimulator();
|
||||
}
|
||||
|
||||
QString CAircraftModel::getPartsDbStatus() const
|
||||
QString CAircraftModel::getMembersDbStatus() const
|
||||
{
|
||||
QString s(hasValidDbKey() ? "M" : "m");
|
||||
s = s.append(getDistributor().hasValidDbKey() ? 'D' : 'd');
|
||||
@@ -363,19 +395,22 @@ namespace BlackMisc
|
||||
{
|
||||
if (mode.isEmpty() || mode.startsWith('I', Qt::CaseInsensitive)) { return Include;}
|
||||
if (mode.startsWith('E', Qt::CaseInsensitive)) { return Exclude; }
|
||||
Q_ASSERT_X(false, Q_FUNC_INFO, "wrong mode");
|
||||
BLACK_VERIFY_X(false, Q_FUNC_INFO, "wrong mode");
|
||||
return Include; // default
|
||||
}
|
||||
|
||||
QString CAircraftModel::modelModeToString(CAircraftModel::ModelMode mode)
|
||||
const QString &CAircraftModel::modelModeToString(CAircraftModel::ModelMode mode)
|
||||
{
|
||||
static const QString i("Include");
|
||||
static const QString e("Exclude");
|
||||
|
||||
switch (mode)
|
||||
{
|
||||
case Include: return "Include";
|
||||
case Exclude: return "Exclude";
|
||||
case Include: return i;
|
||||
case Exclude: return e;
|
||||
default: Q_ASSERT_X(false, Q_FUNC_INFO, "wrong mode");
|
||||
}
|
||||
return "Include";
|
||||
return i; // default
|
||||
}
|
||||
|
||||
CAircraftModel CAircraftModel::fromDatabaseJson(const QJsonObject &json, const QString prefix)
|
||||
@@ -399,7 +434,7 @@ namespace BlackMisc
|
||||
modelString, CAircraftModel::TypeDatabaseEntry, simInfo, modelName, modelDescription, aircraftIcao, livery
|
||||
);
|
||||
model.setDistributor(distributor);
|
||||
model.setModelMode(modelModeFromString(modelMode));
|
||||
model.setModelModeAsString(modelMode);
|
||||
model.setKeyAndTimestampFromDatabaseJson(json, prefix);
|
||||
return model;
|
||||
}
|
||||
|
||||
@@ -70,8 +70,9 @@ namespace BlackMisc
|
||||
IndexModelTypeAsString,
|
||||
IndexModelMode,
|
||||
IndexModelModeAsString,
|
||||
IndexModelModeAsIcon,
|
||||
IndexHasQueriedModelString,
|
||||
IndexPartsDbStatus
|
||||
IndexMembersDbStatus
|
||||
};
|
||||
|
||||
//! \copydoc BlackMisc::CValueObject::registerMetadata
|
||||
@@ -189,11 +190,17 @@ namespace BlackMisc
|
||||
ModelMode getModelMode() const { return m_modelMode; }
|
||||
|
||||
//! Model mode as string
|
||||
QString getModelModeAsString() const { return modelModeToString(getModelMode()); }
|
||||
const QString &getModelModeAsString() const { return modelModeToString(getModelMode()); }
|
||||
|
||||
//! Model mode as string
|
||||
const BlackMisc::CIcon &getModelModeAsIcon() const;
|
||||
|
||||
//! Set model mode
|
||||
void setModelMode(ModelMode mode) { m_modelMode = mode; }
|
||||
|
||||
//! Set model mode as string
|
||||
void setModelModeAsString(const QString &mode);
|
||||
|
||||
//! Simulator info
|
||||
CSimulatorInfo getSimulatorInfo() const { return this->m_simulator; }
|
||||
|
||||
@@ -227,8 +234,8 @@ namespace BlackMisc
|
||||
//! Valid simulator
|
||||
bool hasValidSimulator() const;
|
||||
|
||||
//! Info, which parts/subparts (Livery, Aircraft ICAO, ...) are already based on DB data
|
||||
QString getPartsDbStatus() const;
|
||||
//! Info, which members (Livery, Aircraft ICAO, ...) are already based on DB data
|
||||
QString getMembersDbStatus() const;
|
||||
|
||||
//! Matches model string?
|
||||
bool matchesModelString(const QString &modelString, Qt::CaseSensitivity sensitivity) const;
|
||||
@@ -252,7 +259,7 @@ namespace BlackMisc
|
||||
static ModelMode modelModeFromString(const QString &mode);
|
||||
|
||||
//! Model mode
|
||||
static QString modelModeToString(ModelMode mode);
|
||||
static const QString &modelModeToString(ModelMode mode);
|
||||
|
||||
//! From swift DB JSON
|
||||
static CAircraftModel fromDatabaseJson(const QJsonObject &json, const QString prefix = QString("mod_"));
|
||||
|
||||
Reference in New Issue
Block a user