1
0
Fork 0
mirror of https://github.com/HenkKalkwater/harbour-sailfin.git synced 2025-09-05 10:12:46 +00:00

Added more fields to Jellyfin::Item, update qml

* [UI] Improved: series season page now shows favourite and watched marks

Refractored some more QML to support camelCase items
This commit is contained in:
Chris Josten 2020-10-10 14:30:49 +02:00
parent d81fa50715
commit 8a683df2a2
13 changed files with 131 additions and 70 deletions

View file

@ -30,6 +30,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
#include <QVariant>
#include "jellyfinapiclient.h"
#include "jsonhelper.h"
namespace Jellyfin {
class SortOptions : public QObject{
@ -243,9 +244,6 @@ private:
*/
void generateFields();
QString sortByToString(SortOptions::SortBy sortBy);
void convertToCamelCase(QJsonValueRef val);
QString convertToCamelCaseHelper(const QString &str);
};
/**

View file

@ -40,6 +40,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
#include <cmath>
#include "jellyfinapiclient.h"
#include "jsonhelper.h"
namespace Jellyfin {
class ApiClient;
@ -63,6 +64,7 @@ public:
private:
QVariant jsonToVariant(QMetaProperty prop, const QJsonValue &val, const QJsonObject &root);
QJsonValue variantToJson(const QVariant var) const;
QVariant deserializeQobject(const QJsonObject &obj, const QMetaProperty &prop);
/**
* @brief Sets the first letter of the string to lower case (to make it camelCase).
@ -278,6 +280,10 @@ public:
Q_PROPERTY(QString seasonName MEMBER m_seasonName NOTIFY seasonNameChanged)
Q_PROPERTY(QList<MediaStream *> __list__mediaStreams MEMBER __list__m_mediaStreams NOTIFY mediaStreamsChanged)
Q_PROPERTY(QVariantList mediaStreams MEMBER m_mediaStreams NOTIFY mediaStreamsChanged STORED false)
// Why is this a QJsonObject? Well, because I couldn't be bothered to implement the deserialisations of
// a QHash at the moment.
Q_PROPERTY(QJsonObject imageTags MEMBER m_imageTags NOTIFY imageTagsChanged)
Q_PROPERTY(QJsonObject imageBlurHashes MEMBER m_imageBlurHashes NOTIFY imageBlurHashesChanged)
QString jellyfinId() const { return m_id; }
void setJellyfinId(QString newId);
@ -355,6 +361,8 @@ signals:
void seriesNameChanged(const QString &newSeriesName);
void seasonNameChanged(const QString &newSeasonName);
void mediaStreamsChanged(/*const QList<MediaStream *> &newMediaStreams*/);
void imageTagsChanged();
void imageBlurHashesChanged();
public slots:
/**
@ -402,6 +410,8 @@ protected:
QString m_seasonName;
QList<MediaStream *> __list__m_mediaStreams;
QVariantList m_mediaStreams;
QJsonObject m_imageTags;
QJsonObject m_imageBlurHashes;
template<typename T>
QQmlListProperty<T> toReadOnlyQmlListProperty(QList<T *> &list) {

21
core/include/jsonhelper.h Normal file
View file

@ -0,0 +1,21 @@
#ifndef JSON_SERIALIZER_H
#define JSON_SERIALIZER_H
#include <QList>
#include <QJsonArray>
#include <QJsonObject>
#include <QJsonValue>
#include <QJsonValueRef>
#include <QString>
namespace Jellyfin {
namespace JsonHelper {
void convertToCamelCase(QJsonValueRef val);
QString convertToCamelCaseHelper(const QString &str);
};
}
#endif // JSONSERIALIZER_H