refs #74 , simulator class (describing used simulator). Remark: Maybe this will go to BlackMisc someday

This commit is contained in:
Klaus Basan
2014-03-05 23:36:15 +01:00
parent b78bbc3138
commit f3724e7972
2 changed files with 150 additions and 0 deletions

View File

@@ -0,0 +1,61 @@
#include "simulator.h"
#include "blackmisc/blackmiscfreefunctions.h"
namespace BlackSim
{
CSimulator::CSimulator(const QString &shortname, const QString &fullname) : m_fullname(fullname), m_shortname(shortname)
{ }
CSimulator::CSimulator() : m_fullname("Unknown"), m_shortname("Unknown")
{}
uint CSimulator::getValueHash() const
{
QList<uint> hashs;
hashs << qHash(this->m_fullname);
hashs << qHash(this->m_shortname);
return BlackMisc::calculateHash(hashs, "CSimulator");
}
QString CSimulator::convertToQString(bool i18n) const
{
Q_UNUSED(i18n);
return QString(this->m_shortname).append(" (").append(this->m_fullname).append(")");
}
int CSimulator::getMetaTypeId() const
{
return qMetaTypeId<CSimulator>();
}
int CSimulator::compareImpl(const BlackMisc::CValueObject &other) const
{
const CSimulator &otherObj = static_cast<const CSimulator &>(other);
int result;
if ((result = this->m_shortname.compare(otherObj.m_shortname, Qt::CaseInsensitive))) return result;
return this->m_shortname.compare(otherObj.m_shortname, Qt::CaseInsensitive);
}
void CSimulator::marshallToDbus(QDBusArgument &argument) const
{
argument << this->m_fullname;
argument << this->m_shortname;
}
void CSimulator::unmarshallFromDbus(const QDBusArgument &argument)
{
argument >> this->m_fullname;
argument >> this->m_shortname;
}
/*
* Register metadata
*/
void CSimulator::registerMetadata()
{
qRegisterMetaType<CSimulator>();
qDBusRegisterMetaType<CSimulator>();
}
}

89
src/blacksim/simulator.h Normal file
View File

@@ -0,0 +1,89 @@
#ifndef BLACKSIM_SIMULATOR_H
#define BLACKSIM_SIMULATOR_H
#include "blackmisc/valueobject.h"
namespace BlackSim
{
/*!
* \brief Describing a simulator
*/
class CSimulator : public BlackMisc::CValueObject
{
public:
//! \brief Default constructor
CSimulator();
//! \brief Constructor
CSimulator(const QString &shortname, const QString &fullname);
//! \brief Unspecified simulator
bool isUnspecified() const { return this->m_shortname.isEmpty() || this->m_shortname.startsWith("Unspecified", Qt::CaseInsensitive); }
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override
{
return QVariant::fromValue(*this);
}
//! \copydoc CValueObject::getValueHash()
virtual uint getValueHash() const override;
//! \brief Simulator is FS9 - Microsoft Flight Simulator 2004
static const CSimulator &FS9()
{
static CSimulator sim("FS9", "Microsoft Flight Simulator 2004");
return sim;
}
//! \brief Simulator is FSX Microsoft Flight Simulator X (2006)
static const CSimulator &FSX()
{
static CSimulator sim("FSX", "Microsoft Flight Simulator X (2006)");
return sim;
}
//! \brief Simulator is XPlane 10
static const CSimulator &XP10()
{
static CSimulator sim("XP10", "XPlane 10 (2011)");
return sim;
}
//! \brief Simulator is unspecified
static const CSimulator &UnspecifiedSim()
{
static CSimulator sim("Unspecified", "Unspecified");
return sim;
}
//! \brief Register the metatypes
static void registerMetadata();
protected:
//! \copydoc CValueObject::convertToQString
virtual QString convertToQString(bool i18n = false) const override;
//! \copydoc CValueObject::getMetaTypeId
virtual int getMetaTypeId() const override;
//! \copydoc CValueObject::compareImpl
virtual int compareImpl(const CValueObject &other) const override;
//! \copydoc CValueObject::marshallToDbus()
virtual void marshallToDbus(QDBusArgument &argument) const override;
//! \copydoc CValueObject::unmarshallFromDbus()
virtual void unmarshallFromDbus(const QDBusArgument &argument) override;
private:
QString m_fullname;
QString m_shortname;
};
}
Q_DECLARE_METATYPE(BlackSim::CSimulator)
#endif // guard