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.
138 lines
3.9 KiB
138 lines
3.9 KiB
/****************************************************************************** |
|
* Copyright 2013 Sebastian Kügler <sebas@kde.org> * |
|
* * |
|
* This library is free software; you can redistribute it and/or * |
|
* modify it under the terms of the GNU Library General Public * |
|
* License as published by the Free Software Foundation; either * |
|
* version 2 of the License, or (at your option) any later version. * |
|
* * |
|
* This library is distributed in the hope that it will be useful, * |
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of * |
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * |
|
* Library General Public License for more details. * |
|
* * |
|
* You should have received a copy of the GNU Library General Public License * |
|
* along with this library; see the file COPYING.LIB. If not, write to * |
|
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * |
|
* Boston, MA 02110-1301, USA. * |
|
*******************************************************************************/ |
|
|
|
#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(QObject* parent, 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("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" |
|
|
|
|