Move ApiType to the Danbooru namespace to prevent circular includes

Adjust all signatures to match for this change
This commit is contained in:
Luca Beltrame 2015-08-26 16:23:25 +02:00
parent e806ab602f
commit d3da86ff28
5 changed files with 98 additions and 36 deletions

View file

@ -22,6 +22,8 @@
#include "libdanbooru_version.h"
#include <QObject>
/**
* @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

View file

@ -35,6 +35,23 @@ namespace Danbooru
const QMap<QString, DanbooruPost::Rating> DanbooruPost::RATING_MAP = initRatingMap();
void DanbooruPost::parseDanbooruKonachan(const QVariantMap &postData) {
m_tags = QSet<QString>::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<QString>::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<QString>::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)

View file

@ -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();

View file

@ -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() {

View file

@ -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