refs #304, Icons, using new CIcon class

This commit is contained in:
Klaus Basan
2014-08-02 22:03:18 +02:00
parent 5873ec9359
commit 42f89ebeca
20 changed files with 151 additions and 59 deletions

View File

@@ -1,6 +1,7 @@
#include "avatcstation.h"
#include "aviocomsystem.h"
#include "voiceroom.h"
#include "icon.h"
#include "blackmiscfreefunctions.h"
using namespace BlackMisc::PhysicalQuantities;
@@ -319,8 +320,8 @@ namespace BlackMisc
return QVariant(this->m_callsign.asString());
case IndexCallsignAsStringAsSet:
return QVariant(this->m_callsign.getStringAsSet());
case IndexIcon:
return QVariant(this->m_callsign.toIcon());
case IndexPixmap:
return QVariant(this->m_callsign.toPixmap());
case IndexController:
return this->m_controller.toQVariant();
case IndexControllerRealName:

View File

@@ -36,7 +36,7 @@ namespace BlackMisc
enum ColumnIndex
{
IndexCallsign = 0,
IndexIcon, // representing icon
IndexPixmap, // representing icon
IndexCallsignAsString,
IndexCallsignAsStringAsSet,
IndexController,

View File

@@ -8,7 +8,7 @@
*/
#include "avcallsign.h"
#include "iconsnetwork.h"
#include "iconlist.h"
namespace BlackMisc
{
@@ -35,26 +35,26 @@ namespace BlackMisc
/*
* Iconify
*/
const QPixmap &CCallsign::convertToIcon(const CCallsign &callsign)
const CIcon &CCallsign::convertToIcon(const CCallsign &callsign)
{
QString t = callsign.asString().toUpper();
if (t.length() < 3) return CIconsNetworkAndAviation::roleUnknown();
if (t.length() < 3) return CIconList::iconForIndex(CIcons::NetworkRoleUnknown);
t = t.right(3);
if (callsign.getStringAsSet().contains("_"))
{
if ("APP" == t) return CIconsNetworkAndAviation::roleApproach();
if ("GND" == t) return CIconsNetworkAndAviation::roleGround();
if ("TWR" == t) return CIconsNetworkAndAviation::roleTower();
if ("DEL" == t) return CIconsNetworkAndAviation::roleDelivery();
if ("CTR" == t) return CIconsNetworkAndAviation::roleCenter();
if ("SUP" == t) return CIconsNetworkAndAviation::roleSup();
if ("OBS" == t) return CIconsNetworkAndAviation::roleObs();
return CIconsNetworkAndAviation::roleUnknown();
if ("APP" == t) return CIconList::iconForIndex(CIcons::NetworkRoleApproach);
if ("GND" == t) return CIconList::iconForIndex(CIcons::NetworkRoleGround);
if ("TWR" == t) return CIconList::iconForIndex(CIcons::NetworkRoleTower);
if ("DEL" == t) return CIconList::iconForIndex(CIcons::NetworkRoleDelivery);
if ("CTR" == t) return CIconList::iconForIndex(CIcons::NetworkRoleCenter);
if ("SUP" == t) return CIconList::iconForIndex(CIcons::NetworkRoleSup);
if ("OBS" == t) return CIconList::iconForIndex(CIcons::NetworkRoleApproach);
return CIconList::iconForIndex(CIcons::NetworkRoleUnknown);
}
else
{
return CIconsNetworkAndAviation::rolePilot();
return CIconList::iconForIndex(CIcons::NetworkRolePilot);
}
}

View File

@@ -199,6 +199,9 @@ namespace BlackMisc
//! \copydoc CValueObject::fromJson
virtual void fromJson(const QJsonObject &json) override;
//! \copydoc CValueObject::toIcon
virtual CIcon toIcon() const override;
//! Register metadata
static void registerMetadata();

View File

@@ -214,6 +214,39 @@
<file>icons/diagona/icons/compass--minus.png</file>
<file>icons/diagona/icons/compass--pencil.png</file>
<file>icons/diagona/icons/compass--plus.png</file>
<file>icons/diagona/icons/globe.png</file>
<file>icons/diagona/icons/globe-medium.png</file>
<file>icons/diagona/icons/globe-medium-green.png</file>
<file>icons/diagona/icons/globe-place.png</file>
<file>icons/diagona/icons/globe-small-green.png</file>
<file>icons/diagona/icons/script-globe.png</file>
<file>icons/diagona/icons/radio.png</file>
<file>icons/diagona/icons/radio--exclamation.png</file>
<file>icons/diagona/icons/radio-old.png</file>
<file>icons/diagona/icons/radio--plus.png</file>
<file>icons/diagona/icons/arrow-000-medium.png</file>
<file>icons/diagona/icons/arrow-000-small.png</file>
<file>icons/diagona/icons/arrow-045.png</file>
<file>icons/diagona/icons/arrow-045-medium.png</file>
<file>icons/diagona/icons/arrow-045-small.png</file>
<file>icons/diagona/icons/arrow-090.png</file>
<file>icons/diagona/icons/arrow-090-medium.png</file>
<file>icons/diagona/icons/arrow-090-small.png</file>
<file>icons/diagona/icons/arrow-135.png</file>
<file>icons/diagona/icons/arrow-135-medium.png</file>
<file>icons/diagona/icons/arrow-135-small.png</file>
<file>icons/diagona/icons/arrow-180.png</file>
<file>icons/diagona/icons/arrow-180-medium.png</file>
<file>icons/diagona/icons/arrow-180-small.png</file>
<file>icons/diagona/icons/arrow-225.png</file>
<file>icons/diagona/icons/arrow-225-medium.png</file>
<file>icons/diagona/icons/arrow-225-small.png</file>
<file>icons/diagona/icons/arrow-270.png</file>
<file>icons/diagona/icons/arrow-270-medium.png</file>
<file>icons/diagona/icons/arrow-270-small.png</file>
<file>icons/diagona/icons/arrow-315.png</file>
<file>icons/diagona/icons/arrow-315-medium.png</file>
<file>icons/diagona/icons/arrow-315-small.png</file>
</qresource>
<qresource prefix="/own">
<file>icons/own/app.jpg</file>
@@ -257,8 +290,6 @@
<file>icons/qled/round_purple.svg</file>
<file>icons/qled/round_red.svg</file>
<file>icons/qled/round_yellow.svg</file>
<file>icons/qled/screenshot.png</file>
<file>icons/qled/screenshot2.png</file>
<file>icons/qled/square_blue.svg</file>
<file>icons/qled/square_green.svg</file>
<file>icons/qled/square_grey.svg</file>

View File

@@ -13,13 +13,14 @@
#include "mathallclasses.h"
#include "geoallclasses.h"
#include "networkallclasses.h"
#include "settingsblackmiscclasses.h"
#include "audioallclasses.h"
#include "hwallclasses.h"
#include "settingsblackmiscclasses.h"
#include "indexvariantmap.h"
#include "namevariantpairlist.h"
#include "variant.h"
#include "statusmessagelist.h"
#include "audioallclasses.h"
#include "iconlist.h"
#include <QtNetwork/QHostInfo>
#include <QProcessEnvironment>
#include <QSysInfo>
@@ -151,9 +152,10 @@ void BlackMisc::registerMetadata()
CIndexVariantMap::registerMetadata();
CNameVariantPair::registerMetadata();
CNameVariantPairList::registerMetadata();
CStatusMessage::registerMetadata();
CStatusMessageList::registerMetadata();
CIcon::registerMetadata();
CIconList::registerMetadata();
// sub namespaces
PhysicalQuantities::registerMetadata();

View File

@@ -10,6 +10,7 @@
#include "blackmisc/geoearthangle.h"
#include "blackmisc/geolatitude.h"
#include "blackmisc/geolongitude.h"
#include "blackmisc/iconlist.h"
namespace BlackMisc
{
@@ -102,6 +103,14 @@ namespace BlackMisc
return CAngle::compareImpl(other);
}
/*
* Icon
*/
template <class LATorLON> CIcon CEarthAngle<LATorLON>::toIcon() const
{
return BlackMisc::CIconList::iconForIndex(CIcons::GeoPosition);
}
// see here for the reason of thess forward instantiations
// http://www.parashift.com/c++-faq/separate-template-class-defn-from-decl.html
template class CEarthAngle<CLatitude>;

View File

@@ -156,6 +156,8 @@ namespace BlackMisc
return l;
}
//! \copydoc CValueObject::toIcon
CIcon toIcon() const override;
//! Register metadata
static void registerMetadata();

View File

@@ -8,6 +8,7 @@
*/
#include "namevariantpair.h"
#include "iconlist.h"
#include "blackmisc/blackmiscfreefunctions.h"
namespace BlackMisc
@@ -16,10 +17,26 @@ namespace BlackMisc
/*
* Constructor
*/
CNameVariantPair::CNameVariantPair(const QString &name, const CVariant &variant)
: m_name(name), m_variant(variant)
CNameVariantPair::CNameVariantPair(const QString &name, const CVariant &variant, const CIcon &icon)
: m_name(name), m_variant(variant), m_icon(icon)
{ }
/*
* Icon
*/
const CIcon &CNameVariantPair::getIcon() const
{
return this->m_icon;
}
/*
* Icon?
*/
bool CNameVariantPair::hasIcon() const
{
return this->getIcon().isSet();
}
/*
* Convert to string
*/
@@ -108,6 +125,10 @@ namespace BlackMisc
return QVariant(this->m_name);
case IndexVariant:
return this->m_variant.toQVariant();
case IndexIcon:
return this->m_icon.toQVariant();
case IndexPixmap:
return this->m_icon.toPixmap();
default:
break;
}
@@ -130,6 +151,17 @@ namespace BlackMisc
case IndexVariant:
this->m_variant = variant;
break;
case IndexIcon:
if (variant.canConvert<int>())
{
CIcons::IconIndexes index = static_cast<CIcons::IconIndexes>(variant.toInt());
this->m_icon = CIconList::iconForIndex(index);
}
else
{
this->m_icon = variant.value<BlackMisc::CIcon>();
}
break;
default:
Q_ASSERT_X(false, "CNameVariantPair", "index unknown");
break;

