diff --git a/src/blackgui/userlistmodel.cpp b/src/blackgui/userlistmodel.cpp index 17126523f..fe5efe48a 100644 --- a/src/blackgui/userlistmodel.cpp +++ b/src/blackgui/userlistmodel.cpp @@ -13,6 +13,7 @@ namespace BlackGui CUserListModel::CUserListModel(QObject *parent) : CListModelBase("ViewUserList", parent) { + this->m_columns.addColumn(CUser::IndexCallsignIcon, ""); this->m_columns.addColumn(CUser::IndexRealName, "realname"); this->m_columns.addColumn(CUser::IndexCallsign, "callsign"); this->m_columns.addColumn(CUser::IndexId, "userid"); @@ -24,4 +25,22 @@ namespace BlackGui (void)QT_TRANSLATE_NOOP("ViewUserList", "userid"); (void)QT_TRANSLATE_NOOP("ViewUserList", "email"); } + + /* + * Display icons + */ + QVariant CUserListModel::data(const QModelIndex &modelIndex, int role) const + { + // shortcut, fast check + if (role != Qt::DecorationRole) return CListModelBase::data(modelIndex, role); + if (this->columnToPropertyIndex(modelIndex.column()) == CUser::IndexCallsignIcon) + { + if (role == Qt::DecorationRole) + { + CUser u = this->at(modelIndex); + return u.toIcon(); + } + } + return CListModelBase::data(modelIndex, role); + } } diff --git a/src/blackgui/userlistmodel.h b/src/blackgui/userlistmodel.h index da8010c65..62f6709c2 100644 --- a/src/blackgui/userlistmodel.h +++ b/src/blackgui/userlistmodel.h @@ -26,6 +26,9 @@ namespace BlackGui * \brief Destructor */ virtual ~CUserListModel() {} + + //! \copydoc CListModelBase::data + QVariant data(const QModelIndex &modelIndex, int role = Qt::DisplayRole) const; }; } #endif // guard diff --git a/src/blackmisc/avcallsign.cpp b/src/blackmisc/avcallsign.cpp index 460f871ab..51122fe00 100644 --- a/src/blackmisc/avcallsign.cpp +++ b/src/blackmisc/avcallsign.cpp @@ -41,6 +41,38 @@ namespace BlackMisc return unified; } + /* + * Iconify + */ + const QPixmap &CCallsign::convertToIcon(const CCallsign &callsign) + { + static const QPixmap app(QPixmap(":/blackmisc/icons/question.png").scaledToWidth(16, Qt::SmoothTransformation)); + static const QPixmap gnd(QPixmap(":/blackmisc/icons/question.png").scaledToWidth(16, Qt::SmoothTransformation)); + static const QPixmap del(QPixmap(":/blackmisc/icons/question.png").scaledToWidth(16, Qt::SmoothTransformation)); + static const QPixmap twr(QPixmap(":/blackmisc/icons/question.png").scaledToWidth(16, Qt::SmoothTransformation)); + static const QPixmap pilot(QPixmap(":/blackmisc/icons/aeropuerto.png").scaledToWidth(16, Qt::SmoothTransformation)); + static const QPixmap sup(":/blackmisc/icons/SUP.png"); + static const QPixmap unknown(QPixmap(":/blackmisc/icons/question.png").scaledToWidth(16, Qt::SmoothTransformation)); + + QString t = callsign.asString().toUpper(); + if (t.length() < 3) return unknown; + t = t.right(3); + + if (callsign.getStringAsSet().contains("_")) + { + if ("APP" == t) return app; + if ("GND" == t) return gnd; + if ("TWR" == t) return twr; + if ("DEL" == t) return del; + if ("SUP" == t) return sup; + return unknown; + } + else + { + return pilot; + } + } + /* * Callsign as Observer */ diff --git a/src/blackmisc/avcallsign.h b/src/blackmisc/avcallsign.h index 196eca901..ec10320da 100644 --- a/src/blackmisc/avcallsign.h +++ b/src/blackmisc/avcallsign.h @@ -51,6 +51,12 @@ namespace BlackMisc return QVariant::fromValue(*this); } + //! \copydoc CValueObject::toIcon() + virtual const QPixmap &toIcon() const override + { + return CCallsign::convertToIcon(*this); + } + /*! * \brief Is empty? * \return @@ -168,6 +174,9 @@ namespace BlackMisc */ static QString unifyCallsign(const QString &callsign); + //! \representing icon + static const QPixmap &convertToIcon(const CCallsign &callsign); + private: QString m_callsignAsSet; QString m_callsign; diff --git a/src/blackmisc/blackmisc.qrc b/src/blackmisc/blackmisc.qrc index f8107af05..a36a9d972 100644 --- a/src/blackmisc/blackmisc.qrc +++ b/src/blackmisc/blackmisc.qrc @@ -9,5 +9,16 @@ icons/information.png icons/question.png icons/warning.png + icons/C1.png + icons/C3.png + icons/I1.png + icons/I3.png + icons/MNT.png + icons/OBS.png + icons/S1.png + icons/S2.png + icons/S3.png + icons/SUP.png + icons/aeropuerto.png diff --git a/src/blackmisc/icons/C1.png b/src/blackmisc/icons/C1.png new file mode 100644 index 000000000..8f62b78d7 Binary files /dev/null and b/src/blackmisc/icons/C1.png differ diff --git a/src/blackmisc/icons/C3.png b/src/blackmisc/icons/C3.png new file mode 100644 index 000000000..27026306c Binary files /dev/null and b/src/blackmisc/icons/C3.png differ diff --git a/src/blackmisc/icons/I1.png b/src/blackmisc/icons/I1.png new file mode 100644 index 000000000..6d6c12dc9 Binary files /dev/null and b/src/blackmisc/icons/I1.png differ diff --git a/src/blackmisc/icons/I3.png b/src/blackmisc/icons/I3.png new file mode 100644 index 000000000..fecfd3d0a Binary files /dev/null and b/src/blackmisc/icons/I3.png differ diff --git a/src/blackmisc/icons/MNT.png b/src/blackmisc/icons/MNT.png new file mode 100644 index 000000000..83ae1de59 Binary files /dev/null and b/src/blackmisc/icons/MNT.png differ diff --git a/src/blackmisc/icons/OBS.png b/src/blackmisc/icons/OBS.png new file mode 100644 index 000000000..a9a808d33 Binary files /dev/null and b/src/blackmisc/icons/OBS.png differ diff --git a/src/blackmisc/icons/S1.png b/src/blackmisc/icons/S1.png new file mode 100644 index 000000000..48bc2c727 Binary files /dev/null and b/src/blackmisc/icons/S1.png differ diff --git a/src/blackmisc/icons/S2.png b/src/blackmisc/icons/S2.png new file mode 100644 index 000000000..d39eecafd Binary files /dev/null and b/src/blackmisc/icons/S2.png differ diff --git a/src/blackmisc/icons/S3.png b/src/blackmisc/icons/S3.png new file mode 100644 index 000000000..bd8e020aa Binary files /dev/null and b/src/blackmisc/icons/S3.png differ diff --git a/src/blackmisc/icons/SUP.png b/src/blackmisc/icons/SUP.png new file mode 100644 index 000000000..c27e8d8ce Binary files /dev/null and b/src/blackmisc/icons/SUP.png differ diff --git a/src/blackmisc/icons/aeropuerto.png b/src/blackmisc/icons/aeropuerto.png new file mode 100644 index 000000000..3676b9799 Binary files /dev/null and b/src/blackmisc/icons/aeropuerto.png differ diff --git a/src/blackmisc/nwuser.cpp b/src/blackmisc/nwuser.cpp index a737e832f..4106a010f 100644 --- a/src/blackmisc/nwuser.cpp +++ b/src/blackmisc/nwuser.cpp @@ -168,6 +168,8 @@ namespace BlackMisc return QVariant(this->m_realname); case IndexCallsign: return this->m_callsign.toQVariant(); + case IndexCallsignIcon: + return this->m_callsign.toIcon(); default: break; } diff --git a/src/blackmisc/nwuser.h b/src/blackmisc/nwuser.h index 43d862a8e..c937f34be 100644 --- a/src/blackmisc/nwuser.h +++ b/src/blackmisc/nwuser.h @@ -32,7 +32,8 @@ namespace BlackMisc IndexId, IndexPassword, IndexRealName, - IndexCallsign + IndexCallsign, + IndexCallsignIcon }; /*! @@ -137,6 +138,12 @@ namespace BlackMisc */ void setCallsign(const BlackMisc::Aviation::CCallsign &callsign) { m_callsign = callsign; } + //! \copydoc CValueObject::toIcon() + virtual const QPixmap &toIcon() const override + { + return this->getCallsign().toIcon(); + } + /*! * \brief Equal operator == */ diff --git a/src/blackmisc/statusmessage.cpp b/src/blackmisc/statusmessage.cpp index c0ad83867..eb60f608b 100644 --- a/src/blackmisc/statusmessage.cpp +++ b/src/blackmisc/statusmessage.cpp @@ -93,9 +93,9 @@ namespace BlackMisc */ const QPixmap &CStatusMessage::convertToIcon(const CStatusMessage &statusMessage) { - static QPixmap w(QPixmap(":/blackmisc/icons/warning.png").scaledToWidth(16, Qt::SmoothTransformation)); - static QPixmap e(QPixmap(":/blackmisc/icons/critical.png").scaledToWidth(16, Qt::SmoothTransformation)); - static QPixmap i(QPixmap(":/blackmisc/icons/information.png").scaledToWidth(16, Qt::SmoothTransformation)); + static const QPixmap w(QPixmap(":/blackmisc/icons/warning.png").scaledToWidth(16, Qt::SmoothTransformation)); + static const QPixmap e(QPixmap(":/blackmisc/icons/critical.png").scaledToWidth(16, Qt::SmoothTransformation)); + static const QPixmap i(QPixmap(":/blackmisc/icons/information.png").scaledToWidth(16, Qt::SmoothTransformation)); switch (statusMessage.getSeverity()) { case SeverityInfo: return i;