From 30878ae39460e14fe0a8ba0c06b3db6d16e73715 Mon Sep 17 00:00:00 2001 From: Tannin Date: Thu, 19 May 2016 19:17:15 +0200 Subject: added button to clear webcaches and cookies --- src/nexusinterface.cpp | 7 +++++++ src/nexusinterface.h | 5 +++++ src/nxmaccessmanager.cpp | 9 +++++++++ src/nxmaccessmanager.h | 2 ++ src/persistentcookiejar.cpp | 6 ++++++ src/persistentcookiejar.h | 6 ++++++ src/settingsdialog.cpp | 7 +++++++ src/settingsdialog.h | 3 +++ src/settingsdialog.ui | 31 +++++++++++++++++++++++++++++++ 9 files changed, 76 insertions(+) (limited to 'src') diff --git a/src/nexusinterface.cpp b/src/nexusinterface.cpp index f5baa6ab..2c690aa4 100644 --- a/src/nexusinterface.cpp +++ b/src/nexusinterface.cpp @@ -27,6 +27,7 @@ along with Mod Organizer. If not, see . #include #include +#include #include @@ -409,6 +410,12 @@ void NexusInterface::cleanup() m_DiskCache = nullptr; } +void NexusInterface::clearCache() +{ + m_DiskCache->clear(); + m_AccessManager->clearCookies(); +} + void NexusInterface::nextRequest() { if ((m_ActiveRequest.size() >= MAX_ACTIVE_DOWNLOADS) diff --git a/src/nexusinterface.h b/src/nexusinterface.h index c9a81134..9e7f3642 100644 --- a/src/nexusinterface.h +++ b/src/nexusinterface.h @@ -142,6 +142,11 @@ public: */ void cleanup(); + /** + * @brief clear webcache and cookies associated with this access manager + */ + void clearCache(); + /** * @brief request description for a mod * diff --git a/src/nxmaccessmanager.cpp b/src/nxmaccessmanager.cpp index a7dd6eef..a0b9c01f 100644 --- a/src/nxmaccessmanager.cpp +++ b/src/nxmaccessmanager.cpp @@ -110,6 +110,15 @@ void NXMAccessManager::showCookies() const } } +void NXMAccessManager::clearCookies() +{ + PersistentCookieJar *jar = qobject_cast(cookieJar()); + if (jar != nullptr) { + jar->clear(); + } else { + qWarning("failed to clear cookies, invalid cookie jar"); + } +} void NXMAccessManager::startLoginCheck() { diff --git a/src/nxmaccessmanager.h b/src/nxmaccessmanager.h index 82bd2bd5..c58c4cc3 100644 --- a/src/nxmaccessmanager.h +++ b/src/nxmaccessmanager.h @@ -52,6 +52,8 @@ public: void showCookies() const; + void clearCookies(); + QString userAgent(const QString &subModule = QString()) const; void startLoginCheck(); diff --git a/src/persistentcookiejar.cpp b/src/persistentcookiejar.cpp index 44537491..a6eb78fa 100644 --- a/src/persistentcookiejar.cpp +++ b/src/persistentcookiejar.cpp @@ -15,6 +15,12 @@ PersistentCookieJar::~PersistentCookieJar() { save(); } +void PersistentCookieJar::clear() { + for (const QNetworkCookie &cookie : allCookies()) { + deleteCookie(cookie); + } +} + void PersistentCookieJar::save() { QTemporaryFile file; if (!file.open()) { diff --git a/src/persistentcookiejar.h b/src/persistentcookiejar.h index 812b785c..0ff747ee 100644 --- a/src/persistentcookiejar.h +++ b/src/persistentcookiejar.h @@ -5,9 +5,15 @@ class PersistentCookieJar : public QNetworkCookieJar { + + Q_OBJECT + public: PersistentCookieJar(const QString &fileName, QObject *parent = 0); virtual ~PersistentCookieJar(); + + void clear(); + private: void save(); diff --git a/src/settingsdialog.cpp b/src/settingsdialog.cpp index e528f478..c66cc243 100644 --- a/src/settingsdialog.cpp +++ b/src/settingsdialog.cpp @@ -26,6 +26,7 @@ along with Mod Organizer. If not, see . #include "iplugingame.h" #include "settings.h" #include "instancemanager.h" +#include "nexusinterface.h" #include #include @@ -227,3 +228,9 @@ void SettingsDialog::on_changeInstanceButton_clicked() qApp->exit(INT_MAX); } } + +void SettingsDialog::on_clearCacheButton_clicked() +{ + QDir(Settings::instance().getCacheDirectory()).removeRecursively(); + NexusInterface::instance()->clearCache(); +} diff --git a/src/settingsdialog.h b/src/settingsdialog.h index d266488d..1ae21015 100644 --- a/src/settingsdialog.h +++ b/src/settingsdialog.h @@ -52,6 +52,9 @@ signals: void resetDialogs(); +private slots: + void on_clearCacheButton_clicked(); + private slots: void on_browseBaseDirBtn_clicked(); diff --git a/src/settingsdialog.ui b/src/settingsdialog.ui index 808d8296..2a4b5589 100644 --- a/src/settingsdialog.ui +++ b/src/settingsdialog.ui @@ -461,6 +461,37 @@ p, li { white-space: pre-wrap; } + + + + + + Remove cache and cookies. Forces a new login. + + + Clear Cache + + + + :/MO/gui/edit_clear:/MO/gui/edit_clear + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + -- cgit v1.3.1