1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149
|
/*
* SPDX-FileCopyrightText: 2012 Jonathan Thomas <echidnaman@kubuntu.org
*
* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
*/
#include "Transaction.h"
#include "TransactionModel.h"
#include "libdiscover_debug.h"
#include <KFormat>
#include <KLocalizedString>
#include <resources/AbstractResource.h>
Transaction::Transaction(QObject *parent, AbstractResource *resource, Role role, const AddonList &addons)
: QObject(parent)
, m_resource(resource)
, m_role(role)
, m_status(CommittingStatus)
, m_addons(addons)
, m_isCancellable(true)
, m_progress(0)
{
}
Transaction::~Transaction()
{
if (status() < DoneStatus || TransactionModel::global()->contains(this)) {
qCWarning(LIBDISCOVER_LOG) << "destroying Transaction before it's over" << this;
TransactionModel::global()->removeTransaction(this);
}
}
AbstractResource *Transaction::resource() const
{
return m_resource;
}
Transaction::Role Transaction::role() const
{
return m_role;
}
Transaction::Status Transaction::status() const
{
return m_status;
}
AddonList Transaction::addons() const
{
return m_addons;
}
bool Transaction::isCancellable() const
{
return m_isCancellable;
}
int Transaction::progress() const
{
return m_progress;
}
void Transaction::setStatus(Status status)
{
if (m_status != status) {
m_status = status;
Q_EMIT statusChanged(m_status);
if (m_status == DoneStatus || m_status == CancelledStatus || m_status == DoneWithErrorStatus) {
setCancellable(false);
TransactionModel::global()->removeTransaction(this);
}
}
}
void Transaction::setCancellable(bool isCancellable)
{
if (m_isCancellable != isCancellable) {
m_isCancellable = isCancellable;
Q_EMIT cancellableChanged(m_isCancellable);
}
}
void Transaction::setProgress(int progress)
{
if (m_progress != progress) {
Q_ASSERT(qBound(0, progress, 100) == progress);
m_progress = qBound(0, progress, 100);
Q_EMIT progressChanged(m_progress);
}
}
bool Transaction::isActive() const
{
return m_status == DownloadingStatus || m_status == CommittingStatus;
}
QString Transaction::name() const
{
return m_resource->name();
}
QVariant Transaction::icon() const
{
return m_resource->icon();
}
bool Transaction::isVisible() const
{
return m_visible;
}
void Transaction::setVisible(bool visible)
{
if (m_visible != visible) {
m_visible = visible;
Q_EMIT visibleChanged(visible);
}
}
void Transaction::setDownloadSpeed(quint64 downloadSpeed)
{
if (downloadSpeed != m_downloadSpeed) {
m_downloadSpeed = downloadSpeed;
Q_EMIT downloadSpeedChanged(downloadSpeed);
}
}
QString Transaction::downloadSpeedString() const
{
return i18nc("@label Download rate", "%1/s", KFormat().formatByteSize(downloadSpeed()));
}
void Transaction::setRemainingTime(uint remainingTime)
{
if (remainingTime != m_remainingTime) {
m_remainingTime = remainingTime;
Q_EMIT remainingTimeChanged(remainingTime);
}
}
QString Transaction::remainingTimeString() const
{
return KFormat().formatSpelloutDuration(m_remainingTime * 1000);
}
#include "moc_Transaction.cpp"
|