refs #314, fromQVariant / location of toQVariant

* renamed fromQVariant to convertFromQVariant, the "from" methods imply the object is changed (fromJson, fromString ..)
* implemented fromQVariant - changing the object by QVariant
* moved toQVariant into PQ template
* free function setFromQVariant
This commit is contained in:
Klaus Basan
2014-08-19 01:55:15 +02:00
parent c21a0bb0e4
commit 290abe3693
84 changed files with 478 additions and 388 deletions

View File

@@ -74,6 +74,9 @@ namespace BlackMisc
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! \copydoc CValueObject::toJson
virtual QJsonObject toJson() const override;

View File

@@ -35,9 +35,6 @@ namespace BlackMisc
//! Construct from a base class object.
CAudioDeviceList(const CSequence &other);
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! Get output devices in that list
CAudioDeviceList getOutputDevices() const;
@@ -47,6 +44,12 @@ namespace BlackMisc
//! Count (as of type)
int count(CAudioDevice::DeviceType type) const;
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! Register metadata
static void registerMetadata();
};

View File

@@ -21,6 +21,7 @@
#include "valueobject.h"
#include "namevariantpairlist.h"
#include "propertyindex.h"
#include "blackmiscfreefunctions.h"
namespace BlackMisc
{
@@ -54,6 +55,9 @@ namespace BlackMisc
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! \copydoc CValueObject::toIcon()
virtual BlackMisc::CIcon toIcon() const override { return this->m_callsign.toIcon(); }

View File

@@ -13,6 +13,7 @@
#define BLACKMISC_AIRCRAFTICAO_H
#include "propertyindex.h"
#include "blackmiscfreefunctions.h"
namespace BlackMisc
{
@@ -62,11 +63,11 @@ namespace BlackMisc
: m_aircraftDesignator(icao.trimmed().toUpper()), m_aircraftCombinedType(combinedType.trimmed().toUpper()), m_airlineDesignator(airline.trimmed().toUpper()),
m_livery(livery.trimmed().toUpper()), m_aircraftColor(color.trimmed().toUpper()) {}
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override
{
return QVariant::fromValue(*this);
}
//! \copydoc CValueObject::toQVariant()
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! Get ICAO designator, e.g. "B737"
const QString &getAircraftDesignator() const { return m_aircraftDesignator; }

View File

@@ -37,9 +37,6 @@ namespace BlackMisc
//! Construct from a base class object.
CAircraftList(const CSequence<CAircraft> &other);
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! Find 0..n stations by callsign
CAircraftList findByCallsign(const CCallsign &callsign) const;
@@ -60,12 +57,18 @@ namespace BlackMisc
*/
CAircraftList findWithinRange(const BlackMisc::Geo::ICoordinateGeodetic &coordinate, const BlackMisc::PhysicalQuantities::CLength &range) const;
//! Register metadata
static void registerMetadata();
//! \brief Update aircraft with data from VATSIM data file
//! \remarks The list used needs to contain the VATSIM data file objects
bool updateWithVatsimDataFileData(CAircraft &aircraftToBeUpdated) const;
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! Register metadata
static void registerMetadata();
};
} //namespace

View File

@@ -62,9 +62,12 @@ namespace BlackMisc
//! \copydoc CValueObject::setPropertyByIndex(variant,index)
virtual void setPropertyByIndex(const QVariant &variant, const BlackMisc::CPropertyIndex &index) override;
//! \copydoc CValueObject::toQVariant
//! \copydoc CValueObject::toQVariant()
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! Get position
const BlackMisc::Geo::CCoordinateGeodetic &getPosition() const { return this->m_position; }

View File

@@ -25,12 +25,6 @@ namespace BlackMisc
//! Construct from a base class object.
CAircraftSituationList(const CSequence<CAircraftSituation> &other);
//! \copydoc CValueObject::toQVariant()
virtual QVariant toQVariant() const
{
return QVariant::fromValue(*this);
}
/*!
* Get a list of situations before dateTime
* \param dateTime
@@ -56,6 +50,13 @@ namespace BlackMisc
* \param seconds
*/
void removeOlderThan(double seconds);
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
};
}
}

View File

@@ -53,6 +53,9 @@ namespace BlackMisc
//! \copydoc CValueObject::toQVariant()
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! Equal operator ==
bool operator ==(const CAirport &other) const;

View File

@@ -11,7 +11,9 @@
#ifndef BLACKMISC_AIRPORTICAO_H
#define BLACKMISC_AIRPORTICAO_H
#include "valueobject.h"
#include "blackmiscfreefunctions.h"
namespace BlackMisc
{
@@ -37,6 +39,9 @@ namespace BlackMisc
//! \copydoc CValueObject::toQVariant()
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! Is empty?
bool isEmpty() const { return this->m_icaoCode.isEmpty(); }

View File

@@ -31,9 +31,6 @@ namespace BlackMisc
//! Construct from a base class object.
CAirportList(const CSequence<CAirport> &other);
//! \copydoc CValueObject::toQVariant()
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! Find 0..n airports by ICAO code
CAirportList findByIcao(const CAirportIcao &icao) const;
@@ -55,6 +52,12 @@ namespace BlackMisc
//! Sort by range from a given coordinate
void sortByRange(const BlackMisc::Geo::CCoordinateGeodetic &position, bool updateDistance);
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! Register metadata
static void registerMetadata();
};

View File

@@ -90,9 +90,6 @@ namespace BlackMisc
//! Flight level?
bool isFlightLevel() const { return FlightLevel == this->m_datum; }
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! Get reference datum (MSL or AGL)
ReferenceDatum getReferenceDatum() const { return m_datum; }
@@ -108,6 +105,12 @@ namespace BlackMisc
//! \copydoc CValueObject::fromJson
void fromJson(const QJsonObject &json) override;
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! \copydoc CValueObject::parseFromString(const QString &value)
void parseFromString(const QString &value) override;

View File

@@ -71,6 +71,9 @@ namespace BlackMisc
//! \copydoc CValueObject::toQVariant()
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! \copydoc CValueObject::toIcon()
virtual BlackMisc::CIcon toIcon() const override { return this->m_callsign.toIcon(); }

