diff --git a/src/libdanbooru/danboorupost.cpp b/src/libdanbooru/danboorupost.cpp index 52e2e44..aaeab50 100644 --- a/src/libdanbooru/danboorupost.cpp +++ b/src/libdanbooru/danboorupost.cpp @@ -36,13 +36,15 @@ namespace Danbooru { + const QMap DanbooruPost::RATING_MAP = initRatingMap(); + DanbooruPost::DanbooruPost(QVariantMap postData, QPixmap* pixmap, QObject* parent): QObject(parent), m_pixmap(pixmap) { - m_tags = postData.value("tags").toString().split(' '); + 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(); @@ -50,6 +52,7 @@ namespace Danbooru { m_url = KUrl(postData.value("file_url").toUrl() ); m_thumbnailUrl = KUrl(postData.value("preview_url").toUrl()); m_size = postData.value("file_size").toInt(); + m_rating = RATING_MAP.value(postData.value("rating").toString()); } @@ -59,7 +62,16 @@ namespace Danbooru { QObject(parent), m_pixmap(pixmap) { - Q_UNUSED(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 = KUrl(postData.value("file_url").toString()); + m_thumbnailUrl = KUrl(postData.value("preview_url").toString()); + m_size = postData.value("file_size").toString().toInt(); + m_rating = RATING_MAP.value(postData.value("rating").toString()); } @@ -69,13 +81,25 @@ namespace Danbooru { } + const QMap< QString, Rating > DanbooruPost::initRatingMap() + { + QMap map; + map.insert("s", Safe); + map.insert("q", Questionable); + map.insert("e", Explicit); + + return map; + + } + + bool DanbooruPost::operator==(const Danbooru::DanbooruPost& other) { return m_url == other.m_url && m_id == other.m_id; } - void DanbooruPost::setPixmap(QPixmap* pixmap) + void DanbooruPost::setPixmap(const QPixmap* pixmap) { m_pixmap = pixmap; } @@ -102,7 +126,7 @@ namespace Danbooru { return m_width; } - QStringList DanbooruPost::tags() const + const QSet< QString > DanbooruPost::tags() const { return m_tags; } @@ -112,7 +136,7 @@ namespace Danbooru { return m_thumbnailUrl; } - QPixmap* DanbooruPost::pixmap() const + const QPixmap* DanbooruPost::pixmap() const { return m_pixmap; } @@ -127,6 +151,12 @@ namespace Danbooru { return m_url; } + const Ratings DanbooruPost::rating() const + { + return m_rating; + } + + } // namespace Danbooru diff --git a/src/libdanbooru/danboorupost.h b/src/libdanbooru/danboorupost.h index c6c1128..9a76b6a 100644 --- a/src/libdanbooru/danboorupost.h +++ b/src/libdanbooru/danboorupost.h @@ -1,5 +1,5 @@ /* - * + * This file is part of libdanbooru. * Copyright 2013 Luca Beltrame * * This program is free software; you can redistribute it and/or @@ -33,14 +33,18 @@ #include #include #include +#include #include // KDE #include -class QPixmap; +// Own +#include "danbooru.h" + +class QPixmap; namespace Danbooru { @@ -66,15 +70,15 @@ namespace Danbooru { Q_OBJECT - Q_PROPERTY(QPixmap* pixmap READ pixmap WRITE setPixmap) + Q_PROPERTY(const QPixmap* pixmap READ pixmap WRITE setPixmap) Q_PROPERTY(int id READ id) Q_PROPERTY(KUrl fileUrl READ fileUrl) - Q_PROPERTY(QStringList tags READ tags) + Q_PROPERTY(QSet tags READ tags) Q_PROPERTY(KUrl thumbnailUrl READ thumbnailUrl) private: - QPixmap* m_pixmap; + const QPixmap* m_pixmap; // basic features of a post @@ -85,7 +89,14 @@ namespace Danbooru { KUrl m_url; KUrl m_thumbnailUrl; - QStringList m_tags; + QSet m_tags; + Ratings m_rating; + + static const QMap RATING_MAP; + + // Private functions + + static const QMap< QString, Rating > initRatingMap(); public: @@ -156,7 +167,7 @@ namespace Danbooru { /** * @return The tags associated to the post. **/ - QStringList tags() const; + const QSet< QString > tags() const; /** * @return The URL to the post's thumbnail. @@ -166,13 +177,18 @@ namespace Danbooru { /** * @return A pointer to the thumbnail's pixmap. **/ - QPixmap* pixmap() const; + const QPixmap* pixmap() const; + + /** + * @return The current post's rating. + **/ + const Ratings rating() const; /** * Set the post's pixmap to a specific QPixmap instance's pointer. * **/ - void setPixmap(QPixmap* pixmap); + void setPixmap(const QPixmap* pixmap); /** * @return A string representation of the post.