From 5d93144c3cc08932f47b6757658d6d2481a48d7d Mon Sep 17 00:00:00 2001 From: Roland Winklmeier Date: Sat, 26 Mar 2016 21:22:34 +0100 Subject: [PATCH] Remove enum coverage from CCloudLayer and calculate it from percentage refs #612 --- src/blackmisc/weather/cloudlayer.cpp | 36 +++++++++++++++++++++------- src/blackmisc/weather/cloudlayer.h | 8 +++---- 2 files changed, 30 insertions(+), 14 deletions(-) diff --git a/src/blackmisc/weather/cloudlayer.cpp b/src/blackmisc/weather/cloudlayer.cpp index 53aad08d4..18ab79812 100644 --- a/src/blackmisc/weather/cloudlayer.cpp +++ b/src/blackmisc/weather/cloudlayer.cpp @@ -24,8 +24,10 @@ namespace BlackMisc CCloudLayer::CCloudLayer(BlackMisc::Aviation::CAltitude base, BlackMisc::Aviation::CAltitude top, Coverage coverage) : - m_base(base), m_top(top), m_coverage(coverage) - { } + m_base(base), m_top(top) + { + setCoverage(coverage); + } CCloudLayer::CCloudLayer(BlackMisc::Aviation::CAltitude base, BlackMisc::Aviation::CAltitude top, @@ -34,8 +36,24 @@ namespace BlackMisc Clouds clouds, Coverage coverage) : m_base(base), m_top(top), m_precipitationRate(precipitationRate), - m_precipitation(precipitation), m_clouds(clouds), m_coverage(coverage) - { } + m_precipitation(precipitation), m_clouds(clouds) + { + setCoverage(coverage); + } + + void CCloudLayer::setCoverage(Coverage coverage) + { + m_coveragePercent = 100 * coverage / 4; + } + + CCloudLayer::Coverage CCloudLayer::getCoverage() const + { + if (m_coveragePercent > 80) { return Overcast; } + if (m_coveragePercent > 60 && m_coveragePercent <= 80) { return Broken; } + if (m_coveragePercent > 40 && m_coveragePercent <= 60) { return Scattered; } + if (m_coveragePercent > 20 && m_coveragePercent <= 40) { return Few; } + return None; + } CVariant CCloudLayer::propertyByIndex(const BlackMisc::CPropertyIndex &index) const { @@ -47,8 +65,8 @@ namespace BlackMisc return CVariant::fromValue(m_base); case IndexTop: return CVariant::fromValue(m_top); - case IndexCoverage: - return CVariant::fromValue(m_coverage); + case IndexCoveragePercent: + return CVariant::fromValue(m_coveragePercent); default: return CValueObject::propertyByIndex(index); } @@ -66,8 +84,8 @@ namespace BlackMisc case IndexTop: setTop(variant.value()); break; - case IndexCoverage: - setCoverage(variant.value()); + case IndexCoveragePercent: + setCoveragePercent(variant.value()); break; default: CValueObject::setPropertyByIndex(variant, index); @@ -86,7 +104,7 @@ namespace BlackMisc { Overcast, "overcast" } }; - return QString("%1 from %2 to %3").arg(hash.value(m_coverage), m_base.toQString(), m_top.toQString()); + return QString("%1 from %2 to %3").arg(hash.value(getCoverage()), m_base.toQString(), m_top.toQString()); } } // namespace diff --git a/src/blackmisc/weather/cloudlayer.h b/src/blackmisc/weather/cloudlayer.h index 0de143a26..840ba93ac 100644 --- a/src/blackmisc/weather/cloudlayer.h +++ b/src/blackmisc/weather/cloudlayer.h @@ -60,7 +60,7 @@ namespace BlackMisc { IndexBase = BlackMisc::CPropertyIndex::GlobalIndexCCloudLayer, IndexTop, - IndexCoverage + IndexCoveragePercent }; //! Default constructor. @@ -110,10 +110,10 @@ namespace BlackMisc Clouds getClouds() const { return m_clouds; } //! Set coverage - void setCoverage(Coverage coverage) { m_coverage = coverage; } + void setCoverage(Coverage coverage); //! Get coverage - Coverage getCoverage() const { return m_coverage; } + Coverage getCoverage() const; //! Set coverage in % void setCoveragePercent(int coverage) { m_coveragePercent = coverage; } @@ -136,7 +136,6 @@ namespace BlackMisc int m_precipitationRate = 0; Precipitation m_precipitation = NoPrecipitation; Clouds m_clouds = NoClouds; - Coverage m_coverage; int m_coveragePercent; BLACK_METACLASS( @@ -146,7 +145,6 @@ namespace BlackMisc BLACK_METAMEMBER(precipitationRate), BLACK_METAMEMBER(precipitation), BLACK_METAMEMBER(clouds), - BLACK_METAMEMBER(coverage), BLACK_METAMEMBER(coveragePercent) ); };