mirror of
https://github.com/HenkKalkwater/harbour-sailfin.git
synced 2024-11-16 06:25:18 +00:00
Chris Josten
a358caf13e
* 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.
96 lines
2.4 KiB
QML
96 lines
2.4 KiB
QML
import QtQuick 2.6
|
|
import Sailfish.Silica 1.0
|
|
import nl.netsoj.chris.Jellyfin 1.0
|
|
|
|
/**
|
|
* Dialog showed when the user has to connect to a Jellyfin server.
|
|
*
|
|
* This dialog allows manual address entry or use one of the addresses discovered via UDP broadcasts.
|
|
*/
|
|
Dialog {
|
|
id: dialogRoot
|
|
allowedOrientations: Orientation.All
|
|
// Picks the address of the ComboBox if selected, otherwise the manual address entry
|
|
readonly property string address: serverSelect.currentItem._address
|
|
readonly property bool addressCorrect: serverSelect.currentIndex > 0 || manualAddress.acceptableInput
|
|
readonly property string serverName: serverSelect.currentItem._name
|
|
readonly property bool _isSetupPage: true
|
|
|
|
|
|
acceptDestination: AddServerConnectingPage {
|
|
id: connectingPage
|
|
serverName: dialogRoot.serverName
|
|
serverAddress: address
|
|
firstPage: dialogRoot
|
|
}
|
|
|
|
Column {
|
|
width: parent.width
|
|
DialogHeader {
|
|
acceptText: qsTr("Connect")
|
|
title: qsTr("Connect to Jellyfin")
|
|
}
|
|
|
|
ServerDiscoveryModel {
|
|
id: serverModel
|
|
}
|
|
|
|
|
|
ComboBox {
|
|
id: serverSelect
|
|
label: qsTr("Server")
|
|
description: qsTr("Sailfin will try to search for Jellyfin servers on your local network automatically")
|
|
|
|
menu: ContextMenu {
|
|
MenuItem {
|
|
// Special values are cool, aren't they?
|
|
readonly property string _address: manualAddress.text
|
|
readonly property string _name: manualAddress.text
|
|
text: qsTr("enter address manually")
|
|
}
|
|
Repeater {
|
|
model: serverModel
|
|
delegate: MenuItem {
|
|
readonly property string _address: address
|
|
readonly property string _name: name
|
|
text: qsTr("%1 - %2").arg(name).arg(address)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
TextField {
|
|
id: manualAddress
|
|
width: parent.width
|
|
clip: true
|
|
|
|
label: qsTr("Server address")
|
|
placeholderText: qsTr("e.g. https://demo.jellyfin.org")
|
|
|
|
enabled: serverSelect.currentIndex == 0
|
|
visible: enabled
|
|
|
|
inputMethodHints: Qt.ImhUrlCharactersOnly
|
|
validator: RegExpValidator {
|
|
regExp: /^https?:\/\/[a-zA-Z0-9-._~:/?#\[\]\@\!\$\&\'\(\)\*\+\,\;\=]+$/m
|
|
}
|
|
|
|
EnterKey.enabled: addressCorrect
|
|
EnterKey.iconSource: "image://theme/icon-m-enter-accept"
|
|
EnterKey.onClicked: dialogRoot.tryConnect()
|
|
}
|
|
}
|
|
|
|
onOpened: serverModel.refresh()
|
|
canAccept: addressCorrect
|
|
|
|
function tryConnect() {
|
|
console.log("Hi there!")
|
|
ApiClient.baseUrl = address;
|
|
//ApiClient.setupConnection()
|
|
//fakeTimer.start()
|
|
}
|
|
|
|
onDone: tryConnect()
|
|
}
|