Index: applets/comic/comic.h =================================================================== --- applets/comic/comic.h +++ applets/comic/comic.h @@ -219,6 +219,7 @@ ComicData mCurrent; SavingDir *mSavingDir; + QTimer *mRestartEngine; }; #endif Index: applets/comic/comic.cpp =================================================================== --- applets/comic/comic.cpp +++ applets/comic/comic.cpp @@ -71,7 +71,8 @@ mCheckNewStrips(nullptr), mActionShop(nullptr), mEngine(nullptr), - mSavingDir(nullptr) + mSavingDir(nullptr), + mRestartEngine(nullptr) { setHasConfigurationInterface( true ); } @@ -159,6 +160,14 @@ updateUsedComics(); changeComic( true ); + + mRestartEngine = new QTimer( this ); + mRestartEngine->setSingleShot( true ); + mRestartEngine->setInterval( 60 * 1000 ); + connect( mRestartEngine, &QTimer::timeout, this, [this]() { + setBusy(false); + QTimer::singleShot( 10 * 1000, this, &ComicApplet::slotCurrentDay ); + }); } ComicApplet::~ComicApplet() @@ -176,6 +185,7 @@ void ComicApplet::dataUpdated( const QString &source, const Plasma::DataEngine::Data &data ) { setBusy(false); + mRestartEngine->stop(); //disconnect prefetched comic strips if (mEngine && source != mOldSource ) { @@ -492,6 +502,7 @@ if ( !id.isEmpty() && mEngine && mEngine->isValid() ) { setBusy(true); + mRestartEngine->start(); const QString identifier = id + QLatin1Char(':') + identifierSuffix; Index: dataengines/comic/comicprovider.cpp =================================================================== --- dataengines/comic/comicprovider.cpp +++ dataengines/comic/comicprovider.cpp @@ -264,6 +264,9 @@ void ComicProvider::requestRedirectedUrl(const QUrl &url, int id, const MetaInfos &infos) { + //each request restarts the timer + d->mTimer->start(); + KIO::MimetypeJob *job = KIO::mimetype(url, KIO::HideProgressInfo); job->setProperty("uid", id); d->mRedirections[job] = url;