import QtQuick 2.9 import QtQuick.Controls 2.2 import "./Components" import "./Forms" import "./Pages" ApplicationWindow { id: window visible: true width: 540 height: 960 Item { id: app anchors.fill: parent property bool is_error property string error property bool initdone: false property bool firstinitdone: false property string text_color: "black" //"#424753" property string background_color: "white" property string toolbar_color: "#312f38" states: [ State { name: "notLoggedIn" PropertyChanges { target: mainStack currPage: loginPage } }, State { name: "loggedIn" PropertyChanges { target: mainStack currPage: mainPage } } ] // onBeforeRendering: { // if(!firstinitdone){ // var isinit = _cppAppSettings.loadSetting("permanent") // console.log("getinit"); // console.log(isinit); // if(isinit === "0"){ // stackView.push("qrc:/LoginPage.qml", {}); // } // } // firstinitdone = true // } Timer { //runs only one time at applictaion lauch property bool finished: true id: initTimer interval: 1; running: true repeat: false onTriggered: { var init = _cppAppSettings.loadSetting("init") var perm = _cppAppSettings.loadSetting("permanent") console.log("checkoldlogin:", perm); if(perm === "1"){ console.log("Perm") var ret = _cppServerConn.login(_cppAppSettings.loadSetting("username"), _cppAppSettings.loadSetting("password"), true); if(ret === "OK"){ initdone = true _cppAppSettings.writeSetting("init", 1); if(app.state !== "loggedIn"){ app.state = "loggedIn" } window.is_error = false; } else if(ret === "Keine Verbindung zum Server."){ handleError(0) //initTimer.interval = 1000 finished = true return } else { ret = _cppServerConn.checkConn() handleError(ret) } } else { app.initdone = false if(app.state !== "notLoggedIn"){ app.state = "notLoggedIn" } } app.initdone = true } } Timer { id: refreshTimer interval: 1000; running: app.initdone && stackView.currentItem.objectName !== "LoginPage" repeat: true onTriggered: { var ret = _cppServerConn.checkConn() handleError(ret) } } StackView { id: mainStack property var currPage anchors.fill: parent onCurrPageChanged: { mainStack.replace(currPage) } initialItem: mainPage Component { id: loginPage LoginPage {} } Component { id: mainPage MainPage {} } } function handleError(error_code){ if(error_code === 200){ window.is_error = false; window.error = ""; } else if(error_code === 401){ console.warn("401") _cppAppSettings.writeSetting("permanent", 0) _cppAppSettings.writeSetting("username", "") _cppAppSettings.writeSetting("password", "") if(["LoginPage"].indexOf(stackView.currentItem.objectName) < 0){ console.log("switching to login page") stackView.push("./Pages/LoginPage.qml"); } window.is_error = true; window.error = "Nicht angemeldet!!"; } else if(error_code === 500){ window.is_error = true; window.error = "Interner Server Fehler!"; } else if(error_code === 0){ window.is_error = true; window.error = "Keine Verbindung zum Server!"; } else if(error_code === 404){ //the testcon function calls a non existent file to be fast, so no error here window.is_error = false; } else if(error_code === 111){ window.is_error = true; window.error = "Unbekannter interner Fehler!"; } else { window.is_error = true; window.error = "Unbekannter Fehler! ("+error_code+")"; } } } }