Ref T492, added model alias

This commit is contained in:
Klaus Basan
2019-01-05 12:17:00 +01:00
committed by Mat Sutcliffe
parent 49a49f48ee
commit 80e925fe80
2 changed files with 101 additions and 57 deletions

View File

@@ -12,25 +12,25 @@
#ifndef BLACKMISC_SIMULATION_AIRCRAFTMODEL_H
#define BLACKMISC_SIMULATION_AIRCRAFTMODEL_H
#include "blackmisc/simulation/distributor.h"
#include "blackmisc/simulation/distributorlist.h"
#include "blackmisc/simulation/simulatorinfo.h"
#include "blackmisc/aviation/aircrafticaocode.h"
#include "blackmisc/aviation/airlineicaocode.h"
#include "blackmisc/aviation/callsign.h"
#include "blackmisc/aviation/livery.h"
#include "blackmisc/pq/length.h"
#include "blackmisc/blackmiscexport.h"
#include "blackmisc/db/datastore.h"
#include "blackmisc/statusmessagelist.h"
#include "blackmisc/valueobject.h"
#include "blackmisc/variant.h"
#include "blackmisc/dictionary.h"
#include "blackmisc/memotable.h"
#include "blackmisc/metaclass.h"
#include "blackmisc/orderable.h"
#include "blackmisc/pixmap.h"
#include "blackmisc/propertyindex.h"
#include "blackmisc/simulation/distributor.h"
#include "blackmisc/simulation/distributorlist.h"
#include "blackmisc/simulation/simulatorinfo.h"
#include "blackmisc/statusmessagelist.h"
#include "blackmisc/valueobject.h"
#include "blackmisc/variant.h"
#include "blackmisc/blackmiscexport.h"
#include <QFlags>
#include <QHash>
@@ -45,6 +45,7 @@
namespace BlackMisc
{
class CIcon;
namespace Simulation
{
//! DB ids
@@ -102,6 +103,8 @@ namespace BlackMisc
enum ColumnIndex
{
IndexModelString = CPropertyIndex::GlobalIndexCAircraftModel,
IndexModelStringAlias,
IndexAllModelStrings, //!< indluding aliases
IndexCallsign,
IndexName,
IndexDescription,
@@ -179,6 +182,15 @@ namespace BlackMisc
//! Model string
void setModelString(const QString &modelString) { m_modelString = modelString.trimmed().toUpper(); }
//! Model key, either queried or loaded from simulator model
const QString &getModelStringAlias() const { return m_modelStringAlias; }
//! Get model string and aliases
QString getAllModelStringsAndAliases() const;
//! Model string alias
void setModelStringAlias(const QString &alias) { m_modelStringAlias = alias.trimmed().toUpper(); }
//! Descriptive text
const QString &getDescription() const { return m_description; }
@@ -354,9 +366,15 @@ namespace BlackMisc
//! Model string which was manually set
bool hasManuallySetString() const;
//! Non empty model string
//! Non empty model string?
bool hasModelString() const { return !m_modelString.isEmpty(); }
//! Non empty model string alias?
bool hasModelStringAlias() const { return !m_modelStringAlias.isEmpty(); }
//! Any model string or alias?
bool hasAnyModelString() const { return this->hasModelString() || this->hasModelStringAlias(); }
//! Description
bool hasDescription(bool ignoreAutoGenerated = false) const;
@@ -369,6 +387,9 @@ namespace BlackMisc
//! Matches model string?
bool matchesModelString(const QString &modelString, Qt::CaseSensitivity sensitivity) const;
//! Matches model string or alias?
bool matchesModelStringOrAlias(const QString &modelString, Qt::CaseSensitivity sensitivity) const;
//! Calculate score
int calculateScore(const CAircraftModel &compareModel, bool preferColorLiveries, CStatusMessageList *log = nullptr) const;
@@ -499,8 +520,8 @@ namespace BlackMisc
Aviation::CLivery m_livery; //!< livery information
CSimulatorInfo m_simulator; //!< model for given simulator
CDistributor m_distributor; //!< who designed or distributed the model
PhysicalQuantities::CLength m_cg = PhysicalQuantities::CLength::null(); //!< center of gravity
QString m_modelString; //!< Simulator model key, unique
QString m_modelStringAlias; //!< Simulator model key alias, unique
QString m_name; //!< Model name
QString m_description; //!< descriptive text
QString m_fileName; //!< file name
@@ -509,6 +530,7 @@ namespace BlackMisc
qint64 m_fileTimestamp = -1; //!< file timestamp of originating file (if applicable)
ModelType m_modelType = TypeUnknown; //!< model string is coming representing ...?
ModelMode m_modelMode = Include; //!< model mode (include / exclude)
PhysicalQuantities::CLength m_cg = PhysicalQuantities::CLength::null(); //!< center of gravity
BLACK_METACLASS(
CAircraftModel,
@@ -523,6 +545,7 @@ namespace BlackMisc
BLACK_METAMEMBER(cg),
BLACK_METAMEMBER(supportedParts),
BLACK_METAMEMBER(modelString, 0, CaseInsensitiveComparison),
BLACK_METAMEMBER(modelStringAlias, 0, CaseInsensitiveComparison),
BLACK_METAMEMBER(name),
BLACK_METAMEMBER(description, 0, DisabledForComparison),
BLACK_METAMEMBER(fileName, 0, DisabledForComparison),