mirror of
https://github.com/HenkKalkwater/harbour-sailfin.git
synced 2025-09-06 10:32:44 +00:00
WIP: Slowly bringing back viewmodels
This commit is contained in:
parent
9abee12658
commit
228f81984b
17 changed files with 292 additions and 96 deletions
|
@ -21,11 +21,10 @@
|
|||
namespace Jellyfin {
|
||||
namespace ViewModel {
|
||||
|
||||
Item::Item(QObject *parent)
|
||||
: Item(nullptr, parent){}
|
||||
Item::Item(QObject *parent, QSharedPointer<Model::Item> data)
|
||||
: QObject(parent), m_data(data){
|
||||
|
||||
Item::Item(QSharedPointer<Model::Item> data, QObject *parent)
|
||||
: QObject(parent), m_data(data){}
|
||||
}
|
||||
|
||||
void Item::setData(QSharedPointer<Model::Item> newData) {
|
||||
Model::Item oldData = *m_data.data();
|
||||
|
@ -36,7 +35,8 @@ void Item::setData(QSharedPointer<Model::Item> newData) {
|
|||
// ItemLoader
|
||||
|
||||
ItemLoader::ItemLoader(QObject *parent)
|
||||
: BaseClass(Jellyfin::Loader::HTTP::GetItemLoader(), parent) {
|
||||
: BaseClass(new Jellyfin::Loader::HTTP::GetItemLoader(), parent) {
|
||||
connect(this, &LoaderBase::apiClientChanged, this, &ItemLoader::onApiClientChanged);
|
||||
}
|
||||
|
||||
void ItemLoader::onApiClientChanged(ApiClient *newApiClient) {
|
||||
|
@ -54,7 +54,9 @@ void ItemLoader::setUserId(const QString &newUserId) {
|
|||
}
|
||||
|
||||
bool ItemLoader::canReload() const {
|
||||
return BaseClass::canReload() && !m_parameters.itemId().isEmpty();
|
||||
return BaseClass::canReload()
|
||||
&& !m_parameters.itemId().isEmpty()
|
||||
&& !m_parameters.userId().isEmpty();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -18,6 +18,9 @@
|
|||
*/
|
||||
#include "JellyfinQt/viewmodel/itemmodel.h"
|
||||
|
||||
#include "JellyfinQt/loader/http/getlatestmedia.h"
|
||||
#include "JellyfinQt/loader/http/getitemsbyuserid.h"
|
||||
|
||||
#define JF_CASE(roleName) case roleName: \
|
||||
try { \
|
||||
return QVariant(item.roleName()); \
|
||||
|
@ -30,37 +33,13 @@ namespace Jellyfin {
|
|||
namespace ViewModel {
|
||||
|
||||
UserViewsLoader::UserViewsLoader(QObject *parent)
|
||||
: UserViewsLoaderBase(new Jellyfin::Loader::HTTP::GetUserViewsLoader(), parent) {
|
||||
connect(this, &BaseModelLoader::apiClientChanged, this, &UserViewsLoader::apiClientChanged);
|
||||
}
|
||||
: UserViewsLoaderBase(new Jellyfin::Loader::HTTP::GetUserViewsLoader(), parent) { }
|
||||
|
||||
void UserViewsLoader::apiClientChanged(ApiClient *newApiClient) {
|
||||
if (m_apiClient != nullptr) disconnect(m_apiClient, &ApiClient::userIdChanged, this, &UserViewsLoader::userIdChanged);
|
||||
if (newApiClient != nullptr) {
|
||||
connect(newApiClient, &ApiClient::userIdChanged, this, &UserViewsLoader::userIdChanged);
|
||||
if (!newApiClient->userId().isNull()) {
|
||||
m_parameters.setUserId(newApiClient->userId());
|
||||
}
|
||||
}
|
||||
}
|
||||
LatestMediaLoader::LatestMediaLoader(QObject *parent)
|
||||
: LatestMediaBase(new Jellyfin::Loader::HTTP::GetLatestMediaLoader(), parent){ }
|
||||
|
||||
void UserViewsLoader::userIdChanged(const QString &newUserId) {
|
||||
m_parameters.setUserId(newUserId);
|
||||
autoReloadIfNeeded();
|
||||
}
|
||||
void UserItemsLoader::apiClientChanged(ApiClient *newApiClient) {
|
||||
if (m_apiClient != nullptr) disconnect(m_apiClient, &ApiClient::userIdChanged, this, &UserItemsLoader::userIdChanged);
|
||||
if (newApiClient != nullptr) connect(newApiClient, &ApiClient::userIdChanged, this, &UserItemsLoader::userIdChanged);
|
||||
}
|
||||
|
||||
void UserItemsLoader::userIdChanged(const QString &newUserId) {
|
||||
m_parameters.setUserId(newUserId);
|
||||
autoReloadIfNeeded();
|
||||
}
|
||||
|
||||
bool UserItemsLoader::canReload() const {
|
||||
return BaseModelLoader::canReload() && !m_parameters.userId().isNull();
|
||||
}
|
||||
UserItemsLoader::UserItemsLoader(QObject *parent)
|
||||
: UserItemsLoaderBase(new Jellyfin::Loader::HTTP::GetItemsByUserIdLoader(), parent) {}
|
||||
|
||||
ItemModel::ItemModel(QObject *parent)
|
||||
: ApiModel<Model::Item>(parent) { }
|
||||
|
@ -81,6 +60,8 @@ QVariant ItemModel::data(const QModelIndex &index, int role) const {
|
|||
JF_CASE(dateCreated)
|
||||
JF_CASE(dateLastMediaAdded)
|
||||
JF_CASE(extraType)
|
||||
// Handpicked, important ones
|
||||
JF_CASE(imageTags)
|
||||
default:
|
||||
return QVariant();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue