From d3da86ff28c32e11b69dc0f26784acd3544f9020 Mon Sep 17 00:00:00 2001 From: Luca Beltrame Date: Wed, 26 Aug 2015 16:23:25 +0200 Subject: [PATCH] Move ApiType to the Danbooru namespace to prevent circular includes Adjust all signatures to match for this change --- src/libdanbooru/danbooru.h | 11 ++++++ src/libdanbooru/danboorupost.cpp | 58 ++++++++++++++++++++++++++------ src/libdanbooru/danboorupost.h | 13 +++++-- src/libdanbooru/konachan.cpp | 10 +++--- src/libdanbooru/servicebase.h | 42 ++++++++++++----------- 5 files changed, 98 insertions(+), 36 deletions(-) diff --git a/src/libdanbooru/danbooru.h b/src/libdanbooru/danbooru.h index bc9a575..d4d81e3 100644 --- a/src/libdanbooru/danbooru.h +++ b/src/libdanbooru/danbooru.h @@ -22,6 +22,8 @@ #include "libdanbooru_version.h" +#include + /** * @brief The Danbooru namespace. * @file danbooru.h @@ -30,6 +32,15 @@ namespace Danbooru { +enum ApiType { + OriginalDanbooru = 16, + KonachanDanbooru = 32, + Gelbooru = 64, + Unknown = 128 + }; + } // namespace Danbooru +Q_ENUMS(ApiType) +Q_DECLARE_METATYPE(Danbooru::ApiType) #endif // DANBOORU_H diff --git a/src/libdanbooru/danboorupost.cpp b/src/libdanbooru/danboorupost.cpp index 9a19b2d..e8a3f60 100644 --- a/src/libdanbooru/danboorupost.cpp +++ b/src/libdanbooru/danboorupost.cpp @@ -35,6 +35,23 @@ namespace Danbooru const QMap DanbooruPost::RATING_MAP = initRatingMap(); +void DanbooruPost::parseDanbooruKonachan(const QVariantMap &postData) { + + m_tags = QSet::fromList(postData.value("tags").toString().split(' ')); + m_id = postData.value("id").toString().toInt(); + m_height = postData.value("height").toString().toInt(); + m_width = postData.value("width").toString().toInt(); + + m_url = postData.value("file_url").toUrl(); + m_thumbnailUrl = postData.value("preview_url").toUrl(); + m_size = postData.value("file_size").toInt(); + m_rating = RATING_MAP.value(postData.value("rating").toString()); + m_sampleUrl = postData.value("sample_url").toUrl(); +} + +void DanbooruPost::parseDanbooruDonmai(const QVariantMap &postData) { +} + DanbooruPost::DanbooruPost(QObject *parent): QObject(parent) { m_pixmap = QPixmap(); @@ -47,25 +64,46 @@ DanbooruPost::DanbooruPost(QObject *parent): QObject(parent) m_rating = Questionable; } -DanbooruPost::DanbooruPost(QVariantMap postData, QPixmap pixmap, +DanbooruPost::DanbooruPost(QVariantMap postData,Danbooru::ApiType apiType, QPixmap pixmap, QObject *parent): QObject(parent), m_pixmap(pixmap) { - m_tags = QSet::fromList(postData.value("tags").toString().split(' ')); - m_id = postData.value("id").toString().toInt(); - m_height = postData.value("height").toString().toInt(); - m_width = postData.value("width").toString().toInt(); + switch(apiType) { + case ApiType::KonachanDanbooru: + parseDanbooruKonachan(postData); + break; + case ApiType::OriginalDanbooru: + parseDanbooruDonmai(postData); + break; + default: + parseDanbooruKonachan(postData); + break; + } - m_url = postData.value("file_url").toUrl(); - m_thumbnailUrl = postData.value("preview_url").toUrl(); - m_size = postData.value("file_size").toInt(); - m_rating = RATING_MAP.value(postData.value("rating").toString()); - m_sampleUrl = postData.value("sample_url").toUrl(); } +// DanbooruPost::DanbooruPost(QVariantMap postData, QPixmap pixmap, +// QObject *parent): +// QObject(parent), +// m_pixmap(pixmap) +// { +// +// m_tags = QSet::fromList(postData.value("tags").toString().split(' ')); +// m_id = postData.value("id").toString().toInt(); +// m_height = postData.value("height").toString().toInt(); +// m_width = postData.value("width").toString().toInt(); +// +// m_url = postData.value("file_url").toUrl(); +// m_thumbnailUrl = postData.value("preview_url").toUrl(); +// m_size = postData.value("file_size").toInt(); +// m_rating = RATING_MAP.value(postData.value("rating").toString()); +// m_sampleUrl = postData.value("sample_url").toUrl(); +// +// } + DanbooruPost::DanbooruPost(QXmlStreamAttributes &postData, QPixmap pixmap, QObject *parent): QObject(parent), m_pixmap(pixmap) diff --git a/src/libdanbooru/danboorupost.h b/src/libdanbooru/danboorupost.h index 48ca73b..705ba56 100644 --- a/src/libdanbooru/danboorupost.h +++ b/src/libdanbooru/danboorupost.h @@ -41,6 +41,7 @@ #include "danbooru.h" + namespace Danbooru { @@ -112,6 +113,10 @@ private: static const QMap< QString, Rating > initRatingMap(); + void parseDanbooruKonachan(const QVariantMap &postData); + void parseDanbooruDonmai(const QVariantMap &postData); + void parseGelbooru(QXmlStreamAttributes &postData); + public: /** @@ -127,9 +132,9 @@ public: * @param parent A pointer to the parent QObject. * **/ - +/* explicit DanbooruPost(QVariantMap postData, QPixmap pixmap = QPixmap(), - QObject *parent = 0); + QObject *parent = 0);*/ explicit DanbooruPost(QObject *parent = 0); @@ -150,6 +155,10 @@ public: explicit DanbooruPost(QXmlStreamAttributes &postData, QPixmap pixmap = QPixmap(), QObject *parent = 0); + explicit DanbooruPost(QVariantMap postData, Danbooru::ApiType apiType=ApiType::KonachanDanbooru, + QPixmap pixmap = QPixmap(), + QObject *parent=0); + bool operator==(const DanbooruPost &); ~DanbooruPost(); diff --git a/src/libdanbooru/konachan.cpp b/src/libdanbooru/konachan.cpp index f0c6fc5..f009a38 100644 --- a/src/libdanbooru/konachan.cpp +++ b/src/libdanbooru/konachan.cpp @@ -66,14 +66,16 @@ const QLatin1String KonachanDanbooruService::relatedTagUri() const { // Other methods //////////////// -SupportedOperations KonachanDanbooruService::supportedOperations() const { +DanbooruServiceBase::SupportedOperations KonachanDanbooruService::supportedOperations() const { - return PostDownload | PoolDownload | TagDownload | TagSearch | RelatedTagSearch; + return SupportedOperations(DanbooruServiceBase::PostDownload | DanbooruServiceBase::PoolDownload | + DanbooruServiceBase::TagDownload | DanbooruServiceBase::TagSearch | + DanbooruServiceBase::RelatedTagSearch); } -ApiType KonachanDanbooruService::apiType() const { - return KonachanDanbooru; +Danbooru::ApiType KonachanDanbooruService::apiType() const { + return Danbooru::ApiType::KonachanDanbooru; } KonachanDanbooruService::~KonachanDanbooruService() { diff --git a/src/libdanbooru/servicebase.h b/src/libdanbooru/servicebase.h index ebf58f1..c6198fc 100644 --- a/src/libdanbooru/servicebase.h +++ b/src/libdanbooru/servicebase.h @@ -42,23 +42,6 @@ namespace Danbooru { -enum ApiType { - OriginalDanbooru = 7000, - KonachanDanbooru = 7001, - Gelbooru = 7002, - Unknown = 7003 -}; - -enum SupportedOperation { - PostDownload = 6000, - TagDownload = 6001, - TagSearch = 6002, - PoolDownload = 6003, - RelatedTagSearch = 6004 -}; - -Q_DECLARE_FLAGS(SupportedOperations, SupportedOperation) - class DanbooruServiceBase: public QObject { @@ -94,6 +77,26 @@ protected: public: + enum SupportedOperation { + PostDownload = 256, + TagDownload = 512, + TagSearch = 1024, + PoolDownload = 2048, + RelatedTagSearch = 4096 +}; + +enum ApiType { + OriginalDanbooru = 16, + KonachanDanbooru = 32, + Gelbooru = 64, + Unknown = 128 + }; + +Q_DECLARE_FLAGS(ApiTypes, DanbooruServiceBase::ApiType) + + +Q_DECLARE_FLAGS(SupportedOperations, DanbooruServiceBase::SupportedOperation) + explicit DanbooruServiceBase(QUrl boardUrl = QUrl(), QString username = QString(), QString password = QString(), KImageCache *cache = 0, QObject *parent = 0); @@ -378,9 +381,8 @@ Q_SIGNALS: }; -Q_DECLARE_OPERATORS_FOR_FLAGS(Danbooru::SupportedOperations) - - } +Q_DECLARE_OPERATORS_FOR_FLAGS(Danbooru::DanbooruServiceBase::SupportedOperations) + #endif \ No newline at end of file