From df7e9109b1339088f495709f032eb7d3703bc848 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Thu, 11 May 2023 08:00:22 +0200 Subject: [PATCH] add button to clear web cache and storage - in Tools menu --- src/librssguard/gui/dialogs/formmain.cpp | 7 +++++++ src/librssguard/gui/dialogs/formmain.ui | 6 ++++++ src/librssguard/gui/feedsview.cpp | 8 +++---- src/librssguard/miscellaneous/iofactory.cpp | 5 +++++ src/librssguard/miscellaneous/iofactory.h | 2 ++ src/librssguard/network-web/webfactory.cpp | 23 +++++++++++++++++++++ src/librssguard/network-web/webfactory.h | 5 +++++ 7 files changed, 52 insertions(+), 4 deletions(-) diff --git a/src/librssguard/gui/dialogs/formmain.cpp b/src/librssguard/gui/dialogs/formmain.cpp index c3b16f29b..d7fc7ca71 100644 --- a/src/librssguard/gui/dialogs/formmain.cpp +++ b/src/librssguard/gui/dialogs/formmain.cpp @@ -638,6 +638,7 @@ void FormMain::setupIcons() { m_ui->m_actionTabsPrevious->setIcon(icon_theme_factory->fromTheme(QSL("go-previous"))); m_ui->m_actionBrowserScrollUp->setIcon(icon_theme_factory->fromTheme(QSL("arrow-up"))); m_ui->m_actionBrowserScrollDown->setIcon(icon_theme_factory->fromTheme(QSL("arrow-down"))); + m_ui->m_actionCleanupWebCache->setIcon(icon_theme_factory->fromTheme(QSL("edit-clear"))); // Setup icons on TabWidget too. m_ui->m_tabWidget->setupIcons(); @@ -759,6 +760,12 @@ void FormMain::createConnections() { connect(m_ui->m_actionDownloadManager, &QAction::triggered, m_ui->m_tabWidget, &TabWidget::showDownloadManager); connect(m_ui->m_actionCleanupDatabase, &QAction::triggered, this, &FormMain::showDbCleanupAssistant); +#if defined(USE_WEBENGINE) + connect(m_ui->m_actionCleanupWebCache, &QAction::triggered, qApp->web(), &WebFactory::cleanupCache); +#else + m_ui->m_menuTools->removeAction(m_ui->m_actionCleanupWebCache); +#endif + // Menu "Help" connections. connect(m_ui->m_actionAboutGuard, &QAction::triggered, this, [this]() { FormAbout(this).exec(); diff --git a/src/librssguard/gui/dialogs/formmain.ui b/src/librssguard/gui/dialogs/formmain.ui index 16cebce67..66619858a 100755 --- a/src/librssguard/gui/dialogs/formmain.ui +++ b/src/librssguard/gui/dialogs/formmain.ui @@ -97,6 +97,7 @@ + @@ -931,6 +932,11 @@ Rearrange &feeds alphabetically + + + Cleanup web cac&he + + diff --git a/src/librssguard/gui/feedsview.cpp b/src/librssguard/gui/feedsview.cpp index 5bc9d7183..d8b4216e3 100644 --- a/src/librssguard/gui/feedsview.cpp +++ b/src/librssguard/gui/feedsview.cpp @@ -1002,10 +1002,10 @@ void FeedsView::onItemExpandRequested(const QList& items, bool exp) { } void FeedsView::drawRow(QPainter* painter, const QStyleOptionViewItem& options, const QModelIndex& index) const { - // auto opts = options; + auto opts = options; - // opts.decorationAlignment = Qt::AlignmentFlag::AlignLeft; - // opts.decorationSize = {options.decorationSize.height(), options.decorationSize.height()}; + opts.decorationAlignment = Qt::AlignmentFlag::AlignLeft; + // opts.decorationSize = {options.decorationSize.height(), 70}; - BaseTreeView::drawRow(painter, options, index); + BaseTreeView::drawRow(painter, opts, index); } diff --git a/src/librssguard/miscellaneous/iofactory.cpp b/src/librssguard/miscellaneous/iofactory.cpp index 60e5123f5..3072e6633 100644 --- a/src/librssguard/miscellaneous/iofactory.cpp +++ b/src/librssguard/miscellaneous/iofactory.cpp @@ -178,3 +178,8 @@ bool IOFactory::copyFile(const QString& source, const QString& destination) { return QFile::copy(source, destination); } + +void IOFactory::removeFolder(const QString& path) { + QDir dir(path); + dir.removeRecursively(); +} diff --git a/src/librssguard/miscellaneous/iofactory.h b/src/librssguard/miscellaneous/iofactory.h index 713740f0c..8f0a84586 100644 --- a/src/librssguard/miscellaneous/iofactory.h +++ b/src/librssguard/miscellaneous/iofactory.h @@ -48,6 +48,8 @@ class IOFactory { // Copies file, overwrites destination. static bool copyFile(const QString& source, const QString& destination); + + static void removeFolder(const QString& path); }; #endif // IOFACTORY_H diff --git a/src/librssguard/network-web/webfactory.cpp b/src/librssguard/network-web/webfactory.cpp index 0852e16ec..f5a4ba612 100644 --- a/src/librssguard/network-web/webfactory.cpp +++ b/src/librssguard/network-web/webfactory.cpp @@ -673,3 +673,26 @@ QString WebFactory::customUserAgent() const { void WebFactory::setCustomUserAgent(const QString& user_agent) { m_customUserAgent = user_agent; } + +#if defined(USE_WEBENGINE) +void WebFactory::cleanupCache() { + if (MsgBox::show(nullptr, + QMessageBox::Icon::Question, + tr("Web cache is going to be cleared"), + tr("Do you really want to clear web cache?"), + {}, + {}, + QMessageBox::StandardButton::Yes | QMessageBox::StandardButton::No) == + QMessageBox::StandardButton::Yes) { + m_engineProfile->clearHttpCache(); + + // NOTE: Manually clear storage. + try { + IOFactory::removeFolder(m_engineProfile->persistentStoragePath()); + } + catch (const ApplicationException& ex) { + qCriticalNN << LOGSEC_CORE << "Removing of webengine storage failed:" << QUOTE_W_SPACE_DOT(ex.message()); + } + } +} +#endif diff --git a/src/librssguard/network-web/webfactory.h b/src/librssguard/network-web/webfactory.h index ef7beee7e..74d5fad6b 100644 --- a/src/librssguard/network-web/webfactory.h +++ b/src/librssguard/network-web/webfactory.h @@ -58,6 +58,11 @@ class WebFactory : public QObject { QString customUserAgent() const; void setCustomUserAgent(const QString& user_agent); + public slots: +#if defined(USE_WEBENGINE) + void cleanupCache(); +#endif + #if defined(USE_WEBENGINE) private slots: void createMenu(QMenu* menu = nullptr);