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

0001 /*
0002  * SPDX-FileCopyrightText: 2014 Daniel Vrátil <dvratil@redhat.com>
0003  *
0004  * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0005  */
0006 
0007 #pragma once
0008 
0009 #include "fetchjob.h"
0010 #include "kgapiblogger_export.h"
0011 
0012 #include <QStringList>
0013 
0014 #include <QDateTime>
0015 
0016 namespace KGAPI2
0017 {
0018 namespace Blogger
0019 {
0020 
0021 class KGAPIBLOGGER_EXPORT PostFetchJob : public KGAPI2::FetchJob
0022 {
0023     Q_OBJECT
0024 
0025     Q_PROPERTY(bool fetchBodies READ fetchBodies WRITE setFetchBodies)
0026 
0027     Q_PROPERTY(bool fetchImages READ fetchImages WRITE setFetchImages)
0028 
0029     Q_PROPERTY(uint maxResults READ maxResults WRITE setMaxResults)
0030 
0031     Q_PROPERTY(QStringList filterLabels READ filterLabels WRITE setFilterLabels)
0032 
0033     Q_PROPERTY(QDateTime startDate READ startDate WRITE setStartDate)
0034 
0035     Q_PROPERTY(QDateTime endDate READ endDate WRITE setEndDate)
0036 
0037     Q_PROPERTY(StatusFilter statusFilter READ statusFilter WRITE setStatusFilter)
0038 
0039     Q_FLAGS(StatusFilter)
0040 public:
0041     enum StatusFilter {
0042         Draft = 1,
0043         Live = 2,
0044         Scheduled = 4,
0045 
0046         All = Draft | Live | Scheduled
0047     };
0048     Q_DECLARE_FLAGS(StatusFilters, StatusFilter)
0049 
0050     explicit PostFetchJob(const QString &blogId, const AccountPtr &account = AccountPtr(), QObject *parent = nullptr);
0051     explicit PostFetchJob(const QString &blogId, const QString &postId, const AccountPtr &account = AccountPtr(), QObject *parent = nullptr);
0052     ~PostFetchJob() override;
0053 
0054     bool fetchBodies() const;
0055     void setFetchBodies(bool fetchBodies);
0056 
0057     bool fetchImages() const;
0058     void setFetchImages(bool fetchImages);
0059 
0060     uint maxResults() const;
0061     void setMaxResults(uint maxResults);
0062 
0063     QStringList filterLabels() const;
0064     void setFilterLabels(const QStringList &labels);
0065 
0066     QDateTime startDate() const;
0067     void setStartDate(const QDateTime &startDate);
0068 
0069     QDateTime endDate() const;
0070     void setEndDate(const QDateTime &endDate);
0071 
0072     void setStatusFilter(StatusFilters filter);
0073     StatusFilters statusFilter() const;
0074 
0075 protected:
0076     void start() override;
0077     ObjectsList handleReplyWithItems(const QNetworkReply *reply, const QByteArray &rawData) override;
0078 
0079 private:
0080     class Private;
0081     Private *const d;
0082     friend class Private;
0083 };
0084 }
0085 }