refs #292, found during debugging

* const override of toQVariant
* missing getter / setters
* metaTuple
* improved toQString
* CClient::setCapability bug
* Fixed wrong ICAO check
This commit is contained in:
Klaus Basan
2014-07-08 01:14:17 +02:00
parent b949a2635b
commit 0a7d025b8d
18 changed files with 52 additions and 57 deletions

View File

@@ -38,14 +38,8 @@ namespace BlackMisc
*/ */
CAudioDeviceList(const CSequence &other); CAudioDeviceList(const CSequence &other);
/*! //! \copydoc CValueObject::toQVariant
* \brief QVariant, required for DBus QVariant lists virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
* \return
*/
virtual QVariant asQVariant() const
{
return QVariant::fromValue(*this);
}
/*! /*!
* \brief Get output devices in that list * \brief Get output devices in that list

View File

@@ -318,15 +318,15 @@ namespace BlackMisc
*/ */
QJsonObject CAircraft::toJson() const QJsonObject CAircraft::toJson() const
{ {
return BlackMisc::serializeJson(CAircraft::jsonMembers(), TupleConverter<CAircraft>::toTuple(*this)); return BlackMisc::serializeJson(TupleConverter<CAircraft>::toMetaTuple(*this));
} }
/* /*
* To JSON * From JSON
*/ */
void CAircraft::fromJson(const QJsonObject &json) void CAircraft::fromJson(const QJsonObject &json)
{ {
BlackMisc::deserializeJson(json, CAircraft::jsonMembers(), TupleConverter<CAircraft>::toTuple(*this)); BlackMisc::deserializeJson(json, TupleConverter<CAircraft>::toMetaTuple(*this));
} }
/* /*

View File

@@ -35,10 +35,7 @@ namespace BlackMisc
CAircraftList(const CSequence<CAircraft> &other); CAircraftList(const CSequence<CAircraft> &other);
//! \copydoc CValueObject::toQVariant //! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
{
return QVariant::fromValue(*this);
}
//! Find 0..n stations by callsign //! Find 0..n stations by callsign
CAircraftList findByCallsign(const CCallsign &callsign) const; CAircraftList findByCallsign(const CCallsign &callsign) const;

View File

@@ -71,7 +71,7 @@ namespace BlackMisc
*/ */
QJsonObject CAirport::toJson() const QJsonObject CAirport::toJson() const
{ {
return BlackMisc::serializeJson(CAirport::jsonMembers(), TupleConverter<CAirport>::toTuple(*this)); return BlackMisc::serializeJson(TupleConverter<CAirport>::toMetaTuple(*this));
} }
/* /*
@@ -79,7 +79,7 @@ namespace BlackMisc
*/ */
void CAirport::fromJson(const QJsonObject &json) void CAirport::fromJson(const QJsonObject &json)
{ {
BlackMisc::deserializeJson(json, CAirport::jsonMembers(), TupleConverter<CAirport>::toTuple(*this)); BlackMisc::deserializeJson(json, TupleConverter<CAirport>::toMetaTuple(*this));
} }
/* /*

View File

@@ -71,6 +71,9 @@ namespace BlackMisc
return TupleConverter<CAirportIcao>::jsonMembers(); return TupleConverter<CAirportIcao>::jsonMembers();
} }
/*
* Unify ICAO code
*/
QString CAirportIcao::unifyAirportCode(const QString &icaoCode) QString CAirportIcao::unifyAirportCode(const QString &icaoCode)
{ {
QString code = icaoCode.trimmed().toUpper(); QString code = icaoCode.trimmed().toUpper();
@@ -79,6 +82,15 @@ namespace BlackMisc
return (reg.exactMatch(code)) ? code : ""; return (reg.exactMatch(code)) ? code : "";
} }
/*
* Valid ICAO designator?
*/
bool CAirportIcao::isValidIcaoDesignator(const QString &icaoCode)
{
QString icao = unifyAirportCode(icaoCode);
return icao.length() == 4;
}
/* /*
* Equal? * Equal?
*/ */

View File

@@ -70,6 +70,9 @@ namespace BlackMisc
//! Unify code //! Unify code
static QString unifyAirportCode(const QString &icaoCode); static QString unifyAirportCode(const QString &icaoCode);
//! Valid ICAO designator
static bool isValidIcaoDesignator(const QString &icaoCode);
protected: protected:
//! \copydoc CValueObject::convertToQString() //! \copydoc CValueObject::convertToQString()
virtual QString convertToQString(bool i18n = false) const override; virtual QString convertToQString(bool i18n = false) const override;

View File

