File indexing completed on 2025-03-09 04:54:37
0001 /* 0002 SPDX-FileCopyrightText: 2016-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "scamdetectionwebengine_gui.h" 0008 #include "scamdetection/scamdetectionwarningwidget.h" 0009 #include "scamdetection/scamdetectionwebengine.h" 0010 0011 #include <QApplication> 0012 #include <QCommandLineOption> 0013 #include <QCommandLineParser> 0014 #include <QFileDialog> 0015 #include <QPushButton> 0016 #include <QStandardPaths> 0017 #include <QUrl> 0018 #include <QVBoxLayout> 0019 #include <QWebEngineView> 0020 0021 ScamDetectionWebEngineTestWidget::ScamDetectionWebEngineTestWidget(const QString &filename, QWidget *parent) 0022 : QWidget(parent) 0023 { 0024 mScamDetection = new MessageViewer::ScamDetectionWebEngine(this); 0025 0026 auto lay = new QVBoxLayout(this); 0027 mScamWarningWidget = new MessageViewer::ScamDetectionWarningWidget(); 0028 mScamWarningWidget->setUseInTestApps(true); 0029 lay->addWidget(mScamWarningWidget); 0030 0031 mWebEngineView = new QWebEngineView; 0032 connect(mWebEngineView, &QWebEngineView::loadFinished, this, &ScamDetectionWebEngineTestWidget::slotLoadFinished); 0033 lay->addWidget(mWebEngineView); 0034 0035 connect(mScamDetection, 0036 &MessageViewer::ScamDetectionWebEngine::messageMayBeAScam, 0037 mScamWarningWidget, 0038 &MessageViewer::ScamDetectionWarningWidget::slotShowWarning); 0039 connect(mScamWarningWidget, &MessageViewer::ScamDetectionWarningWidget::showDetails, mScamDetection, &MessageViewer::ScamDetectionWebEngine::showDetails); 0040 0041 mWebEngineView->load(QUrl::fromLocalFile(filename)); 0042 0043 auto hbox = new QHBoxLayout; 0044 auto openFile = new QPushButton(QStringLiteral("Open html...")); 0045 connect(openFile, &QPushButton::clicked, this, &ScamDetectionWebEngineTestWidget::slotOpenHtml); 0046 hbox->addWidget(openFile); 0047 lay->addLayout(hbox); 0048 } 0049 0050 ScamDetectionWebEngineTestWidget::~ScamDetectionWebEngineTestWidget() = default; 0051 0052 void ScamDetectionWebEngineTestWidget::slotLoadFinished() 0053 { 0054 mScamDetection->scanPage(mWebEngineView->page()); 0055 } 0056 0057 void ScamDetectionWebEngineTestWidget::slotOpenHtml() 0058 { 0059 const QString fileName = QFileDialog::getOpenFileName(nullptr, QString(), QString(), QStringLiteral("*.html")); 0060 if (!fileName.isEmpty()) { 0061 mScamWarningWidget->setVisible(false); 0062 mWebEngineView->load(QUrl::fromLocalFile(fileName)); 0063 } 0064 } 0065 0066 int main(int argc, char **argv) 0067 { 0068 QApplication app(argc, argv); 0069 QStandardPaths::setTestModeEnabled(true); 0070 0071 QCommandLineParser parser; 0072 parser.addVersionOption(); 0073 parser.addHelpOption(); 0074 parser.addOption(QCommandLineOption(QStringList() << QStringLiteral("+[url]"), QStringLiteral("URL of an html file to be opened"))); 0075 parser.process(app); 0076 0077 QString fileName; 0078 if (!parser.positionalArguments().isEmpty()) { 0079 fileName = parser.positionalArguments().at(0); 0080 } else { 0081 fileName = QFileDialog::getOpenFileName(nullptr, QString(), QString(), QStringLiteral("HTML File (*.html)")); 0082 } 0083 if (fileName.isEmpty()) { 0084 return 0; 0085 } 0086 0087 auto w = new ScamDetectionWebEngineTestWidget(fileName); 0088 0089 w->show(); 0090 app.exec(); 0091 delete w; 0092 return 0; 0093 } 0094 0095 #include "moc_scamdetectionwebengine_gui.cpp"