View File

@@ -33,9 +33,6 @@ namespace BlackMisc
//! Construct from a base class object.
CAtcStationList(const CSequence<CAtcStation> &other);
//! \copydoc CValueObject::toQVariant()
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! Find 0..n stations by callsign
CAtcStationList findByCallsign(const CCallsign &callsign) const;
@@ -57,9 +54,6 @@ namespace BlackMisc
//! Update distances to coordinate, usually own aircraft's position
void calculateDistancesToPlane(const BlackMisc::Geo::CCoordinateGeodetic &position);
//! Register metadata
static void registerMetadata();
//! Merge with ATC station representing booking information
//! \remarks Can be used if the stored data in this list are online ATC stations
int mergeWithBooking(CAtcStation &bookedAtcStation);
@@ -67,6 +61,16 @@ namespace BlackMisc
//! Merge with the data from the VATSIM data file
//! \remarks Can be used if the stored data in this list are VATSIM data file stations
bool updateFromVatsimDataFileStation(CAtcStation &stationToBeUpdated) const;
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! Register metadata
static void registerMetadata();
};
} //namespace

View File

@@ -12,9 +12,9 @@
#ifndef BLACKMISC_CALLSIGN_H
#define BLACKMISC_CALLSIGN_H
#include "valueobject.h"
#include "propertyindex.h"
#include "icon.h"
#include "blackmiscfreefunctions.h"
namespace BlackMisc
{
@@ -46,12 +46,6 @@ namespace BlackMisc
: m_callsignAsSet(callsign), m_callsign(CCallsign::unifyCallsign(callsign))
{}
//! \copydoc CValueObject::toQVariant()
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::toIcon()
virtual BlackMisc::CIcon toIcon() const override { return CCallsign::convertToIcon(*this); }
//! Is empty?
bool isEmpty() const { return this->m_callsignAsSet.isEmpty(); }
@@ -91,6 +85,15 @@ namespace BlackMisc
//! \copydoc CValueObject::fromJson
virtual void fromJson(const QJsonObject &json) override;
//! \copydoc CValueObject::toQVariant()
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! \copydoc CValueObject::toIcon()
virtual BlackMisc::CIcon toIcon() const override { return CCallsign::convertToIcon(*this); }
//! \copydoc CValueObject::propertyByIndex
virtual QVariant propertyByIndex(const BlackMisc::CPropertyIndex &index) const override;

View File

@@ -33,9 +33,12 @@ namespace BlackMisc
//! Construct from a base class object.
CCallsignList(const CSequence<CCallsign> &other);
//! CValueObject::toQVariant()
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! Register metadata
static void registerMetadata();

View File

@@ -190,6 +190,9 @@ namespace BlackMisc
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! \copydoc CValueObject::getValueHash
virtual uint getValueHash() const override;

View File

@@ -66,12 +66,6 @@ namespace BlackMisc
//! \brief Constructor by CAngle
CHeading(CAngle heading, ReferenceNorth north) : CAngle(heading), m_north(north) {}
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override
{
return QVariant::fromValue(*this);
}
//! \copydoc CValueObject::getValueHash
virtual uint getValueHash() const override;
@@ -90,6 +84,12 @@ namespace BlackMisc
//! \brief Get reference north (magnetic or true)
ReferenceNorth getReferenceNorth() const { return m_north; }
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! \copydoc CValueObject::toJson
virtual QJsonObject toJson() const override;

View File

@@ -13,6 +13,7 @@
#define BLACKMISC_INFORMATIONMESSAGE_H
#include "valueobject.h"
#include "blackmiscfreefunctions.h"
#include <QString>
#include <QDateTime>
@@ -38,15 +39,15 @@ namespace BlackMisc
TAF
};
//! \brief Default constructor.
//! Default constructor.
CInformationMessage() : m_type(CInformationMessage::Unspecified), m_receivedTimestamp(QDateTime::currentDateTimeUtc())
{}
//! \brief Information message of type
//! Information message of type
explicit CInformationMessage(InformationType type) : m_type(type) {}
/*!
* \brief Information message of type
* Information message of type
* \param type
* \param message
*/
@@ -55,56 +56,56 @@ namespace BlackMisc
{}
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override
{
return QVariant::fromValue(*this);
}
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \brief Equal operator ==
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! Equal operator ==
bool operator ==(const CInformationMessage &other) const;
//! \brief operator !=
//! operator !=
bool operator !=(const CInformationMessage &other) const;
//! \brief Get message.
//! Get message.
const QString &getMessage() const { return m_message; }
//! \brief Is a message available
//! Is a message available
bool hasMessage() const { return !m_message.isEmpty(); }
//! \brief Set message
//! Set message
void setMessage(const QString &message)
{
this->m_receivedTimestamp = QDateTime::currentDateTimeUtc();
this->m_message = message;
}
//! \brief Append message part
//! Append message part
void appendMessage(const QString &messagePart)
{
this->m_receivedTimestamp = QDateTime::currentDateTimeUtc();
this->m_message.append(messagePart);
}
//! \brief Type as string
//! Type as string
const QString &getTypeAsString() const;
//! \brief Type
//! Type
InformationType getType() const { return this->m_type; }
//! \brief Set type
//! Set type
void setType(InformationType type) { this->m_type = type; }
//! \brief Timestamp
//! Timestamp
const QDateTime &getReceivedTimestamp() const { return this->m_receivedTimestamp; }
//! \brief Received before n ms
//! Received before n ms
qint64 timeDiffReceivedMs() const
{
return this->m_receivedTimestamp.msecsTo(QDateTime::currentDateTimeUtc());
}
//! \brief Is empty?
//! Is empty?
bool isEmpty() const { return this->m_message.isEmpty(); }
//! \copydoc CValueObject::getValueHash
@@ -116,10 +117,10 @@ namespace BlackMisc
//! \copydoc CValueObject::fromJson
void fromJson(const QJsonObject &json) override;
//! \brief Register metadata
//! Register metadata
static void registerMetadata();
//! \brief Members
//! Members
static const QStringList &jsonMembers();
protected:

View File

