2 Copyright (c) 2016 Montel Laurent <montel@kde.org>
4 This program is free software; you can redistribute it and/or modify it
5 under the terms of the GNU General Public License, version 2, as
6 published by the Free Software Foundation.
8 This program is distributed in the hope that it will be useful, but
9 WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 General Public License for more details.
13 You should have received a copy of the GNU General Public License along
14 with this program; if not, write to the Free Software Foundation, Inc.,
15 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18 #include "openurlrequest.h"
19 #include "webengineframe.h"
20 #include "webengineviewer.h"
21 #include <QVBoxLayout>
23 #include <KIO/FavIconRequestJob>
24 #include <articleviewer-ng/webengine/articleviewerwebenginewidgetng.h>
25 using namespace Akregator
;
27 WebEngineFrame::WebEngineFrame(KActionCollection
*ac
, QWidget
*parent
)
30 QVBoxLayout
*layout
= new QVBoxLayout(this);
33 Akregator::WebEngineViewer
*viewer
= new Akregator::WebEngineViewer(ac
, this);
34 mArticleViewerWidgetNg
= new Akregator::ArticleViewerWebEngineWidgetNg(viewer
, ac
, this);
36 connect(mArticleViewerWidgetNg
->articleViewerNg(), &ArticleViewerWebEngine::titleChanged
, this, &WebEngineFrame::slotTitleChanged
);
37 connect(mArticleViewerWidgetNg
->articleViewerNg(), &ArticleViewerWebEngine::loadProgress
, this, &WebEngineFrame::slotProgressChanged
);
38 connect(mArticleViewerWidgetNg
->articleViewerNg(), &ArticleViewerWebEngine::signalOpenUrlRequest
, this, &WebEngineFrame::signalOpenUrlRequest
);
39 connect(mArticleViewerWidgetNg
->articleViewerNg(), &ArticleViewerWebEngine::loadStarted
, this, &WebEngineFrame::slotLoadStarted
);
40 connect(mArticleViewerWidgetNg
->articleViewerNg(), &ArticleViewerWebEngine::loadFinished
, this, &WebEngineFrame::slotLoadFinished
);
41 connect(mArticleViewerWidgetNg
->articleViewerNg(), &ArticleViewerWebEngine::showStatusBarMessage
, this, &WebEngineFrame::showStatusBarMessage
);
42 layout
->addWidget(mArticleViewerWidgetNg
);
45 WebEngineFrame::~WebEngineFrame()
49 void WebEngineFrame::slotLoadFinished()
51 Q_EMIT
signalCompleted(this);
54 void WebEngineFrame::slotLoadStarted()
56 Q_EMIT
signalStarted(this);
59 void WebEngineFrame::slotProgressChanged(int progress
)
61 Q_EMIT
signalLoadingProgress(this, progress
);
64 void WebEngineFrame::slotTitleChanged(const QString
&title
)
66 Q_EMIT
signalTitleChanged(this, title
);
69 KParts::ReadOnlyPart
*WebEngineFrame::part() const
74 QUrl
WebEngineFrame::url() const
76 return mArticleViewerWidgetNg
->articleViewerNg()->url();
79 bool WebEngineFrame::openUrl(const OpenUrlRequest
&request
)
81 const QUrl url
= request
.url();
82 KIO::FavIconRequestJob
*job
= new KIO::FavIconRequestJob(url
);
83 connect(job
, &KIO::FavIconRequestJob::result
, this, [job
, this](KJob
*) {
85 Q_EMIT
signalIconChanged(this, QIcon(job
->iconFile()));
89 mArticleViewerWidgetNg
->articleViewerNg()->load(url
);
93 void WebEngineFrame::loadConfig(const KConfigGroup
&config
, const QString
&prefix
)
95 const QString url
= config
.readEntry(QStringLiteral("url").prepend(prefix
), QString());
96 const qreal zf
= config
.readEntry(QStringLiteral("zoom").prepend(prefix
), 1.0);
97 const bool onlyZoomFont
= config
.readEntry(QStringLiteral("onlyZoomFont").prepend(prefix
), false);
98 OpenUrlRequest
req(url
);
99 KParts::OpenUrlArguments args
;
102 mArticleViewerWidgetNg
->articleViewerNg()->setZoomFactor(zf
);
103 //FIXME mArticleViewerWidgetNg->articleViewerNg()->settings()->setAttribute(QWebEngineSettings::ZoomTextOnly, onlyZoomFont);
106 void WebEngineFrame::saveConfig(KConfigGroup
&config
, const QString
&prefix
)
108 config
.writeEntry(QStringLiteral("url").prepend(prefix
), url().url());
109 config
.writeEntry(QStringLiteral("zoom").prepend(prefix
), mArticleViewerWidgetNg
->articleViewerNg()->zoomFactor());
110 //FIXME config.writeEntry(QStringLiteral("onlyZoomFont").prepend(prefix), mArticleViewerWidgetNg->articleViewerNg()->settings()->testAttribute(QWebSettings::ZoomTextOnly));
113 void WebEngineFrame::slotCopyInFrame(int frameId
)
115 if (frameId
!= id()) {
118 mArticleViewerWidgetNg
->articleViewerNg()->slotCopy();
121 void WebEngineFrame::slotPrintInFrame(int frameId
)
123 if (frameId
!= id()) {
126 mArticleViewerWidgetNg
->articleViewerNg()->slotPrint();
129 void WebEngineFrame::slotPrintPreviewInFrame(int frameId
)
131 if (frameId
!= id()) {
134 mArticleViewerWidgetNg
->articleViewerNg()->slotPrintPreview();
137 void WebEngineFrame::slotFindTextInFrame(int frameId
)
139 if (frameId
!= id()) {
142 mArticleViewerWidgetNg
->slotFind();
145 void WebEngineFrame::slotTextToSpeechInFrame(int frameId
)
147 if (frameId
!= id()) {
150 mArticleViewerWidgetNg
->slotSpeakText();
153 void WebEngineFrame::slotZoomChangeInFrame(int frameId
, qreal value
)
155 if (frameId
!= id()) {
158 mArticleViewerWidgetNg
->articleViewerNg()->setZoomFactor(value
);
161 void WebEngineFrame::slotZoomTextOnlyInFrame(int frameId
, bool textOnlyInFrame
)
163 if (frameId
!= id()) {
166 mArticleViewerWidgetNg
->articleViewerNg()->slotZoomTextOnlyInFrame(textOnlyInFrame
);
169 void WebEngineFrame::slotHistoryForward()
171 mArticleViewerWidgetNg
->articleViewerNg()->pageAction(QWebEnginePage::Forward
)->trigger();
174 void WebEngineFrame::slotHistoryBack()
176 mArticleViewerWidgetNg
->articleViewerNg()->pageAction(QWebEnginePage::Back
)->trigger();
179 void WebEngineFrame::slotReload()
181 mArticleViewerWidgetNg
->articleViewerNg()->reload();
184 void WebEngineFrame::slotStop()
186 mArticleViewerWidgetNg
->articleViewerNg()->stop();
189 qreal
WebEngineFrame::zoomFactor() const
191 return mArticleViewerWidgetNg
->articleViewerNg()->zoomFactor();
194 bool WebEngineFrame::zoomTextOnlyInFrame() const
196 return mArticleViewerWidgetNg
->articleViewerNg()->zoomTextOnlyInFrame();
199 void WebEngineFrame::slotSaveLinkAsInFrame(int frameId
)
201 if (frameId
!= id()) {
204 mArticleViewerWidgetNg
->articleViewerNg()->slotSaveLinkAs();
207 void WebEngineFrame::slotCopyLinkAsInFrame(int frameId
)
209 if (frameId
!= id()) {
212 mArticleViewerWidgetNg
->articleViewerNg()->slotCopyLinkAddress();
215 void WebEngineFrame::slotSaveImageOnDiskInFrame(int frameId
)
217 if (frameId
!= id()) {
220 mArticleViewerWidgetNg
->articleViewerNg()->slotSaveImageOnDiskInFrame();
223 void WebEngineFrame::slotCopyImageLocationInFrame(int frameId
)
225 if (frameId
!= id()) {
228 mArticleViewerWidgetNg
->articleViewerNg()->slotCopyImageLocationInFrame();
231 void WebEngineFrame::slotBlockImageInFrame(int frameId
)
233 if (frameId
!= id()) {
236 mArticleViewerWidgetNg
->articleViewerNg()->slotBlockImage();
239 void WebEngineFrame::slotExpandUrlInFrame(int frameId
)
241 if (frameId
!= id()) {
244 mArticleViewerWidgetNg
->articleViewerNg()->slotE();