19#ifndef JELLYFIN_VIEWMODEL_ITEMMODEL_H
20#define JELLYFIN_VIEWMODEL_ITEMMODEL_H
22#include <QAbstractListModel>
24#include <QScopedPointer>
25#include <QVariantList>
37#define FWDPROP(type, propName, propSetName) \
39 Q_PROPERTY(type propName READ propName WRITE set##propSetName NOTIFY propName##Changed) \
40 type propName() const { return this->m_parameters.propName(); } \
41 void set##propSetName(const type &newValue) { \
42 this->m_parameters.set##propSetName( newValue ); \
43 emit propName##Changed(); \
44 autoReloadIfNeeded(); \
47 void propName##Changed();
49#define FWDLISTPROP(type, propName, propSetName) \
51 Q_PROPERTY(QVariantList propName READ propName WRITE set##propSetName NOTIFY propName##Changed) \
52 QVariantList propName() const { \
53 QVariantList result; \
55 result.reserve(list.size()); \
56 for (auto it = list.cbegin(); it != list.cend(); it++) { \
57 result.append(QVariant::fromValue<type>(*it)); \
61 void set##propSetName(const QVariantList &newValue) { \
63 list.reserve(newValue.size()); \
64 for(auto it = newValue.cbegin(); it != newValue.cend(); it++) { \
65 list.append(it->value<type>()); \
67 this->m_parameters.set##propSetName(list); \
68 emit propName##Changed(); \
69 autoReloadIfNeeded(); \
72 void propName##Changed();
79#define JFRN(name) {RoleNames::name, #name}
87template <
class T,
class D,
class R,
class P>
99 void apiClientChanged(
ApiClient *newApiClient) {
103 if (newApiClient !=
nullptr) {
104 this->connect(newApiClient, &
ApiClient::userIdChanged,
this, &AbstractUserParameterLoader<T, D, R, P>::userIdChanged);
105 if (!newApiClient->
userId().isNull()) {
111 void userIdChanged(
const QString &newUserId) {
406 explicit ItemModel (QObject *parent =
nullptr);
449 QVariant data(
const QModelIndex &index,
int role)
const override;
450 QSharedPointer<Model::Item> itemAt(
int index);
452 void onInsertItems(
const QModelIndex &parent,
int start,
int end);
An Api client for Jellyfin. Handles requests and authentication.
Definition apiclient.h:90
void userIdChanged(QString userId)
QString userId
Definition apiclient.h:103
ApiModel(QObject *parent=nullptr)
Definition apimodel.h:434
void autoReloadIfNeeded()
Definition apimodel.cpp:49
void apiClientChanged(ApiClient *newApiClient)
virtual bool canReload() const
Determines if this model is able to reload.
Definition apimodel.cpp:82
ApiClient * m_apiClient
Definition apimodel.h:117
Definition baseitemdtoqueryresult.h:50
Definition baseitemdto.h:74
Definition baseitemkind.h:46
Value
Definition channeltype.h:49
Definition imagetype.h:46
Value
Definition imagetype.h:49
Definition itemfields.h:46
Definition itemfilter.h:46
Definition itemsortby.h:46
Definition locationtype.h:46
Definition sortorder.h:46
Definition useritemdatadto.h:49
P m_parameters
Definition apimodel.h:328
LoaderModelLoader(Support::Loader< R, P > *loader, QObject *parent=nullptr)
Definition apimodel.h:284
Class intended for models which have a mandatory userId property, which can be extracted from the Api...
Definition itemmodel.h:88
AbstractUserParameterLoader(Support::Loader< R, P > *loader, QObject *parent=nullptr)
Definition itemmodel.h:90
bool canReload() const override
Determines if this model is able to reload.
Definition itemmodel.h:95
QString userId
Definition itemmodel.h:326
QStringList tags
Definition itemmodel.h:325
QVariantList mediaTypes
Definition itemmodel.h:312
QStringList studioIds
Definition itemmodel.h:323
QString parentId
Definition itemmodel.h:318
QStringList personTypes
Definition itemmodel.h:320
QStringList genres
Definition itemmodel.h:307
QString searchTerm
Definition itemmodel.h:321
QString nameLessThan
Definition itemmodel.h:314
QVariantList excludeItemTypes
Definition itemmodel.h:303
QString nameStartsWith
Definition itemmodel.h:315
QVariantList includeItemTypes
Definition itemmodel.h:309
QVariantList enableImageTypes
Definition itemmodel.h:299
QVariantList filters
Definition itemmodel.h:305
QVariantList fields
Definition itemmodel.h:304
bool enableTotalRecordCount
Definition itemmodel.h:301
QStringList officialRatings
Definition itemmodel.h:317
bool enableUserData
Definition itemmodel.h:302
double minCommunityRating
Definition itemmodel.h:313
qint32 imageTypeLimit
Definition itemmodel.h:308
QStringList genreIds
Definition itemmodel.h:306
AlbumArtistLoader(QObject *parent=nullptr)
Definition itemmodel.cpp:65
int limit
Definition itemmodel.h:311
QVariantList years
Definition itemmodel.h:327
QStringList studios
Definition itemmodel.h:324
QStringList personIds
Definition itemmodel.h:319
bool enableImages
Definition itemmodel.h:300
bool isFavorite
Definition itemmodel.h:310
int startIndex
Definition itemmodel.h:322
QString nameStartsWithOrGreater
Definition itemmodel.h:316
Base class for each model that works with items.
Definition itemmodel.h:360
RoleNames
Definition itemmodel.h:363
@ collectionType
Definition itemmodel.h:380
@ userDataPlayCount
Definition itemmodel.h:392
@ userDataPlayedPercentage
Definition itemmodel.h:389
@ currentProgramName
Definition itemmodel.h:398
@ artistItems
Definition itemmodel.h:384
@ parentIndexNumber
Definition itemmodel.h:387
@ userDataLastPlayedDate
Definition itemmodel.h:395
@ serverId
Definition itemmodel.h:367
@ runTimeTicks
Definition itemmodel.h:382
@ userDataKey
Definition itemmodel.h:397
@ jellyfinExtendModelAfterHere
Definition itemmodel.h:403
@ currentProgramEndDate
Definition itemmodel.h:401
@ imageTags
Definition itemmodel.h:376
@ jellyfinId
Definition itemmodel.h:364
@ mediaType
Definition itemmodel.h:378
@ userDataPlaybackPositionTicks
Definition itemmodel.h:391
@ sourceType
Definition itemmodel.h:369
@ name
Definition itemmodel.h:365
@ imageBlurHashes
Definition itemmodel.h:377
@ currentProgramStartDate
Definition itemmodel.h:400
@ dateLastMediaAdded
Definition itemmodel.h:372
@ overview
Definition itemmodel.h:386
@ userDataRating
Definition itemmodel.h:388
@ etag
Definition itemmodel.h:368
@ indexNumber
Definition itemmodel.h:381
@ extraType
Definition itemmodel.h:373
@ userDataFavorite
Definition itemmodel.h:393
@ originalTitle
Definition itemmodel.h:366
@ dateCreated
Definition itemmodel.h:371
@ userDataUnplayedItemCount
Definition itemmodel.h:390
@ type
Definition itemmodel.h:379
@ artists
Definition itemmodel.h:383
@ userDataLikes
Definition itemmodel.h:394
@ playlistItemId
Definition itemmodel.h:370
@ isFolder
Definition itemmodel.h:385
@ userDataPlayed
Definition itemmodel.h:396
@ currentProgramOverview
Definition itemmodel.h:399
ItemModel(QObject *parent=nullptr)
Definition itemmodel.cpp:71
QHash< int, QByteArray > roleNames() const override
Definition itemmodel.h:408
bool isSeries
Definition itemmodel.h:338
QVariantList fields
Definition itemmodel.h:348
bool isFavorite
Definition itemmodel.h:342
bool isSports
Definition itemmodel.h:341
bool addCurrentProgram
Definition itemmodel.h:353
bool isKids
Definition itemmodel.h:340
LiveTvChannelsLoader(QObject *parent=nullptr)
Definition itemmodel.cpp:68
bool isDisliked
Definition itemmodel.h:344
bool isLiked
Definition itemmodel.h:343
bool isNews
Definition itemmodel.h:339
Jellyfin::DTO::ChannelTypeClass::Value type
Definition itemmodel.h:336
bool isMovie
Definition itemmodel.h:337
Jellyfin::DTO::SortOrderClass::Value sortOrder
Definition itemmodel.h:351
int imageTypeLimit
Definition itemmodel.h:346
QVariantList sortBy
Definition itemmodel.h:350
bool enableFavoriteSorting
Definition itemmodel.h:352
bool enableUserData
Definition itemmodel.h:349
bool enableImages
Definition itemmodel.h:345
QVariantList enableImageTypes
Definition itemmodel.h:347
QVariantList fields
Definition itemmodel.h:287
qint32 imageTypeLimit
Definition itemmodel.h:288
bool enableUserData
Definition itemmodel.h:286
QVariantList enableImageTypes
Definition itemmodel.h:283
QString seriesId
Definition itemmodel.h:290
bool enableImages
Definition itemmodel.h:284
NextUpLoader(QObject *parent=nullptr)
Definition itemmodel.cpp:62
QString parentId
Definition itemmodel.h:289
bool enableTotalRecordCount
Definition itemmodel.h:285
bool disableFirstEpisode
Definition itemmodel.h:282
QString searchTerm
Definition itemmodel.h:236
QString parentId
Definition itemmodel.h:235
bool enableTotalRecordCount
Definition itemmodel.h:228
ResumeItemsLoader(QObject *parent=nullptr)
Definition itemmodel.cpp:53
bool enableImages
Definition itemmodel.h:227
QVariantList excludeItemTypes
Definition itemmodel.h:230
QVariantList fields
Definition itemmodel.h:231
QVariantList mediaTypes
Definition itemmodel.h:234
bool enableUserData
Definition itemmodel.h:229
QVariantList includeItemTypes
Definition itemmodel.h:233
QVariantList enableImageTypes
Definition itemmodel.h:226
qint32 imageTypeLimit
Definition itemmodel.h:232
bool enableUserData
Definition itemmodel.h:266
QString adjacentTo
Definition itemmodel.h:264
QString seriesId
Definition itemmodel.h:263
bool enableImages
Definition itemmodel.h:265
qint32 imageTypeLimit
Definition itemmodel.h:268
ShowEpisodesLoader(QObject *parent=nullptr)
Definition itemmodel.cpp:59
qint32 season
Definition itemmodel.h:270
Jellyfin::DTO::ItemSortByClass::Value sortBy
Definition itemmodel.h:272
bool isMissing
Definition itemmodel.h:269
QString startItemId
Definition itemmodel.h:273
QString seasonId
Definition itemmodel.h:271
QVariantList fields
Definition itemmodel.h:267
qint32 imageTypeLimit
Definition itemmodel.h:251
bool enableUserData
Definition itemmodel.h:249
ShowSeasonsLoader(QObject *parent=nullptr)
Definition itemmodel.cpp:56
QVariantList enableImageTypes
Definition itemmodel.h:247
QString adjacentTo
Definition itemmodel.h:246
QString seriesId
Definition itemmodel.h:245
QVariantList fields
Definition itemmodel.h:250
bool enableImages
Definition itemmodel.h:248
bool isSpecialSeason
Definition itemmodel.h:253
bool isMissing
Definition itemmodel.h:252
QDateTime maxPremiereDate
Definition itemmodel.h:202
qint32 maxHeight
Definition itemmodel.h:200
bool is3D
Definition itemmodel.h:190
QVariantList excludeItemTypes
Definition itemmodel.h:169
QString maxOfficialRating
Definition itemmodel.h:201
qint32 maxWidth
Definition itemmodel.h:203
QStringList albumIds
Definition itemmodel.h:157
QVariantList sortOrder
Definition itemmodel.h:210
bool is4K
Definition itemmodel.h:191
bool enableTotalRecordCount
Definition itemmodel.h:165
bool hasTvdbId
Definition itemmodel.h:185
bool isLocked
Definition itemmodel.h:194
bool hasThemeVideo
Definition itemmodel.h:182
bool hasTmdbId
Definition itemmodel.h:183
QVariantList fields
Definition itemmodel.h:171
QVariantList includeItemTypes
Definition itemmodel.h:189
bool collapseBoxSetItems
Definition itemmodel.h:161
QVariantList imageTypes
Definition itemmodel.h:188
QString minOfficialRating
Definition itemmodel.h:206
QStringList tags
Definition itemmodel.h:211
bool hasParentalRating
Definition itemmodel.h:178
QStringList excludeArtistIds
Definition itemmodel.h:167
bool isPlaceHolder
Definition itemmodel.h:196
bool hasThemeSong
Definition itemmodel.h:181
QVariantList mediaTypes
Definition itemmodel.h:204
QStringList ids
Definition itemmodel.h:186
QStringList albums
Definition itemmodel.h:158
QStringList excludeItemIds
Definition itemmodel.h:168
bool isHd
Definition itemmodel.h:193
QVariantList locationTypes
Definition itemmodel.h:199
UserItemsLoader(QObject *parent=nullptr)
Definition itemmodel.cpp:50
QVariantList sortBy
Definition itemmodel.h:209
bool isPlayed
Definition itemmodel.h:197
QStringList artistIds
Definition itemmodel.h:159
bool hasSpecialFeature
Definition itemmodel.h:179
bool hasImdbId
Definition itemmodel.h:175
QStringList contributingArtistIds
Definition itemmodel.h:162
bool hasTrailer
Definition itemmodel.h:184
bool hasOfficialRating
Definition itemmodel.h:176
QList< Jellyfin::DTO::LocationTypeClass::Value > excludeLocationTypes
Definition itemmodel.h:170
bool enableImages
Definition itemmodel.h:164
bool enableUserData
Definition itemmodel.h:166
bool isMissing
Definition itemmodel.h:195
qint32 imageTypeLimit
Definition itemmodel.h:187
bool hasSubtitles
Definition itemmodel.h:180
QList< qint32 > years
Definition itemmodel.h:212
QStringList artists
Definition itemmodel.h:160
bool hasOverview
Definition itemmodel.h:177
bool isUnaired
Definition itemmodel.h:198
QVariantList filters
Definition itemmodel.h:172
qint32 minHeight
Definition itemmodel.h:205
QStringList albumArtistIds
Definition itemmodel.h:156
QDateTime minPremiereDate
Definition itemmodel.h:207
QString parentId
Definition itemmodel.h:214
QString searchTerm
Definition itemmodel.h:216
QVariantList enableImageTypes
Definition itemmodel.h:163
QStringList genreIds
Definition itemmodel.h:173
QString adjacentTo
Definition itemmodel.h:155
bool recursive
Definition itemmodel.h:215
bool isFavorite
Definition itemmodel.h:192
qint32 minWidth
Definition itemmodel.h:208
QStringList genres
Definition itemmodel.h:174
bool includeExternalContent
Definition itemmodel.h:126
bool includeHidden
Definition itemmodel.h:127
UserViewsLoader(QObject *parent=nullptr)
Definition itemmodel.cpp:44
QVariantList presetViews
Definition itemmodel.h:128
Definition mediaplayer2.h:20
#define JFRN(name)
Definition itemmodel.h:79
#define FWDLISTPROP(type, propName, propSetName)
Definition itemmodel.h:49
#define FWDPROP(type, propName, propSetName)
Definition itemmodel.h:37
Contains auto-generated Data Transfer Objects for the Jellyfin HTTP API.
CollectionTypeClass::Value CollectionType
Definition collectiontype.h:70
SortOrderClass::Value SortOrder
Definition sortorder.h:59
Definition controllablesession.h:18
AbstractUserParameterLoader< Model::Item, DTO::BaseItemDto, DTO::BaseItemDtoQueryResult, Jellyfin::Loader::GetSeasonsParams > ShowSeasonsLoaderBase
Definition itemmodel.h:239
AbstractUserParameterLoader< Model::Item, DTO::BaseItemDto, DTO::BaseItemDtoQueryResult, Jellyfin::Loader::GetEpisodesParams > ShowEpisodesLoaderBase
Definition itemmodel.h:257
AbstractUserParameterLoader< Model::Item, DTO::BaseItemDto, DTO::BaseItemDtoQueryResult, Jellyfin::Loader::GetAlbumArtistsParams > AlbumArtistLoaderBase
Definition itemmodel.h:293
AbstractUserParameterLoader< Model::Item, DTO::BaseItemDto, DTO::BaseItemDtoQueryResult, Jellyfin::Loader::GetNextUpParams > NextUpLoaderBase
Definition itemmodel.h:276
AbstractUserParameterLoader< Model::Item, DTO::BaseItemDto, DTO::BaseItemDtoQueryResult, Jellyfin::Loader::GetItemsParams > UserItemsLoaderBase
Definition itemmodel.h:149
AbstractUserParameterLoader< Model::Item, DTO::BaseItemDto, QList< DTO::BaseItemDto >, Jellyfin::Loader::GetLatestMediaParams > LatestMediaBase
Definition itemmodel.h:131
AbstractUserParameterLoader< Model::Item, DTO::BaseItemDto, DTO::BaseItemDtoQueryResult, Jellyfin::Loader::GetResumeItemsParams > ResumeItemsLoaderBase
Definition itemmodel.h:220
AbstractUserParameterLoader< Model::Item, DTO::BaseItemDto, DTO::BaseItemDtoQueryResult, Jellyfin::Loader::GetUserViewsParams > UserViewsLoaderBase
Definition itemmodel.h:120
AbstractUserParameterLoader< Model::Item, DTO::BaseItemDto, DTO::BaseItemDtoQueryResult, Jellyfin::Loader::GetLiveTvChannelsParams > LiveTvChannelsLoaderBase
Definition itemmodel.h:330
void writeRequestTypesFile R(File headerFile, File implementationFile, R endpoints) if(is(ElementType!R
Definition openapigenerator.d:279