@@ -32,7 +32,7 @@ namespace BlackMisc
CAirportList(const CSequence<CAirport> &other); CAirportList(const CSequence<CAirport> &other);
//! \copydoc CValueObject::toQVariant() //! \copydoc CValueObject::toQVariant()
virtual QVariant toQVariant() const { return QVariant::fromValue(*this); } virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! Find 0..n airports by ICAO code //! Find 0..n airports by ICAO code
CAirportList findByIcao(const CAirportIcao &icao) const; CAirportList findByIcao(const CAirportIcao &icao) const;

View File

@@ -33,10 +33,7 @@ namespace BlackMisc
CAtcStationList(const CSequence<CAtcStation> &other); CAtcStationList(const CSequence<CAtcStation> &other);
//! \copydoc CValueObject::toQVariant() //! \copydoc CValueObject::toQVariant()
virtual QVariant toQVariant() const virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
{
return QVariant::fromValue(*this);
}
//! Find 0..n stations by callsign //! Find 0..n stations by callsign
CAtcStationList findByCallsign(const CCallsign &callsign) const; CAtcStationList findByCallsign(const CCallsign &callsign) const;

View File

@@ -32,10 +32,7 @@ namespace BlackMisc
CCallsignList(const CSequence<CCallsign> &other); CCallsignList(const CSequence<CCallsign> &other);
//! CValueObject::toQVariant() //! CValueObject::toQVariant()
virtual QVariant toQVariant() const virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
{
return QVariant::fromValue(*this);
}
//! Register metadata //! Register metadata
static void registerMetadata(); static void registerMetadata();

View File

@@ -32,10 +32,7 @@ namespace BlackMisc
CKeyboardKeyList(const CSequence<CKeyboardKey> &baseClass); CKeyboardKeyList(const CSequence<CKeyboardKey> &baseClass);
//! \copydoc CValueObject::toQVariant //! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
{
return QVariant::fromValue(*this);
}
//! Contains given hotkey function? //! Contains given hotkey function?
bool containsFunction(CKeyboardKey::HotkeyFunction function) const; bool containsFunction(CKeyboardKey::HotkeyFunction function) const;

View File

@@ -34,7 +34,7 @@ namespace BlackMisc
CAircraftMappingList(const CSequence<CAircraftMapping> &other); CAircraftMappingList(const CSequence<CAircraftMapping> &other);
//! QVariant, required for DBus QVariant lists //! QVariant, required for DBus QVariant lists
virtual QVariant toQVariant() const { return QVariant::fromValue(*this); } virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! Find by frequency //! Find by frequency
CAircraftMappingList findByIcaoCode(const BlackMisc::Aviation::CAircraftIcao &searchIcao, bool emptyMeansWildcard = true) const; CAircraftMappingList findByIcaoCode(const BlackMisc::Aviation::CAircraftIcao &searchIcao, bool emptyMeansWildcard = true) const;

View File

