File indexing completed on 2024-04-14 03:48:09
0001 // SPDX-FileCopyrightText: 2006-2007 Torsten Rahn <tackat@kde.org> 0002 // SPDX-FileCopyrightText: 2007 Inge Wallin <ingwa@kde.org> 0003 // SPDX-FileCopyrightText: 2008 Simon Hausmann <hausmann@kde.org> 0004 // 0005 // SPDX-License-Identifier: LGPL-2.1-or-later 0006 0007 // Self 0008 #include "TinyWebBrowser.h" 0009 0010 // Qt 0011 #include <QPointer> 0012 #include <QAction> 0013 #include <QDesktopServices> 0014 #include <QPainter> 0015 #include <QPrintDialog> 0016 #include <QPrinter> 0017 0018 // Marble 0019 #include "MarbleGlobal.h" 0020 #include "MarbleDebug.h" 0021 #include "MarbleDirs.h" 0022 #include "MarbleLocale.h" 0023 #include "MarbleWebView.h" 0024 0025 namespace Marble 0026 { 0027 0028 class TinyWebBrowserPrivate 0029 { 0030 }; 0031 0032 static QString guessWikipediaDomain() 0033 { 0034 const QString code = MarbleLocale::languageCode(); 0035 0036 return QLatin1String("https://") + code + QLatin1String(".m.wikipedia.org/"); 0037 } 0038 0039 TinyWebBrowser::TinyWebBrowser( QWidget* parent ) 0040 : QWebEngineView( parent ), 0041 d( nullptr ) 0042 { 0043 MarbleWebPage * page = new MarbleWebPage(); 0044 setPage(page); 0045 0046 connect( this, SIGNAL(statusBarMessage(QString)), 0047 this, SIGNAL(statusMessage(QString)) ); 0048 0049 connect( page, SIGNAL(linkClicked(QUrl)), 0050 this, SLOT(openExternalLink(QUrl)) ); 0051 connect( this, SIGNAL(titleChanged(QString)), 0052 this, SLOT(setWindowTitle(QString)) ); 0053 0054 pageAction( QWebEnginePage::OpenLinkInNewWindow )->setEnabled( false ); 0055 pageAction( QWebEnginePage::OpenLinkInNewWindow )->setVisible( false ); 0056 } 0057 0058 TinyWebBrowser::~TinyWebBrowser() 0059 { 0060 // not yet needed 0061 //delete d; 0062 } 0063 0064 void TinyWebBrowser::setWikipediaPath( const QString& relativeUrl ) 0065 { 0066 QUrl url(relativeUrl); 0067 if ( url.isRelative() ) 0068 url = QUrl( guessWikipediaDomain() ).resolved( url ); 0069 load( url ); 0070 } 0071 0072 void TinyWebBrowser::print() 0073 { 0074 #ifndef QT_NO_PRINTER 0075 QPrinter printer; 0076 0077 QPointer<QPrintDialog> dlg = new QPrintDialog( &printer, this ); 0078 if ( dlg->exec() ) 0079 page()->print( &printer, [=](bool){} ); 0080 delete dlg; 0081 #endif 0082 } 0083 0084 QWebEngineView *TinyWebBrowser::createWindow( QWebEnginePage::WebWindowType type ) 0085 { 0086 Q_UNUSED(type) 0087 TinyWebBrowser *view = new TinyWebBrowser( this ); 0088 return view; 0089 } 0090 0091 void TinyWebBrowser::openExternalLink( const QUrl& url ) 0092 { 0093 QDesktopServices::openUrl( url ); 0094 } 0095 0096 0097 } // namespace Marble 0098 0099 #include "moc_TinyWebBrowser.cpp"