refs #391, allow to send aircraft parts from GUI

* GUI component for aircraft parts
* remote aircraft selector component
* Adjusted GUI for internals component
* Enable / disable debug messages from GUI
* Allow to init engines directly
* Removed unused async sort in sequence

In same step fixed found issues in interpolator
* allow to set max rendered aircraft
This commit is contained in:
Klaus Basan
2015-03-07 03:34:17 +01:00
parent f31445e873
commit 5ed95aee3d
63 changed files with 1575 additions and 165 deletions

View File

@@ -13,8 +13,20 @@ namespace BlackMisc
{
namespace Aviation
{
QString CAircraftEngine::convertToQString(bool /** i18n */) const
CAircraftEngine::CAircraftEngine(int number, bool on) : m_number(number), m_on(on)
{
Q_ASSERT_X(number > 0, "CAircraftEngine", "Engine number have to be > 1");
}
void CAircraftEngine::setNumber(int number)
{
Q_ASSERT_X(number > 0, "setNumber", "Engine number have to be > 1");
m_number = number;
}
QString CAircraftEngine::convertToQString(bool i18n) const
{
Q_UNUSED(i18n);
QString s(m_number);
s += m_on;
return s;

View File

@@ -27,13 +27,13 @@ namespace BlackMisc
CAircraftEngine() = default;
//! Constructor
CAircraftEngine(int number, bool on) : m_number(number), m_on(on) {}
CAircraftEngine(int number, bool on);
//! Get engine number
int getNumber() const { return m_number; }
//! Set engine number
void setNumber (int number) { m_number = number; }
void setNumber (int number);
//! Is on/off?
bool isOn() const { return m_on; }
@@ -61,4 +61,4 @@ BLACK_DECLARE_TUPLE_CONVERSION(BlackMisc::Aviation::CAircraftEngine, (
Q_DECLARE_METATYPE(BlackMisc::Aviation::CAircraftEngine)
#endif // BLACKMISC_AIRCRAFTENGINES_H
#endif // guard

View File

@@ -13,10 +13,57 @@ namespace BlackMisc
{
namespace Aviation
{
CAircraftEngineList::CAircraftEngineList(std::initializer_list<bool> enginesOnOff)
{
int no = 1; // engines 1 based
for (auto it = enginesOnOff.begin(); it != enginesOnOff.end(); ++it)
{
CAircraftEngine engine(no++, *it);
this->push_back(engine);
}
}
CAircraftEngineList::CAircraftEngineList(const CSequence<CAircraftEngine> &other) :
CSequence<CAircraftEngine>(other)
{ }
CAircraftEngine CAircraftEngineList::getEngine(int engineNumber) const
{
Q_ASSERT(engineNumber >= 0);
return this->findBy(&CAircraftEngine::getNumber, engineNumber).frontOrDefault();
}
bool CAircraftEngineList::isEngineOn(int engineNumber) const
{
return getEngine(engineNumber).isOn();
}
QJsonObject CAircraftEngineList::toJson() const
{
QJsonObject map;
for (const auto &e : *this)
{
QJsonObject value = e.toJson();
map.insert(QString::number(e.getNumber()), value);
}
return map;
}
void CAircraftEngineList::convertFromJson(const QJsonObject &json)
{
clear();
for (const auto &e : json.keys())
{
CAircraftEngine engine;
int number = e.toInt();
engine.convertFromJson(json.value(e).toObject());
engine.setNumber(number);
push_back(engine);
}
}
void CAircraftEngineList::registerMetadata()
{
qRegisterMetaType<BlackMisc::CSequence<CAircraftEngine>>();

View File

@@ -15,6 +15,7 @@
#include "aircraftengine.h"
#include "blackmisc/collection.h"
#include "blackmisc/sequence.h"
#include <initializer_list>
namespace BlackMisc
{
@@ -27,41 +28,29 @@ namespace BlackMisc
//! Default constructor.
CAircraftEngineList() = default;
//! Construct by bool values for engines 1,2 ...
CAircraftEngineList(std::initializer_list<bool> enginesOnOff);
//! Construct from a base class object.
CAircraftEngineList(const CSequence<CAircraftEngine> &other);
//! Get engine 1..n
CAircraftEngine getEngine(int engineNumber) const;
//! Engine number 1..x on?
bool isEngineOn(int engineNumber) const;
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::convertFromQVariant
virtual void convertFromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
virtual QJsonObject toJson() const override
{
QJsonObject map;
for (const auto &e : *this)
{
QJsonObject value = e.toJson();
map.insert(QString::number(e.getNumber()), value);
}
return map;
}
//! \copydoc CValueObject::toJson
virtual QJsonObject toJson() const override;
//! \copydoc CValueObject::convertFromJson
virtual void convertFromJson(const QJsonObject &json) override
{
clear();
for (const auto &e : json.keys())
{
CAircraftEngine engine;
int number = e.toInt();
engine.convertFromJson(json.value(e).toObject());
engine.setNumber(number);
push_back(engine);
}
}
virtual void convertFromJson(const QJsonObject &json) override;
//! Register metadata
static void registerMetadata();

View File

@@ -100,12 +100,12 @@ namespace BlackMisc
CAircraftEngine CAircraftParts::getEngine(int number) const
{
return this->m_engines.findBy(&CAircraftEngine::getNumber, number).frontOrDefault();
return this->m_engines.getEngine(number);
}
bool CAircraftParts::isEngineOn(int number) const
{
return this->getEngine(number).isOn();
return this->m_engines.isEngineOn(number);
}
} // namespace

View File

@@ -94,7 +94,7 @@ namespace BlackMisc
//! Engine with number
CAircraftEngine getEngine(int number) const;
//! Is engine with number on?
//! Is engine with number 1..n on?
bool isEngineOn(int number) const;
//! Set engines