Git commit 3879e94fb3bb8023c845720263189866cf7a4e0d by Montel Laurent. Committed on 09/12/2016 at 06:11. Pushed by mlaurent into branch 'master'. implement timer M +55 -4 webengineviewer/src/checkphishingurl/backoffmodemanager.cpp M +3 -0 webengineviewer/src/checkphishingurl/backoffmodemanager.h https://commits.kde.org/messagelib/3879e94fb3bb8023c845720263189866cf7a4e0d diff --git a/webengineviewer/src/checkphishingurl/backoffmodemanager.cpp b/= webengineviewer/src/checkphishingurl/backoffmodemanager.cpp index af522bab..21da9002 100644 --- a/webengineviewer/src/checkphishingurl/backoffmodemanager.cpp +++ b/webengineviewer/src/checkphishingurl/backoffmodemanager.cpp @@ -24,6 +24,8 @@ #include #include = +#include + using namespace WebEngineViewer; = Q_GLOBAL_STATIC(BackOffModeManager, s_backOffModeManager) @@ -36,6 +38,9 @@ public: isInOffMode(false), q(qq) { + mTimer =3D new QTimer(q); + mTimer->setSingleShot(true); + q->connect(mTimer, &QTimer::timeout, q, &BackOffModeManager::slotT= imerFinished); load(); } void save(); @@ -43,19 +48,62 @@ public: int calculateBackModeTime() const; void startOffMode(); void exitBackOffMode(); + void updateTimer(int minutes); + void slotTimerFinished(); + int mNumberOfHttpFailed; bool isInOffMode; + QTimer *mTimer; BackOffModeManager *q; }; = void BackOffModeManagerPrivate::save() { - //TODO + KConfig phishingurlKConfig(WebEngineViewer::CheckPhishingUrlUtil::conf= igFileName()); + KConfigGroup grp =3D phishingurlKConfig.group(QStringLiteral("BackOffM= ode")); + grp.writeEntry("Enabled", isInOffMode); + if (isInOffMode) { + int calculateTimeInMinutes =3D calculateBackModeTime(); + uint delay =3D QDateTime::currentDateTime().addMSecs(calculateTime= InMinutes * 60).toTime_t(); + grp.writeEntry("Delay", delay); + updateTimer(calculateTimeInMinutes); + } else { + grp.deleteEntry("Delay"); + } + grp.sync(); +} + +void BackOffModeManagerPrivate::slotTimerFinished() +{ + qCDebug(WEBENGINEVIEWER_LOG) << "Existing from BlackOffMode"; + isInOffMode =3D false; + save(); +} + +void BackOffModeManagerPrivate::updateTimer(int minutes) +{ + if (mTimer->isActive()) { + mTimer->stop(); + } + mTimer->setInterval(minutes * 60 * 1000); + mTimer->start(); } = void BackOffModeManagerPrivate::load() { - //TODO + KConfig phishingurlKConfig(WebEngineViewer::CheckPhishingUrlUtil::conf= igFileName()); + KConfigGroup grp =3D phishingurlKConfig.group(QStringLiteral("BackOffM= ode")); + isInOffMode =3D grp.readEntry("Enabled", false); + if (isInOffMode) { + uint delay =3D grp.readEntry("Delay", 0); + uint now =3D QDateTime::currentDateTime().toTime_t(); + if (delay > now) { + updateTimer(1); + } else { + //Disable mode. + isInOffMode =3D false; + } + } } = int BackOffModeManagerPrivate::calculateBackModeTime() const @@ -70,8 +118,6 @@ void BackOffModeManagerPrivate::startOffMode() isInOffMode =3D true; } mNumberOfHttpFailed++; - //TODO Start/restart timer. - //TODO add timer here. save(); } = @@ -111,3 +157,8 @@ int BackOffModeManager::numberOfHttpFailed() const { return d->mNumberOfHttpFailed; } + +void BackOffModeManager::slotTimerFinished() +{ + d->slotTimerFinished(); +} diff --git a/webengineviewer/src/checkphishingurl/backoffmodemanager.h b/we= bengineviewer/src/checkphishingurl/backoffmodemanager.h index 078f65d0..df07a2ae 100644 --- a/webengineviewer/src/checkphishingurl/backoffmodemanager.h +++ b/webengineviewer/src/checkphishingurl/backoffmodemanager.h @@ -39,6 +39,9 @@ public: = int numberOfHttpFailed() const; = +public Q_SLOTS: + void slotTimerFinished(); + private: BackOffModeManagerPrivate *const d; };