1 /* 2 SPDX-FileCopyrightText: 2007-2008 Robert Knight <robertknight@gmail.com> 3 SPDX-FileCopyrightText: 2020 Tomaz Canabrava <tcanabrava@gmail.com> 4 5 SPDX-License-Identifier: GPL-2.0-or-later 6 */ 7 8 #include "EscapeSequenceUrlFilter.h" 9 10 #include "EscapeSequenceUrlExtractor.h" 11 #include "EscapeSequenceUrlFilterHotSpot.h" 12 #include "session/Session.h" 13 #include "terminalDisplay/TerminalDisplay.h" 14 15 using namespace Konsole; 16 EscapeSequenceUrlFilter(Session * session,TerminalDisplay * window)17EscapeSequenceUrlFilter::EscapeSequenceUrlFilter(Session *session, TerminalDisplay *window) 18 { 19 _session = session; 20 _window = window; 21 } 22 process()23void EscapeSequenceUrlFilter::process() 24 { 25 if ((_window->screenWindow() == nullptr) && (_window->screenWindow()->screen() != nullptr)) { 26 return; 27 } 28 auto sWindow = _window->screenWindow(); 29 const auto urls = sWindow->screen()->urlExtractor()->history(); 30 31 for (const auto &escapedUrl : urls) { 32 if (escapedUrl.begin.row < sWindow->currentLine() || escapedUrl.end.row > sWindow->currentLine() + sWindow->windowLines()) { 33 continue; 34 } 35 36 const int beginRow = escapedUrl.begin.row - sWindow->currentLine(); 37 const int endRow = escapedUrl.end.row - sWindow->currentLine(); 38 QSharedPointer<HotSpot> spot( 39 // TODO: 40 // This uses Column / Row while everything else uses Row/Column. 41 // Move everything else to QPoint begin / QPoint End. 42 new EscapeSequenceUrlHotSpot(beginRow, escapedUrl.begin.col, endRow, escapedUrl.end.col, escapedUrl.text, escapedUrl.url)); 43 44 addHotSpot(spot); 45 } 46 } 47