Page MenuHomePhorge

kazv-io.cpp
No OneTemporary

Size
1 KB
Referenced Files
None
Subscribers
None

kazv-io.cpp

#include <QUrl>
#include <KIO/TransferJob>
#include <QObject>
#include <QString>
#include <QSaveFile>
#include <QIODevice>
#include <QFileDialog>
#include <QDebug>
#include <KIO/TransferJob>
#include "kazv-io.hpp"
struct KazvIOPrivate {
QPointer<KIO::TransferJob> job;
float progress = 0;
QUrl fileUrl;
QSaveFile file;
};
KazvIO::KazvIO(QObject *parent)
: QObject(parent)
, m_d(new KazvIOPrivate)
{
}
KazvIO::~KazvIO() = default;
void KazvIO::download(QUrl url)
{
if (m_d->job) {
return;
}
m_d->job = KIO::get(url);
m_d->file.setFileName(m_d->fileUrl.path());
m_d->file.open(QIODevice::WriteOnly);
connect(m_d->job, &KIO::TransferJob::data, this, &KazvIO::write);
connect(m_d->job, &KJob::percentChanged, this, &KazvIO::updatePercent);
connect(m_d->job, &KJob::result, this, &KazvIO::emitResult);
m_d->job->start();
}
void KazvIO::suspend()
{
if (!m_d->job->suspend()) {
qDebug() << "Suspend job failed";
}
}
void KazvIO::resume()
{
if (!m_d->job->resume()) {
qDebug() << "Resume job failed";
}
}
void KazvIO::cancel()
{
if (!m_d->job->kill()) {
qDebug() << "Cancel job failed";
}
}
float KazvIO::progress()
{
return m_d->progress;
}
QUrl KazvIO::fileUrl()
{
return m_d->fileUrl;
}
void KazvIO::setFileUrl(QUrl fileUrl)
{
m_d->fileUrl = fileUrl;
Q_EMIT fileUrlChanged();
}
void KazvIO::updatePercent(KJob* job, unsigned long percent)
{
m_d->progress = 1.0 * percent / 100;
Q_EMIT progressChanged();
}
void KazvIO::write(KJob* job, const QByteArray& data)
{
m_d->file.write(data);
}
void KazvIO::emitResult(KJob * job) {
if (m_d->job->error())
qDebug() << job->errorString();
m_d->file.commit();
Q_EMIT result();
}

File Metadata

Mime Type
text/x-c
Expires
Tue, Jun 24, 6:48 PM (1 d, 2 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
234976
Default Alt Text
kazv-io.cpp (1 KB)

Event Timeline