View File

@@ -14,6 +14,7 @@
#include "variant.h"
#include "valueobject.h"
#include "icon.h"
namespace BlackMisc
{
@@ -27,7 +28,7 @@ namespace BlackMisc
CNameVariantPair() {}
//! Constructor.
CNameVariantPair(const QString &name, const CVariant &variant);
CNameVariantPair(const QString &name, const CVariant &variant, const CIcon &icon = CIcon());
//! \copydoc CValueObject::toQVariant
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }
@@ -44,6 +45,12 @@ namespace BlackMisc
//! Set variant.
void setVariant(const CVariant &variant) { m_variant = variant; }
//! Icon
const CIcon &getIcon() const;
//! Has icon
bool hasIcon() const;
//! Equal operator ==
bool operator ==(const CNameVariantPair &other) const;
@@ -70,6 +77,8 @@ namespace BlackMisc
{
IndexName = 0,
IndexVariant,
IndexIcon,
IndexPixmap
};
//! \copydoc CValueObject::propertyByIndex()
@@ -99,12 +108,13 @@ namespace BlackMisc
private:
BLACK_ENABLE_TUPLE_CONVERSION(CNameVariantPair)
QString m_name;
QString m_name;
CVariant m_variant;
CIcon m_icon; //!< optional icon
};
} // namespace
BLACK_DECLARE_TUPLE_CONVERSION(BlackMisc::CNameVariantPair, (o.m_name, o.m_variant))
BLACK_DECLARE_TUPLE_CONVERSION(BlackMisc::CNameVariantPair, (o.m_name, o.m_variant, o.m_icon))
Q_DECLARE_METATYPE(BlackMisc::CNameVariantPair)
#endif // guard