You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
125 lines
2.6 KiB
125 lines
2.6 KiB
/* |
|
SPDX-FileCopyrightText: 2013 Sebastian Kügler <sebas@kde.org> |
|
|
|
SPDX-License-Identifier: LGPL-2.0-or-later |
|
*/ |
|
|
|
#include "pumpjob.h" |
|
|
|
#include <QDebug> |
|
|
|
#include <KJobTrackerInterface> |
|
#include <KLocalizedString> |
|
#include <QStringList> |
|
#include <QTimer> |
|
|
|
static QTextStream cout(stdout); |
|
|
|
class PumpJobPrivate |
|
{ |
|
public: |
|
QString name; |
|
QString error; |
|
|
|
QTimer *timer; |
|
int interval = 200; |
|
|
|
int counter = 0; |
|
|
|
bool suspended = false; |
|
}; |
|
|
|
PumpJob::PumpJob(int interval) |
|
: KIO::Job() |
|
{ |
|
d = new PumpJobPrivate; |
|
|
|
if (interval) { |
|
d->interval = d->interval * interval; |
|
} |
|
KIO::getJobTracker()->registerJob(this); |
|
|
|
d->timer = new QTimer(this); |
|
d->timer->setInterval(d->interval); |
|
qDebug() << "Starting job with interval: " << d->interval; |
|
|
|
connect(d->timer, &QTimer::timeout, this, &PumpJob::timeout); |
|
|
|
init(); |
|
} |
|
|
|
void PumpJob::init() |
|
{ |
|
emit description(this, |
|
i18n("Pump Job"), |
|
qMakePair(i18n("Source"), QStringLiteral("this is the source")), |
|
qMakePair(i18n("Destination"), QStringLiteral("destination, baby"))); |
|
d->timer->start(); |
|
} |
|
|
|
PumpJob::~PumpJob() |
|
{ |
|
KIO::getJobTracker()->unregisterJob(this); |
|
qDebug() << "Bye bye"; |
|
delete d; |
|
} |
|
|
|
void PumpJob::start() |
|
{ |
|
qDebug() << "Starting job / timer"; |
|
d->timer->start(); |
|
} |
|
|
|
bool PumpJob::doKill() |
|
{ |
|
qDebug() << "kill"; |
|
emitResult(); |
|
d->timer->stop(); |
|
setError(KIO::ERR_USER_CANCELED); |
|
setErrorText(QStringLiteral("You killed the job.")); |
|
return KJob::doKill(); |
|
} |
|
|
|
bool PumpJob::doResume() |
|
{ |
|
d->suspended = false; |
|
qDebug() << "resume"; |
|
d->timer->start(); |
|
emit resumed(this); |
|
return KJob::doResume(); |
|
} |
|
|
|
bool PumpJob::isSuspended() const |
|
{ |
|
return d->suspended; |
|
} |
|
|
|
bool PumpJob::doSuspend() |
|
{ |
|
d->suspended = true; |
|
qDebug() << "suspend"; |
|
d->timer->stop(); |
|
emit suspended(this); |
|
return KJob::doSuspend(); |
|
} |
|
|
|
void PumpJob::timeout() |
|
{ |
|
d->counter++; |
|
setPercent(d->counter); |
|
emitSpeed(1024 * 1024 * d->counter / 70); // just something randomly changing |
|
int seconds = (int)((d->interval * 100) - (d->interval * percent())) / 1000; |
|
emit infoMessage(this, i18n("Testing kuiserver (%1 seconds remaining)", seconds), i18n("Testing kuiserver (%1 seconds remaining)", seconds)); |
|
|
|
qDebug() << "percent: " << percent() << " Seconds: " << seconds; |
|
if (d->counter % 20 == 0) { |
|
// qDebug() << "percent: " << percent() << " Seconds: " << seconds; |
|
} |
|
|
|
if (d->counter >= 100) { |
|
qDebug() << "Job done"; |
|
emitResult(); |
|
} |
|
} |
|
|
|
#include "moc_pumpjob.cpp"
|
|
|