@@ -39,9 +39,6 @@ namespace BlackMisc
CModulator(name, activeFrequency, standbyFrequency == CModulator::FrequencyNotSet() ? activeFrequency : standbyFrequency, digits), m_channelSpacing(ChannelSpacing25KHz)
{ }
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! Set active frequency
//! \remarks will be rounded to channel spacing
void setFrequencyActiveMHz(double frequencyMHz);

View File

@@ -12,10 +12,10 @@
#ifndef BLACKMISC_AVIOMODULATORUNIT_H
#define BLACKMISC_AVIOMODULATORUNIT_H
#include <QDBusMetaType>
#include "blackmisc/propertyindex.h"
#include "blackmisc/aviobase.h"
#include "blackmisc/mathematics.h"
#include "blackmisc/blackmiscfreefunctions.h"
using namespace BlackMisc::Math;
@@ -96,6 +96,12 @@ namespace BlackMisc
//! Enabled?
void setEnabled(bool enable) { this->m_enabled = enable;}
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this->derived()); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(derived(), variant); }
//! \copydoc CValueObject::toJson
virtual QJsonObject toJson() const override;
@@ -249,6 +255,12 @@ namespace BlackMisc
qint32 m_volumeOutput; //!< volume output
bool m_enabled; //!< is enabled, used e.g. for mute etc.
//! Easy access to derived class (CRTP template parameter)
AVIO const *derived() const { return static_cast<AVIO const *>(this); }
//! Easy access to derived class (CRTP template parameter)
AVIO *derived() { return static_cast<AVIO *>(this); }
};
} // namespace

View File

