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

Add track selection back

This commit is contained in:
Chris Josten 2021-08-23 01:46:57 +02:00
parent 5a24bdee59
commit 1aae311b9b
11 changed files with 306 additions and 57 deletions

View file

@ -28,6 +28,7 @@ Item::Item(QObject *parent, QSharedPointer<Model::Item> data)
m_userData(new UserData(this)){
connect(m_data.data(), &Model::Item::userDataChanged, this, &Item::onUserDataChanged);
m_userData->setData(data->userData());
updateMediaStreams();
}
void Item::setData(QSharedPointer<Model::Item> newData) {
@ -41,9 +42,39 @@ void Item::setData(QSharedPointer<Model::Item> newData) {
connect(m_data.data(), &Model::Item::userDataChanged, this, &Item::onUserDataChanged);
setUserData(m_data->userData());
}
emit userDataChanged(m_userData);
}
void Item::updateMediaStreams() {
m_allMediaStreams.clear();
m_audioStreams.clear();
m_videoStreams.clear();
m_subtitleStreams.clear();
const QList<DTO::MediaStream> streams = m_data->mediaStreams();
for (auto it = streams.cbegin(); it != streams.cend(); it++) {
MediaStream *stream = new MediaStream(QSharedPointer<DTO::MediaStream>::create(*it), this);
m_allMediaStreams.append(stream);
switch(stream->type()) {
case DTO::MediaStreamType::Audio:
m_audioStreams.append(stream);
break;
case DTO::MediaStreamType::Video:
m_videoStreams.append(stream);
break;
case DTO::MediaStreamType::Subtitle:
m_subtitleStreams.append(stream);
break;
default:
break;
}
}
qDebug() << m_audioStreams.size() << " audio streams, " << m_videoStreams.size() << " video streams, "
<< m_subtitleStreams.size() << " subtitle streams, " << m_allMediaStreams.size() << " streams total";
}
void Item::setUserData(DTO::UserItemDataDto &newData) {
setUserData(QSharedPointer<DTO::UserItemDataDto>::create(newData));
}

View file

@ -0,0 +1,30 @@
/*
* Sailfin: a Jellyfin client written using Qt
* Copyright (C) 2021 Chris Josten and the Sailfin Contributors.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* 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/mediastream.h"
namespace Jellyfin {
namespace ViewModel {
MediaStream::MediaStream(QSharedPointer<DTO::MediaStream> data, QObject *parent)
: QObject(parent),
m_data(data) {}
}
}

View file

@ -286,6 +286,8 @@ void PlaybackManager::requestItemUrl(QSharedPointer<Model::Item> item) {
params.setEnableDirectPlay(true);
params.setEnableDirectStream(true);
params.setEnableTranscoding(true);
params.setAudioStreamIndex(this->m_audioIndex);
params.setSubtitleStreamIndex(this->m_subtitleIndex);
loader->setParameters(params);
connect(loader, &ItemUrlLoader::ready, [this, loader, item] {