diff --git a/src/blackgui/components/logcomponent.cpp b/src/blackgui/components/logcomponent.cpp index f2d87f949..d0ca7752e 100644 --- a/src/blackgui/components/logcomponent.cpp +++ b/src/blackgui/components/logcomponent.cpp @@ -55,6 +55,7 @@ namespace BlackGui ui->tvp_StatusMessages->setAutoResizeFrequency(3); ui->tvp_StatusMessages->setCustomMenu(new CLogMenu(this)); ui->tvp_StatusMessages->menuAddItems(CStatusMessageView::MenuSave); + this->showFilterBar(); // default } CLogComponent::~CLogComponent() @@ -89,6 +90,11 @@ namespace BlackGui ui->filter_LogMessages->show(); } + void CLogComponent::filterUseRadioButtonDescriptiveIcons(bool oneCharacterText) + { + ui->filter_LogMessages->useRadioButtonDescriptiveIcons(oneCharacterText); + } + void CLogComponent::clear() { ui->tvp_StatusMessages->clear(); diff --git a/src/blackgui/components/logcomponent.h b/src/blackgui/components/logcomponent.h index 7003d4826..09b0303ef 100644 --- a/src/blackgui/components/logcomponent.h +++ b/src/blackgui/components/logcomponent.h @@ -75,6 +75,9 @@ namespace BlackGui //! Show a filter bar void showFilterBar(); + //! Set fi + void filterUseRadioButtonDescriptiveIcons(bool oneLetterText); + //! Clear void clear(); diff --git a/src/blackgui/filters/filterbarbuttons.cpp b/src/blackgui/filters/filterbarbuttons.cpp index 417870e7c..1bc2519b7 100644 --- a/src/blackgui/filters/filterbarbuttons.cpp +++ b/src/blackgui/filters/filterbarbuttons.cpp @@ -26,7 +26,7 @@ namespace BlackGui connect(ui->tb_ClearForm, &QToolButton::clicked, this, &CFilterBarButtons::ps_buttonClicked); connect(ui->tb_Filter, &QToolButton::clicked, this, &CFilterBarButtons::ps_buttonClicked); connect(ui->tb_RemoveFilter, &QToolButton::clicked, this, &CFilterBarButtons::ps_buttonClicked); - connect(ui->pb_New, &QToolButton::clicked, this, &CFilterBarButtons::ps_buttonClicked); + connect(ui->tb_New, &QToolButton::clicked, this, &CFilterBarButtons::ps_buttonClicked); } CFilterBarButtons::~CFilterBarButtons() @@ -43,7 +43,7 @@ namespace BlackGui if (sender == ui->tb_ClearForm) { emit buttonClicked(ClearForm); } else if (sender == ui->tb_Filter) { emit buttonClicked(Filter); } else if (sender == ui->tb_RemoveFilter) { emit buttonClicked(RemoveFilter); } - else if (sender == ui->pb_New) + else if (sender == ui->tb_New) { emit buttonClicked(RemoveFilter); emit buttonClicked(ClearForm); diff --git a/src/blackgui/filters/filterbarbuttons.ui b/src/blackgui/filters/filterbarbuttons.ui index 66de546b8..d4791a6d8 100644 --- a/src/blackgui/filters/filterbarbuttons.ui +++ b/src/blackgui/filters/filterbarbuttons.ui @@ -2,9 +2,17 @@ CFilterBarButtons + + + 0 + 0 + 211 + 23 + + - 140 + 150 0 @@ -31,13 +39,13 @@ - 40 + 30 0 - 40 + 75 16777215 @@ -49,7 +57,7 @@ - + filter @@ -63,7 +71,7 @@ - + remove filter @@ -77,7 +85,7 @@ - + clear form @@ -95,16 +103,17 @@ - - - - 30 - 16777215 - + + + new (clear + remove filter) new + + + :/diagona/icons/diagona/icons/cross-button.png:/diagona/icons/diagona/icons/cross-button.png + @@ -112,9 +121,6 @@ Qt::Horizontal - - QSizePolicy::Fixed - 10 diff --git a/src/blackgui/filters/filterwidget.cpp b/src/blackgui/filters/filterwidget.cpp index 235699a08..0aae851b2 100644 --- a/src/blackgui/filters/filterwidget.cpp +++ b/src/blackgui/filters/filterwidget.cpp @@ -20,6 +20,7 @@ namespace BlackGui { CFilterWidget::CFilterWidget(QWidget *parent) : QFrame(parent) { + Q_ASSERT_X(sGui, Q_FUNC_INFO, "sGui missing"); this->setWindowTitle("Filter widget"); ps_onStyleSheetChanged(); connect(sGui, &CGuiApplication::styleSheetsChanged, this, &CFilterWidget::ps_onStyleSheetChanged); diff --git a/src/blackgui/filters/statusmessagefilterbar.cpp b/src/blackgui/filters/statusmessagefilterbar.cpp index 6b6618b42..71f856db3 100644 --- a/src/blackgui/filters/statusmessagefilterbar.cpp +++ b/src/blackgui/filters/statusmessagefilterbar.cpp @@ -29,6 +29,10 @@ namespace BlackGui connect(ui->le_Category, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter); connect(ui->le_MessageText, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter); + connect(ui->rb_Error, &QRadioButton::released, this, &CStatusMessageFilterBar::radioButtonChanged); + connect(ui->rb_Info, &QRadioButton::released, this, &CStatusMessageFilterBar::radioButtonChanged); + connect(ui->rb_Warning, &QRadioButton::released, this, &CStatusMessageFilterBar::radioButtonChanged); + ui->le_Category->setCompleter(new QCompleter(CLogPattern::allHumanReadableNames(), this)); // reset form @@ -43,6 +47,25 @@ namespace BlackGui CStatusMessageFilterBar::~CStatusMessageFilterBar() { } + void CStatusMessageFilterBar::useRadioButtonDescriptiveIcons(bool oneCharacterText) + { + CStatusMessage msg; + msg.setSeverity(CStatusMessage::SeverityError); + ui->rb_Error->setIcon(msg.toIcon().toQIcon()); + ui->rb_Error->setToolTip(msg.getSeverityAsString()); + ui->rb_Error->setText(oneCharacterText ? msg.getSeverityAsString().left(1) : ""); + + msg.setSeverity(CStatusMessage::SeverityWarning); + ui->rb_Warning->setIcon(msg.toIcon().toQIcon()); + ui->rb_Warning->setToolTip(msg.getSeverityAsString()); + ui->rb_Warning->setText(oneCharacterText ? msg.getSeverityAsString().left(1) : ""); + + msg.setSeverity(CStatusMessage::SeverityInfo); + ui->rb_Info->setIcon(msg.toIcon().toQIcon()); + ui->rb_Info->setToolTip(msg.getSeverityAsString()); + ui->rb_Info->setText(oneCharacterText ? msg.getSeverityAsString().left(1) : ""); + } + std::unique_ptr > CStatusMessageFilterBar::createModelFilter() const { return std::make_unique( @@ -64,6 +87,11 @@ namespace BlackGui ui->rb_Info->setChecked(true); } + void CStatusMessageFilterBar::radioButtonChanged() + { + this->triggerFilter(); + } + CStatusMessage::StatusSeverity CStatusMessageFilterBar::getSelectedSeverity() const { if (ui->rb_Error->isChecked()) { return CStatusMessage::SeverityError; } diff --git a/src/blackgui/filters/statusmessagefilterbar.h b/src/blackgui/filters/statusmessagefilterbar.h index 396e08078..d671b93dc 100644 --- a/src/blackgui/filters/statusmessagefilterbar.h +++ b/src/blackgui/filters/statusmessagefilterbar.h @@ -41,6 +41,9 @@ namespace BlackGui //! Destructor virtual ~CStatusMessageFilterBar(); + //! Use icons with radio buttons + void useRadioButtonDescriptiveIcons(bool oneCharacterText); + //! \copydoc Models::IModelFilterProvider::createModelFilter virtual std::unique_ptr> createModelFilter() const override; @@ -55,6 +58,9 @@ namespace BlackGui private: QScopedPointer ui; + //! Radio button was changed + void radioButtonChanged(); + //! Get the selected severity BlackMisc::CStatusMessage::StatusSeverity getSelectedSeverity() const; }; diff --git a/src/blackgui/filters/statusmessagefilterbar.ui b/src/blackgui/filters/statusmessagefilterbar.ui index 93c873066..5c3bb6764 100644 --- a/src/blackgui/filters/statusmessagefilterbar.ui +++ b/src/blackgui/filters/statusmessagefilterbar.ui @@ -6,7 +6,7 @@ 0 0 - 324 + 359 58 @@ -33,7 +33,7 @@ 3 - 0 + 10 0 @@ -75,16 +75,10 @@ - 50 + 75 0 - - - 100 - 16777215 - - diff --git a/src/blackgui/views/viewbase.cpp b/src/blackgui/views/viewbase.cpp index 7fe7b32fe..746e05cfe 100644 --- a/src/blackgui/views/viewbase.cpp +++ b/src/blackgui/views/viewbase.cpp @@ -136,6 +136,8 @@ namespace BlackGui void CViewBaseNonTemplate::setFilterWidgetImpl(QWidget *filterWidget) { + if (filterWidget == this->m_filterWidget) { return; } + // dialog or filter widget if (this->m_filterWidget) { @@ -154,6 +156,7 @@ namespace BlackGui void CViewBaseNonTemplate::setFilterDialog(CFilterDialog *filterDialog) { + if (filterDialog == this->m_filterWidget) { return; } this->setFilterWidgetImpl(filterDialog); if (filterDialog) { @@ -165,6 +168,7 @@ namespace BlackGui void CViewBaseNonTemplate::setFilterWidget(CFilterWidget *filterWidget) { + if (filterWidget == this->m_filterWidget) { return; } this->setFilterWidgetImpl(filterWidget); if (filterWidget) { diff --git a/src/swiftlauncher/swiftlauncher.cpp b/src/swiftlauncher/swiftlauncher.cpp index 6dba955b9..875dd1a8e 100644 --- a/src/swiftlauncher/swiftlauncher.cpp +++ b/src/swiftlauncher/swiftlauncher.cpp @@ -128,7 +128,7 @@ void CSwiftLauncher::ps_displayLatestNews(QNetworkReply *reply) { const QString html = nwReply->readAll().trimmed(); if (html.isEmpty()) { return; } - ui->tbr_LatestNews->setHtml(html); + ui->tbr_LatestNews->setHtml(html); // causes QFSFileEngine::open: No file name specified constexpr qint64 newNews = 72 * 3600 * 1000; const qint64 deltaT = CNetworkUtils::lastModifiedSinceNow(nwReply.data()); if (deltaT > 0 && deltaT < newNews) @@ -149,7 +149,7 @@ void CSwiftLauncher::init() m_mwaOverlayFrame = ui->fr_SwiftLauncherMain; m_mwaStatusBar = nullptr; - m_mwaLogComponent = ui->fr_SwiftLauncherLog; + m_mwaLogComponent = ui->comp_SwiftLauncherLog; ui->lbl_NewVersionUrl->setTextFormat(Qt::RichText); ui->lbl_NewVersionUrl->setTextInteractionFlags(Qt::TextBrowserInteraction); @@ -231,6 +231,9 @@ void CSwiftLauncher::initLogDisplay() CLogPattern().withSeverityAtOrAbove(CStatusMessage::SeverityInfo) ); logHandler->subscribe(this, &CSwiftLauncher::ps_appendLogMessage); + + ui->comp_SwiftLauncherLog->showFilterBar(); + ui->comp_SwiftLauncherLog->filterUseRadioButtonDescriptiveIcons(false); } void CSwiftLauncher::startSwiftCore() @@ -495,7 +498,7 @@ void CSwiftLauncher::ps_showStatusMessage(const CStatusMessage &msg) void CSwiftLauncher::ps_appendLogMessage(const CStatusMessage &message) { - ui->fr_SwiftLauncherLog->appendStatusMessageToList(message); + ui->comp_SwiftLauncherLog->appendStatusMessageToList(message); if (message.getSeverity() == CStatusMessage::SeverityError) { this->ps_showStatusMessage(message); @@ -504,7 +507,7 @@ void CSwiftLauncher::ps_appendLogMessage(const CStatusMessage &message) void CSwiftLauncher::ps_appendLogMessages(const CStatusMessageList &messages) { - ui->fr_SwiftLauncherLog->appendStatusMessagesToList(messages); + ui->comp_SwiftLauncherLog->appendStatusMessagesToList(messages); if (messages.hasErrorMessages()) { this->ps_showStatusMessage(messages.getErrorMessages().toSingleMessage()); diff --git a/src/swiftlauncher/swiftlauncher.ui b/src/swiftlauncher/swiftlauncher.ui index 068e5ce76..c385e8961 100644 --- a/src/swiftlauncher/swiftlauncher.ui +++ b/src/swiftlauncher/swiftlauncher.ui @@ -38,7 +38,7 @@ QFrame::Raised - 0 + 1 @@ -879,7 +879,7 @@ p, li { white-space: pre-wrap; } 3 - + QFrame::StyledPanel @@ -935,8 +935,8 @@ p, li { white-space: pre-wrap; } - +