@@ -84,12 +84,6 @@ namespace BlackMisc
//! \copydoc CAvionicsBase::validValues
virtual bool validValues() const override;
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override
{
return QVariant::fromValue(*this);
}
//! Transponder mode as string
QString getModeAsString() const
{
@@ -171,6 +165,12 @@ namespace BlackMisc
//! \copydoc CValueObject::fromJson
void fromJson(const QJsonObject &json) override;
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! \copydoc CValueObject::propertyByIndex
virtual QVariant propertyByIndex(const BlackMisc::CPropertyIndex &index) const override;

View File

@@ -40,11 +40,11 @@ namespace BlackMisc
*/
CSelcal(const char *code) : m_code(code) {}
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override
{
return QVariant::fromValue(*this);
}
//! \copydoc CValueObject::toQVariant()
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! Is valid?
bool isValid() const { return CSelcal::isValidCode(this->m_code); }

View File

@@ -46,10 +46,10 @@ namespace BlackMisc
CTrack(BlackMisc::PhysicalQuantities::CAngle track, ReferenceNorth north) : BlackMisc::PhysicalQuantities::CAngle(track), m_north(north) {}
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override
{
return QVariant::fromValue(*this);
}
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! \copydoc CValueObject::getValueHash
virtual uint getValueHash() const override;

View File

@@ -199,8 +199,8 @@ bool BlackMisc::equalQVariants(const QVariant &v1, const QVariant &v2)
if (v1.userType() != v2.userType()) return false;
// I have same types now
const CValueObject *cs1 = CValueObject::fromQVariant(v1);
const CValueObject *cs2 = CValueObject::fromQVariant(v2);
const CValueObject *cs1 = CValueObject::convertFromQVariant(v1);
const CValueObject *cs2 = CValueObject::convertFromQVariant(v2);
if (cs1 && cs2)
{
int c = compare(*cs1, *cs2);
@@ -264,8 +264,8 @@ int BlackMisc::compareQVariants(const QVariant &v1, const QVariant &v2)
// BlackObject
if (v1.type() == QVariant::UserType)
{
const CValueObject *cs1 = CValueObject::fromQVariant(v1);
const CValueObject *cs2 = CValueObject::fromQVariant(v2);
const CValueObject *cs1 = CValueObject::convertFromQVariant(v1);
const CValueObject *cs2 = CValueObject::convertFromQVariant(v2);
if (cs1 && cs2)
{
return compare(*cs1, *cs2);
@@ -321,7 +321,7 @@ int BlackMisc::compareQVariants(const QVariant &v1, const QVariant &v2)
QString BlackMisc::qVariantToString(const QVariant &qv, bool i18n)
{
if (qv.type() != QVariant::UserType) return qv.toString();
const CValueObject *s = CValueObject::fromQVariant(qv);
const CValueObject *s = CValueObject::convertFromQVariant(qv);
if (s)
{
return s->toQString(i18n);

View File

@@ -107,6 +107,18 @@ namespace BlackMisc
*/
QString qVariantToString(const QVariant &qv, bool i18n = false);
/*!
* Checked version from QVariant
*/
template <class T> void setFromQVariant(T *value, const QVariant &variant)
{
Q_ASSERT(variant.canConvert<T>());
if (variant.canConvert<T>())
{
(*value) = variant.value<T>();
}
}
/*!
* Fix variant. Required if a variant "comes in" via DBus,
* and represents a QDBusArgument rather than the real type.

View File

@@ -15,6 +15,7 @@
#include "valueobject.h"
#include "range.h"
#include "indexvariantmap.h"
#include "blackmiscfreefunctions.h"
#include "predicates.h"
#include "json.h"
#include <algorithm>
@@ -93,6 +94,9 @@ namespace BlackMisc
//! \copydoc BlackMisc::CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(derived()); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant< C<T> >(&derived(), variant); }
//! \copydoc BlackMisc::CValueObject::getValueHash
virtual uint getValueHash() const override { return qHash(&derived()); }

View File

@@ -38,10 +38,7 @@ namespace BlackMisc
explicit CCoordinateEcef(const BlackMisc::Math::CVector3D vector) : CVector3DBase(vector.i(), vector.j(), vector.k()) {}
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override
{
return QVariant::fromValue(*this);
}
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \brief x
double x() const

View File

@@ -145,7 +145,10 @@ namespace BlackMisc
const BlackMisc::PhysicalQuantities::CLength &geodeticHeight() const { return this->m_geodeticHeight; }
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! \copydoc CValueObject::propertyByIndex
virtual QVariant propertyByIndex(const BlackMisc::CPropertyIndex &index) const override;

View File

@@ -207,9 +207,12 @@ namespace BlackMisc
removeByValueIf(BlackMisc::Predicates::MemberEqual(membFunc, returnValue));
}
//! \copydoc BlackMisc::CValueObject::toQVariant
//! \copydoc CValueObject::toQVariant()
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! \copydoc BlackMisc::CValueObject::getValueHash
virtual uint getValueHash() const override { return qHash(this); }

View File

@@ -111,6 +111,12 @@ namespace BlackMisc
//! \copydoc CValueObject::toIcon
CIcon toIcon() const override;
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*derived()); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(derived(), variant); }
//! Register metadata
static void registerMetadata();

View File

@@ -12,7 +12,8 @@
#ifndef BLACKMISC_HOTKEYFUNCTION_H
#define BLACKMISC_HOTKEYFUNCTION_H
#include "valueobject.h"
#include "propertyindex.h"
#include "blackmiscfreefunctions.h"
namespace BlackMisc
{
@@ -48,18 +49,11 @@ namespace BlackMisc
//! Set function
void setFunction(const Function &function) { m_function = function; }
//! \copydoc CValueObject::toQVariant
//! \copydoc CValueObject::toQVariant()
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override
{
Q_ASSERT(variant.canConvert<CHotkeyFunction>());
if (variant.canConvert<CHotkeyFunction>())
{
(*this) = variant.value<CHotkeyFunction>();
}
}
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! \copydoc CValueObject::getValueHash
virtual uint getValueHash() const override;

View File

@@ -12,7 +12,8 @@
#ifndef BLACKMISC_KEYBOARDKEY_H
#define BLACKMISC_KEYBOARDKEY_H
#include "valueobject.h"
#include "propertyindex.h"
#include "blackmiscfreefunctions.h"
#include <QStringList>
#include <QKeySequence>
@@ -64,11 +65,11 @@ namespace BlackMisc
//! Destructor
~CKeyboardKey() {}
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override
{
return QVariant::fromValue(*this);
}
//! \copydoc CValueObject::toQVariant()
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! \copydoc CValueObject::getValueHash
virtual uint getValueHash() const override;

View File

@@ -30,7 +30,7 @@ namespace BlackMisc
CKeyboardKeyList(const CSequence<CKeyboardKey> &baseClass);
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! Register metadata
static void registerMetadata();

View File

@@ -31,9 +31,6 @@ namespace BlackMisc
CIcon( CIcons::IconIndex index, const QString &descriptiveText) :
m_index(static_cast<int>(index)), m_descriptiveText(descriptiveText) {}
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! Get descriptive text
const QString &getDescriptiveText() const { return this->m_descriptiveText; }
@@ -65,7 +62,13 @@ namespace BlackMisc
virtual QJsonObject toJson() const override;
//! \copydoc CValueObject::fromJson
void fromJson(const QJsonObject &json) override;
virtual void fromJson(const QJsonObject &json) override;
//! \copydoc CValueObject::toQVariant()
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! Register metadata
static void registerMetadata();

View File

@@ -41,9 +41,6 @@ namespace BlackMisc
//! Single value constructor
CIndexVariantMap(const CPropertyIndex &index, const QVariant &value);
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! Destructor
virtual ~CIndexVariantMap() {}
@@ -92,6 +89,12 @@ namespace BlackMisc
//! \copydoc CValueObject::getValueHash
virtual uint getValueHash() const override;
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! register metadata
static void registerMetadata();

View File

@@ -41,14 +41,6 @@ namespace BlackMisc
this->m_matrix(0, 1) = c2;
this->m_matrix(0, 2) = c3;
}
/*!
* \copydoc CValueObject::toQVariant
*/
virtual QVariant toQVariant() const override
{
return QVariant::fromValue(*this);
}
};
} // namespace

View File

@@ -8,8 +8,8 @@
#include "blackmisc/valueobject.h"
#include "blackmisc/mathvector3dbase.h"
#include "blackmisc/blackmiscfreefunctions.h"
#include <QGenericMatrix>
#include <QDBusMetaType>
namespace BlackMisc
{
@@ -87,6 +87,12 @@ namespace BlackMisc
//! \copydoc CValueObject::getValueHash
virtual uint getValueHash() const override;
//! \copydoc CValueObject::toQVariant()
virtual QVariant toQVariant() const override { return QVariant::fromValue(*derived()); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant<ImplMatrix>(derived(), variant); }
//! \brief Equal operator ==
bool operator ==(const ImplMatrix &other) const
{

View File

@@ -39,14 +39,6 @@ namespace BlackMisc
*/
CVector3D(const CVector3D &other) : CVector3DBase(other) {}
/*!
* \copydoc CValueObject::toQVariant
*/
virtual QVariant toQVariant() const override
{
return QVariant::fromValue(*this);
}
/*!
* \brief i
* \return

View File

@@ -203,7 +203,13 @@ namespace BlackMisc
virtual QJsonObject toJson() const override;
//! \copydoc CValueObject::fromJson
void fromJson(const QJsonObject &json) override;
virtual void fromJson(const QJsonObject &json) override;
//! \copydoc CValueObject::toQVariant()
virtual QVariant toQVariant() const override { return QVariant::fromValue(*derived()); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant<ImplVector>(derived(), variant); }
//! Register metadata
static void registerMetadata();

View File

@@ -30,9 +30,6 @@ namespace BlackMisc
//! Constructor.
CNameVariantPair(const QString &name, const CVariant &variant, const CIcon &icon = CIcon());
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! Get name.
const QString &getName() const { return m_name; }
@@ -87,6 +84,12 @@ namespace BlackMisc
//! \copydoc CValueObject::setPropertyByIndex(variant, index)
virtual void setPropertyByIndex(const QVariant &variant, const BlackMisc::CPropertyIndex &index) override;
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
protected:
//! \copydoc CValueObject::convertToQString()
virtual QString convertToQString(bool i18n = false) const override;

View File

@@ -36,9 +36,12 @@ namespace BlackMisc
//! Get name index
int getNameRowIndex(const QString &name);
//! CValueObject::toQVariant()
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! Register metadata
static void registerMetadata();

View File

@@ -93,9 +93,18 @@ namespace BlackMisc
//! \copydoc CValueObject::getValueHash()
virtual uint getValueHash() const override;
//! \copydoc CValueObject::toQVariant()
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! \copydoc CValueObject::toJson
virtual QJsonObject toJson() const override;
//! \copydoc CValueObject::fromJson
virtual void fromJson(const QJsonObject &json) override;
//! Matches model string?
bool matchesModelString(const QString &modelString, Qt::CaseSensitivity sensitivity) const;
@@ -105,12 +114,6 @@ namespace BlackMisc
//! Register the metatypes
static void registerMetadata();
//! \copydoc CValueObject::toJson
virtual QJsonObject toJson() const override;
//! \copydoc CValueObject::fromJson
virtual void fromJson(const QJsonObject &json) override;
//! Members
static const QStringList &jsonMembers();
};

View File

@@ -35,9 +35,6 @@ namespace BlackMisc
//! Construct from a base class object.
CAircraftMappingList(const CSequence<CAircraftMapping> &other);
//! QVariant, required for DBus QVariant lists
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! Find by ICAO code, empty fields treated as wildcards
CAircraftMappingList findByIcaoCodeWildcard(const BlackMisc::Aviation::CAircraftIcao &searchIcao) const;
@@ -47,9 +44,14 @@ namespace BlackMisc
//! Find by model string
CAircraftMappingList findByModelString(const QString modelString, Qt::CaseSensitivity sensitivity) const;
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! Register metadata
static void registerMetadata();
};
} //namespace

View File

@@ -40,9 +40,6 @@ namespace BlackMisc
//! Constructor.
CAircraftModel(const QString &model, bool isQueriedString) : m_modelString(model), m_queriedModelStringFlag(isQueriedString) {}
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! Equal operator ==
bool operator ==(const CAircraftModel &other) const;
@@ -52,6 +49,12 @@ namespace BlackMisc
//! \copydoc CValueObject::getValueHash
virtual uint getValueHash() const override;
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! \copydoc CValueObject::toJson
virtual QJsonObject toJson() const override;

View File

@@ -60,8 +60,6 @@ namespace BlackMisc
//! Constructor.
CClient(const CUser &user) : m_user(user) {}
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! Equal operator ==
bool operator ==(const CClient &other) const;
@@ -75,12 +73,18 @@ namespace BlackMisc
//! \copydoc CValueObject::toJson
virtual QJsonObject toJson() const override;
//! Callsign used with other client
const BlackMisc::Aviation::CCallsign &getCallsign() const { return this->m_user.getCallsign(); }
//! \copydoc CValueObject::fromJson
void fromJson(const QJsonObject &json) override;
//! \copydoc CValueObject::toQVariant()
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! Callsign used with other client
const BlackMisc::Aviation::CCallsign &getCallsign() const { return this->m_user.getCallsign(); }
//! Get capabilities
CIndexVariantMap getCapabilities() const { return this->m_capabilities; }

View File

@@ -43,9 +43,6 @@ namespace BlackMisc
CServer(const QString &name, const QString &description, const QString &address, qint32 port, const CUser &user, bool isAcceptingConnections = true)
: m_name(name), m_description(description), m_address(address), m_port(port), m_user(user), m_isAcceptingConnections(isAcceptingConnections) {}
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! Get address.
const QString &getAddress() const { return m_address; }
@@ -98,19 +95,25 @@ namespace BlackMisc
virtual QJsonObject toJson() const override;
//! \copydoc CValueObject::fromJson
void fromJson(const QJsonObject &json) override;
virtual void fromJson(const QJsonObject &json) override;
//! Register metadata
static void registerMetadata();
//! \copydoc CValueObject::toQVariant()
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! \copydoc CValueObject::propertyByIndex(int)
virtual QVariant propertyByIndex(const BlackMisc::CPropertyIndex &index) const override;
//! \copydoc CValueObject::setPropertyByIndex(const QVariant &, int index)
virtual void setPropertyByIndex(const QVariant &variant, const BlackMisc::CPropertyIndex &index) override;
//! \copydoc TupleConverter<>::jsonMembers()
static const QStringList &jsonMembers();
//! \copydoc CValueObject::propertyByIndex(int)
QVariant propertyByIndex(const BlackMisc::CPropertyIndex &index) const override;
//! \copydoc CValueObject::setPropertyByIndex(const QVariant &, int index)
void setPropertyByIndex(const QVariant &variant, const BlackMisc::CPropertyIndex &index) override;
//! Register metadata
static void registerMetadata();
protected:
//! \copydoc CValueObject::convertToQString()

View File

@@ -36,6 +36,9 @@ namespace BlackMisc
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! Register metadata
static void registerMetadata();

View File

@@ -168,10 +168,10 @@ namespace BlackMisc
virtual uint getValueHash() const override;
//! \copydoc CValueObject::toQVariant()
virtual QVariant toQVariant() const override
{
return QVariant::fromValue(*this);
}
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! \brief Register metadata
static void registerMetadata();

View File

@@ -50,9 +50,6 @@ namespace BlackMisc
//! Construct from a base class object.
CTextMessageList(const CSequence<CTextMessage> &other);
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const { return QVariant::fromValue(*this); }
//! Private messages
CTextMessageList getPrivateMessages() const;
@@ -71,6 +68,12 @@ namespace BlackMisc
//! Toggle all sender receivers
void toggleSenderRecipients();
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! Register metadata
static void registerMetadata();
};

View File

@@ -57,12 +57,6 @@ namespace BlackMisc
: m_id(id), m_realname(realname), m_email(email), m_password(password), m_callsign(callsign)
{}
//! \copydoc CValueObject::toQVariant()
virtual QVariant toQVariant() const override
{
return QVariant::fromValue(*this);
}
//! Get full name.
QString getRealName() const { return m_realname; }
@@ -126,6 +120,12 @@ namespace BlackMisc
//! \copydoc CValueObject::getValueHash()
virtual uint getValueHash() const override;
//! \copydoc CValueObject::toQVariant()
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! \copydoc CValueObject::toIcon()
virtual BlackMisc::CIcon toIcon() const override { return this->getCallsign().toIcon(); }

View File

@@ -27,8 +27,11 @@ namespace BlackMisc
//! Construct from a base class object.
CUserList(const CSequence &other);
//! QVariant, required for DBus QVariant lists
virtual QVariant asQVariant() const { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! Register metadata
static void registerMetadata();

View File

@@ -13,6 +13,7 @@
//! \file
#include "valueobject.h"
#include "blackmiscfreefunctions.h"
namespace BlackMisc
{
@@ -44,9 +45,6 @@ namespace BlackMisc
//! Constructor.
CVoiceCapabilities(const QString &flightPlanRemarks);
//! \copydoc CValueObject::toQVariant()
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! Get capabilities
VoiceCapabilities getCapabilities() const { return static_cast<VoiceCapabilities>(m_voiceCapabilities); }
@@ -65,6 +63,12 @@ namespace BlackMisc
//! \copydoc CValueObject::getValueHash()
virtual uint getValueHash() const override;
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! \copydoc CValueObject::toJson
virtual QJsonObject toJson() const override;

View File

@@ -31,9 +31,6 @@ namespace BlackMisc
//! \copydoc CPhysicalQuantity(const QString &unitString)
CAcceleration(const QString &unitString) : CPhysicalQuantity(unitString) {}
//! copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! Virtual destructor
virtual ~CAcceleration() {}
};

View File

@@ -9,6 +9,7 @@
#include "iconlist.h"
#include "pqangle.h"
#include "avheading.h"
namespace BlackMisc
{

View File

@@ -55,14 +55,17 @@ namespace BlackMisc
degrees + minutes / 100.0,
CAngleUnit::sexagesimalDegMin()) {}
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! Virtual destructor
virtual ~CAngle() {}
//! \copydoc CValueObject::toIcon
virtual BlackMisc::CIcon toIcon() const override;
//! Virtual destructor
virtual ~CAngle() {}
//! \copydoc CValueObject::toQVariant()
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! Value as factor of PI (e.g. 0.5PI)
double piFactor() const;
@@ -70,8 +73,6 @@ namespace BlackMisc
//! PI as convenience method
static const double &PI();
private:
};
} // namespace
} // namespace

View File

@@ -14,6 +14,7 @@
#include "blackmisc/valueobject.h"
#include "blackmisc/mathematics.h"
#include "blackmisc/blackmiscfreefunctions.h"
#include <QCoreApplication>
#include <QtDBus/QDBusArgument>
#include <QString>
@@ -269,21 +270,24 @@ namespace BlackMisc
CMeasurementUnit() : m_name("none"), m_symbol(""), m_epsilon(0), m_displayDigits(0)
{}
/*!
* \copydoc CValueObject::toQVariant
*/
virtual QVariant toQVariant() const override
{
// used with None!
return QVariant::fromValue(*this);
}
//! Equal operator ==
bool operator == (const CMeasurementUnit &other) const;
//! Unequal operator !=
bool operator != (const CMeasurementUnit &other) const;
//! \copydoc CValueObject::toQVariant()
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! \copydoc CValueObject::getValueHash
virtual uint getValueHash() const override
{
return qHash(this->getName());
}
//! Name such as "meter"
QString getName(bool i18n = false) const
{
@@ -296,14 +300,6 @@ namespace BlackMisc
return i18n ? QCoreApplication::translate("CMeasurementUnit", this->m_symbol.toStdString().c_str()) : this->m_symbol;
}
/*!
* \copydoc CValueObject::getValueHash
*/
virtual uint getValueHash() const override
{
return qHash(this->getName());
}
//! Rounded value
double roundValue(double value, int digits = -1) const;

View File

@@ -35,12 +35,6 @@ namespace BlackMisc
//! \copydoc CPhysicalQuantity(const QString &unitString)
CFrequency(const QString &unitString) : CPhysicalQuantity(unitString) {}
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override
{
return QVariant::fromValue(*this);
}
//! Virtual destructor
virtual ~CFrequency() {}
};

View File

@@ -31,12 +31,6 @@ namespace BlackMisc
//! \copydoc CPhysicalQuantity(const QString &unitString)
CLength(const QString &unitString) : CPhysicalQuantity(unitString) {}
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override
{
return QVariant::fromValue(*this);
}
//! Virtual destructor
virtual ~CLength() {}
};

View File

@@ -33,12 +33,6 @@ namespace BlackMisc
//! \copydoc CPhysicalQuantity(const QString &unitString)
CMass(const QString &unitString) : CPhysicalQuantity(unitString) {}
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override
{
return QVariant::fromValue(*this);
}
//! Virtual destructor
virtual ~CMass() {}
};

View File

@@ -17,6 +17,7 @@
#include "blackmisc/propertyindex.h"
#include "blackmisc/mathematics.h"
#include "blackmisc/pqstring.h"
#include "blackmisc/blackmiscfreefunctions.h"
#include <QtDBus/QDBusMetaType>
#include <QtGlobal>
#include <QString>
@@ -205,6 +206,12 @@ namespace BlackMisc
//! \copydoc CValueObject::getValueHash
virtual uint getValueHash() const override;
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this->derived()); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant<PQ>(derived(), variant); }
//! \copydoc CValueObject::toJson
virtual QJsonObject toJson() const override;

View File

@@ -34,12 +34,6 @@ namespace BlackMisc
//! \copydoc CPhysicalQuantity(const QString &unitString)
CPressure(const QString &unitString) : CPhysicalQuantity(unitString) {}
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override
{
return QVariant::fromValue(*this);
}
//! Virtual destructor
virtual ~CPressure() {}
};

