From 6570a0c9668dbe00f7120b49f72814a76b97b77f Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Thu, 30 Apr 2015 00:31:17 +0200 Subject: [PATCH] Minor tweaks: * Altitude formatter for GUI * borders for CDockWidget * homebase for ATC --- src/blackgui/models/columnformatters.cpp | 10 ++++++++++ src/blackgui/models/columnformatters.h | 16 +++++++++++++++- .../models/simulatedaircraftlistmodel.cpp | 4 ++-- src/blackgui/qss/gui.ini | 2 +- src/blackmisc/aviation/altitude.cpp | 10 +++++++--- src/blackmisc/network/user.cpp | 17 +++++++++++++++-- src/blackmisc/network/user.h | 3 +++ src/blackmisc/pq/length.h | 4 ++-- src/blackmisc/pq/physicalquantity.h | 8 +++----- 9 files changed, 58 insertions(+), 16 deletions(-) diff --git a/src/blackgui/models/columnformatters.cpp b/src/blackgui/models/columnformatters.cpp index 40a932e18..6e1bd4b76 100644 --- a/src/blackgui/models/columnformatters.cpp +++ b/src/blackgui/models/columnformatters.cpp @@ -9,11 +9,13 @@ #include "columnformatters.h" #include "blackmisc/geo/latitude.h" +#include "blackmisc/aviation/altitude.h" #include "blackmisc/variant.h" #include "blackmisc/iconlist.h" #include "blackmisc/icons.h" using namespace BlackMisc; +using namespace BlackMisc::Aviation; namespace BlackGui { @@ -357,5 +359,13 @@ namespace BlackGui return CBoolTextFormatter::displayRole(dataCVariant); } + CVariant CAltitudeFormatter::displayRole(const CVariant &altitude) const + { + CAltitude alt; + alt.convertFromCVariant(altitude); + if (m_flightLevel) { alt.toFlightLevel(); } + return alt.toQString(this->m_useI18n); + } + } // namespace } // namespace diff --git a/src/blackgui/models/columnformatters.h b/src/blackgui/models/columnformatters.h index 5b2af7af4..1e812cb89 100644 --- a/src/blackgui/models/columnformatters.h +++ b/src/blackgui/models/columnformatters.h @@ -268,12 +268,26 @@ namespace BlackGui QString m_formatString = "yyyy-MM-dd HH:mm"; //!< how the value is displayed }; + //! Formatter when column contains an altitude + class CAltitudeFormatter : public CDefaultFormatter + { + public: + //! Constructor + CAltitudeFormatter(bool flightlevel = false, int alignment = alignDefault(), bool i18n = true) : CDefaultFormatter(alignment, i18n), m_flightLevel(flightlevel) {} + + //! \copydoc CDefaultFormatter::displayRole + virtual BlackMisc::CVariant displayRole(const BlackMisc::CVariant &altitude) const override; + + private: + bool m_flightLevel = false; + }; + //! Formatter for physical quantities template class CPhysiqalQuantiyFormatter : public CValueObjectFormatter { public: //! Constructor - CPhysiqalQuantiyFormatter(MU unit = MU::defaultUnit(), int digits = 2, int alignment = alignRightVCenter(), bool withUnit = true, bool i18n = true, QList supportedRoles = roleDisplay() ) : CValueObjectFormatter(alignment, i18n, supportedRoles), m_unit(unit), m_digits(digits), m_withUnit(withUnit) {} + CPhysiqalQuantiyFormatter(MU unit = MU::defaultUnit(), int digits = 2, int alignment = alignRightVCenter(), bool withUnit = true, bool i18n = true, QList supportedRoles = roleDisplay()) : CValueObjectFormatter(alignment, i18n, supportedRoles), m_unit(unit), m_digits(digits), m_withUnit(withUnit) {} //! \copydoc CDefaultFormatter::displayRole virtual BlackMisc::CVariant displayRole(const BlackMisc::CVariant &physicalQuantity) const override diff --git a/src/blackgui/models/simulatedaircraftlistmodel.cpp b/src/blackgui/models/simulatedaircraftlistmodel.cpp index c30e48918..e07d23dcc 100644 --- a/src/blackgui/models/simulatedaircraftlistmodel.cpp +++ b/src/blackgui/models/simulatedaircraftlistmodel.cpp @@ -59,7 +59,7 @@ namespace BlackGui this->m_columns.addColumn(CColumn::standardString("transponder", { CSimulatedAircraft::IndexTransponder, CTransponder::IndexTransponderCodeAndModeFormatted })); this->m_columns.addColumn(CColumn("latitude", { CSimulatedAircraft::IndexSituation, CAircraftSituation::IndexLatitude }, new CLatLonFormatter())); this->m_columns.addColumn(CColumn("longitude", { CSimulatedAircraft::IndexSituation, CAircraftSituation::IndexLongitude }, new CLatLonFormatter())); - this->m_columns.addColumn(CColumn::standardValueObject("altitude", { CSimulatedAircraft::IndexSituation, CAircraftSituation::IndexAltitude }, CDefaultFormatter::alignRightVCenter())); + this->m_columns.addColumn(CColumn("altitude", { CSimulatedAircraft::IndexSituation, CAircraftSituation::IndexAltitude }, new CAltitudeFormatter())); this->m_columns.addColumn(CColumn("gs.", { CSimulatedAircraft::IndexSituation, CAircraftSituation::IndexGroundspeed }, new CAircraftSpeedFormatter())); // default sort order @@ -83,7 +83,7 @@ namespace BlackGui this->m_columns.addColumn(CColumn::standardString("model", { CSimulatedAircraft::IndexModel, CAircraftModel::IndexModelString})); this->m_columns.addColumn(CColumn::standardString("desc.", "description", { CSimulatedAircraft::IndexModel, CAircraftModel::IndexDescription})); this->m_columns.addColumn(CColumn::standardString("type", { CSimulatedAircraft::IndexModel, CAircraftModel::IndexModelTypeAsString})); - this->m_columns.addColumn(CColumn::standardValueObject("altitude", { CSimulatedAircraft::IndexSituation, CAircraftSituation::IndexAltitude }, CDefaultFormatter::alignRightVCenter())); + this->m_columns.addColumn(CColumn("altitude", { CSimulatedAircraft::IndexSituation, CAircraftSituation::IndexAltitude }, new CAltitudeFormatter())); this->m_columns.addColumn(CColumn("gs.", { CSimulatedAircraft::IndexSituation, CAircraftSituation::IndexGroundspeed }, new CAircraftSpeedFormatter())); // default sort order diff --git a/src/blackgui/qss/gui.ini b/src/blackgui/qss/gui.ini index 9c7c03c6b..d0b3e2c92 100644 --- a/src/blackgui/qss/gui.ini +++ b/src/blackgui/qss/gui.ini @@ -16,7 +16,7 @@ margindocked.bottom = 0 ; why the odd numbers?? marginfloating.left = 0 marginfloating.right = 15 -marginfloating.top = 0 +marginfloating.top = 3 marginfloating.bottom = 35 marginfloating.frameless.left = 0 diff --git a/src/blackmisc/aviation/altitude.cpp b/src/blackmisc/aviation/altitude.cpp index 6d24bfb9d..6e182e56b 100644 --- a/src/blackmisc/aviation/altitude.cpp +++ b/src/blackmisc/aviation/altitude.cpp @@ -33,10 +33,14 @@ namespace BlackMisc } else { - QString s = this->CLength::valueRoundedWithUnit(4, i18n); - if (this->getUnit() != CLengthUnit::ft()) + QString s; + if (this->getUnit() == CLengthUnit::m()) { - s.append(" (").append(this->valueRoundedWithUnit(CLengthUnit::ft(), 4, i18n)).append(")"); + s = this->CLength::valueRoundedWithUnit(1, i18n); + } + else + { + s = this->CLength::valueRoundedWithUnit(CLengthUnit::ft(), 0, i18n); } return s.append(this->isMeanSeaLevel() ? " MSL" : " AGL"); } diff --git a/src/blackmisc/network/user.cpp b/src/blackmisc/network/user.cpp index 352bd7cd3..96a6cd96d 100644 --- a/src/blackmisc/network/user.cpp +++ b/src/blackmisc/network/user.cpp @@ -25,12 +25,14 @@ namespace BlackMisc CUser::CUser(const QString &id, const QString &realname, const CCallsign &callsign) : m_id(id.trimmed()), m_realname(realname), m_callsign(callsign) { - this->setRealName(realname); // extracts homebase + this->deriveHomeBaseFromCallsign(); + this->setRealName(realname); // extracts homebase if this is included in real name } CUser::CUser(const QString &id, const QString &realname, const QString &email, const QString &password, const CCallsign &callsign) : m_id(id.trimmed()), m_realname(realname), m_email(email), m_password(password), m_callsign(callsign) { + this->deriveHomeBaseFromCallsign(); this->setRealName(realname); // extracts homebase } @@ -50,9 +52,20 @@ namespace BlackMisc return s; } + void CUser::deriveHomeBaseFromCallsign() + { + if (this->m_callsign.isEmpty()) { return; } + if (this->m_homebase.isEmpty()) + { + if (this->m_callsign.isAtcCallsign()) + { + this->m_homebase = this->m_callsign.getIcaoCode(); + } + } + } + void CUser::setRealName(const QString &realname) { - QString rn(realname.trimmed().simplified()); if (rn.isEmpty()) { diff --git a/src/blackmisc/network/user.h b/src/blackmisc/network/user.h index 5b5e028f5..2797fc6c0 100644 --- a/src/blackmisc/network/user.h +++ b/src/blackmisc/network/user.h @@ -142,6 +142,9 @@ namespace BlackMisc private: BLACK_ENABLE_TUPLE_CONVERSION(CUser) + //! derive homebase from callsign + void deriveHomeBaseFromCallsign(); + QString m_id; QString m_realname; QString m_email; diff --git a/src/blackmisc/pq/length.h b/src/blackmisc/pq/length.h index 3fa809a2e..e331ea79e 100644 --- a/src/blackmisc/pq/length.h +++ b/src/blackmisc/pq/length.h @@ -34,8 +34,8 @@ namespace BlackMisc CLength(const QString &unitString) : CPhysicalQuantity(unitString) {} }; - } -} + } // ns +} // ns Q_DECLARE_METATYPE(BlackMisc::PhysicalQuantities::CLength) diff --git a/src/blackmisc/pq/physicalquantity.h b/src/blackmisc/pq/physicalquantity.h index b1143293c..fa711307b 100644 --- a/src/blackmisc/pq/physicalquantity.h +++ b/src/blackmisc/pq/physicalquantity.h @@ -69,11 +69,9 @@ namespace BlackMisc //! Unit MU getUnit() const; - /*! - * \brief Simply set unit, do no calclulate conversion - * \sa switchUnit - */ - void setUnit(const MU &unit); + //! Simply set unit, do no calclulate conversion + //! \sa switchUnit + void setUnit(const MU &unit) { this->m_unit = unit; } //! Set unit by string void setUnitBySymbol(const QString &unitName);