@@ -11,6 +11,12 @@ namespace BlackMisc
QString CClient::convertToQString(bool i18n) const QString CClient::convertToQString(bool i18n) const
{ {
QString s = this->m_user.toQString(i18n); QString s = this->m_user.toQString(i18n);
s.append(" capabilites: ").append(this->getCapabilitiesAsString());
s.append(" model: ").append(this->m_model.toQString(i18n));
if (!this->m_server.isEmpty())
{
s.append(" server:").append(this->m_server);
}
return s; return s;
} }
@@ -103,7 +109,7 @@ namespace BlackMisc
*/ */
QJsonObject CClient::toJson() const QJsonObject CClient::toJson() const
{ {
return BlackMisc::serializeJson(CClient::jsonMembers(), TupleConverter<CClient>::toTuple(*this)); return BlackMisc::serializeJson(TupleConverter<CClient>::toMetaTuple(*this));
} }
/* /*
@@ -111,7 +117,7 @@ namespace BlackMisc
*/ */
void CClient::fromJson(const QJsonObject &json) void CClient::fromJson(const QJsonObject &json)
{ {
BlackMisc::deserializeJson(json, CClient::jsonMembers(), TupleConverter<CClient>::toTuple(*this)); BlackMisc::deserializeJson(json, TupleConverter<CClient>::toMetaTuple(*this));
} }
/* /*
@@ -119,7 +125,7 @@ namespace BlackMisc
*/ */
void CClient::setCapability(bool hasCapability, CClient::Capabilities capability) void CClient::setCapability(bool hasCapability, CClient::Capabilities capability)
{ {
this->m_capabilities.setPropertyByIndex(QVariant(hasCapability), capability); this->m_capabilities.addValue(static_cast<int>(capability), hasCapability);
} }
/* /*

View File

@@ -106,6 +106,12 @@ namespace BlackMisc
//! Set voice capabilities //! Set voice capabilities
void setVoiceCapabilities(const QString &flightPlanRemarks) { m_voiceCapabilities = CVoiceCapabilities(flightPlanRemarks);} void setVoiceCapabilities(const QString &flightPlanRemarks) { m_voiceCapabilities = CVoiceCapabilities(flightPlanRemarks);}
//! User
const CUser &getUser() const { return this->m_user; }
//! User
void setUser(const CUser &user) { this->m_user = user;}
//! Server //! Server
const QString &getServer() const { return this->m_server; } const QString &getServer() const { return this->m_server; }
@@ -164,7 +170,7 @@ namespace BlackMisc
} // namespace } // namespace
} // namespace } // namespace
BLACK_DECLARE_TUPLE_CONVERSION(BlackMisc::Network::CClient, (o.m_user, o.m_model, o.m_capabilities)) BLACK_DECLARE_TUPLE_CONVERSION(BlackMisc::Network::CClient, (o.m_user, o.m_model, o.m_capabilities, o.m_server, o.m_voiceCapabilities))
Q_DECLARE_METATYPE(BlackMisc::Network::CClient) Q_DECLARE_METATYPE(BlackMisc::Network::CClient)
#endif // guard #endif // guard

View File

@@ -28,7 +28,7 @@ namespace BlackMisc
CClientList(const CSequence &other); CClientList(const CSequence &other);
//! QVariant, required for DBus QVariant lists //! QVariant, required for DBus QVariant lists
virtual QVariant asQVariant() const { return QVariant::fromValue(*this); } virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! Register metadata //! Register metadata
static void registerMetadata(); static void registerMetadata();

View File

@@ -38,14 +38,8 @@ namespace BlackMisc
*/ */
CServerList(const CSequence<CServer> &other); CServerList(const CSequence<CServer> &other);
/*! //! \copydoc CValueObject::toQVariant
* \brief QVariant, required for DBus QVariant lists virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
* \return
*/
virtual QVariant toQVariant() const
{
return QVariant::fromValue(*this);
}
/*! /*!
* \brief Register metadata * \brief Register metadata

View File

@@ -33,10 +33,7 @@ namespace BlackMisc
CStatusMessageList findBySeverity(CStatusMessage::StatusSeverity severity) const; CStatusMessageList findBySeverity(CStatusMessage::StatusSeverity severity) const;
//! \copydoc CValueObject::asQVariant //! \copydoc CValueObject::asQVariant
virtual QVariant asQVariant() const virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
{
return QVariant::fromValue(*this);
}
//! \brief Register metadata of unit and quantity //! \brief Register metadata of unit and quantity
static void registerMetadata(); static void registerMetadata();

View File

@@ -33,15 +33,10 @@ namespace BlackMisc
//! Construct from a base class object. //! Construct from a base class object.
CVoiceRoomList(const CSequence &other); CVoiceRoomList(const CSequence &other);
//! \copydoc CValueObject::asQVariant //! \copydoc CValueObject::toQVariant
virtual QVariant asQVariant() const virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
{
return QVariant::fromValue(*this);
}
/*! //! \brief Register metadata
* \brief Register metadata
*/
static void registerMetadata(); static void registerMetadata();
//! Frequently needed for voice room resolutions //! Frequently needed for voice room resolutions

View File

@@ -127,7 +127,7 @@ namespace BlackSimPlugin
if (!pFacilityAirport) break; if (!pFacilityAirport) break;
const QString icao(pFacilityAirport->Icao); const QString icao(pFacilityAirport->Icao);
if (icao.isEmpty()) continue; // airfield without ICAO code if (icao.isEmpty()) continue; // airfield without ICAO code
if (!CAircraftIcao::isValidDesignator(icao)) continue; // tiny airfields in SIM if (!CAirportIcao::isValidIcaoDesignator(icao)) continue; // tiny airfields in SIM
CCoordinateGeodetic pos(pFacilityAirport->Latitude, pFacilityAirport->Longitude, pFacilityAirport->Altitude); CCoordinateGeodetic pos(pFacilityAirport->Latitude, pFacilityAirport->Longitude, pFacilityAirport->Altitude);
CAirport airport(CAirportIcao(icao), pos); CAirport airport(CAirportIcao(icao), pos);
CLength d = airport.calculcateDistanceAndBearingToPlane(posAircraft); CLength d = airport.calculcateDistanceAndBearingToPlane(posAircraft);