View File

@@ -34,12 +34,6 @@ namespace BlackMisc
//! \copydoc CPhysicalQuantity(const QString &unitString)
CSpeed(const QString &unitString) : CPhysicalQuantity(unitString) {}
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override
{
return QVariant::fromValue(*this);
}
//! Destructor
virtual ~CSpeed() {}
};

View File

@@ -13,6 +13,7 @@
#define BLACKMISC_PQSTRING_H
#include "blackmisc/valueobject.h"
#include "blackmisc/blackmiscfreefunctions.h"
#include <QVariant>
namespace BlackMisc
@@ -69,12 +70,6 @@ namespace BlackMisc
//! Constructor, for values such as 10km/h
CPqString(const QString &value) : m_string(value) {}
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override
{
return QVariant::fromValue(*this);
}
//! \copydoc CValueObject::getMetaTypeId
int getMetaTypeId() const override;
@@ -87,6 +82,12 @@ namespace BlackMisc
//! Unequal operator !=
bool operator !=(const CPqString &other) const;
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! Register metadata
static void registerMetadata();

View File

@@ -33,9 +33,6 @@ namespace BlackMisc
//! \copydoc CPhysicalQuantity(const QString &unitString)
CTemperature(const QString &unitString) : CPhysicalQuantity(unitString) {}
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! Destructor
virtual ~CTemperature() {}
};

