File indexing completed on 2025-02-02 05:02:32
0001 /* 0002 SPDX-FileCopyrightText: 2023 Volker Krause <vkrause@kde.org> 0003 SPDX-License-Identifier: LGPL-2.0-or-later 0004 */ 0005 0006 #include "onlineticketimporter.h" 0007 #include "onlineticketretrievaljob.h" 0008 #include "logging.h" 0009 0010 #include <QNetworkAccessManager> 0011 #include <QStandardPaths> 0012 0013 #include <cassert> 0014 0015 std::function<QNetworkAccessManager*()> OnlineTicketImporter::s_namFactory; 0016 0017 OnlineTicketImporter::OnlineTicketImporter(QObject *parent) 0018 : QObject(parent) 0019 { 0020 } 0021 0022 OnlineTicketImporter::~OnlineTicketImporter() = default; 0023 0024 bool OnlineTicketImporter::searching() const 0025 { 0026 return m_currentJob; 0027 } 0028 0029 void OnlineTicketImporter::setNetworkAccessManagerFactory(const std::function<QNetworkAccessManager*()> &namFactory) 0030 { 0031 s_namFactory = namFactory; 0032 } 0033 0034 QString OnlineTicketImporter::errorMessage() const 0035 { 0036 return m_errorMessage; 0037 } 0038 0039 void OnlineTicketImporter::search(const QString &sourceId, const QVariantMap &arguments) 0040 { 0041 qCDebug(Log) << sourceId << arguments; 0042 delete m_currentJob; 0043 0044 m_currentJob = new OnlineTicketRetrievalJob(sourceId, arguments, s_namFactory(), this); 0045 connect(m_currentJob, &OnlineTicketRetrievalJob::finished, this, &OnlineTicketImporter::handleRetrievalFinished); 0046 Q_EMIT searchingChanged(); 0047 } 0048 0049 void OnlineTicketImporter::handleRetrievalFinished() 0050 { 0051 assert(m_currentJob); 0052 m_currentJob->deleteLater(); 0053 m_errorMessage = m_currentJob->errorMessage(); 0054 const auto result = m_currentJob->result(); 0055 m_currentJob = nullptr; 0056 Q_EMIT searchingChanged(); 0057 0058 if (result.isEmpty() || !m_errorMessage.isEmpty()) { 0059 Q_EMIT searchFailed(); 0060 } else { 0061 assert(m_resMgr); 0062 m_resMgr->importReservations(result); 0063 Q_EMIT searchSucceeded(); 0064 } 0065 } 0066 0067 #include "moc_onlineticketimporter.cpp"