save
This commit is contained in:
parent
bc2dbfe70e
commit
08a67adc1c
2 changed files with 32 additions and 4 deletions
|
@ -16,7 +16,8 @@
|
||||||
#include <QFileIconProvider>
|
#include <QFileIconProvider>
|
||||||
#include <QScrollBar>
|
#include <QScrollBar>
|
||||||
|
|
||||||
TextBrowserViewer::TextBrowserViewer(QWidget* parent) : QTextBrowser(parent), m_downloader(new Downloader(this)) {
|
TextBrowserViewer::TextBrowserViewer(QWidget* parent)
|
||||||
|
: QTextBrowser(parent), m_downloader(new Downloader(this)), m_reloadingWithResources(false) {
|
||||||
setAutoFillBackground(true);
|
setAutoFillBackground(true);
|
||||||
setFrameShape(QFrame::Shape::NoFrame);
|
setFrameShape(QFrame::Shape::NoFrame);
|
||||||
setFrameShadow(QFrame::Shadow::Plain);
|
setFrameShadow(QFrame::Shadow::Plain);
|
||||||
|
@ -33,9 +34,15 @@ QVariant TextBrowserViewer::loadResource(int type, const QUrl& name) {
|
||||||
if (type == QTextDocument::ResourceType::ImageResource) {
|
if (type == QTextDocument::ResourceType::ImageResource) {
|
||||||
m_resourcesForHtml.append(name);
|
m_resourcesForHtml.append(name);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return {};
|
return {};
|
||||||
|
}
|
||||||
|
else if (m_loadedResources.contains(name)) {
|
||||||
|
return QImage::fromData(m_loadedResources.value(name));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return {};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QSize TextBrowserViewer::sizeHint() const {
|
QSize TextBrowserViewer::sizeHint() const {
|
||||||
|
@ -297,6 +304,8 @@ void TextBrowserViewer::contextMenuEvent(QContextMenuEvent* event) {
|
||||||
connect(m_actionReloadWithImages.data(), &QAction::triggered, this, &TextBrowserViewer::reloadWithImages);
|
connect(m_actionReloadWithImages.data(), &QAction::triggered, this, &TextBrowserViewer::reloadWithImages);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
menu->addAction(m_actionReloadWithImages.data());
|
||||||
|
|
||||||
auto anchor = anchorAt(event->pos());
|
auto anchor = anchorAt(event->pos());
|
||||||
|
|
||||||
if (!anchor.isEmpty()) {
|
if (!anchor.isEmpty()) {
|
||||||
|
@ -352,7 +361,26 @@ void TextBrowserViewer::reloadWithImages() {
|
||||||
m_reloadingWithResources = true;
|
m_reloadingWithResources = true;
|
||||||
m_loadedResources.clear();
|
m_loadedResources.clear();
|
||||||
|
|
||||||
|
for (const QUrl& url : m_resourcesForHtml) {
|
||||||
|
if (m_loadedResources.contains(url)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
QEventLoop loop;
|
||||||
|
|
||||||
|
connect(m_downloader.data(), &Downloader::completed, &loop, &QEventLoop::quit);
|
||||||
|
m_downloader->manipulateData(url.toString(), QNetworkAccessManager::Operation::GetOperation, {}, 5000);
|
||||||
|
|
||||||
|
loop.exec();
|
||||||
|
|
||||||
|
if (m_downloader->lastOutputError() == QNetworkReply::NetworkError::NoError) {
|
||||||
|
m_loadedResources.insert(url, m_downloader->lastOutputData());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
setHtml(html(), m_currentUrl);
|
setHtml(html(), m_currentUrl);
|
||||||
|
|
||||||
|
m_reloadingWithResources = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextBrowserViewer::onAnchorClicked(const QUrl& url) {
|
void TextBrowserViewer::onAnchorClicked(const QUrl& url) {
|
||||||
|
|
|
@ -642,7 +642,7 @@ void Application::showGuiMessage(Notification::Event event,
|
||||||
|
|
||||||
WebViewer* Application::createWebView() {
|
WebViewer* Application::createWebView() {
|
||||||
#if !defined(USE_WEBENGINE)
|
#if !defined(USE_WEBENGINE)
|
||||||
return new LiteHtmlViewer();
|
return new TextBrowserViewer();
|
||||||
#else
|
#else
|
||||||
if (forcedNoWebEngine()) {
|
if (forcedNoWebEngine()) {
|
||||||
return new TextBrowserViewer();
|
return new TextBrowserViewer();
|
||||||
|
|
Loading…
Add table
Reference in a new issue