View File

@@ -49,9 +49,6 @@ namespace BlackMisc
//! \copydoc CPhysicalQuantity(const QString &unitString)
CTime(const QString &unitString) : CPhysicalQuantity(0, CTimeUnit::nullUnit()) { this->parseFromString(unitString); }
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! Destructor
virtual ~CTime() {}

View File

@@ -16,6 +16,7 @@
#undef min
#include "blackmisc/pqbase.h"
#include "blackmisc/blackmiscfreefunctions.h"
#include <QtDBus/QDBusArgument>
#include <QList>
#include <QtCore/qmath.h>
@@ -56,13 +57,11 @@ namespace BlackMisc
//! Default constructor, required for Qt Metasystem
CLengthUnit() : CMeasurementUnit(defaultUnit()) {}
/*!
* \copydoc CValueObject::toQVariant
*/
virtual QVariant toQVariant() const override
{
return QVariant::fromValue(*this);
}
//! \copydoc CValueObject::toQVariant()
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! Default unit
static const CLengthUnit &defaultUnit() { return m(); }
@@ -171,13 +170,11 @@ namespace BlackMisc
//! Default constructor, required for Qt Metasystem
CAngleUnit() : CMeasurementUnit(defaultUnit()) {}
/*!
* \copydoc CValueObject::toQVariant
*/
virtual QVariant toQVariant() const override
{
return QVariant::fromValue(*this);
}
//! \copydoc CValueObject::toQVariant()
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! Default unit
static const CAngleUnit &defaultUnit() { return deg(); }
@@ -269,13 +266,11 @@ namespace BlackMisc
//! Default constructor, required for Qt Metasystem
CFrequencyUnit() : CMeasurementUnit(defaultUnit()) {}
/*!
* \copydoc CValueObject::toQVariant
*/
virtual QVariant toQVariant() const override
{
return QVariant::fromValue(*this);
}
//! \copydoc CValueObject::toQVariant()
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! Default unit
static const CFrequencyUnit &defaultUnit() { return Hz(); }
@@ -360,13 +355,11 @@ namespace BlackMisc
//! Default constructor, required for Qt Metasystem
CMassUnit() : CMeasurementUnit(defaultUnit()) {}
/*!
* \copydoc CValueObject::toQVariant
*/
virtual QVariant toQVariant() const override
{
return QVariant::fromValue(*this);
}
//! \copydoc CValueObject::toQVariant()
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! Default unit
static const CMassUnit &defaultUnit() { return kg(); }
@@ -461,13 +454,11 @@ namespace BlackMisc
//! Default constructor, required for Qt Metasystem
CPressureUnit() : CMeasurementUnit(defaultUnit()) {}
/*!
* \copydoc CValueObject::toQVariant
*/
virtual QVariant toQVariant() const override
{
return QVariant::fromValue(*this);
}
//! \copydoc CValueObject::toQVariant()
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! Default unit
static const CPressureUnit &defaultUnit() { return hPa(); }
@@ -583,13 +574,11 @@ namespace BlackMisc
//! Default constructor, required for Qt Metasystem
CTemperatureUnit() : CMeasurementUnit(defaultUnit()) {}
/*!
* \copydoc CValueObject::toQVariant
*/
virtual QVariant toQVariant() const override
{
return QVariant::fromValue(*this);
}
//! \copydoc CValueObject::toQVariant()
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! Default unit
static const CTemperatureUnit &defaultUnit() { return C(); }
@@ -669,13 +658,11 @@ namespace BlackMisc
//! Default constructor, required for Qt Metasystem
CSpeedUnit() : CMeasurementUnit(defaultUnit()) {}
/*!
* \copydoc CValueObject::toQVariant
*/
virtual QVariant toQVariant() const override
{
return QVariant::fromValue(*this);
}
//! \copydoc CValueObject::toQVariant()
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! Default unit
static const CSpeedUnit &defaultUnit() { return m_s(); }
@@ -780,13 +767,11 @@ namespace BlackMisc
//! Default constructor, required for Qt Metasystem
CTimeUnit() : CMeasurementUnit(defaultUnit()) {}
/*!
* \copydoc CValueObject::toQVariant
*/
virtual QVariant toQVariant() const override
{
return QVariant::fromValue(*this);
}
//! \copydoc CValueObject::toQVariant()
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! Default unit
static const CTimeUnit &defaultUnit() { return s(); }
@@ -910,13 +895,11 @@ namespace BlackMisc
//! Default constructor, required for Qt Metasystem
CAccelerationUnit() : CMeasurementUnit(defaultUnit()) {}
/*!
* \copydoc CValueObject::toQVariant
*/
virtual QVariant toQVariant() const override
{
return QVariant::fromValue(*this);
}
//! \copydoc CValueObject::toQVariant()
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! Default unit
static const CAccelerationUnit &defaultUnit() { return m_s2(); }

