summaryrefslogtreecommitdiffstats
path: root/src/global.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/global.cpp')
-rw-r--r--src/global.cpp51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/global.cpp b/src/global.cpp
new file mode 100644
index 0000000..7039bc1
--- /dev/null
+++ b/src/global.cpp
@@ -0,0 +1,51 @@
+#include "global.h"
+#include <QTimer>
+#include <QModelIndex>
+#include <QString>
+#include <QEventLoop>
+#include <QDebug>
+#include <QCoreApplication>
+
+bool Global::m_testMode = false;
+
+QLightDM::Greeter* Global::m_Greeter = nullptr;
+QLightDM::PowerInterface* Global::m_Power = nullptr;
+QLightDM::SessionsModel* Global::m_Sessions = nullptr;
+
+void Global::initGreeter()
+{
+ m_Greeter = new QLightDM::Greeter();
+ if (!m_Greeter->connectSync()) {
+ m_Greeter->deleteLater();
+ m_Greeter = nullptr;
+ }
+}
+
+bool Global::autoLoginGuest()
+{
+ GreeterCb *cb = new GreeterCb();
+ GreeterCb::connect(greeter(), SIGNAL(authenticationComplete()), cb, SLOT(authenticationComplete()));
+ GreeterCb::connect(greeter(), SIGNAL(autologinTimerExpired()), cb, SLOT(autologinTimerExpired()));
+ GreeterCb::connect(greeter(), SIGNAL(reset()), cb, SLOT(reset()));
+ qWarning() << "Trying to auth as guest";
+ greeter()->authenticateAsGuest();
+ QTimer::singleShot(3000, cb, SLOT(customTimeout()));
+ while (!cb->authComplete && !cb->authError && greeter()->inAuthentication()) {
+ QCoreApplication::instance()->processEvents(QEventLoop::AllEvents);
+ }
+ qWarning() << "Complete:" << cb->authComplete << "Error:"
+ << cb->authError << "InAuth:" << greeter()->inAuthentication() << "isAuthenticated" << greeter()->isAuthenticated();
+ if (cb->authComplete && greeter()->isAuthenticated()) {
+ cb->deleteLater();
+ return startSession();
+ }
+ cb->deleteLater();
+ return false;
+}
+
+bool Global::startSession()
+{
+ QModelIndex i = sessions()->index(0, 0);
+ QString s = m_Sessions->data(i, QLightDM::SessionsModel::KeyRole).toString();
+ return m_Greeter->startSessionSync(s);
+}