2019-01-19 23:03:50 +01:00
/ *
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/>.
* /
2018-06-21 08:47:09 +02:00
import QtQuick 2.9
import QtQuick . Controls 2.2
2019-10-24 19:43:33 +02:00
import QtQuick . Controls . Material 2.1
2018-06-21 08:47:09 +02:00
2018-12-30 20:58:52 +01:00
import Backend 1.0
import "./Components"
import "./Forms"
import "./Pages"
2018-06-21 08:47:09 +02:00
ApplicationWindow {
id: window
visible: true
2018-06-21 16:41:02 +02:00
width: 540
height: 960
2020-01-25 11:15:37 +01:00
2018-12-30 20:58:52 +01:00
Item {
id: app
2018-06-21 16:41:02 +02:00
2018-12-30 20:58:52 +01:00
anchors.fill: parent
2019-03-10 12:54:35 +01:00
property QtObject style: style
2019-01-19 22:44:48 +01:00
state: serverConn . state
2018-12-30 20:58:52 +01:00
states: [
State {
name: "notLoggedIn"
PropertyChanges {
target: mainStack
currPage: loginPage
2018-06-25 00:15:18 +02:00
}
2018-12-30 20:58:52 +01:00
} ,
2018-06-25 00:15:18 +02:00
2018-12-30 20:58:52 +01:00
State {
name: "loggedIn"
PropertyChanges {
target: mainStack
currPage: mainPage
2018-06-21 16:41:02 +02:00
}
}
2018-12-30 20:58:52 +01:00
]
ServerConn {
id: serverConn
onStateChanged: {
app . state = newState
2018-06-21 16:41:02 +02:00
}
}
2019-03-10 12:54:35 +01:00
AppStyle {
id: style
2020-01-25 11:15:37 +01:00
onStyleChanged: {
}
2019-03-10 12:54:35 +01:00
}
Material.theme: app . style . style . nameMaterialStyle === "Dark" ? Material.Dark: Material . Light
2018-12-30 20:58:52 +01:00
StackView {
id: mainStack
2018-06-21 08:47:09 +02:00
2018-12-30 20:58:52 +01:00
property var currPage
2018-06-21 16:41:02 +02:00
2018-12-30 20:58:52 +01:00
anchors.fill: parent
onCurrPageChanged: {
mainStack . replace ( currPage )
}
Component {
id: loginPage
2019-12-06 18:06:19 +01:00
LoginPage {
}
2018-12-30 20:58:52 +01:00
}
Component {
id: mainPage
2019-12-06 18:06:19 +01:00
MainPage {
}
2018-06-21 16:41:02 +02:00
}
}
2018-12-30 20:58:52 +01:00
2019-01-27 20:47:36 +01:00
FontLoader {
id: fontAwesome
2019-12-12 17:23:10 +01:00
source: "qrc:/fonts/IconFont.otf"
2019-01-27 20:47:36 +01:00
}
2018-12-30 20:58:52 +01:00
function getErrorInfo ( errorCode ) {
var infoLevel
// 0 - ok
// 1 - info
2019-11-06 22:02:48 +01:00
// 2 - warn
// 3 - error
2018-12-30 20:58:52 +01:00
var errorString
var errorDescription
2019-11-06 22:02:48 +01:00
var errorButtonOption = ""
2018-12-30 20:58:52 +01:00
switch ( errorCode ) {
case 0 :
2019-11-06 22:02:48 +01:00
infoLevel = 3
2018-12-30 20:58:52 +01:00
errorString = "Keine Verbindung zum Server"
errorDescription = "Bitte überprüfe deine Internetverbindung und versuche es erneut."
break
case 401 :
2019-11-06 22:02:48 +01:00
infoLevel = 3
2018-12-30 20:58:52 +01:00
errorString = "Ungültige Zugangsdaten"
2019-12-07 15:38:35 +01:00
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."
2018-12-30 20:58:52 +01:00
break
case 500 :
2019-11-06 22:02:48 +01:00
infoLevel = 3
2018-12-30 20:58:52 +01:00
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
2019-11-06 22:02:48 +01:00
errorString = "Verarbeitungsfehler"
2018-12-30 20:58:52 +01:00
errorDescription = "Die Daten, die vom Server übertragen wurden, konnten nicht richtig verarbeitet werden, bitte versuche es später erneut."
2019-11-06 22:02:48 +01:00
errorButtonOption = "Als Pdf ansehen"
2018-12-30 20:58:52 +01:00
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
2019-01-19 22:44:48 +01:00
case 903 :
infoLevel = 1
errorString = "Ungültiger Aufruf"
errorDescription = "Die aufgerufene Funktion ist momentan nicht verfügbar, bitte versuche es später erneut."
break
2019-01-27 20:47:36 +01:00
case 904 :
2019-11-06 22:02:48 +01:00
infoLevel = 3
2019-01-27 20:47:36 +01:00
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."
2019-11-06 22:02:48 +01:00
errorButtonOption = "Als Pdf ansehen"
break
case 905 :
infoLevel = 3
errorString = "Interner Speicherfehler"
errorDescription = "Die Pdf-Datei konnte nicht gespeichert werden."
2019-01-27 20:47:36 +01:00
break
2018-12-30 20:58:52 +01:00
default:
2019-11-06 22:02:48 +01:00
infoLevel = 3
2018-12-30 20:58:52 +01:00
errorString = "Unerwarteter Fehler (" + errorCode + ")"
errorDescription = "Unbekannter Fehler bei der Verbindung mit dem Server."
}
2019-11-06 22:02:48 +01:00
return ( [ infoLevel , errorString , errorDescription , errorButtonOption ] )
2018-06-21 16:41:02 +02:00
}
2018-12-30 20:58:52 +01:00
function landscape ( ) {
return ( app . width > app . height )
2018-06-21 16:41:02 +02:00
}
}
2018-06-21 08:47:09 +02:00
}