File indexing completed on 2025-03-09 04:54:39

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 "testwebenginescrolladdattachment.h"
0008 
0009 #include <KActionCollection>
0010 #include <QApplication>
0011 #include <QPushButton>
0012 #include <QVBoxLayout>
0013 #include <QWebEngineSettings>
0014 
0015 #include "messageviewer/mailwebengineview.h"
0016 
0017 template<typename Arg, typename R, typename C>
0018 struct InvokeWrapper {
0019     R *receiver;
0020     void (C::*memberFunction)(Arg);
0021     void operator()(Arg result)
0022     {
0023         (receiver->*memberFunction)(result);
0024     }
0025 };
0026 
0027 template<typename Arg, typename R, typename C>
0028 
0029 InvokeWrapper<Arg, R, C> invoke(R *receiver, void (C::*memberFunction)(Arg))
0030 {
0031     InvokeWrapper<Arg, R, C> wrapper = {receiver, memberFunction};
0032     return wrapper;
0033 }
0034 
0035 TestWebEngineScrollAddAttachment::TestWebEngineScrollAddAttachment(QWidget *parent)
0036     : QWidget(parent)
0037 {
0038     auto vboxLayout = new QVBoxLayout(this);
0039 
0040     mTestWebEngine = new MessageViewer::MailWebEngineView(new KActionCollection(this), this);
0041     mTestWebEngine->settings()->setAttribute(QWebEngineSettings::JavascriptEnabled, true);
0042     vboxLayout->addWidget(mTestWebEngine);
0043     mTestWebEngine->load(QUrl(QStringLiteral("http://www.kde.org")));
0044     auto scrollToButton = new QPushButton(QStringLiteral("Scroll to Attachment"), this);
0045     vboxLayout->addWidget(scrollToButton);
0046     connect(scrollToButton, &QPushButton::clicked, this, &TestWebEngineScrollAddAttachment::slotScrollToAttachment);
0047 }
0048 
0049 void TestWebEngineScrollAddAttachment::slotScrollToAttachment()
0050 {
0051     mTestWebEngine->scrollToAnchor(QStringLiteral("module"));
0052 }
0053 
0054 int main(int argc, char *argv[])
0055 {
0056     QApplication app(argc, argv);
0057     auto testWebEngine = new TestWebEngineScrollAddAttachment;
0058     testWebEngine->show();
0059     const int ret = app.exec();
0060     return ret;
0061 }
0062 
0063 #include "moc_testwebenginescrolladdattachment.cpp"