189 lines
5.8 KiB
QML
189 lines
5.8 KiB
QML
/*
|
|
Fannyapp - Application to view the cover plan of the Fanny-Leicht-Gymnasium ins Stuttgart Vaihingen, Germany
|
|
Copyright (C) 2019 Itsblue Development <development@itsblue.de>
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU Affero General Public License as published
|
|
by the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program 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 Affero General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Affero General Public License
|
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
import QtQuick 2.9
|
|
import QtQuick.Controls 2.2
|
|
import QtQuick.Controls.Material 2.1
|
|
|
|
import Backend 1.0
|
|
|
|
import "./Components"
|
|
import "./Forms"
|
|
import "./Pages"
|
|
|
|
ApplicationWindow {
|
|
id: window
|
|
visible: true
|
|
width: 540
|
|
height: 960
|
|
|
|
|
|
|
|
Item {
|
|
id: app
|
|
|
|
anchors.fill: parent
|
|
|
|
property QtObject style: style
|
|
|
|
state: serverConn.state
|
|
|
|
states: [
|
|
State {
|
|
name: "notLoggedIn"
|
|
PropertyChanges {
|
|
target: mainStack
|
|
currPage: loginPage
|
|
}
|
|
},
|
|
|
|
State {
|
|
name: "loggedIn"
|
|
PropertyChanges {
|
|
target: mainStack
|
|
currPage: mainPage
|
|
}
|
|
}
|
|
]
|
|
|
|
ServerConn {
|
|
id: serverConn
|
|
|
|
onStateChanged: {
|
|
app.state = newState
|
|
}
|
|
}
|
|
|
|
AppStyle {
|
|
id: style
|
|
|
|
onStyleChanged: {
|
|
|
|
}
|
|
}
|
|
|
|
Material.theme: app.style.style.nameMaterialStyle === "Dark" ? Material.Dark:Material.Light
|
|
|
|
StackView {
|
|
id: mainStack
|
|
|
|
property var currPage
|
|
|
|
anchors.fill: parent
|
|
|
|
onCurrPageChanged: {
|
|
mainStack.replace(currPage)
|
|
}
|
|
|
|
Component {
|
|
id: loginPage
|
|
LoginPage {
|
|
}
|
|
}
|
|
|
|
Component {
|
|
id: mainPage
|
|
MainPage {
|
|
}
|
|
}
|
|
}
|
|
|
|
FontLoader {
|
|
id: fontAwesome
|
|
source: "qrc:/fonts/IconFont.otf"
|
|
}
|
|
|
|
function getErrorInfo(errorCode) {
|
|
|
|
var infoLevel
|
|
// 0 - ok
|
|
// 1 - info
|
|
// 2 - warn
|
|
// 3 - error
|
|
|
|
var errorString
|
|
var errorDescription
|
|
var errorButtonOption = ""
|
|
|
|
switch(errorCode) {
|
|
case 0:
|
|
infoLevel = 3
|
|
errorString = "Keine Verbindung zum Server"
|
|
errorDescription = "Bitte überprüfe deine Internetverbindung und versuche es erneut."
|
|
break
|
|
case 401:
|
|
infoLevel = 3
|
|
errorString = "Ungültige Zugangsdaten"
|
|
errorDescription = "Der Server hat den Zugang verweigert, bitte überprüfe deine Zugangsdaten und versuche es erneut."
|
|
break
|
|
case 403:
|
|
infoLevel = 3
|
|
errorString = "Account nicht freigegeben"
|
|
errorDescription = "Die Anmeldedaten waren korrekt, der Account ist jedoch nicht freigegeben."
|
|
break
|
|
case 500:
|
|
infoLevel = 3
|
|
errorString = "Interner Server Fehler"
|
|
errorDescription = "Scheinbar kann der Server die Anfrage im Moment nicht verarbeiten, bitte versuche es später erneut."
|
|
break
|
|
case 900:
|
|
infoLevel = 2
|
|
errorString = "Verarbeitungsfehler"
|
|
errorDescription = "Die Daten, die vom Server übertragen wurden, konnten nicht richtig verarbeitet werden, bitte versuche es später erneut."
|
|
errorButtonOption = "Als Pdf ansehen"
|
|
break
|
|
case 901:
|
|
infoLevel = 1
|
|
errorString = "Keine Daten"
|
|
errorDescription = "Es liegen keine aktuellen Daten vor."
|
|
break
|
|
case 902:
|
|
infoLevel = 1
|
|
errorString = "Alte Daten"
|
|
errorDescription = "Es konnte keine Verbindung zum Server hergestellt werden, aber es sind noch alte Daten gespeichert."
|
|
break
|
|
case 903:
|
|
infoLevel = 1
|
|
errorString = "Ungültiger Aufruf"
|
|
errorDescription = "Die aufgerufene Funktion ist momentan nicht verfügbar, bitte versuche es später erneut."
|
|
break
|
|
case 904:
|
|
infoLevel = 3
|
|
errorString = "Inkompatible API"
|
|
errorDescription = "Die Version der API auf dem Server ist zu neu und kann daher nicht verarbeitet werden. Bitte aktualisiere die App auf die aktuellste Version."
|
|
errorButtonOption = "Als Pdf ansehen"
|
|
break
|
|
case 905:
|
|
infoLevel = 3
|
|
errorString = "Interner Speicherfehler"
|
|
errorDescription = "Die Pdf-Datei konnte nicht gespeichert werden."
|
|
break
|
|
default:
|
|
infoLevel = 3
|
|
errorString = "Unerwarteter Fehler ("+errorCode+")"
|
|
errorDescription = "Unbekannter Fehler bei der Verbindung mit dem Server."
|
|
}
|
|
|
|
return([infoLevel, errorString, errorDescription, errorButtonOption])
|
|
}
|
|
|
|
function landscape(){
|
|
return(app.width > app.height)
|
|
}
|
|
}
|
|
}
|