View File

@@ -13,6 +13,7 @@
#define BLACKMISC_PROPERTYINDEX_H
#include "valueobject.h"
#include "blackmiscfreefunctions.h"
#include <initializer_list>
namespace BlackMisc
@@ -95,18 +96,11 @@ namespace BlackMisc
//! \copydoc CValueObject::CPropertyIndexlueHash()
virtual uint getValueHash() const override;
//! CValueObject::toQVariant()
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override
{
Q_ASSERT(variant.canConvert<CPropertyIndex>());
if (variant.canConvert<CPropertyIndex>())
{
(*this) = variant.value<CPropertyIndex>();
}
}
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! \copydoc CValueObject::toJson
virtual QJsonObject toJson() const override;

View File

@@ -40,10 +40,10 @@ namespace BlackMisc
}
//! \copydoc CValueObject::toQVariant()
virtual QVariant toQVariant() const override
{
return QVariant::fromValue(*this);
}
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! Notification flag (play notification?)
bool getNotificationFlag(BlackSound::CNotificationSounds::Notification notification) const;

View File

@@ -15,6 +15,7 @@
#include "propertyindex.h"
#include "hwkeyboardkey.h"
#include "hotkeyfunction.h"
#include "blackmiscfreefunctions.h"
#include <QStringList>
#include <QKeySequence>
@@ -55,14 +56,7 @@ namespace BlackMisc
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override
{
Q_ASSERT(variant.canConvert<CSettingKeyboardHotkey>());
if (variant.canConvert<CSettingKeyboardHotkey>())
{
(*this) = variant.value<CSettingKeyboardHotkey>();
}
}
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! \copydoc CValueObject::getValueHash
virtual uint getValueHash() const override;

