From a6ebfc0e0b7d37d2293db3618efcbc430577b396 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sun, 31 Aug 2014 15:04:52 +0200 Subject: [PATCH] Bug fixes and improvements for PropertyIndex discovered during refs #319, mainly contributing to refs #314 * Start index 10 instead 0 for CValueObject (easier to detect bugs) * Fixed wrong indexes * Asserts in CPropertyIndex * Used Icon instead of QPixpmap with indexes, icons are sortable and have a tooltip * Removed redundant toQVariant methods --- src/blackmisc/avaircraftsituation.h | 31 ++++++++-------- src/blackmisc/aviotransponder.h | 5 +-- src/blackmisc/geolatitude.h | 3 -- src/blackmisc/geolongitude.h | 3 -- src/blackmisc/namevariantpair.cpp | 14 +++----- src/blackmisc/namevariantpair.h | 4 +-- src/blackmisc/nwclient.cpp | 4 +++ src/blackmisc/nwclient.h | 6 ++-- src/blackmisc/nwserver.h | 2 +- src/blackmisc/propertyindex.cpp | 3 ++ src/blackmisc/propertyindex.h | 42 ++++++++++++---------- src/blackmisc/setkeyboardhotkey.h | 2 +- src/blackmisc/valueobject.h | 2 +- src/blacksim/fscommon/aircraftcfgentries.h | 2 +- 14 files changed, 64 insertions(+), 59 deletions(-) diff --git a/src/blackmisc/avaircraftsituation.h b/src/blackmisc/avaircraftsituation.h index 4ce475fe0..9cc667a62 100644 --- a/src/blackmisc/avaircraftsituation.h +++ b/src/blackmisc/avaircraftsituation.h @@ -29,6 +29,22 @@ namespace BlackMisc class CAircraftSituation : public BlackMisc::CValueObject, public BlackMisc::Geo::ICoordinateGeodetic { public: + + //! Properties by index + enum ColumnIndex + { + IndexPosition = BlackMisc::CPropertyIndex::GlobalIndexCAircraftSituation, + IndexLatitude, + IndexLongitude, + IndexAltitude, + IndexHeading, + IndexBank, + IndexPitch, + IndexGroundspeed, + IndexTimeStamp, + IndexTimeStampFormatted + }; + //! Default constructor. CAircraftSituation() : m_timestamp(QDateTime::currentDateTimeUtc()) {} @@ -41,21 +57,6 @@ namespace BlackMisc : m_position(position), m_altitude(altitude), m_heading(heading), m_pitch(pitch), m_bank(bank), m_groundspeed(gs), m_timestamp(QDateTime::currentDateTimeUtc()) {} - //! Properties by index - enum ColumnIndex - { - IndexPosition, - IndexLatitude, - IndexLongitude, - IndexAltitude, - IndexHeading, - IndexBank, - IndexPitch, - IndexGroundspeed, - IndexTimeStamp, - IndexTimeStampFormatted - }; - //! \copydoc CValueObject::propertyByIndex(index) virtual QVariant propertyByIndex(const BlackMisc::CPropertyIndex &index) const override; diff --git a/src/blackmisc/aviotransponder.h b/src/blackmisc/aviotransponder.h index 4aaae74c2..e099b6d01 100644 --- a/src/blackmisc/aviotransponder.h +++ b/src/blackmisc/aviotransponder.h @@ -35,8 +35,9 @@ namespace BlackMisc }; //! Indexes - enum ColumnIndex { - IndexMode, + enum ColumnIndex + { + IndexMode = BlackMisc::CPropertyIndex::GlobalIndexCTransponder, IndexModeAsString, IndexTransponderCode, IndexTransponderCodeFormatted, diff --git a/src/blackmisc/geolatitude.h b/src/blackmisc/geolatitude.h index 1bef5b32f..4407d4d75 100644 --- a/src/blackmisc/geolatitude.h +++ b/src/blackmisc/geolatitude.h @@ -45,9 +45,6 @@ namespace BlackMisc //! Init by double value CLatitude(double value, const BlackMisc::PhysicalQuantities::CAngleUnit &unit) : CEarthAngle(value, unit) {} - //! \copydoc CValueObject::toQVariant - virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); } - //! Virtual destructor virtual ~CLatitude() {} }; diff --git a/src/blackmisc/geolongitude.h b/src/blackmisc/geolongitude.h index 08c657444..0b947fdef 100644 --- a/src/blackmisc/geolongitude.h +++ b/src/blackmisc/geolongitude.h @@ -42,9 +42,6 @@ namespace BlackMisc //! Init by double value CLongitude(double value, const BlackMisc::PhysicalQuantities::CAngleUnit &unit) : CEarthAngle(value, unit) {} - //! \copydoc CValueObject::toQVariant - virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); } - //! Virtual destructor virtual ~CLongitude() {} }; diff --git a/src/blackmisc/namevariantpair.cpp b/src/blackmisc/namevariantpair.cpp index 0ed4e360f..4cd2bf1f3 100644 --- a/src/blackmisc/namevariantpair.cpp +++ b/src/blackmisc/namevariantpair.cpp @@ -127,17 +127,13 @@ namespace BlackMisc return QVariant(this->m_name); case IndexVariant: return this->m_variant.toQVariant(); - case IndexCallsignIcon: + case IndexIcon: return this->m_icon.toQVariant(); case IndexPixmap: return this->m_icon.toPixmap(); default: - break; + return CValueObject::propertyByIndex(index); } - - Q_ASSERT_X(false, "CNameVariantPair", "index unknown"); - QString m = QString("no property, index ").append(index.toQString()); - return QVariant::fromValue(m); } /* @@ -159,8 +155,8 @@ namespace BlackMisc case IndexVariant: this->m_variant = variant; break; - case IndexCallsignIcon: - if (variant.canConvert()) + case IndexIcon: + if (variant.type() == QMetaType::Int) { CIcons::IconIndex index = static_cast(variant.toInt()); this->m_icon = CIconList::iconForIndex(index); @@ -171,7 +167,7 @@ namespace BlackMisc } break; default: - Q_ASSERT_X(false, "CNameVariantPair", "index unknown"); + CValueObject::setPropertyByIndex(variant, index); break; } } diff --git a/src/blackmisc/namevariantpair.h b/src/blackmisc/namevariantpair.h index 6ee23a835..86cebc1dc 100644 --- a/src/blackmisc/namevariantpair.h +++ b/src/blackmisc/namevariantpair.h @@ -72,9 +72,9 @@ namespace BlackMisc //! Properties by index enum ColumnIndex { - IndexName = 0, + IndexName = BlackMisc::CPropertyIndex::GlobalIndexCNameVariantPair, IndexVariant, - IndexCallsignIcon, + IndexIcon, IndexPixmap }; diff --git a/src/blackmisc/nwclient.cpp b/src/blackmisc/nwclient.cpp index 6820a35c9..b91527e06 100644 --- a/src/blackmisc/nwclient.cpp +++ b/src/blackmisc/nwclient.cpp @@ -197,6 +197,10 @@ namespace BlackMisc return this->m_voiceCapabilities.propertyByIndex(index.copyFrontRemoved()); case IndexVoiceCapabilitiesPixmap: return QVariant(this->m_voiceCapabilities.toPixmap()); + case IndexVoiceCapabilitiesIcon: + return QVariant(this->m_voiceCapabilities.toIcon().toQVariant()); + case IndexVoiceCapabilitiesString: + return QVariant(this->m_voiceCapabilities.toQString(true)); default: return CValueObject::propertyByIndex(index); } diff --git a/src/blackmisc/nwclient.h b/src/blackmisc/nwclient.h index 40f5529a4..0675babb6 100644 --- a/src/blackmisc/nwclient.h +++ b/src/blackmisc/nwclient.h @@ -40,13 +40,14 @@ namespace BlackMisc IndexCallsign, IndexVoiceCapabilities, IndexVoiceCapabilitiesString, - IndexVoiceCapabilitiesPixmap + IndexVoiceCapabilitiesPixmap, + IndexVoiceCapabilitiesIcon }; //! The Capabilities enum enum Capabilities { - FsdWithInterimPositions, + FsdWithInterimPositions = BlackMisc::CPropertyIndex::GlobalIndexAbuseMode, FsdWithModelDescription, FsdAtisCanBeReceived }; @@ -60,7 +61,6 @@ namespace BlackMisc //! Constructor. CClient(const CUser &user) : m_user(user) {} - //! Equal operator == bool operator ==(const CClient &other) const; diff --git a/src/blackmisc/nwserver.h b/src/blackmisc/nwserver.h index 6cd3e872a..4c844e190 100644 --- a/src/blackmisc/nwserver.h +++ b/src/blackmisc/nwserver.h @@ -28,7 +28,7 @@ namespace BlackMisc //! Properties by index enum ColumnIndex { - IndexName = 0, + IndexName = BlackMisc::CPropertyIndex::GlobalIndexCServer, IndexDescription, IndexAddress, IndexPort, diff --git a/src/blackmisc/propertyindex.cpp b/src/blackmisc/propertyindex.cpp index 921c7e872..e406c667b 100644 --- a/src/blackmisc/propertyindex.cpp +++ b/src/blackmisc/propertyindex.cpp @@ -23,6 +23,7 @@ namespace BlackMisc */ CPropertyIndex::CPropertyIndex(int singleProperty) { + Q_ASSERT(singleProperty >= static_cast(GlobalIndexCValueObject)); this->m_indexes.append(singleProperty); this->listToString(); } @@ -152,6 +153,7 @@ namespace BlackMisc QString l; foreach(int i, this->m_indexes) { + Q_ASSERT(i >= static_cast(GlobalIndexCValueObject)); if (!l.isEmpty()) { l.append(";"); } l.append(QString::number(i)); } @@ -172,6 +174,7 @@ namespace BlackMisc bool ok; int i = index.toInt(&ok); Q_ASSERT(ok); + Q_ASSERT(i >= static_cast(GlobalIndexCValueObject)); this->m_indexes.append(i); } } diff --git a/src/blackmisc/propertyindex.h b/src/blackmisc/propertyindex.h index 49b29e601..b4c195b78 100644 --- a/src/blackmisc/propertyindex.h +++ b/src/blackmisc/propertyindex.h @@ -33,23 +33,29 @@ namespace BlackMisc //! Global index, make sure the indexes are unqiue (for using them in class hierarchy) enum GlobalIndex { - GlobalIndexCValueObject = 0, - GlobalIndexCPhysicalQuantity = 100, - GlobalIndexCStatusMessage = 200, - GlobalIndexCCallsign = 1000, - GlobalIndexCAircraftIcao = 1100, - GlobalIndexCAircraft = 1200, - GlobalIndexCAtcStation = 1300, - GlobalIndexCAirport = 1400, - GlobalIndexCModulator = 2000, - GlobalIndexICoordinateGeodetic = 3000, - GlobalIndexCCoordinateGeodetic = 3100, - GlobalIndexCClient = 4000, - GlobalIndexCUser = 4100, - GlobalIndexCAircraftModel = 4200, - GlobalIndexCVoiceRoom = 5000, - GlobalIndexCAircraftMapping = 6000, - GlobalIndexCAircraftCfgEntries = 6100 + GlobalIndexCValueObject = 10, // GlobalIndexCValueObject needs to be set manually in CValueObject + GlobalIndexCPhysicalQuantity = 100, + GlobalIndexCStatusMessage = 200, + GlobalIndexCNameVariantPair = 300, + GlobalIndexCCallsign = 1000, + GlobalIndexCAircraftIcao = 1100, + GlobalIndexCAircraft = 1200, + GlobalIndexCAircraftSituation = 1300, + GlobalIndexCAtcStation = 1400, + GlobalIndexCAirport = 1500, + GlobalIndexCModulator = 2000, + GlobalIndexCTransponder = 2100, + GlobalIndexICoordinateGeodetic = 3000, + GlobalIndexCCoordinateGeodetic = 3100, + GlobalIndexCClient = 4000, + GlobalIndexCUser = 4100, + GlobalIndexCServer = 4200, + GlobalIndexCAircraftModel = 4300, + GlobalIndexCVoiceRoom = 5000, + GlobalIndexCSettingKeyboardHotkey = 6000, + GlobalIndexCAircraftMapping = 7000, + GlobalIndexCAircraftCfgEntries = 7100, + GlobalIndexAbuseMode = 20000 // property index abused as map key or otherwise }; //! Default constructor. @@ -64,7 +70,7 @@ namespace BlackMisc //! Construct from a base class object. CPropertyIndex(const QList &indexes); - //! From string + //! From string CPropertyIndex(const QString &indexes); //! Copy with first element removed diff --git a/src/blackmisc/setkeyboardhotkey.h b/src/blackmisc/setkeyboardhotkey.h index 0bbf785c0..2ce4794f6 100644 --- a/src/blackmisc/setkeyboardhotkey.h +++ b/src/blackmisc/setkeyboardhotkey.h @@ -31,7 +31,7 @@ namespace BlackMisc //! Properties by index enum ColumnIndex { - IndexKey = 0, + IndexKey = BlackMisc::CPropertyIndex::GlobalIndexCSettingKeyboardHotkey, IndexKeyAsString, IndexKeyAsStringRepresentation, IndexModifier1, diff --git a/src/blackmisc/valueobject.h b/src/blackmisc/valueobject.h index 36e50d940..c60ccd7a8 100644 --- a/src/blackmisc/valueobject.h +++ b/src/blackmisc/valueobject.h @@ -163,7 +163,7 @@ namespace BlackMisc //! Base class enums enum ColumnIndex { - IndexPixmap, + IndexPixmap = 10, // manually set to avoid circular dependencies IndexIcon, IndexString }; diff --git a/src/blacksim/fscommon/aircraftcfgentries.h b/src/blacksim/fscommon/aircraftcfgentries.h index 55c03f90b..0dbdf5d15 100644 --- a/src/blacksim/fscommon/aircraftcfgentries.h +++ b/src/blacksim/fscommon/aircraftcfgentries.h @@ -32,7 +32,7 @@ namespace BlackSim //! Properties by index enum ColumnIndex { - IndexEntryIndex = BlackMisc::CPropertyIndex::GlobalIndexCAircraftModel, + IndexEntryIndex = BlackMisc::CPropertyIndex::GlobalIndexCAircraftCfgEntries, IndexFilePath, IndexTitle, IndexAtcType,