File indexing completed on 2024-04-28 05:26:47
0001 /* 0002 * SPDX-FileCopyrightText: 2020 Aleix Pol Gonzalez <aleixpol@kde.org> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "DiscoverUpdate.h" 0008 #include <QCoreApplication> 0009 #include <QDebug> 0010 #include <resources/ResourcesModel.h> 0011 #include <resources/ResourcesUpdatesModel.h> 0012 0013 DiscoverUpdate::DiscoverUpdate() 0014 : QObject(nullptr) 0015 , m_resourcesUpdatesModel(new ResourcesUpdatesModel) 0016 { 0017 connect(m_resourcesUpdatesModel, &ResourcesUpdatesModel::passiveMessage, this, [](const QString &message) { 0018 qWarning() << "message" << message; 0019 }); 0020 connect(ResourcesModel::global(), &ResourcesModel::fetchingChanged, this, &DiscoverUpdate::start); 0021 connect(m_resourcesUpdatesModel, &ResourcesUpdatesModel::progressingChanged, this, &DiscoverUpdate::start); 0022 connect(ResourcesModel::global(), &ResourcesModel::backendsChanged, this, &DiscoverUpdate::start); 0023 } 0024 0025 DiscoverUpdate::~DiscoverUpdate() = default; 0026 0027 void DiscoverUpdate::start() 0028 { 0029 if (m_resourcesUpdatesModel->isProgressing() || ResourcesModel::global()->isFetching() || m_done) 0030 return; 0031 0032 m_resourcesUpdatesModel->setOfflineUpdates(m_offlineUpdates); 0033 qDebug() << "ready" << ResourcesModel::global()->updatesCount(); 0034 m_resourcesUpdatesModel->prepare(); 0035 qDebug() << "steady" << m_resourcesUpdatesModel->rowCount({}); 0036 m_resourcesUpdatesModel->updateAll(); 0037 0038 auto transaction = m_resourcesUpdatesModel->transaction(); 0039 if (!transaction) { 0040 qWarning() << "No updates available, exiting"; 0041 QCoreApplication::instance()->exit(0); 0042 return; 0043 } 0044 0045 connect(transaction, &Transaction::statusChanged, this, &DiscoverUpdate::transactionStatusChanged); 0046 0047 qDebug() << "go!" << transaction; 0048 } 0049 0050 void DiscoverUpdate::transactionStatusChanged(Transaction::Status status) 0051 { 0052 m_done = true; 0053 qDebug() << "status!" << status << ResourcesModel::global()->updatesCount(); 0054 if (status == Transaction::DoneStatus || status == Transaction::DoneWithErrorStatus) { 0055 const bool withError = status == Transaction::DoneWithErrorStatus; 0056 QCoreApplication::instance()->exit(withError); 0057 } 0058 }