refs #573, access to mode (exclude/include)

* in model
* in value object
This commit is contained in:
Klaus Basan
2016-01-17 00:33:31 +01:00
parent 359866f0c9
commit 6facffc292
3 changed files with 64 additions and 19 deletions

View File

@@ -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));

View File

@@ -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;
}

View File

@@ -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_"));