File indexing completed on 2024-12-08 07:19:11

0001 /*
0002     SPDX-FileCopyrightText: 2018 Volker Krause <vkrause@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #ifndef KPUBLICTRANSPORT_STOPOVERREPLY_H
0008 #define KPUBLICTRANSPORT_STOPOVERREPLY_H
0009 
0010 #include "reply.h"
0011 
0012 #include <vector>
0013 
0014 namespace KPublicTransport {
0015 
0016 class AbstractBackend;
0017 class Stopover;
0018 class StopoverReplyPrivate;
0019 class StopoverRequest;
0020 
0021 /** Departure or arrival query reply. */
0022 class KPUBLICTRANSPORT_EXPORT StopoverReply : public Reply
0023 {
0024     Q_OBJECT
0025 public:
0026     ~StopoverReply() override;
0027 
0028     /** The request this is the reply for. */
0029     StopoverRequest request() const;
0030 
0031     /** Returns the found arrival or departure information. */
0032     const std::vector<Stopover>& result() const;
0033     /** Returns the found arrival or departure information for moving elsewhere. */
0034     std::vector<Stopover>&& takeResult();
0035 
0036     /** Returns a request object for querying departures following the ones returned by this reply.
0037      *  The returned request is empty if querying later departures is not possible/supported.
0038      */
0039     StopoverRequest nextRequest() const;
0040     /** Returns a request object for querying departures preceding the ones returned by this reply.
0041      *  The returned request is empty if querying earlier departures is not possible/supported.
0042      */
0043     StopoverRequest previousRequest() const;
0044 
0045 private:
0046     friend class Manager;
0047     friend class ManagerPrivate;
0048     explicit StopoverReply(const StopoverRequest &req, QObject *parent = nullptr);
0049 
0050     friend class AbstractBackend;
0051     Q_DECL_HIDDEN void addResult(const AbstractBackend *backend, std::vector<Stopover> &&res);
0052     using Reply::addError;
0053     Q_DECL_HIDDEN void addError(const AbstractBackend *backend, Reply::Error error, const QString &errorMsg);
0054 
0055     Q_DECL_HIDDEN void setNextContext(const AbstractBackend *backend, const QVariant &data);
0056     Q_DECL_HIDDEN void setPreviousContext(const AbstractBackend *backend, const QVariant &data);
0057 
0058     Q_DECLARE_PRIVATE(StopoverReply)
0059 };
0060 
0061 }
0062 
0063 #endif // KPUBLICTRANSPORT_STOPOVERREPLY_H