Added very simple photo viewer

This commit is contained in:
Chris Josten 2020-10-10 17:28:13 +02:00
parent d6a1f431b4
commit e838fcc8a1
6 changed files with 46 additions and 5 deletions

View File

@ -179,6 +179,7 @@ public slots:
* @brief Shares the capabilities of this device to the server.
*/
void postCapabilities();
QString downloadUrl(const QString &itemId) const;
protected slots:
void defaultNetworkErrorHandler(QNetworkReply::NetworkError error);

View File

@ -248,6 +248,10 @@ void ApiClient::postCapabilities() {
setDefaultErrorHandler(rep);
}
QString ApiClient::downloadUrl(const QString &itemId) const {
return m_baseUrl + "/Items/" + itemId + "/Download?api_key=" + this->m_token;
}
void ApiClient::generateDeviceProfile() {
QJsonObject root = DeviceProfile::generateProfile();
m_playbackDeviceProfile = QJsonObject(root);

View File

@ -22,4 +22,7 @@ message($$SUBDIRS)
# modify the localized app name in the the .desktop file.
# TRANSLATIONS += \
DISTFILES += \
sailfish/qml/pages/itemdetails/PhotoPage.qml

View File

@ -86,6 +86,8 @@ function getPageUrl(mediaType, itemType) {
return Qt.resolvedUrl("pages/itemdetails/CollectionPage.qml")
case "video":
return Qt.resolvedUrl("pages/itemdetails/VideoPage.qml")
case "photo":
return Qt.resolvedUrl("pages/itemdetails/PhotoPage.qml")
default:
return Qt.resolvedUrl("pages/itemdetails/UnsupportedPage.qml")
}

View File

@ -41,14 +41,10 @@ SilicaItem {
property alias subtitleTrack: mediaSource.subtitleIndex
property real startTicks: 0
// Force a Light on Dark theme since I doubt that there are persons who are willing to watch a Video
// on a white background.
palette.colorScheme: Theme.LightOnDark
// Blackground to prevent the ambience from leaking through
Rectangle {
anchors.fill: parent
color: "black"
color: Theme.overlayBackgroundColor
}
PlaybackManager {

View File

@ -0,0 +1,35 @@
import QtQuick 2.6
import Sailfish.Silica 1.0
import nl.netsoj.chris.Jellyfin 1.0
BaseDetailPage {
id: pageRoot
navigationStyle: PageNavigation.Vertical
Rectangle {
anchors.fill: parent
color: Theme.overlayBackgroundColor
}
PageHeader {
title: itemData.name
titleColor: Theme.primaryColor
}
Image {
id: image
source: ApiClient.downloadUrl(itemId)
fillMode: Image.PreserveAspectFit
anchors.fill: parent
opacity: status == Image.Ready ? 1.0 : 0.0
Behavior on opacity { FadeAnimator {}}
}
BusyIndicator {
running: image.status == Image.Loading
size: BusyIndicatorSize.Large
anchors.centerIn: parent
}
}