#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include // Settings Wrapper damit auch aus QML vernünftig auf das INI File zugegriffen werden kann #include "settings.h" #include "transload.h" #include "sysinfo.h" class kbdEventFilter: public QObject { public: QObject *mGlobals = NULL; kbdEventFilter(QObject *glob):QObject() {mGlobals = glob;} ~kbdEventFilter(){} bool eventFilter(QObject *object, QEvent *event) { switch(event->type()) { static char F1 = 0, F2 = 0, F3 = 0, F4 = 0; case QEvent::KeyPress: { QKeyEvent *KeyEvent = static_cast(event); if ( KeyEvent->isAutoRepeat() == false) { //qDebug() << "keypress"; int keyv = KeyEvent->key(); switch(keyv) { case Qt::Key_F1: if (!F1) { qDebug() << "+F1"; F1 = 1; if(mGlobals != NULL) { mGlobals->setProperty("in1Status", "1"); } } break; case Qt::Key_F2: if (!F2) { qDebug() << "+F2"; F2 = 1; if(mGlobals != NULL) { mGlobals->setProperty("in2Status", "2"); } } break; case Qt::Key_F3: if(!F3) { qDebug() << "+F3"; F3 = 1; if(mGlobals != NULL) { mGlobals->setProperty("in3Status", "3"); } } break; case Qt::Key_F4: if(!F4) { qDebug() << "+F4"; F4 = 1; if(mGlobals != NULL) { mGlobals->setProperty("in4Status", "4"); } } break; default: qDebug() << "???? " << keyv; break; } } } break; case QEvent::KeyRelease: { QKeyEvent *KeyEvent = static_cast(event); if ( KeyEvent->isAutoRepeat() == false) { //qDebug() << "keyrelease"; int keyv = KeyEvent->key(); switch(keyv) { case Qt::Key_F1: if(F1){ qDebug() << "-F1"; F1 = 0; if(mGlobals != NULL) { mGlobals->setProperty("in1Status", "-"); } } break; case Qt::Key_F2: if(F2){ qDebug() << "-F2"; F2 = 0; if(mGlobals != NULL) { mGlobals->setProperty("in2Status", "-"); } } break; case Qt::Key_F3: if(F3){ qDebug() << "-F3"; F3 = 0; if(mGlobals != NULL) { mGlobals->setProperty("in3Status", "-"); } } break; case Qt::Key_F4: if(F4){ qDebug() << "-F4"; F4 = 0; if(mGlobals != NULL) { mGlobals->setProperty("in4Status", "-"); } } break; default: //qDebug() << "???? " << keyv; break; } } } break; default: //qDebug() << "EV :: " << event->type(); break; } return QObject::eventFilter(object, event); } }; //-------------------------------------------------------- int main(int argc, char *argv[]) { // Load virtualkeyboard input context plugin qputenv("QT_IM_MODULE", QByteArray("QtFreeVirtualKeyboard")); QGuiApplication app(argc, argv); QtWebEngine::initialize(); qDebug() << QSysInfo::kernelVersion() << " CPU Arc " << QSysInfo::currentCpuArchitecture(); QQmlApplicationEngine appEngine; //transload klasse in QML Context TransLoad transLoad; appEngine.rootContext()->setContextProperty("transLoad", &transLoad); SysInfo sysinfo; appEngine.rootContext()->setContextProperty("sysinfo", &sysinfo); // IniFileformat und Pfad setzen //Settings settings(QSettings::IniFormat, baseDir + "/GfA-Browser.ini" ); Settings settings(QSettings::IniFormat, "/opt/GfA-Browser/GfA-Browser.ini" ); // settings Klasse für QML exportieren appEngine.rootContext()->setContextProperty("settings", &settings); appEngine.load(QUrl("qrc:/Main.qml")); QQuickWindow *item = (QQuickWindow *)appEngine.rootObjects().first(); QSize availSize = app.primaryScreen()->availableSize(); if(QSysInfo::currentCpuArchitecture() == "x86_64") { item->setProperty("width", 800); item->setProperty("height", 480); // item->setProperty("width", 1280); // item->setProperty("height", 800); } else { item->setProperty("width", availSize.width()); item->setProperty("height", availSize.height()); } item->setProperty("visibilty", "FullScreen"); QObject *glob = qvariant_cast(appEngine.rootObjects().first()->property("glob")); QString baseDir = QQmlProperty::read(glob, "baseDir").toString(); qDebug() << baseDir; //====================================================== // Logos prüfen in baseDir [Logo_Splash|Logo_Menu].[svg|png|jpg] // ugly boilerplate if(!QFile(baseDir + "/Logo_Splash.svg").exists()) { if(!QFile(baseDir + "/Logo_Splash.png").exists()) { if(!QFile(baseDir + "/Logo_Splash.jpg").exists()) { } else { glob->setProperty("logoSplash", "file://" + baseDir + "/Logo_Splash.jpg"); } } else { glob->setProperty("logoSplash", "file://" + baseDir + "/Logo_Splash.png"); } } else { glob->setProperty("logoSplash", "file://" + baseDir + "/Logo_Splash.svg"); } if(!QFile(baseDir + "/Logo_Menu.svg").exists()) { if(!QFile(baseDir + "/Logo_Menu.png").exists()) { if(!QFile(baseDir + "/Logo_Menu.jpg").exists()) { } else { glob->setProperty("logoMenu", "file://" + baseDir + "/Logo_Menu.jpg"); } } else { glob->setProperty("logoMenu", "file://" + baseDir + "/Logo_Menu.png"); } } else { glob->setProperty("logoMenu", "file://" + baseDir + "/Logo_Menu.svg"); } // ===================================================================================== // Scriptordner erstellen und Script(e) kopieren if (!QDir(baseDir).exists()) { QDir().mkdir(baseDir); } if (!QDir(baseDir + "/Scripts").exists()) { QDir().mkdir(baseDir + "/Scripts"); } QFile::remove(baseDir + "/Scripts/GETSVG.sh"); QFile::copy(":/Scripts/GETSVG.sh", baseDir + "/Scripts/GETSVG.sh"); QFile::setPermissions(baseDir + "/Scripts/GETSVG.sh", QFileDevice::ExeOwner|QFileDevice::ReadOwner|QFileDevice::WriteOwner | QFileDevice::ExeGroup|QFileDevice::ReadGroup|QFileDevice::WriteGroup | QFileDevice::ReadOther); QFile::remove(baseDir + "/Scripts/UpdateAndReboot.sh"); QFile::copy(":/Scripts/UpdateAndReboot.sh", baseDir + "/Scripts/UpdateAndReboot.sh"); QFile::setPermissions(baseDir + "/Scripts/UpdateAndReboot.sh", QFileDevice::ExeOwner|QFileDevice::ReadOwner|QFileDevice::WriteOwner | QFileDevice::ExeGroup|QFileDevice::ReadGroup|QFileDevice::WriteGroup | QFileDevice::ReadOther); QFile::remove(baseDir + "/Scripts/SetTimeDateZone.sh"); QFile::copy(":/Scripts/SetTimeDateZone.sh", baseDir + "/Scripts/SetTimeDateZone.sh"); QFile::setPermissions(baseDir + "/Scripts/SetTimeDateZone.sh", QFileDevice::ExeOwner|QFileDevice::ReadOwner|QFileDevice::WriteOwner | QFileDevice::ExeGroup|QFileDevice::ReadGroup|QFileDevice::WriteGroup | QFileDevice::ReadOther); QFile::remove(baseDir + "/Scripts/FactoryReset.sh"); QFile::copy(":/Scripts/FactoryReset.sh", baseDir + "/Scripts/FactoryReset.sh"); QFile::setPermissions(baseDir + "/Scripts/FactoryReset.sh", QFileDevice::ExeOwner|QFileDevice::ReadOwner|QFileDevice::WriteOwner | QFileDevice::ExeGroup|QFileDevice::ReadGroup|QFileDevice::WriteGroup | QFileDevice::ReadOther); QFile::remove(baseDir + "/Scripts/FindUpdate.sh"); QFile::copy(":/Scripts/FindUpdate.sh", baseDir + "/Scripts/FindUpdate.sh"); QFile::setPermissions(baseDir + "/Scripts/FindUpdate.sh", QFileDevice::ExeOwner|QFileDevice::ReadOwner|QFileDevice::WriteOwner | QFileDevice::ExeGroup|QFileDevice::ReadGroup|QFileDevice::WriteGroup | QFileDevice::ReadOther); app.installEventFilter(new kbdEventFilter(glob)); return app.exec(); }