diff --git a/src/librssguard/gui/toolbars/messagestoolbar.cpp b/src/librssguard/gui/toolbars/messagestoolbar.cpp index 9abe22b2b..b619b94b0 100644 --- a/src/librssguard/gui/toolbars/messagestoolbar.cpp +++ b/src/librssguard/gui/toolbars/messagestoolbar.cpp @@ -9,6 +9,7 @@ #include "miscellaneous/settings.h" #include +#include #include #include #include @@ -146,10 +147,32 @@ void MessagesToolBar::handleMessageHighlighterChange(QAction* action) { m_btnMessageHighlighter->setDefaultAction(checked_tasks_std.empty() ? m_menuMessageHighlighter->actions().constFirst() : checked_tasks_std.front()); - saveToolButtonSelection(HIGHLIGHTER_ACTION_NAME, FROM_STD_LIST(QList, checked_tasks_std)); + + if (checked_tasks_std.size() > 1) { + drawNumberOfCriterias(m_btnMessageHighlighter, checked_tasks_std.size()); + } + + saveToolButtonSelection(QSL(HIGHLIGHTER_ACTION_NAME), FROM_STD_LIST(QList, checked_tasks_std)); emit messageHighlighterChanged(task); } +void MessagesToolBar::drawNumberOfCriterias(QToolButton* btn, int count) { + QPixmap px(128, 128); + px.fill(Qt::GlobalColor::transparent); + + QPainter p(&px); + + auto fon = p.font(); + + fon.setPixelSize(40); + p.setFont(fon); + + p.drawPixmap(0, 0, 80, 80, btn->defaultAction()->icon().pixmap(128, 128)); + p.drawText(65, 65, 50, 50, Qt::AlignmentFlag::AlignCenter, QString::number(count)); + + btn->setIcon(px); +} + void MessagesToolBar::handleMessageFilterChange(QAction* action) { MessagesProxyModel::MessageListFilter task = action->data().value(); std::list checked_tasks_std = boolinq::from(m_menuMessageFilter->actions()) @@ -180,7 +203,12 @@ void MessagesToolBar::handleMessageFilterChange(QAction* action) { m_btnMessageFilter->setDefaultAction(checked_tasks_std.empty() ? m_menuMessageFilter->actions().constFirst() : checked_tasks_std.front()); - saveToolButtonSelection(FILTER_ACTION_NAME, FROM_STD_LIST(QList, checked_tasks_std)); + + if (checked_tasks_std.size() > 1) { + drawNumberOfCriterias(m_btnMessageFilter, checked_tasks_std.size()); + } + + saveToolButtonSelection(QSL(FILTER_ACTION_NAME), FROM_STD_LIST(QList, checked_tasks_std)); emit messageFilterChanged(task); } diff --git a/src/librssguard/gui/toolbars/messagestoolbar.h b/src/librssguard/gui/toolbars/messagestoolbar.h index 24821cacd..f3b0e2280 100644 --- a/src/librssguard/gui/toolbars/messagestoolbar.h +++ b/src/librssguard/gui/toolbars/messagestoolbar.h @@ -54,6 +54,7 @@ class MessagesToolBar : public BaseToolBar { void initializeHighlighter(); void activateAction(const QString& action_name, QWidgetAction* widget_action); void saveToolButtonSelection(const QString& button_name, const QList& actions) const; + void drawNumberOfCriterias(QToolButton* btn, int count); private: QWidgetAction* m_actionMessageHighlighter;