View File

@@ -30,23 +30,27 @@ namespace BlackMisc
//! Construct from a base class object.
CSettingKeyboardHotkeyList(const CSequence<CSettingKeyboardHotkey> &baseClass);
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! Contains given hotkey function?
bool containsFunction(const CHotkeyFunction &function) const;
//! Key for given function
BlackMisc::Settings::CSettingKeyboardHotkey keyForFunction(const CHotkeyFunction &function) const;
//! Register metadata
static void registerMetadata();
/*!
* Fill the list with hotkeys
* \param reset true, list will be be reset, otherwise values will not be overridde
*/
void initAsHotkeyList(bool reset = true);
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! Register metadata
static void registerMetadata();
};
} //namespace

View File

@@ -64,10 +64,10 @@ namespace BlackMisc
}
//! \copydoc CValueObject::toQVariant()
virtual QVariant toQVariant() const override
{
return QVariant::fromValue(*this);
}
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! Value object, traffic network server objects
BlackMisc::Network::CServerList getTrafficNetworkServers() const { return m_trafficNetworkServers; }

View File

@@ -87,6 +87,9 @@ namespace BlackMisc
//! \copydoc CValueObject::toQVariant()
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! Type as string
const QString &getTypeAsString() const;

View File

@@ -38,12 +38,14 @@ namespace BlackMisc
//! Find by severity
CStatusMessageList findBySeverity(CStatusMessage::StatusSeverity severity) const;
//! \copydoc CValueObject::asQVariant
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! Register metadata of unit and quantity
static void registerMetadata();
};
}

View File

@@ -103,17 +103,17 @@ namespace BlackMisc
/*
* Return backing streamable object (if any)
*/
const CValueObject *CValueObject::fromQVariant(const QVariant &qv)
const CValueObject *CValueObject::convertFromQVariant(const QVariant &variant)
{
if (!qv.isValid()) return nullptr;
QVariant::Type t = qv.type();
uint ut = qv.userType();
if (!variant.isValid()) return nullptr;
QVariant::Type t = variant.type();
uint ut = variant.userType();
if (t != QVariant::UserType) return nullptr; // not a user type
if (ut <= QVariant::UserType) return nullptr; // complex Qt type
if (qv.canConvert<QDBusArgument>()) return nullptr; // not unstreamed yet
if (variant.canConvert<QDBusArgument>()) return nullptr; // not unstreamed yet
// this cast cannot be dynamic, so the above conditions are crucical
const CValueObject *vo = static_cast<const CValueObject *>(qv.constData());
const CValueObject *vo = static_cast<const CValueObject *>(variant.constData());
return vo;
}

View File

@@ -192,6 +192,9 @@ namespace BlackMisc
//! Virtual method to return CVariant
virtual CVariant toCVariant() const { return CVariant(this->toQVariant()); }
//! Set from QVariant
virtual void fromQVariant(const QVariant &variant) = 0;
//! Contribute to JSON object
virtual QJsonObject toJson() const { QJsonObject json; return json;}
@@ -217,7 +220,7 @@ namespace BlackMisc
virtual QString propertyByIndexAsString(const CPropertyIndex &index, bool i18n = false) const;
//! The stored object as CValueObject
static const CValueObject *fromQVariant(const QVariant &qv);
static const CValueObject *convertFromQVariant(const QVariant &variant);
protected:
//! Default constructor

View File

@@ -26,7 +26,7 @@ namespace BlackMisc
{
if (type() == QVariant::UserType)
{
const CValueObject *s = CValueObject::fromQVariant(m_v); // FIXME this will return garbage if value is not a CValueObject
const CValueObject *s = CValueObject::convertFromQVariant(m_v); // FIXME this will return garbage if value is not a CValueObject
Q_ASSERT(s);
if (s)
{
@@ -133,7 +133,7 @@ namespace BlackMisc
{
// value object?
const QVariant qv = this->toQVariant();
const CValueObject *cv = CValueObject::fromQVariant(qv);
const CValueObject *cv = CValueObject::convertFromQVariant(qv);
if (cv)
{
h = cv->getValueHash();
@@ -171,6 +171,4 @@ namespace BlackMisc
var = fixQVariantFromDbusArgument(dbusVar.variant(), QMetaType::type(qPrintable(typeName)));
return arg;
}
} // namespace

View File

@@ -10,6 +10,7 @@
//! \file
#include "propertyindex.h"
#include "blackmiscfreefunctions.h"
#include <QString>
#ifndef BLACKMISC_VOICEROOM_H
@@ -46,9 +47,6 @@ namespace BlackMisc
//! Constructor.
CVoiceRoom(const QString &voiceRoomUrl, bool connected = false);
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! Get the host name
const QString &getHostname() const { return m_hostname; }
@@ -110,6 +108,12 @@ namespace BlackMisc
//! \copydoc CValueObject::fromJson
void fromJson(const QJsonObject &json) override;
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! Register metadata
static void registerMetadata();

View File

@@ -38,6 +38,9 @@ namespace BlackMisc
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
//! \copydoc CValueObject::fromQVariant
virtual void fromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); }
//! \brief Register metadata
static void registerMetadata();