diff --git a/src/blackgui/components/settingstextmessagestyle.h b/src/blackgui/components/settingstextmessagestyle.h index 7236e68c2..766707b4e 100644 --- a/src/blackgui/components/settingstextmessagestyle.h +++ b/src/blackgui/components/settingstextmessagestyle.h @@ -33,7 +33,7 @@ namespace BlackGui explicit CSettingsTextMessageStyle(QWidget *parent = nullptr); //! Destructor - virtual ~CSettingsTextMessageStyle(); + virtual ~CSettingsTextMessageStyle() override; //! Fmily, size and style QStringList getFamilySizeStyle() const; @@ -59,7 +59,7 @@ namespace BlackGui private: QScopedPointer ui; CSettingsFontDialog *m_fontSettingsDialog = nullptr; - CTextEditDialog *m_textEditDialog = nullptr; + CTextEditDialog *m_textEditDialog = nullptr; QString m_style; //! Change font diff --git a/src/blackgui/components/settingstextmessagestyle.ui b/src/blackgui/components/settingstextmessagestyle.ui index 0a5f41a08..1a98c4fc0 100644 --- a/src/blackgui/components/settingstextmessagestyle.ui +++ b/src/blackgui/components/settingstextmessagestyle.ui @@ -2,6 +2,14 @@ CSettingsTextMessageStyle + + + 0 + 0 + 440 + 26 + + Text message style diff --git a/src/blackgui/components/textmessagecomponent.cpp b/src/blackgui/components/textmessagecomponent.cpp index ab63c0f7e..7dde34ff6 100644 --- a/src/blackgui/components/textmessagecomponent.cpp +++ b/src/blackgui/components/textmessagecomponent.cpp @@ -81,6 +81,9 @@ namespace BlackGui c = connect(ui->comp_AtcStations, &CAtcButtonComponent::requestAtcStation, this, &CTextMessageComponent::onAtcButtonClicked, Qt::QueuedConnection); Q_ASSERT_X(c, Q_FUNC_INFO, "Missing connect"); + c = connect(ui->cb_LatestFirst, &QCheckBox::toggled, this, &CTextMessageComponent::onLatestFirstChanged, Qt::QueuedConnection); + Q_ASSERT_X(c, Q_FUNC_INFO, "Missing connect"); + // style sheet c = connect(sGui, &CGuiApplication::styleSheetsChanged, this, &CTextMessageComponent::onStyleSheetChanged, Qt::QueuedConnection); Q_ASSERT_X(c, Q_FUNC_INFO, "Missing connect"); @@ -106,10 +109,12 @@ namespace BlackGui { // init decoupled when sub components are fully init if (!myself || !sGui || sGui->isShuttingDown()) { return; } - this->onSettingsChanged(); + this->onSettingsChanged(); // init this->showCurrentFrequenciesFromCockpit(); + const bool latestFirst = m_messageSettings.get().isLatestFirst(); + ui->tvp_TextMessagesAll->setSorting(CTextMessage::IndexUtcTimestamp, latestFirst ? Qt::DescendingOrder : Qt::AscendingOrder); - // hde for the beginning + // hide for the beginning ui->gb_Settings->setChecked(false); ui->gb_MessageTo->setChecked(false); }); @@ -239,7 +244,8 @@ namespace BlackGui // message for me? right frequency? otherwise quit if (this->hasAllMessagesTab() && (relevantForMe || message.isServerMessage())) { - ui->tvp_TextMessagesAll->insert(message); + ui->tvp_TextMessagesAll->push_back(message); // no sorting + ui->tvp_TextMessagesAll->resort(); } if (!relevantForMe) { continue; } @@ -270,6 +276,7 @@ namespace BlackGui { ui->comp_SettingsOverlay->setVisible(checked); ui->comp_SettingsStyle->setVisible(checked); + ui->cb_LatestFirst->setVisible(checked); ui->gb_Settings->setFlat(!checked); } @@ -284,17 +291,30 @@ namespace BlackGui { QList textEdits = this->findAllTextEdit(); const QString style = this->getStyleSheet(); + const bool latestFirst = m_messageSettings.get().isLatestFirst(); for (CTextMessageTextEdit *textEdit : textEdits) { + textEdit->setLatestFirst(latestFirst); textEdit->setStyleSheetForContent(style); } ui->comp_SettingsStyle->setStyle(this->getStyleSheet()); + if (latestFirst != ui->cb_LatestFirst->isChecked()) { ui->cb_LatestFirst->setChecked(latestFirst); } this->update(); // refresh window } + void CTextMessageComponent::onLatestFirstChanged(bool checked) + { + CTextMessageSettings s = m_messageSettings.get(); + if (s.isLatestFirst() == checked) { return; } + s.setLatestFirst(checked); + const CStatusMessage m = m_messageSettings.setAndSave(s); + CLogMessage::preformatted(m); + this->onSettingsChanged(); // latest first + } + void CTextMessageComponent::onStyleSheetChanged() { - this->onSettingsChanged(); + this->onSettingsChanged(); // style sheet } void CTextMessageComponent::onAtcButtonClicked(const CAtcStation &station) @@ -308,6 +328,7 @@ namespace BlackGui const QString style = ui->comp_SettingsStyle->getStyle(); CTextMessageSettings s = m_messageSettings.get(); s.setStyleSheet(style); + s.setLatestFirst(ui->cb_LatestFirst->isChecked()); const CStatusMessage m = m_messageSettings.setAndSave(s); CLogMessage::preformatted(m); this->onStyleSheetChanged(); diff --git a/src/blackgui/components/textmessagecomponent.h b/src/blackgui/components/textmessagecomponent.h index a4132b952..5f85f65c9 100644 --- a/src/blackgui/components/textmessagecomponent.h +++ b/src/blackgui/components/textmessagecomponent.h @@ -199,6 +199,9 @@ namespace BlackGui //! Settings have been changed void onSettingsChanged(); + //! Latest 1st checked + void onLatestFirstChanged(bool checked); + //! Style sheet has been changed void onStyleSheetChanged(); diff --git a/src/blackgui/components/textmessagecomponent.ui b/src/blackgui/components/textmessagecomponent.ui index d4838ecd5..15299833b 100644 --- a/src/blackgui/components/textmessagecomponent.ui +++ b/src/blackgui/components/textmessagecomponent.ui @@ -2,6 +2,14 @@ CTextMessageComponent + + + 0 + 0 + 260 + 367 + + Text messages @@ -249,10 +257,7 @@ true - - - 1 - + 1 @@ -265,8 +270,8 @@ 1 - - + + 200 @@ -275,8 +280,15 @@ - - + + + + latest 1st + + + + + 200 diff --git a/src/blackgui/settings/textmessagesettings.cpp b/src/blackgui/settings/textmessagesettings.cpp index 063fbd4db..e382d53cb 100644 --- a/src/blackgui/settings/textmessagesettings.cpp +++ b/src/blackgui/settings/textmessagesettings.cpp @@ -74,12 +74,13 @@ namespace BlackGui QString CTextMessageSettings::convertToQString(bool i18n) const { Q_UNUSED(i18n); - return QStringLiteral("Private: %1 supervisor: %2 frequency: %3 all: %4 focus: %5").arg( + return QStringLiteral("Private: %1 supervisor: %2 frequency: %3 all: %4 focus: %5 latest 1st: %6").arg( boolToOnOff(this->getPopupPrivateMessages()), boolToOnOff(this->getPopupSupervisorMessages()), boolToOnOff(this->getPopupFrequencyMessages()), boolToOnOff(this->getPopupAllMessages()), - boolToYesNo(this->focusOverlayWindow()) + boolToYesNo(this->focusOverlayWindow()), + boolToYesNo(this->isLatestFirst()) ); } @@ -94,8 +95,9 @@ namespace BlackGui case IndexPopupPrivateMessages: return CVariant::fromValue(this->popupPrivateMessages()); case IndexPopupSupervisorMessages: return CVariant::fromValue(this->popupSupervisorMessages()); case IndexPopupSelcalMessages: return CVariant::fromValue(this->popupSelcalMessages()); - case IndexStyle: return CVariant::fromValue(this->getStyleSheet()); - case IndexFocus: return CVariant::fromValue(this->focusOverlayWindow()); + case IndexStyle: return CVariant::fromValue(this->getStyleSheet()); + case IndexLatestFirst: return CVariant::fromValue(this->isLatestFirst()); + case IndexFocus: return CVariant::fromValue(this->focusOverlayWindow()); default: return CValueObject::propertyByIndex(index); } } @@ -111,8 +113,9 @@ namespace BlackGui case IndexPopupSupervisorMessages: this->setSupervisorMessages(variant.toBool()); break; case IndexPopupPrivateMessages: this->setPopupPrivateMessages(variant.toBool()); break; case IndexPopupSelcalMessages: this->setPopupSelcalMessages(variant.toBool()); break; - case IndexFocus: this->setFocusOverlayWindows(variant.toBool()); break; - case IndexStyle: this->setStyleSheet(variant.toQString()); break; + case IndexFocus: this->setFocusOverlayWindows(variant.toBool()); break; + case IndexLatestFirst: this->setLatestFirst(variant.toBool()); break; + case IndexStyle: this->setStyleSheet(variant.toQString()); break; default: CValueObject::setPropertyByIndex(index, variant); break; } } diff --git a/src/blackgui/settings/textmessagesettings.h b/src/blackgui/settings/textmessagesettings.h index c6dd73d10..1196f1f61 100644 --- a/src/blackgui/settings/textmessagesettings.h +++ b/src/blackgui/settings/textmessagesettings.h @@ -38,6 +38,7 @@ namespace BlackGui IndexPopupAllMessages, IndexPopupSelcalMessages, IndexFocus, + IndexLatestFirst, IndexStyle }; @@ -95,6 +96,12 @@ namespace BlackGui //! Popup the given message? Complete check including frequencies. bool popup(const BlackMisc::Network::CTextMessage &textMessage, const BlackMisc::Simulation::CSimulatedAircraft &ownAircraft) const; + //! Latest messages 1st? + bool isLatestFirst() const { return m_latestFirst; } + + //! Latest messages 1st? + void setLatestFirst(bool latestFirst) { m_latestFirst = latestFirst; } + //! CSS style sheet const QString &getStyleSheet() const { return m_styleSheet; } @@ -126,6 +133,7 @@ namespace BlackGui bool m_popupAllMessages = false; bool m_popupSelcalMessages = true; bool m_focus = true; + bool m_latestFirst = false; //!< latest messages first QString m_styleSheet; BLACK_METACLASS( @@ -135,6 +143,8 @@ namespace BlackGui BLACK_METAMEMBER(popupFrequencyMessages), BLACK_METAMEMBER(popupAllMessages), BLACK_METAMEMBER(popupSelcalMessages), + BLACK_METAMEMBER(focus), + BLACK_METAMEMBER(latestFirst), BLACK_METAMEMBER(styleSheet) ); };