Start simplifying APIs

This commit is contained in:
Luca Beltrame 2018-08-19 23:59:56 +02:00
parent 63d2dfdf9c
commit f7f27699ca
Signed by: einar
GPG key ID: 8DF631FD021DB0C5
13 changed files with 178 additions and 287 deletions

View file

@ -13,7 +13,7 @@ set (libdanbooru_VERSION ${libdanbooru_VERSION_MAJOR}.${libdanbooru_VERSION_MINO
set (libdanbooru_SRCS
danboorupool.cpp
servicebase.cpp
konachan.cpp
moebooru.cpp
danboorupost.cpp
danboorutag.cpp
utils.cpp
@ -28,8 +28,3 @@ target_link_libraries(danbooru PUBLIC
KF5::GuiAddons)
install(TARGETS danbooru ${INSTALL_TARGETS_DEFAULT_ARGS})
if (Qt5Test_FOUND)
add_subdirectory(autotests)
add_subdirectory(tests)
endif()

View file

@ -33,14 +33,29 @@ namespace Danbooru
{
enum ApiType {
OriginalDanbooru = 16,
KonachanDanbooru = 32,
Danbooru = 16,
MoeBooru = 32,
Gelbooru = 64,
Unknown = 128
};
enum Rating {
Safe = 8192,
Questionable = 16384,
Explicit = 32768
};
Q_DECLARE_FLAGS(Ratings, Rating)
Q_DECLARE_OPERATORS_FOR_FLAGS(Danbooru::Ratings)
} // namespace Danbooru
Q_ENUMS(ApiType)
Q_ENUMS(Danbooru::ApiType)
Q_ENUMS(Danbooru::Rating)
Q_DECLARE_METATYPE(Danbooru::ApiType)
Q_DECLARE_METATYPE(Danbooru::Ratings)
Q_DECLARE_METATYPE(Danbooru::Rating)
#endif // DANBOORU_H

View file

@ -19,11 +19,8 @@
// Qt
#include <QtCore/QString>
#include <QtGui/QPixmap>
// KDE
#include <QString>
#include <QPixmap>
#include <QUrl>
// Own
@ -33,94 +30,6 @@
namespace Danbooru
{
const QMap<QString, DanbooruPost::Rating> DanbooruPost::RATING_MAP = initRatingMap();
void DanbooruPost::parseDanbooruDonmai(const QVariantMap &postData) {
// HACK: Handle XML (foo-bar) versus JSON (foo_bar) for attributes
auto tagString = postData.contains("tag_string") ? QLatin1String("tag_string"): QLatin1String("tag-string");
auto width = postData.contains("image_width") ? QLatin1String("image_width"): QLatin1String("image-width");
auto height = postData.contains("image_height") ? QLatin1String("image_height"): QLatin1String("image-height");
auto fileSize = postData.contains("file_size") ? QLatin1String("file_size"): QLatin1String("file-size");
auto fileUrl = postData.contains("file_url") ? QLatin1String("file_url"): QLatin1String("file-url");
auto thumbnailUrl = postData.contains("preview_file_url") ? QLatin1String("preview_file_url"): QLatin1String("preview-file-url");
auto sampleUrl = postData.contains("large_file_url") ? QLatin1String("large_file_url"): QLatin1String("large-file-url");
m_id = postData.value("id").toString().toInt();
m_tags = QSet<QString>::fromList(postData.value(tagString).toString().split(' '));
m_width = postData.value(width).toString().toInt();
m_height = postData.value(height).toString().toInt();
m_url = postData.value(fileUrl).toUrl();
m_thumbnailUrl = postData.value(thumbnailUrl).toUrl();
m_size = postData.value(fileSize).toInt();
m_rating = RATING_MAP.value(postData.value("rating").toString());
m_sampleUrl = postData.value(sampleUrl).toUrl();
}
void DanbooruPost::parseDanbooruDonmai(const QXmlStreamAttributes &postData) {
m_tags = QSet<QString>::fromList(postData.value("tag_string").toString().split(' '));
m_id = postData.value("id").toString().toInt();
m_height = postData.value("image_height").toString().toInt();
m_width = postData.value("image_width").toString().toInt();
m_url = QUrl::fromUserInput(postData.value("file_url").toString());
m_thumbnailUrl = QUrl::fromUserInput(postData.value("preview_file_url").toString());
m_size = postData.value("file_size").toInt();
m_rating = RATING_MAP.value(postData.value("rating").toString());
m_sampleUrl = QUrl::fromUserInput(postData.value("large_file_url").toString());
// fixup for wrong URLs in danbooru input
m_url.setScheme("http");
m_thumbnailUrl.setScheme("http");
m_sampleUrl.setScheme("http");
}
void DanbooruPost::parseDanbooruKonachan(const QXmlStreamAttributes &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 = QUrl::fromUserInput(postData.value("file_url").toString());
m_thumbnailUrl = QUrl::fromUserInput(postData.value("preview_url").toString());
m_sampleUrl = QUrl::fromUserInput(postData.value("sample_url").toString());
m_size = postData.value("file_size").toString().toInt();
m_rating = RATING_MAP.value(postData.value("rating").toString());
}
void DanbooruPost::parseDanbooruKonachan(const QVariantMap &postData) {
m_tags = QSet<QString>::fromList(postData.value("tags").toString().split(' '));
m_id = postData.value("id").toString().toInt();
m_width = postData.value("width").toString().toInt();
m_height = postData.value("height").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::parseGelbooru(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 = 0; // No size information
m_rating = RATING_MAP.value(postData.value("rating").toString());
m_sampleUrl = postData.value("sample_url").toUrl();
}
DanbooruPost::DanbooruPost(QObject *parent): QObject(parent)
{
m_pixmap = QPixmap();
@ -133,81 +42,26 @@ DanbooruPost::DanbooruPost(QObject *parent): QObject(parent)
m_rating = Questionable;
}
DanbooruPost::DanbooruPost(QVariantMap postData,Danbooru::ApiType apiType, QPixmap pixmap,
QObject *parent):
DanbooruPost::DanbooruPost(QVariantMap postData, QObject *parent):
QObject(parent),
m_pixmap(pixmap)
m_pixmap(QPixmap())
{
switch(apiType) {
case ApiType::KonachanDanbooru:
parseDanbooruKonachan(postData);
break;
case ApiType::OriginalDanbooru:
parseDanbooruDonmai(postData);
break;
case ApiType::Gelbooru:
parseGelbooru(postData);
break;
default:
parseDanbooruKonachan(postData);
break;
}
m_tags = postData.value("tags").value< QSet<QString> >();
m_height = postData.value("height").toInt();
m_width = postData.value("width").toInt();
m_size = postData.value("size").toInt();
m_url = postData.value("url").toUrl();
m_thumbnailUrl = postData.value("thumbnailUrl").toUrl();
m_sampleUrl = postData.value("sampleUrl").toUrl();
m_rating = postData.value("rating").value<Danbooru::Rating>();
}
// 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, Danbooru::ApiType apiType, QPixmap pixmap, QObject *parent):
DanbooruPost::DanbooruPost(QXmlStreamAttributes &postData, QObject *parent):
QObject(parent),
m_pixmap(pixmap)
m_pixmap(QPixmap())
{
switch(apiType) {
case ApiType::KonachanDanbooru:
parseDanbooruKonachan(postData);
break;
case ApiType::OriginalDanbooru:
parseDanbooruDonmai(postData);
break;
default:
parseDanbooruKonachan(postData);
break;
}
}
DanbooruPost::~DanbooruPost()
{
}
const QMap< QString, DanbooruPost::Rating > DanbooruPost::initRatingMap()
{
QMap<QString, DanbooruPost::Rating> map;
map.insert("s", Safe);
map.insert("q", Questionable);
map.insert("e", Explicit);
return map;
}
bool DanbooruPost::operator==(const Danbooru::DanbooruPost &other)
@ -290,7 +144,7 @@ const QUrl DanbooruPost::fileUrl() const
return m_url;
}
Danbooru::DanbooruPost::Rating DanbooruPost::rating() const
Danbooru::Rating DanbooruPost::rating() const
{
return m_rating;
}

View file

@ -74,22 +74,6 @@ class DanbooruPost : public QObject
Q_PROPERTY(QUrl thumbnailUrl READ thumbnailUrl)
Q_PROPERTY(QUrl sampleUrl READ sampleUrl)
public:
/**
* @brief Ratings for a Danbooru item
*
* A rating is how appropriate is an item for a general audience.
*
**/
enum Rating {
Safe = 1, /**< Safe for the general public **/
Questionable = 2, /**< Might contain hints of risqueness of violence **/
Explicit = 4 /**< Explicit material **/
};
Q_DECLARE_FLAGS(Ratings, DanbooruPost::Rating)
Q_ENUMS(Rating)
private:
QPixmap m_pixmap;
@ -105,19 +89,7 @@ private:
QUrl m_thumbnailUrl;
QUrl m_sampleUrl;
QSet<QString> m_tags;
DanbooruPost::Rating m_rating;
static const QMap<QString, Rating> RATING_MAP;
// Private functions
static const QMap< QString, Rating > initRatingMap();
void parseDanbooruKonachan(const QVariantMap &postData);
void parseDanbooruKonachan(const QXmlStreamAttributes &postData);
void parseDanbooruDonmai(const QVariantMap &postData);
void parseDanbooruDonmai(const QXmlStreamAttributes &postData);
void parseGelbooru(const QVariantMap &postData);
Danbooru::Rating m_rating;
public:
@ -135,9 +107,7 @@ public:
*
**/
explicit DanbooruPost(QVariantMap postData, Danbooru::ApiType apiType=ApiType::KonachanDanbooru,
QPixmap pixmap = QPixmap(),
QObject *parent=0);
explicit DanbooruPost(QVariantMap postData, QObject *parent=0);
explicit DanbooruPost(QObject *parent = 0);
@ -155,8 +125,7 @@ public:
* @param parent A pointer to the parent QObject.
*
**/
explicit DanbooruPost(QXmlStreamAttributes &postData, Danbooru::ApiType apiType=ApiType::KonachanDanbooru,
QPixmap pixmap = QPixmap(), QObject *parent = 0);
explicit DanbooruPost(QXmlStreamAttributes &postData, QObject *parent = 0);
bool operator==(const DanbooruPost &);
@ -251,12 +220,9 @@ public:
};
Q_DECLARE_OPERATORS_FOR_FLAGS(DanbooruPost::Ratings)
} // namespace Danbooru
Q_DECLARE_METATYPE(Danbooru::DanbooruPost *)
Q_DECLARE_METATYPE(Danbooru::DanbooruPost::Rating)
Q_DECLARE_METATYPE(QSet<QString>)
#endif // DANBOORUPOST_H

View file

@ -90,7 +90,7 @@ private:
QString m_username;
QString m_password;
QSet<QString> m_blacklist;
DanbooruPost::Ratings m_maxRating;
Danbooru::Ratings m_maxRating;
int m_maxPosts;
int m_currentPage;
QStringList m_tags;
@ -180,7 +180,7 @@ public:
/**
* @return The maximum allowed rating for a post.
**/
const DanbooruPost::Ratings maximumAllowedRating() const;
const Danbooru::Ratings maximumAllowedRating() const;
/**
* @return The currently blacklisted tags.
@ -238,7 +238,7 @@ public:
* downloaded.
*
**/
void setMaximumAllowedRating(DanbooruPost::Rating rating);
void setMaximumAllowedRating(Danbooru::Rating rating);
/**
* @brief Set the board URL to connect to.

View file

@ -17,7 +17,7 @@
* along with Danbooru Client. If not, see <http://www.gnu.org/licenses/>.
*/
#include "konachan.h"
#include "moebooru.h"
#include "danboorupost.h"
#include "danboorupool.h"
#include "danboorutag.h"
@ -66,19 +66,9 @@ const QLatin1String KonachanDanbooruService::relatedTagUri() const {
// Other methods
////////////////
DanbooruServiceBase::SupportedOperations KonachanDanbooruService::supportedOperations() const {
return SupportedOperations(DanbooruServiceBase::PostDownload | DanbooruServiceBase::PoolDownload |
DanbooruServiceBase::TagDownload | DanbooruServiceBase::TagSearch |
DanbooruServiceBase::RelatedTagSearch);
}
Danbooru::ApiType KonachanDanbooruService::apiType() const {
return Danbooru::ApiType::KonachanDanbooru;
}
KonachanDanbooruService::~KonachanDanbooruService() {
return Danbooru::ApiType::MoeBooru;
}
//////////////

View file

@ -42,9 +42,8 @@ private:
public:
using DanbooruServiceBase::DanbooruServiceBase; // superclass constructor
~KonachanDanbooruService() override;
~KonachanDanbooruService() override = default;
SupportedOperations supportedOperations() const override;
Danbooru::ApiType apiType() const override;
void getPostList() override;

View file

@ -22,37 +22,32 @@
namespace Danbooru {
DanbooruServiceBase::DanbooruServiceBase(QUrl boardUrl, QString username,
QString password, KImageCache *cache,
QObject *parent):
DanbooruServiceBase::DanbooruServiceBase(QUrl boardUrl, QObject* parent):
QObject(parent),
m_url(boardUrl),
m_username(username),
m_password(password),
m_maxRating(Danbooru::DanbooruPost::Safe),
m_username(QString()),
m_password(QString()),
m_maxRating(Danbooru::Safe),
m_maxPosts(10),
m_currentPage(1),
m_tags(QStringList()),
m_postsToFetch(0),
m_cache(cache){
}
DanbooruServiceBase::~DanbooruServiceBase() {
m_postsToFetch(0)
{
}
const QStringList DanbooruServiceBase::allowedRatings() const {
QStringList ratings;
if (m_maxRating.testFlag(DanbooruPost::Safe)) {
if (m_maxRating.testFlag(Danbooru::Safe)) {
ratings.append("Safe");
}
if (m_maxRating.testFlag(DanbooruPost::Questionable)) {
if (m_maxRating.testFlag(Danbooru::Questionable)) {
ratings.append("Questionable");
}
if (m_maxRating.testFlag(DanbooruPost::Explicit)) {
if (m_maxRating.testFlag(Danbooru::Explicit)) {
ratings.append("Explicit");
}
@ -74,7 +69,7 @@ int DanbooruServiceBase::currentPage() const
return m_currentPage;
}
const DanbooruPost::Ratings DanbooruServiceBase::maximumAllowedRating() const
const Danbooru::Ratings DanbooruServiceBase::maximumAllowedRating() const
{
return m_maxRating;
}
@ -151,19 +146,19 @@ void DanbooruServiceBase::setImageCache(KImageCache *cache)
m_cache = cache;
}
void DanbooruServiceBase::setMaximumAllowedRating(DanbooruPost::Rating rating)
void DanbooruServiceBase::setMaximumAllowedRating(Danbooru::Rating rating)
{
DanbooruPost::Ratings flags;
Danbooru::Ratings flags;
switch (rating) {
case DanbooruPost::Safe:
flags = DanbooruPost::Safe;
case Danbooru::Safe:
flags = Danbooru::Safe;
break;
case DanbooruPost::Questionable:
flags = DanbooruPost::Safe | DanbooruPost::Questionable;
case Danbooru::Questionable:
flags = Danbooru::Safe | Danbooru::Questionable;
break;
case DanbooruPost::Explicit:
flags = DanbooruPost::Safe | DanbooruPost::Questionable | DanbooruPost::Explicit;
case Danbooru::Explicit:
flags = Danbooru::Safe | Danbooru::Questionable | Danbooru::Explicit;
break;
}

View file

@ -66,7 +66,7 @@ protected:
QString m_username;
QString m_password;
QSet<QString> m_blacklist;
DanbooruPost::Ratings m_maxRating;
Danbooru::Ratings m_maxRating;
int m_maxPosts;
int m_currentPage;
QStringList m_tags;
@ -77,29 +77,17 @@ protected:
public:
enum SupportedOperation {
PostDownload = 256,
TagDownload = 512,
TagSearch = 1024,
PoolDownload = 2048,
RelatedTagSearch = 4096
};
enum ApiType {
OriginalDanbooru = 16,
KonachanDanbooru = 32,
MoeBooru = 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);
explicit DanbooruServiceBase(QUrl boardUrl = QUrl(), QObject* parent=nullptr);
virtual ~DanbooruServiceBase();
/////////////////////////////////////////////
@ -145,7 +133,7 @@ Q_DECLARE_FLAGS(SupportedOperations, DanbooruServiceBase::SupportedOperation)
/**
* @return The maximum allowed rating for a post.
**/
const DanbooruPost::Ratings maximumAllowedRating() const;
const Danbooru::Ratings maximumAllowedRating() const;
/**
* @return The number of posts downloaded for each page (max 100)
@ -174,11 +162,6 @@ Q_DECLARE_FLAGS(SupportedOperations, DanbooruServiceBase::SupportedOperation)
**/
void reset();
/**
* @return The operations supported by the API.
**/
virtual SupportedOperations supportedOperations() const = 0;
///////////////////////////////
// Common setters (non-virtual)
///////////////////////////////
@ -228,7 +211,7 @@ Q_DECLARE_FLAGS(SupportedOperations, DanbooruServiceBase::SupportedOperation)
* downloaded.
*
**/
void setMaximumAllowedRating(DanbooruPost::Rating rating);
void setMaximumAllowedRating(Danbooru::Rating rating);
/**
* @brief Set the maximum number of posts to download for each page.
@ -383,6 +366,5 @@ Q_SIGNALS:
}
Q_DECLARE_OPERATORS_FOR_FLAGS(Danbooru::DanbooruServiceBase::SupportedOperations)
#endif
#endif

View file

@ -43,6 +43,20 @@ namespace {
namespace Danbooru
{
static const QMap<QString, Rating> RATING_MAP = initRatingMap();
static const QMap< QString, Danbooru::Rating > initRatingMap()
{
QMap<QString, Danbooru::Rating> map;
map.insert("s", Safe);
map.insert("q", Questionable);
map.insert("e", Explicit);
return map;
}
QUrl requestUrl(QUrl &url, const QString &path,
const QString &username, const QString &password,
@ -133,7 +147,7 @@ QList< QVariant > parseDanbooruResult(QByteArray data, QString xlmElement, bool
reader.addData(data);
QList<QVariant> postData;
if (apiType != ApiType::OriginalDanbooru) {
if (apiType != ApiType::Danbooru) {
while (!reader.atEnd() && !reader.hasError()) {
@ -212,7 +226,7 @@ QVariant parseDanbooruResult(QByteArray data, bool *result)
return postData;
}
bool isPostBlacklisted(DanbooruPost *post, QSet<QString> blacklist, DanbooruPost::Ratings maxRating)
bool isPostBlacklisted(DanbooruPost *post, QSet<QString> blacklist, Danbooru::Ratings maxRating)
{
if (post->rating() > maxRating) {
@ -243,4 +257,82 @@ void fixPostUrl(DanbooruPost *post, QUrl boardUrl) {
}
QVariantMap parseResult(const QByteArray &data, ApiType type) {
QVariantMap map;
bool result;
QVariantMap mapped = parseDanbooruResult(data, &result).toMap();
if (!result) {
return QVariantMap();
}
int id;
QSet<QString> tags;
int width;
int height;
int fileSize;
QUrl url;
QUrl thumbnailUrl;
QUrl sampleUrl;
Danbooru::Rating rating;
switch(type) {
case Danbooru::MoeBooru:
tags = QSet<QString>::fromList(mapped.value("tags").toString().split(' '));
id = mapped.value("id").toString().toInt();
height = mapped.value("height").toString().toInt();
width = mapped.value("width").toString().toInt();
url = QUrl::fromUserInput(mapped.value("file_url").toString());
thumbnailUrl = QUrl::fromUserInput(mapped.value("preview_url").toString());
sampleUrl = QUrl::fromUserInput(mapped.value("sample_url").toString());
rating = RATING_MAP.value(mapped.value("rating").toString());
fileSize = mapped.value("file_size").toInt();
break;
case Danbooru::Gelbooru:
id = 0;
tags = QSet<QString>();
width = 0;
height = 0;
fileSize = 0;
url = QUrl();
thumbnailUrl = QUrl();
sampleUrl = QUrl();
rating = Danbooru::Safe;
break;
default:
auto tagKey = mapped.contains("tag_string") ? QLatin1String("tag_string"): QLatin1String("tag-string");
auto widthKey = mapped.contains("image_width") ? QLatin1String("image_width"): QLatin1String("image-width");
auto heightKey = mapped.contains("image_height") ? QLatin1String("image_height"): QLatin1String("image-height");
auto fileSizeKey = mapped.contains("file_size") ? QLatin1String("file_size"): QLatin1String("file-size");
auto fileUrlKey = mapped.contains("file_url") ? QLatin1String("file_url"): QLatin1String("file-url");
auto thumbnailUrlKey = mapped.contains("preview_file_url") ? QLatin1String("preview_file_url"): QLatin1String("preview-file-url");
auto sampleUrlKey = mapped.contains("large_file_url") ? QLatin1String("large_file_url"): QLatin1String("large-file-url");
id = mapped.value("id").toString().toInt();
tags = QSet<QString>::fromList(mapped.value(tagKey).toString().split(' '));
width = mapped.value(widthKey).toString().toInt();
height = mapped.value(heightKey).toString().toInt();
url = mapped.value(fileUrlKey).toUrl();
thumbnailUrl = mapped.value(thumbnailUrlKey).toUrl();
fileSize = mapped.value(fileSizeKey).toInt();
rating = RATING_MAP.value(mapped.value("rating").toString());
sampleUrl = mapped.value(sampleUrlKey).toUrl();
break;
};
map.insert(QLatin1String("width"), width);
map.insert(QLatin1String("height"), height);
map.insert(QLatin1String("id"), id);
map.insert(QLatin1String("url"), url);
map.insert(QLatin1String("thumbnailUrl"), url);
map.insert(QLatin1String("sampleUrl"), sampleUrl);
map.insert(QLatin1String("rating"), rating);
map.insert(QLatin1String("size"), fileSize);
map.insert(QLatin1String("tags"), QVariant::fromValue(tags));
return(map);
}
} // namespace Danbooru

View file

@ -24,12 +24,11 @@
// Qt
#include <QtCore/QStringList>
// KDE
#include <QStringList>
#include <QVariantMap>
#include <QUrl>
/**
* @brief Commmon utilities for Danbooru classes.
* @file utils.h
@ -102,7 +101,7 @@ QUrl requestUrl(QUrl &url, const QString &path, const QString &username,
const QString &password);
QList<QVariant> parseDanbooruResult(QByteArray data, QString xlmElement,
bool *result, ApiType=ApiType::KonachanDanbooru);
bool *result, ApiType=ApiType::MoeBooru);
QVariant parseDanbooruResult(QByteArray data, bool *result);
/**
@ -117,11 +116,15 @@ QVariant parseDanbooruResult(QByteArray data, bool *result);
* @return true if the post is unwanted, false otherwise.
* @author Luca Beltrame (lbeltrame@kde.org)
*/
bool isPostBlacklisted(DanbooruPost *post, QSet<QString> blacklist, DanbooruPost::Ratings maxRating);
bool isPostBlacklisted(DanbooruPost *post, QSet<QString> blacklist, Danbooru::Ratings maxRating);
void fixPostUrl(DanbooruPost *post, QUrl boardUrl);
QVariantMap parseResult(const QByteArray &data, Danbooru::ApiType type);
QVariantMap parseResult(const QXmlStreamAttributes &data, Danbooru::ApiType type);
static const QMap< QString, Danbooru::Rating > initRatingMap();
}
#endif // UTILS_H

View file

@ -71,10 +71,10 @@
namespace Danbooru
{
QHash<int, DanbooruPost::Rating> DanbooruMainWindow::ratingMap = {
{0, DanbooruPost::Safe},
{1, DanbooruPost::Questionable},
{2, DanbooruPost::Explicit}
QHash<int, Danbooru::Rating> DanbooruMainWindow::ratingMap = {
{0, Danbooru::Safe},
{1, Danbooru::Questionable},
{2, Danbooru::Explicit}
};
DanbooruMainWindow::DanbooruMainWindow(QWidget *parent)
@ -99,7 +99,7 @@ DanbooruMainWindow::DanbooruMainWindow(QWidget *parent)
qmlRegisterType<Danbooru::DanbooruPost>("DanbooruClient", 1, 0, "DanbooruPost");
qmlRegisterType<Danbooru::DanbooruService>("DanbooruClient", 1, 0, "DanbooruService");
qRegisterMetaType<DanbooruPost::Rating>();
qRegisterMetaType<Danbooru::Rating>();
loadSettings();

View file

@ -72,7 +72,7 @@ private:
QTableView *m_tableView;
KImageCache *m_cache;
static QHash<int, DanbooruPost::Rating> ratingMap;
static QHash<int, Danbooru::Rating> ratingMap;
public:
/**