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"