File indexing completed on 2024-05-12 05:22:32

0001 /*
0002  * This file is part of LibKGAPI library
0003  *
0004  * SPDX-FileCopyrightText: 2013 Daniel Vrátil <dvratil@redhat.com>
0005  *
0006  * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0007  */
0008 
0009 #pragma once
0010 
0011 #include "job.h"
0012 #include "kgapimaps_export.h"
0013 
0014 #include <QPixmap>
0015 
0016 /**
0017  * @brief A job to fetch a single map tile described by a StaticMapUrl
0018  *
0019  * @author Daniel Vrátil <dvratil@redhat.com>
0020  * @since 2.0
0021  */
0022 namespace KGAPI2
0023 {
0024 
0025 class StaticMapUrl;
0026 
0027 class KGAPIMAPS_EXPORT StaticMapTileFetchJob : public KGAPI2::Job
0028 {
0029     Q_OBJECT
0030 
0031 public:
0032     /**
0033      * @brief Constructs a job that will fetch a map tile described by given
0034      *        @p url.
0035      *
0036      * @param url
0037      * @param parent
0038      */
0039     explicit StaticMapTileFetchJob(const StaticMapUrl &url, QObject *parent = nullptr);
0040 
0041     /**
0042      * @overload StaticMapTileFetchJob(StaticMapUrl,QObject*)
0043      *
0044      * @param url
0045      * @param parent
0046      */
0047     explicit StaticMapTileFetchJob(const QUrl &url, QObject *parent = nullptr);
0048 
0049     /**
0050      * @brief Destructor
0051      */
0052     ~StaticMapTileFetchJob() override;
0053 
0054     /**
0055      * @brief Pixmap with the fetched map tile.
0056      *
0057      * This method can only be called after the job has emitted Job::finished.
0058      */
0059     [[nodiscard]] QPixmap tilePixmap() const;
0060 
0061 protected:
0062     /**
0063      * @brief KGAPI2::Job::start implementation
0064      */
0065     void start() override;
0066 
0067     /**
0068      * @brief KGAPI2::Job::dispatchRequest implementation
0069      *
0070      * @param accessManager
0071      * @param request
0072      * @param data
0073      * @param contentType
0074      */
0075     void dispatchRequest(QNetworkAccessManager *accessManager, const QNetworkRequest &request, const QByteArray &data, const QString &contentType) override;
0076 
0077     /**
0078      * @brief KGAPI2::Job::handleReply
0079      *
0080      * @param reply
0081      * @param rawData
0082      */
0083     void handleReply(const QNetworkReply *reply, const QByteArray &rawData) override;
0084 
0085 private:
0086     class Private;
0087     Private *const d;
0088     friend class Private;
0089 };
0090 
0091 } // namespace KGAPI2