From f9889eb57c98bbaba8dea882b1b05f4fd68365f6 Mon Sep 17 00:00:00 2001 From: Tomaz Canabrava Date: Sun, 19 Jul 2020 20:18:49 +0200 Subject: [PATCH] Move code to count hotspot types to FilterChain --- src/filterHotSpots/FilterChain.cpp | 11 +++++++++++ src/filterHotSpots/FilterChain.h | 4 ++++ src/widgets/TerminalDisplay.cpp | 10 +++------- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/src/filterHotSpots/FilterChain.cpp b/src/filterHotSpots/FilterChain.cpp index c7c4ce0e..ca6a603b 100644 --- a/src/filterHotSpots/FilterChain.cpp +++ b/src/filterHotSpots/FilterChain.cpp @@ -26,6 +26,8 @@ #include +#include + using namespace Konsole; FilterChain::FilterChain(TerminalDisplay *terminalDisplay) : _terminalDisplay(terminalDisplay) @@ -124,3 +126,12 @@ QRegion FilterChain::hotSpotRegion() const } return region; } + +int FilterChain::count(HotSpot::Type type) +{ + const auto hSpots = hotSpots(); + return std::count_if(std::begin(hSpots), std::end(hSpots), + [type](const QSharedPointer &s) { + return s->type() == type; + }); +} diff --git a/src/filterHotSpots/FilterChain.h b/src/filterHotSpots/FilterChain.h index 7eef716c..788508fe 100644 --- a/src/filterHotSpots/FilterChain.h +++ b/src/filterHotSpots/FilterChain.h @@ -26,6 +26,8 @@ #include #include +#include "HotSpot.h" + namespace Konsole { class Filter; @@ -80,6 +82,8 @@ public: /* Returns the region of the hotspot inside of the TerminalDisplay */ QRegion hotSpotRegion() const; + /* Returns the amount of hotspots of the given type */ + int count(HotSpot::Type type); protected: QList _filters; TerminalDisplay *_terminalDisplay; diff --git a/src/widgets/TerminalDisplay.cpp b/src/widgets/TerminalDisplay.cpp index 51b1cd58..89df184f 100644 --- a/src/widgets/TerminalDisplay.cpp +++ b/src/widgets/TerminalDisplay.cpp @@ -1424,17 +1424,13 @@ void TerminalDisplay::paintFilters(QPainter& painter) // and draw appropriate visuals to indicate the presence of the hotspot const auto spots = _filterChain->hotSpots(); - int urlNumber = 0; + int urlNumber; int urlNumInc; if (_reverseUrlHints) { - for (const auto &spot : spots) { - if (spot->type() == HotSpot::Link) { - urlNumber++; - } - } - + urlNumber = _filterChain->count(HotSpot::Link); urlNumInc = -1; } else { + urlNumber = 0; urlNumInc = 1; }