diff --git a/src/blackgui/models/textmessagelistmodel.cpp b/src/blackgui/models/textmessagelistmodel.cpp index 0aa07d906..1ffff36c2 100644 --- a/src/blackgui/models/textmessagelistmodel.cpp +++ b/src/blackgui/models/textmessagelistmodel.cpp @@ -81,5 +81,15 @@ namespace BlackGui } } + QVariant CTextMessageListModel::data(const QModelIndex &index, int role) const + { + if (role == Qt::ToolTipRole) + { + // the underlying model object as summary + const CTextMessage model(this->at(index)); + return model.asHtmlSummary("
"); + } + return CListModelBase::data(index, role); + } } // namespace } // namespace diff --git a/src/blackgui/models/textmessagelistmodel.h b/src/blackgui/models/textmessagelistmodel.h index 704d6eaec..c0e84ab54 100644 --- a/src/blackgui/models/textmessagelistmodel.h +++ b/src/blackgui/models/textmessagelistmodel.h @@ -48,6 +48,9 @@ namespace BlackGui //! Mode TextMessageMode getTextMessageMode() const { return m_textMessageMode; } + //! \copydoc QAbstractItemModel::data + virtual QVariant data(const QModelIndex &index, int role) const override; + private: TextMessageMode m_textMessageMode = NotSet; }; diff --git a/src/blackgui/views/viewbase.cpp b/src/blackgui/views/viewbase.cpp index 59e0801d6..3700167b1 100644 --- a/src/blackgui/views/viewbase.cpp +++ b/src/blackgui/views/viewbase.cpp @@ -119,6 +119,7 @@ namespace BlackGui this->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel); this->setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel); this->setWordWrap(true); + this->setTextElideMode(Qt::ElideMiddle); // shortcuts QShortcut *filter = new QShortcut(CShortcut::keyDisplayFilter(), this, SLOT(ps_displayFilterDialog()), nullptr, Qt::WidgetShortcut); diff --git a/src/blackmisc/network/textmessage.cpp b/src/blackmisc/network/textmessage.cpp index d1a1a7dd6..3b18c7e16 100644 --- a/src/blackmisc/network/textmessage.cpp +++ b/src/blackmisc/network/textmessage.cpp @@ -17,6 +17,7 @@ #include #include +#include using namespace BlackMisc::Aviation; using namespace BlackMisc::PhysicalQuantities; @@ -37,17 +38,13 @@ namespace BlackMisc QString CTextMessage::convertToQString(bool i18n) const { - QString s(m_message); if (this->isPrivateMessage()) { - s.append(" ").append(m_senderCallsign.toQString(i18n)); - s.append(" ").append(m_recipientCallsign.toQString(i18n)); + return m_message % + QStringLiteral(" ") % m_senderCallsign.toQString(i18n) % + QStringLiteral(" ") % m_recipientCallsign.toQString(i18n); } - else - { - s.append(" ").append(m_frequency.toQString(i18n)); - } - return s; + return m_message % QStringLiteral(" ") % m_frequency.toQString(i18n); } bool CTextMessage::isPrivateMessage() const @@ -171,6 +168,11 @@ namespace BlackMisc return { this, CStatusMessage::SeverityInfo, m }; } + QString CTextMessage::asHtmlSummary(const QString &separator) const + { + return this->asString(true, true, separator); + } + void CTextMessage::toggleSenderRecipient() { qSwap(m_senderCallsign, m_recipientCallsign); diff --git a/src/blackmisc/network/textmessage.h b/src/blackmisc/network/textmessage.h index 5bb32b878..a1ceddc57 100644 --- a/src/blackmisc/network/textmessage.h +++ b/src/blackmisc/network/textmessage.h @@ -119,6 +119,9 @@ namespace BlackMisc //! \param separator values separated by given value CStatusMessage asStatusMessage(bool withSender, bool withRecipient, const QString &separator = ", ") const; + //! Summary HTML code + QString asHtmlSummary(const QString &separator = "
") const; + //! Toggle sender receiver, can be used to ping my own message void toggleSenderRecipient();