1
0
Fork 0
mirror of https://github.com/HenkKalkwater/harbour-sailfin.git synced 2024-05-18 12:02:41 +00:00
harbour-sailfin/qml/harbour-sailfin.qml
Chris Josten a358caf13e Fixed few bugs related to login/logout
* Pressing the logout button now brings the setup page up again
* Removing a server and readding one of which the hash of the address
  has a higher value than the previous one does no longer cause the
  application to request a login each time you open it.
* The method for deciding if the user is in setup has been changed. It
  now checks if a page in the pageStack has the property _isSetupPage,
  which works better than manually keeping track of state.
2020-09-27 00:42:20 +02:00

85 lines
2.4 KiB
QML

import QtQuick 2.0
import Sailfish.Silica 1.0
import QtMultimedia 5.6
import nl.netsoj.chris.Jellyfin 1.0
import Nemo.Notifications 1.0
import "components"
import "pages"
ApplicationWindow {
id: appWindow
property bool _hasInitialized: false
// The global mediaPlayer instance
readonly property MediaPlayer mediaPlayer: _mediaPlayer
property url backgroundSource
onBackgroundSourceChanged: {
if (backgroundSource) {
appWindow._overlayBackgroundSource.backgroundItem.source = backgroundSource
} else {
appWindow._overlayBackgroundSource.backgroundItem.source = Theme.backgroundImage
}
}
// Data of the currently selected item. For use on the cover.
property var itemData
//FIXME: proper error handling
Connections {
target: ApiClient
onNetworkError: errorNotification.show("Network error: " + error)
onConnectionFailed: errorNotification.show("Connect error: " + error)
//onConnectionSuccess: errorNotification.show("Success: " + loginMessage)
onSetupRequired: {
var isInSetup = pageStack.find(function (page) { return typeof page._isSetupPage !== "undefined" }) !== null
console.log("Is in setup: " + isInSetup)
if (!isInSetup) {
pageStack.replace(Qt.resolvedUrl("pages/setup/AddServerPage.qml"), {"backNavigation": false});
}
}
}
MediaPlayer {
id: _mediaPlayer
autoPlay: true
}
initialPage: Component {
MainPage {
Connections {
target: ApiClient
// Replace the MainPage if no server was set up.
}
onStatusChanged: {
if (status == PageStatus.Active && !_hasInitialized) {
_hasInitialized = true;
ApiClient.restoreSavedSession();
}
}
}
}
cover: {
if ([MediaPlayer.NoMedia, MediaPlayer.InvalidMedia, MediaPlayer.UnknownStatus].indexOf(mediaPlayer.status) >= 0) {
if (itemData) {
return Qt.resolvedUrl("cover/PosterCover.qml")
} else {
return Qt.resolvedUrl("cover/CoverPage.qml")
}
} else if (mediaPlayer.hasVideo){
return Qt.resolvedUrl("cover/VideoCover.qml")
}
}
allowedOrientations: Orientation.All
Notification {
id: errorNotification
previewSummary: "foo"
isTransient: true
function show(data) {
previewSummary = data;
publish();
}
}
}