File indexing completed on 2024-04-28 04:58:10
0001 /* 0002 This file is part of the KDE project 0003 SPDX-FileCopyrightText: 1999 Simon Hausmann <hausmann@kde.org> 0004 SPDX-FileCopyrightText: 1999 David Faure <faure@kde.org> 0005 0006 SPDX-License-Identifier: LGPL-2.0-or-later 0007 */ 0008 0009 #include "browserextension.h" 0010 0011 #include <QTimer> 0012 #include <QDebug> 0013 0014 #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) 0015 0016 struct DelayedRequest { 0017 QUrl m_delayedURL; 0018 KParts::OpenUrlArguments m_delayedArgs; 0019 BrowserArguments m_delayedBrowserArgs; 0020 }; 0021 0022 BrowserExtension::BrowserExtension(KParts::ReadOnlyPart *parent) 0023 : KParts::NavigationExtension(parent) 0024 { 0025 connect(parent, static_cast<void (KParts::ReadOnlyPart::*)()>(&KParts::ReadOnlyPart::completed), this, &BrowserExtension::slotCompleted); 0026 connect(this, &BrowserExtension::browserOpenUrlRequest, this, &BrowserExtension::slotOpenUrlRequest); 0027 } 0028 0029 BrowserExtension::~BrowserExtension() 0030 { 0031 } 0032 0033 void BrowserExtension::setBrowserArguments(const BrowserArguments &args) 0034 { 0035 m_browserArgs = args; 0036 } 0037 0038 BrowserArguments BrowserExtension::browserArguments() const 0039 { 0040 return m_browserArgs; 0041 } 0042 0043 void BrowserExtension::setBrowserInterface(BrowserInterface *impl) 0044 { 0045 m_browserInterface = impl; 0046 } 0047 0048 BrowserInterface *BrowserExtension::browserInterface() const 0049 { 0050 return m_browserInterface; 0051 } 0052 0053 void BrowserExtension::slotCompleted() 0054 { 0055 // empty the argument stuff, to avoid bogus/invalid values when opening a new url 0056 setBrowserArguments(BrowserArguments()); 0057 } 0058 0059 void BrowserExtension::slotOpenUrlRequest(const QUrl &url, const KParts::OpenUrlArguments &args, const BrowserArguments &browserArgs) 0060 { 0061 DelayedRequest req; 0062 req.m_delayedURL = url; 0063 req.m_delayedArgs = args; 0064 req.m_delayedBrowserArgs = browserArgs; 0065 m_requests.append(req); 0066 QTimer::singleShot(0, this, &BrowserExtension::slotEmitOpenUrlRequestDelayed); 0067 } 0068 0069 void BrowserExtension::slotEmitOpenUrlRequestDelayed() 0070 { 0071 if (m_requests.isEmpty()) { 0072 return; 0073 } 0074 DelayedRequest req = m_requests.front(); 0075 m_requests.pop_front(); 0076 Q_EMIT browserOpenUrlRequestDelayed(req.m_delayedURL, req.m_delayedArgs, req.m_delayedBrowserArgs); 0077 } 0078 0079 #endif 0080 0081 #include "moc_browserextension.cpp"