mirror of
https://github.com/HenkKalkwater/harbour-sailfin.git
synced 2025-09-05 18:22:46 +00:00
Repair broken userdata.
The UserData of an item was not displaying, this should re-add it.
This commit is contained in:
parent
7b6c272aa9
commit
bb1e3ea21d
13 changed files with 79 additions and 41 deletions
|
@ -26,6 +26,7 @@ void registerTypes(const char *uri) {
|
|||
qmlRegisterUncreatableType<ViewModel::Item>(uri, 1, 0, "Item", "Acquire one via ItemLoader or exposed properties");
|
||||
qmlRegisterUncreatableType<EventBus>(uri, 1, 0, "EventBus", "Obtain one via your ApiClient");
|
||||
qmlRegisterUncreatableType<WebSocket>(uri, 1, 0, "WebSocket", "Obtain one via your ApiClient");
|
||||
qmlRegisterUncreatableType<ViewModel::UserData>(uri, 1, 0, "UserData", "Obtain one via an Item");
|
||||
|
||||
// AbstractItemModels
|
||||
qmlRegisterUncreatableType<BaseApiModel>(uri, 1, 0, "BaseApiModel", "Please use one of its subclasses");
|
||||
|
|
|
@ -27,16 +27,21 @@ Item::Item(QObject *parent, QSharedPointer<Model::Item> data)
|
|||
m_data(data),
|
||||
m_userData(new UserData(this)){
|
||||
connect(m_data.data(), &Model::Item::userDataChanged, this, &Item::onUserDataChanged);
|
||||
m_userData->setData(data->userData());
|
||||
}
|
||||
|
||||
void Item::setData(QSharedPointer<Model::Item> newData) {
|
||||
if (!m_data.isNull()) {
|
||||
disconnect(m_data.data(), &Model::Item::userDataChanged, this, &Item::onUserDataChanged);
|
||||
}
|
||||
|
||||
m_data = newData;
|
||||
|
||||
if (!m_data.isNull()) {
|
||||
connect(m_data.data(), &Model::Item::userDataChanged, this, &Item::onUserDataChanged);
|
||||
setUserData(m_data->userData());
|
||||
}
|
||||
emit userDataChanged(m_userData);
|
||||
}
|
||||
|
||||
void Item::setUserData(DTO::UserItemDataDto &newData) {
|
||||
|
@ -44,7 +49,11 @@ void Item::setUserData(DTO::UserItemDataDto &newData) {
|
|||
}
|
||||
|
||||
void Item::setUserData(QSharedPointer<DTO::UserItemDataDto> newData) {
|
||||
m_userData->setData(newData);
|
||||
if (m_data.isNull() || m_data->userData().isNull()) {
|
||||
m_userData->setData(QSharedPointer<DTO::UserData>::create());
|
||||
} else {
|
||||
m_userData->setData(newData);
|
||||
}
|
||||
emit userDataChanged(m_userData);
|
||||
}
|
||||
|
||||
|
|
|
@ -24,6 +24,8 @@
|
|||
#include "JellyfinQt/loader/http/getresumeitems.h"
|
||||
#include "JellyfinQt/loader/http/getseasons.h"
|
||||
|
||||
#include "JellyfinQt/viewmodel/userdata.h"
|
||||
|
||||
#define JF_CASE(roleName) case roleName: \
|
||||
try { \
|
||||
return QVariant(item->roleName()); \
|
||||
|
@ -87,6 +89,27 @@ QVariant ItemModel::data(const QModelIndex &index, int role) const {
|
|||
return QVariant(item->isFolder().value_or(false));
|
||||
case RoleNames::parentIndexNumber:
|
||||
return QVariant(item->parentIndexNumber().value_or(1));
|
||||
// UserData
|
||||
case RoleNames::userDataRating:
|
||||
return QVariant(item->userData()->rating().value_or(0.0));
|
||||
case RoleNames::userDataPlayedPercentage:
|
||||
return QVariant(item->userData()->playedPercentage().value_or(0.0));
|
||||
case RoleNames::userDataUnplayedItemCount:
|
||||
return QVariant(item->userData()->unplayedItemCount().value_or(0));
|
||||
case RoleNames::userDataPlaybackPositionTicks:
|
||||
return QVariant(item->userData()->playbackPositionTicks());
|
||||
case RoleNames::userDataPlayCount:
|
||||
return QVariant(item->userData()->playCount());
|
||||
case RoleNames::userDataFavorite:
|
||||
return QVariant(item->userData()->isFavorite());
|
||||
case RoleNames::userDataLikes:
|
||||
return QVariant(item->userData()->likes().value_or(false));
|
||||
case RoleNames::userDataLastPlayedDate:
|
||||
return QVariant(item->userData()->lastPlayedDate());
|
||||
case RoleNames::userDataPlayed:
|
||||
return QVariant(item->userData()->played());
|
||||
case RoleNames::userDataKey:
|
||||
return QVariant(item->userData()->key());
|
||||
default:
|
||||
return QVariant();
|
||||
}
|
||||
|
|
|
@ -22,17 +22,24 @@ namespace Jellyfin {
|
|||
namespace ViewModel {
|
||||
|
||||
UserData::UserData(QObject *parent)
|
||||
: QObject(parent),
|
||||
m_data(QSharedPointer<DTO::UserItemDataDto>::create()) {
|
||||
: UserData(QSharedPointer<DTO::UserItemDataDto>::create(), parent) {
|
||||
|
||||
}
|
||||
|
||||
UserData::UserData(QSharedPointer<DTO::UserItemDataDto> data, QObject *parent)
|
||||
: QObject(parent),
|
||||
m_data(data) {
|
||||
if (m_data.isNull()) {
|
||||
m_data = QSharedPointer<DTO::UserItemDataDto>::create();
|
||||
}
|
||||
}
|
||||
|
||||
void UserData::setData(QSharedPointer<DTO::UserItemDataDto> data) {
|
||||
m_data = data;
|
||||
if (data.isNull()) {
|
||||
m_data = QSharedPointer<DTO::UserItemDataDto>::create();
|
||||
} else {
|
||||
m_data = data;
|
||||
}
|
||||
}
|
||||
|
||||
} // NS ViewModel
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue