mirror of
https://github.com/HenkKalkwater/harbour-sailfin.git
synced 2025-09-06 10:32:44 +00:00
sailfish: add LiveTvChannels page
This ocmmit adds a LiveTvChannels page for displaying the programs that are now playing. The section Live TV Channels on the main page now shows the TV channel list in order of the channel number. Additionally, it fixes an issue in ApiModel, where it would not reload when a new loader was assigned. This is now fixed and some code on pages that worked around this fix has been removed.
This commit is contained in:
parent
19efba457c
commit
0278e3f364
23 changed files with 344 additions and 54 deletions
|
@ -194,6 +194,18 @@ bool setRequestStartIndex(Loader::GetAlbumArtistsParams ¶ms, int offset) {
|
|||
return true;
|
||||
}
|
||||
|
||||
template<>
|
||||
void setRequestLimit(Loader::GetLiveTvChannelsParams ¶ms, int limit) {
|
||||
params.setLimit(limit);
|
||||
}
|
||||
|
||||
template<>
|
||||
bool setRequestStartIndex(Loader::GetLiveTvChannelsParams ¶ms, int offset) {
|
||||
params.setStartIndex(offset);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
template<>
|
||||
QList<DTO::UserDto> extractRecords(const QList<DTO::UserDto> &result) {
|
||||
return result;
|
||||
|
|
|
@ -83,6 +83,7 @@ void JellyfinPlugin::registerTypes(const char *uri) {
|
|||
qmlRegisterType<ViewModel::NextUpLoader>(uri, 1, 0, "NextUpLoader");
|
||||
qmlRegisterType<ViewModel::PublicUsersLoader>(uri, 1, 0, "PublicUsersLoader");
|
||||
qmlRegisterType<ViewModel::AlbumArtistLoader>(uri, 1, 0, "AlbumArtistLoader");
|
||||
qmlRegisterType<ViewModel::LiveTvChannelsLoader>(uri, 1, 0, "LiveTvChannelsLoader");
|
||||
|
||||
// Enumerations
|
||||
qmlRegisterUncreatableType<Jellyfin::DTO::GeneralCommandTypeClass>(uri, 1, 0, "GeneralCommandType", "Is an enum");
|
||||
|
|
|
@ -34,9 +34,7 @@ Item::Item(QObject *parent, QSharedPointer<Model::Item> data)
|
|||
: QObject(parent),
|
||||
m_data(data),
|
||||
m_userData(new UserData(this)){
|
||||
connect(m_data.data(), &Model::Item::userDataChanged, this, &Item::onUserDataChanged);
|
||||
m_userData->setData(data->userData());
|
||||
updateMediaStreams();
|
||||
this->setData(data);
|
||||
}
|
||||
|
||||
void Item::setData(QSharedPointer<Model::Item> newData) {
|
||||
|
@ -50,8 +48,18 @@ void Item::setData(QSharedPointer<Model::Item> newData) {
|
|||
connect(m_data.data(), &Model::Item::userDataChanged, this, &Item::onUserDataChanged);
|
||||
updateMediaStreams();
|
||||
setUserData(m_data->userData());
|
||||
|
||||
if (m_data->currentProgram().isNull()) {
|
||||
m_currentProgram = nullptr;
|
||||
} else {
|
||||
QSharedPointer<DTO::BaseItemDto> dataDto = m_data->currentProgram();
|
||||
QSharedPointer<Model::Item> data = QSharedPointer<Model::Item>::create(*dataDto.data());
|
||||
m_currentProgram = new Item(this, data);
|
||||
}
|
||||
emit currentProgramChanged();
|
||||
}
|
||||
|
||||
|
||||
emit userDataChanged(m_userData);
|
||||
}
|
||||
|
||||
|
|
|
@ -16,18 +16,19 @@
|
|||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
#include "JellyfinQt/viewmodel/itemmodel.h"
|
||||
#include <JellyfinQt/viewmodel/itemmodel.h>
|
||||
|
||||
#include "JellyfinQt/viewmodel/item.h"
|
||||
#include <JellyfinQt/viewmodel/item.h>
|
||||
|
||||
#include "JellyfinQt/loader/http/artists.h"
|
||||
#include "JellyfinQt/loader/http/items.h"
|
||||
#include "JellyfinQt/loader/http/userlibrary.h"
|
||||
#include "JellyfinQt/loader/http/userviews.h"
|
||||
#include "JellyfinQt/loader/http/tvshows.h"
|
||||
#include <JellyfinQt/loader/http/artists.h>
|
||||
#include <JellyfinQt/loader/http/items.h>
|
||||
#include <JellyfinQt/loader/http/livetv.h>
|
||||
#include <JellyfinQt/loader/http/userlibrary.h>
|
||||
#include <JellyfinQt/loader/http/userviews.h>
|
||||
#include <JellyfinQt/loader/http/tvshows.h>
|
||||
|
||||
#include "JellyfinQt/viewmodel/userdata.h"
|
||||
#include "JellyfinQt/viewmodel/utils.h"
|
||||
#include <JellyfinQt/viewmodel/userdata.h>
|
||||
#include <JellyfinQt/viewmodel/utils.h>
|
||||
|
||||
#define JF_CASE(roleName) case roleName: \
|
||||
try { \
|
||||
|
@ -64,6 +65,9 @@ NextUpLoader::NextUpLoader(QObject *parent)
|
|||
AlbumArtistLoader::AlbumArtistLoader(QObject *parent)
|
||||
: AlbumArtistLoaderBase(new Jellyfin::Loader::HTTP::GetAlbumArtistsLoader(), parent) {}
|
||||
|
||||
LiveTvChannelsLoader::LiveTvChannelsLoader(QObject *parent)
|
||||
: LiveTvChannelsLoaderBase(new Jellyfin::Loader::HTTP::GetLiveTvChannelsLoader(), parent) {}
|
||||
|
||||
ItemModel::ItemModel(QObject *parent)
|
||||
: ApiModel<Model::Item>(parent) {
|
||||
connect(this, &QAbstractItemModel::rowsInserted, this, &ItemModel::onInsertItems);
|
||||
|
@ -126,6 +130,30 @@ QVariant ItemModel::data(const QModelIndex &index, int role) const {
|
|||
return QVariant(item->userData()->played());
|
||||
case RoleNames::userDataKey:
|
||||
return QVariant(item->userData()->key());
|
||||
case RoleNames::currentProgramName:
|
||||
if (item->currentProgram()) {
|
||||
return QVariant(item->currentProgram()->name());
|
||||
} else {
|
||||
return QVariant();
|
||||
}
|
||||
case RoleNames::currentProgramOverview:
|
||||
if (item->currentProgram()) {
|
||||
return QVariant(item->currentProgram()->overview());
|
||||
} else {
|
||||
return QVariant();
|
||||
}
|
||||
case RoleNames::currentProgramStartDate:
|
||||
if (item->currentProgram()) {
|
||||
return QVariant(item->currentProgram()->startDate());
|
||||
} else {
|
||||
return QVariant();
|
||||
}
|
||||
case RoleNames::currentProgramEndDate:
|
||||
if (item->currentProgram()) {
|
||||
return QVariant(item->currentProgram()->endDate());
|
||||
} else {
|
||||
return QVariant();
|
||||
}
|
||||
default:
|
||||
return QVariant();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue