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
|
/*
* SPDX-FileCopyrightText: 2020 Aleix Pol Gonzalez <aleixpol@kde.org>
*
* SPDX-License-Identifier: LGPL-2.0-or-later
*/
#include "DiscoverUpdate.h"
#include <QCoreApplication>
#include <QDebug>
#include <resources/ResourcesModel.h>
#include <resources/ResourcesUpdatesModel.h>
DiscoverUpdate::DiscoverUpdate()
: QObject(nullptr)
, m_resourcesUpdatesModel(new ResourcesUpdatesModel)
{
connect(m_resourcesUpdatesModel, &ResourcesUpdatesModel::passiveMessage, this, [](const QString &message) {
qWarning() << "message" << message;
});
connect(ResourcesModel::global(), &ResourcesModel::fetchingChanged, this, &DiscoverUpdate::start);
connect(m_resourcesUpdatesModel, &ResourcesUpdatesModel::progressingChanged, this, &DiscoverUpdate::start);
connect(ResourcesModel::global(), &ResourcesModel::backendsChanged, this, &DiscoverUpdate::start);
}
DiscoverUpdate::~DiscoverUpdate() = default;
void DiscoverUpdate::start()
{
if (m_resourcesUpdatesModel->isProgressing() || ResourcesModel::global()->isFetching() || m_done)
return;
m_resourcesUpdatesModel->setOfflineUpdates(m_offlineUpdates);
qDebug() << "ready" << ResourcesModel::global()->updatesCount();
m_resourcesUpdatesModel->prepare();
qDebug() << "steady" << m_resourcesUpdatesModel->rowCount({});
m_resourcesUpdatesModel->updateAll();
auto transaction = m_resourcesUpdatesModel->transaction();
if (!transaction) {
qWarning() << "No updates available, exiting";
QCoreApplication::instance()->exit(0);
return;
}
connect(transaction, &Transaction::statusChanged, this, &DiscoverUpdate::transactionStatusChanged);
qDebug() << "go!" << transaction;
}
void DiscoverUpdate::transactionStatusChanged(Transaction::Status status)
{
m_done = true;
qDebug() << "status!" << status << ResourcesModel::global()->updatesCount();
if (status == Transaction::DoneStatus || status == Transaction::DoneWithErrorStatus) {
const bool withError = status == Transaction::DoneWithErrorStatus;
QCoreApplication::instance()->exit(withError);
}
}
#include "moc_DiscoverUpdate.cpp"
|