File indexing completed on 2024-05-12 09:56:56
0001 /* 0002 SPDX-FileCopyrightText: 2007-2008 Robert Knight <robertknight@gmail.com> 0003 SPDX-FileCopyrightText: 2020 Tomaz Canabrava <tcanabrava@gmail.com> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #include "EscapeSequenceUrlFilter.h" 0009 0010 #include "EscapeSequenceUrlExtractor.h" 0011 #include "EscapeSequenceUrlFilterHotSpot.h" 0012 #include "session/Session.h" 0013 #include "terminalDisplay/TerminalDisplay.h" 0014 0015 using namespace Konsole; 0016 0017 EscapeSequenceUrlFilter::EscapeSequenceUrlFilter(Session *session, TerminalDisplay *window) 0018 : _session(session) 0019 , _window(window) 0020 { 0021 } 0022 0023 void EscapeSequenceUrlFilter::process() 0024 { 0025 if ((_window->screenWindow() == nullptr) && (_window->screenWindow()->screen() != nullptr)) { 0026 return; 0027 } 0028 0029 QPointer<ScreenWindow> sWindow = _window->screenWindow(); 0030 if (!sWindow->screen()->urlExtractor()) { 0031 return; 0032 } 0033 0034 const auto urls = sWindow->screen()->urlExtractor()->history(); 0035 0036 for (const auto &escapedUrl : urls) { 0037 if (escapedUrl.begin.row < sWindow->currentLine() || escapedUrl.end.row > sWindow->currentLine() + sWindow->windowLines()) { 0038 continue; 0039 } 0040 0041 const int beginRow = escapedUrl.begin.row - sWindow->currentLine(); 0042 const int endRow = escapedUrl.end.row - sWindow->currentLine(); 0043 QSharedPointer<HotSpot> spot( 0044 // TODO: 0045 // This uses Column / Row while everything else uses Row/Column. 0046 // Move everything else to QPoint begin / QPoint End. 0047 new EscapeSequenceUrlHotSpot(beginRow, escapedUrl.begin.col, endRow, escapedUrl.end.col, escapedUrl.text, escapedUrl.url)); 0048 0049 addHotSpot(spot); 0050 } 0051 }