27#include "ui_clearprivatedata.h"
33#include <QNetworkCookie>
35#include <QWebEngineSettings>
36#include <QNetworkDiskCache>
41#include <QWebEngineProfile>
47 setAttribute(Qt::WA_DeleteOnClose);
50 ui->buttonBox->setFocus();
51 connect(ui->history, &QAbstractButton::clicked,
this, &ClearPrivateData::historyClicked);
52 connect(ui->clear, &QAbstractButton::clicked,
this, &ClearPrivateData::dialogAccepted);
53 connect(ui->optimizeDb, &QAbstractButton::clicked,
this, &ClearPrivateData::optimizeDb);
54 connect(ui->editCookies, &QAbstractButton::clicked,
this, &ClearPrivateData::showCookieManager);
58 restoreState(settings.
value(
QSL(
"state"), QByteArray()).toByteArray());
62void ClearPrivateData::historyClicked(
bool state)
64 ui->historyLength->setEnabled(
state);
88 mApp->webProfile()->clearHttpCache();
91void ClearPrivateData::closeEvent(QCloseEvent* e)
101void ClearPrivateData::dialogAccepted()
103 QApplication::setOverrideCursor(Qt::WaitCursor);
105 if (ui->history->isChecked()) {
106 qint64 start = QDateTime::currentMSecsSinceEpoch();
109 const QDate today = QDate::currentDate();
110 const QDate week = today.addDays(1 - today.dayOfWeek());
111 const QDate month = QDate(today.year(), today.month(), 1);
113 switch (ui->historyLength->currentIndex()) {
115 end = QDateTime(today, QTime(), QTimeZone::systemTimeZone()).toMSecsSinceEpoch();
118 end = QDateTime(week, QTime(), QTimeZone::systemTimeZone()).toMSecsSinceEpoch();
121 end = QDateTime(month, QTime(), QTimeZone::systemTimeZone()).toMSecsSinceEpoch();
128 mApp->history()->clearHistory();
131 const QList<int> &indexes =
mApp->history()->indexesFromTimeRange(start, end);
132 mApp->history()->deleteHistoryEntry(indexes);
136 if (ui->cookies->isChecked()) {
137 mApp->cookieJar()->deleteAllCookies();
140 if (ui->cache->isChecked()) {
144 if (ui->databases->isChecked()) {
148 if (ui->localStorage->isChecked()) {
152 QApplication::restoreOverrideCursor();
154 ui->clear->setEnabled(
false);
155 ui->clear->setText(tr(
"Done"));
157 QTimer::singleShot(1000,
this, &QWidget::close);
160void ClearPrivateData::optimizeDb()
162 mApp->setOverrideCursor(Qt::WaitCursor);
171 mApp->restoreOverrideCursor();
173 QMessageBox::information(
this, tr(
"Database Optimized"), tr(
"Database successfully optimized.<br/><br/><b>Database Size Before: </b>%1<br/><b>Database Size After: </b>%2").arg(sizeBefore, sizeAfter));
176void ClearPrivateData::showCookieManager()
182static const int stateDataVersion = 0x0001;
184void ClearPrivateData::restoreState(
const QByteArray &
state)
186 QDataStream stream(
state);
187 if (stream.atEnd()) {
192 int historyIndex = -1;
193 bool databases =
false;
194 bool localStorage =
false;
196 bool cookies =
false;
200 if (version != stateDataVersion) {
204 stream >> historyIndex;
206 stream >> localStorage;
211 if (historyIndex != -1) {
212 ui->history->setChecked(
true);
213 ui->historyLength->setEnabled(
true);
214 ui->historyLength->setCurrentIndex(historyIndex);
217 ui->databases->setChecked(databases);
218 ui->localStorage->setChecked(localStorage);
219 ui->cache->setChecked(cache);
220 ui->cookies->setChecked(cookies);
223QByteArray ClearPrivateData::saveState()
227 QDataStream stream(&data, QIODevice::WriteOnly);
229 stream << stateDataVersion;
231 if (!ui->history->isChecked()) {
235 stream << ui->historyLength->currentIndex();
238 stream << ui->databases->isChecked();
239 stream << ui->localStorage->isChecked();
240 stream << ui->cache->isChecked();
241 stream << ui->cookies->isChecked();
static void clearWebDatabases()
ClearPrivateData(QWidget *parent=nullptr)
static void clearLocalStorage()
static QString currentProfilePath()
static IconProvider * instance()
void clearOldIconsInDatabase()
void beginGroup(const QString &prefix)
QVariant value(const QString &key, const QVariant &defaultValue=QVariant())
void setValue(const QString &key, const QVariant &defaultValue=QVariant())