1
0
Fork 0
mirror of https://github.com/HenkKalkwater/harbour-sailfin.git synced 2024-12-22 22:15:17 +00:00

Added video playback error screen

This commit is contained in:
Chris Josten 2020-09-27 17:59:11 +02:00
parent 25760bfab9
commit fa1118a7f3
4 changed files with 104 additions and 1 deletions

View file

@ -48,6 +48,7 @@ DISTFILES += \
qml/components/itemdetails/SeriesDetails.qml \
qml/components/itemdetails/UnsupportedDetails.qml \
qml/components/itemdetails/VideoTrackSelector.qml \
qml/components/videoplayer/VideoError.qml \
qml/components/videoplayer/VideoHud.qml \
qml/cover/CoverPage.qml \
qml/cover/PosterCover.qml \

View file

@ -17,7 +17,7 @@ SilicaItem {
property int progress
readonly property bool landscape: videoOutput.contentRect.width > videoOutput.contentRect.height
property MediaPlayer player
readonly property bool hudVisible: !hud.hidden
readonly property bool hudVisible: !hud.hidden || player.error !== MediaPlayer.NoError
property alias audioTrack: mediaSource.audioIndex
property alias subtitleTrack: mediaSource.subtitleIndex
@ -74,6 +74,11 @@ SilicaItem {
}
}
VideoError {
anchors.fill: videoOutput
player: playerRoot.player
}
function stop() {
player.stop()
player.source = ""

View file

@ -0,0 +1,69 @@
import QtQuick 2.6
import Sailfish.Silica 1.0
import QtMultimedia 5.6
Rectangle {
id: videoError
property MediaPlayer player
color: pal.palette.overlayBackgroundColor
opacity: player.error === MediaPlayer.NoError ? 0.0 : 1.0
Behavior on opacity { FadeAnimator {} }
SilicaItem {
id: pal
}
Column {
anchors.centerIn: parent
anchors.margins: Theme.horizontalPageMargin
Label {
anchors.horizontalCenter: parent.horizontalCenter
font.pixelSize: Theme.fontSizeExtraLarge
color: Theme.errorColor
text: {
switch(player.error) {
case MediaPlayer.ResourceError:
//: Video playback error: out of resources
qsTr("Resource allocation error")
break;
case MediaPlayer.FormatError:
//: Video playback error: unsupported format/codec
qsTr("Video format unsupported")
break;
case MediaPlayer.NetworkError:
//: Video playback error: network error
qsTr("Network error")
break;
case MediaPlayer.AccessDenied:
//: Video playback error: access denied
qsTr("Access denied")
break;
case MediaPlayer.ServiceMissing:
//: Video playback error: the media cannot be played because the media service could not be instantiated.
qsTr("Media service missing")
break;
}
}
}
Label {
wrapMode: Text.WordWrap
text: player.errorString
color: Theme.errorColor
width: videoError.width - Theme.horizontalPageMargin * 2
horizontalAlignment: Text.AlignHCenter
}
Item { width: 1; height: Theme.paddingLarge; }
ButtonLayout {
Button {
//: Button to retry loading a video after a failure
text: qsTr("Retry")
onClicked: player.play()
}
}
}
}

View file

@ -267,6 +267,34 @@
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>VideoError</name>
<message>
<source>Resource allocation error</source>
<extracomment>Video playback error: out of resources</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Video format unsupported</source>
<extracomment>Video playback error: unsupported format/codec</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Network error</source>
<extracomment>Video playback error: network error</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Access denied</source>
<extracomment>Video playback error: access denied</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Media service missing</source>
<extracomment>Video playback error: the media cannot be played because the media service could not be instantiated.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>VideoTrackSelector</name>
<message>